docs(hhtl): PR-X4 pre-sprint prompt — 4×4 splat cascade (W4-W5)#166
Conversation
Companion to GridLake (ade8edb) and PR-X14′ (56b2671) prompts, in the same shape. Captures the W4-W5 splat-cascade sprint that promotes splat3d from "bespoke 16×16 tile binner" to "typed multi-resolution cognitive evolution operator" with the (4×4)×(4×4)×(4×4)×(4×4) tier scheme as the load-bearing structural identity between Gaussian splatting and the cognitive shader. Verbatim citations: - pr-x4-design.md:36-48 (graphics ≡ cognitive substrate identity table) - pr-x4-design.md:57-72 (the tier scheme, area-uniform 16× branching, non-isotropic 4/16/4 per-dim branching rationale) - pr-x4-design.md:108-118 (TileInstance v2 shape) - pp13-brutally-honest-tester-verdict.md:32-37 (the P0-4 L4 Hilbert-3D bug — hilbert3d_encode([15,15,15], 4) = 2925, expected 4095) Worker DAG: A1 TileInstance + BlockedGrid refactor (chain dep) → A2 CascadeAddr [GATED on A12b L4 fix], A3 deg-3 SH inquiry-direction, A4 INT4×32 packed dot (3 backends + parity), A5 NARS truth-revision kernel + fast_exp_x16 precision audit. Five forbidden constraints: 1. No bespoke Hilbert-3D in PR-X4 — consume linalg::hilbert 2. No crate::simd::* extension from inside PR-X4 3. No write to lance-graph upstream 4. No 4×4 tier-stride departure 5. No NARS-revision activation by default (feature-gated) Carry-overs back into other sprints: - PR-X10 A12b L4 fix is a gate for A2 spawn - PR-X11 Spd3 ops are deps for L5/L6 - PR-X9 (W6-W7) consumes CascadeAddr; PR-X4 must ship by end-W5 - W7 closure swap activates the splat4d-nars-compose feature No new Q-marker; W4-W5 slot is fixed. PR-X4 starts late only if GridLake + X14′ slip past W3 (per Q-NEW-1/Q-NEW-2 cell choice).
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 62e22200b9
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| pub struct CascadeAddr(u16); // 4 nibbles, one per tier level | ||
|
|
||
| impl CascadeAddr { | ||
| pub fn level(&self, l: u8) -> u8 { (self.0 >> (l * 4) & 0xF) as u8 } |
There was a problem hiding this comment.
Fix nibble indexing in
CascadeAddr::level example
The prompt defines tiers as 1 = L1 ... 4 = L4 but the sample accessor uses self.0 >> (l * 4), which makes level(1) read the second nibble and level(4) shift a u16 by 16 bits (overflow panic in debug builds). If implementers copy this API literally, L1/L4 addressing will be wrong or crash when validating level-4 paths; use validated 0-based indexing or compute with (l - 1) * 4 for 1-based tiers.
Useful? React with 👍 / 👎.
Summary
Drafts the W4-W5 splat-cascade sprint pre-sprint prompt in the same shape as the GridLake (
ade8edb2) and PR-X14′ (56b26716) prompts. Captures the (4×4)×(4×4)×(4×4)×(4×4) tier scheme as the load-bearing structural identity between Gaussian splatting and the cognitive shader — verbatim frompr-x4-design.md:57-72:Area-uniform 16× branching, L4/L1 area ratio = 16⁴ = 65,536 matching the cell-count ratio 16384²/64² exactly. Per-dim branching is non-uniform (4 / 16 / 4) — the L2→L3 transition has a wider gather to span the scene-aggregation scale.
What's in the prompt
pr-x4-design.md:36-48TileInstance { tier, block_row, block_col, gaussian_id, confidence }onBlockedGrid<SplatBinList, 1, 1>, andsplat4d::cascade::CascadeAddr(u16)with 4-nibble level encodinghilbert3d_encode([15,15,15], 4) = 2925, expected 4095is the gate for the A2 (CascadeAddr) worker. PR-X4 cannot ship L4 cascade addressing until A12b's L4 fix lands.splat4d-nars-composefeature flag, no regressions on the 2370-test green unionlinalg::hilbertand wait for A12b fixcrate::simd::*extension from inside PR-X4 (route throughvertical-simd-consumer-contract.md)Schedule slot
W4-W5, 5 workers, no new Q-marker — slot is fixed in
hhtl-substrate-execution-prompt.md. Spawn depends on:linalg::distance, by W2)linalg::shdeg 4-7, by W2)linalg::hilbertL4 fix) — GATEIf GridLake + X14′ slip past W3 (e.g., Cell A-β), PR-X4 starts late by the same margin. No schedule extension owed by PR-X4 itself.
Carry-overs back into other sprints
round_trip_level4_exhaustivetest +NEXT_STATEre-derivation before PR-X4 A2 spawns (gate)sandwich,sqrt,from_rows) are deps for PR-X4 L5/L6CascadeAddrto skip-encode unchanged basins — PR-X4 must ship the address surface by end-W5SplatCell<D>as typed-cell-signature bridge — keep API forward-compatiblesplat4d-nars-composefrom off to on after G4 audit verdictTest plan
Docs-only PR (1 new file, 438 lines, additive).
pr-x4-design.mdandpp13-brutally-honest-tester-verdict.mdon master13dfcf9dCompanion to the open substrate-pair work
ade8edb2/56b267169b34495c8105c8e0Cross-references
.claude/knowledge/pr-x4-design.md— master design (merged PR docs(hhtl): Phase 2 entry — consolidation refinements + canary inhabitance + substrate execution prompt #162).claude/knowledge/pr-x10-linalg-core-design.md—linalg::sh/hilbert/distancedeps.claude/knowledge/pp13-brutally-honest-tester-verdict.md§ P0-4 — the L4 Hilbert-3D bug.claude/knowledge/pr-arithmetic-inventory.md§ L4-L8 — splat gap taxonomy.claude/knowledge/hhtl-gridlake-pre-sprint-prompt.md+hhtl-pr-x14-substrate-contract-prompt.md— substrate prompts PR-X4 consumesGenerated by Claude Code