diff --git a/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md b/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md index fb0d3814..c8978b43 100644 --- a/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md +++ b/docs/superpowers/specs/2026-07-05-modern-pipeline-design.md @@ -214,6 +214,20 @@ listed follow-up, not v1. class gone; user visual gate (no missing/wrong geometry); legacy decode path deleted from the streaming hot path in the gate commit. +### 6.6 MP1c design note — EnvCell keying (recorded 2026-07-05, MP1b review finding) + +The runtime deduplicates interior-cell geometry under a **content hash** +(`EnvCellRenderer.GetEnvCellGeomId(environmentId, cellStructure, surfaces)`, +bit 33 set — verbatim WB), NOT under the cell's dat fileId; many cells share +one geometry. The pak keys EnvCell blobs by cell fileId. MP1c's cutover +therefore maps at the existing seam: `RegisterCell` has the concrete cell in +hand when it wants geometry for a geomId — read `pak[cellFileId]`, register +under the geomId, and post-load dedup continues exactly as today. Cost: +cells sharing geometry duplicate blob content on disk (v1-acceptable; +a one-blob-per-unique-content TOC-alias refinement is a future format +option). Baking under geomId keys directly is NOT viable in format v1 — +the hash is a full 64-bit value and does not fit PakKey's 56 usable bits. + ## 7. MP2 — Distance-degrade port (hide-only first cut) The already-scoped retail port from the 2026-06-23 handoff §3 (read it + the named