Skip to content

INT03 exact rehearsal: frozen plan, legacy manifest, and policy are mutually incompatible #471

Description

@hjcud

Reproduction boundary

Isolated local rehearsal for root #447 used root 0728ca0fd85b1c4794306aeb9dc3901a03b406d8, backtest-engine e58b92df45a494b619327e3d222a08c7edea7e19, and read-only Development evidence for run dcc110d7-6cb2-3909-bb9f-623b21ac90bf. No Development DB/SQS/worker write or restart was performed.

The exact immutable objects were downloaded by VersionId and all 8 market Parquet SHA-256 values plus the feature Parquet SHA-256 matched S3 and database metadata. The feature object decoded through the production binder with 34,376 rows and matched locked result hash sha256:cf7f43ede602740e5a7879c759a19a4b77fac4803b5861628b1fa89e76d2ee3a. The legacy dataset hash matched the legacy market-loader/1.0.0 manifest formula.

New blockers after #77

The exact frozen input set still cannot start simulation:

  1. The persisted compiled plan has initialCashAmount=100000.00; the current v2 plan schema requires exactly 8 fractional digits. The declared checksum recomputes correctly, so rewriting the literal would change the frozen plan.
  2. After diagnostic normalization only, the same plan is rejected because instrumentCatalogVersion=us-supported-universe:2026-08-09; this runtime implements us-supported-universe:2026-07-31. That field is also checksum-covered.
  3. The pinned legacy manifest hash 08a848... is a valid legacy loader manifest hash, not the current canonical_dataset_hash over upgraded central rows. ParquetMarketDataReader therefore rejects the reconstructed manifest after chore: advance backend through COM07 #77 resolves the legacy manifest_id= binding.
  4. Central catalog rows expose object kind MARKET_BARS and schema market-bars/1, while the consumer currently requires object kind PARQUET; the pinned execution policy declares market-bars-v2. The immutable shard embeds schema_version=market-bars/1.

These are frozen-input compatibility/coordination conflicts, not byte corruption. Silently rewriting the plan, catalog version, manifest hash, object kind, or policy would no longer replay the exact run and would weaken the fail-closed boundary.

Needed decision

Decide and document one auditable compatibility strategy for this already-published input set (for example, an explicit legacy adapter with its own validated hash/schema rules), or explicitly declare this old run non-replayable and regenerate a new coherent immutable release input set. Add an exact fixture regression before implementation. Until that decision and regression pass, INT03 remains NOT READY and a Development rerun should not be dispatched.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions