58 lines
3.2 KiB
Markdown
58 lines
3.2 KiB
Markdown
# M11-10 Status
|
|
|
|
status: done
|
|
task: bind long-media proxy/cache entries to source hash and runtime decode capability
|
|
updated: 2026-08-17 America/New_York
|
|
|
|
## Scope
|
|
|
|
Schema 1 proxy-cache manifests bind the complete movie source identity, the source-bound
|
|
M11-09 READY decode receipt, an explicit SRGB8/STRAIGHT RGBA8 profile, and the source
|
|
frame into one deterministic SHA-256 cache identity. The proxy payload has an independent
|
|
byte length and SHA-256. Source drift, decode-capability drift, identity tampering, and
|
|
payload tampering therefore fail with separate stable codes.
|
|
|
|
The production browser adapter verifies the movie bytes before decode, captures only the
|
|
initial decoded HTMLMedia frame, and stores verified copies in a 64 MiB-bounded LRU. The
|
|
Chromium gate persists the RGBA8 payload and its manifest through the content-addressed
|
|
Storage Worker path, creates a new Storage Worker, and verifies the reopened bytes against
|
|
the current runtime receipt. This task does not claim frame-accurate proxy generation,
|
|
seek/scrub publication, waveform generation, A/V synchronization, or final encoding.
|
|
|
|
## Evidence
|
|
|
|
- `WEB_TEST_PORT=5573 npm --prefix web run test:sequencer-media-cache`: unit 3/3 and
|
|
Chromium 1/1 passed. The real 16x16 H.264 fixture produced one 8x8/256-byte RGBA8
|
|
proxy; its cache identity is
|
|
`68a3af14865841e81f69bd75f2605461de4819fe025d158ac3723fa0cdf31525`.
|
|
- A one-frame cache budget admitted frame 0, returned a copied hit, then evicted it when
|
|
frame 1 was inserted. `clear()` released exactly 256 bytes and left zero entries.
|
|
- Source hash drift, READY receipt metadata drift, payload mutation, and bad source bytes
|
|
returned `SEQUENCER_CACHE_SOURCE_MISMATCH`,
|
|
`SEQUENCER_CACHE_CAPABILITY_MISMATCH`, or `SEQUENCER_CACHE_HASH_MISMATCH` as
|
|
appropriate. Blocked receipts, undeclared profile fields, oversized RGBA8 profiles, and
|
|
upscaled profiles were rejected before cache insertion.
|
|
- The first unit run was 2/3 because the test incorrectly treated exactly 64 MiB as over
|
|
budget; the corrected 64 MiB plus one-row case passed. The first Chromium run completed
|
|
all business operations but sampled `statsBeforeClear` after `clear()`; the sampling
|
|
order was fixed and the full command rerun on ports 5572 and 5573.
|
|
- Regression passed: M11-09 unit 3/3 plus Chromium 1/1, one-million-frame long-media 1/1,
|
|
Sequencer Main reader, full Node 179/179, typecheck, lint, and production build (75
|
|
modules).
|
|
|
|
## Artifact Hashes
|
|
|
|
- protocol: `1dd5ee8cade2642723bac6f0c8e34d09cf178d000beba6eb63626284ee35fd5e`
|
|
- browser adapter: `57070b1a42129afdfb8121ec11a48b0792b3de9d84f7e8a78017c7d6e12343aa`
|
|
- app protocol exports: `8ca82257c758580f5fe91a3a5cd21f8ae9e9ce10f9fa71fcd7cf1f30e0b6367b`
|
|
- unit: `f4cc1171dd6875bf079e242beed846409a1d1f53b9497882aa475bd2773b43c7`
|
|
- Chromium spec: `6d9d26e3639a74b173f77ec5d67e53e5ec42b88dd6e34bda54c8168b8251423e`
|
|
- golden: `39a71f8d97f0045da6ec913b6a0231ac3363f67a420eea5ab3fabaa8f1d47c33`
|
|
- package: `2c7fb9f8657155088e4a080443b8a0ba9c13aae9f46f1807ff3b8820640c44c4`
|
|
|
|
## Rollback
|
|
|
|
Remove the proxy-cache protocol/runtime/tests/golden and package command, restore M11 to
|
|
9/14, and remove the new N-021 completed slice. Keep M11-09 runtime codec probes and the
|
|
V1 long-media index/cache evidence unchanged.
|