# Replay the normalized indicator analysis

Public receipt checksum: f9d9cc3ef671e74b31c64f3dd6602acd25bcd8495859cb9cea309b243526a60d

Population lineage: e955edecebde0dd5ea8c83b1eef2fe00fa572c22d0b66639c53bd7376311361f

Normalization: typed-rule-action-execution-v2

This is an October 10 reanalysis of the existing September archive. The public receipt contains aggregates only. Customer books and identifiers remain private. Replay requires authorized access to the frozen runs, strategies and indicators parquet files plus source-revisions.json; these inputs are not public downloads.

The source-revisions receipt verifies each file's byte length and SHA256 before DuckDB reads it. The local replay does not use credentials, connect to production, generate backtests or modify the archive. Use Node24 and the repository's installed dependencies. Place the four source files at their owning repository paths:

- [semanticContract.ts](/seo/research/corpus-semantic-v2-source/semanticContract.ts), SHA256 b75a5f6f49efa6d38583886fab4011aeac9fd615e21d23fa763c4ccdaa344711
- [semanticAggregates.ts](/seo/research/corpus-semantic-v2-source/semanticAggregates.ts), SHA256 bfcac4b85e830139d2bb5b1cdad33bd011a5632f40b889471260acd0a5d8ab52
- [strategyStyle.ts](/seo/research/corpus-semantic-v2-source/strategyStyle.ts), SHA256 c7564ae6dee7578d25e98c8c9c143a63b8c9a541ba1803d4bfc69d2dbd2a0415; owning path `src/services/backtestCorpusAnalysis/strategyStyle.ts`
- [replayCorpusDecisionAnalysis.ts](/seo/research/corpus-semantic-v2-source/replayCorpusDecisionAnalysis.ts), SHA256 a72d3ad468b7a099b5671a5c4296321fce34545c4f8c17734a75e855c27f7662

Run from server:

```sh
node -r ts-node/register/transpile-only src/scripts/backtestDataset/replayCorpusDecisionAnalysis.ts --directory /absolute/private/frozen-inputs --out /absolute/private/decision-replay.json --indicators-out /absolute/private/indicator-replay.json
```

Inspect the private replay's retained population, coverage, source hashes and normalization version. The published population is 42850 contracts and 3013 zero-return contracts. The indicator export counts each built-in type once per normalized book across conditions AND action operands, including dynamic weights and selection metrics. It requires 500 containing contracts and reports medians and interpolated quartiles.

The accompanying SQL selects eligible inputs only. It cannot reproduce typed normalization or grouping on its own. Unknown author origin remains unknown; incomplete and unsupported contracts are excluded, not repaired. Dates, tickers, capital, fees, cadence, interval, benchmark and stored risk-free assumptions remain in the deduplication identity. Missing dividend, fill and engine versions cannot be reconstructed. No confidence intervals or isolated indicator effects are claimed.

Build correction: structural classification now lives in the production corpus library. Its logic is byte-identical to the original script helper. The public semanticAggregates source remains the immutable analysis-time version; the current repository differs only in the classifier import path. The compatibility script re-exports the library helper. Published values, source fingerprints and aggregate receipts are unchanged.
