impl(sprint-11/wave-A): D-CSV-1 + D-CSV-3 + D-CSV-4 — causal-edge v2 + signed-mantissa NARS + CollapseGateEmission#383
Merged
Conversation
…layout + signed-mantissa NARS + CollapseGateEmission
Wave-A sprint-11 work landing the substrate primitives from
`cognitive-substrate-convergence-v1.md` §6 Option F locked layout.
Two parallel Sonnet workers (CCA2A); main-thread P0 fix on the
pack() temporal-corrupts-reclaim-zone bug found in code review.
OQ ratifications absorbed in this PR:
- OQ-CSV-2 = 6 bits (64-corpora W-slot) per default
- OQ-CSV-1 / OQ-CSV-4 deferred to Wave B (D-CSV-2 / D-CSV-5)
D-CSV-1 — causal-edge v2 layout (W-A1, causal-edge crate)
- NEW `crates/causal-edge/src/layout.rs` (~130 LOC): all shift constants
(S=0, P=8, O=16, FREQ=24, CONF=32, CAUSAL=40, DIR=43, INFER=46,
PLAST=50, W=53, TRUTH=59, SPARE=61); BITS4/6/2 masks + per-field
masks; `#[deprecated] V1_TEMPORAL_SHIFT`; compile-time
`_LAYOUT_COVERAGE` const-assert (8+8+8+8+8+3+3+4+3+6+2+3 = 64);
`TrustTexture` enum with `from_bits_2`/`to_bits_2`.
- EXTEND `edge.rs`: v2 accessors `inference_mantissa` (i4 signed,
arithmetic-shift sign-extend), `w_slot`, `truth`, `truth_raw`,
`spare`, `with_routing(w, t)` (NO `g` param per L-3); v2 `pack_v2()`
8-arg constructor (no temporal); `#[deprecated]` markers on v1
`inference_type()` and `temporal()` accessors.
- NEW `v2_layout_tests.rs` (~200 LOC): 16 tests covering all v2
accessor round-trips, field-isolation matrix, signed-mantissa pack
/unpack across [-8, -7, -1, 0, 1, 7], 2-arg with_routing, spare
isolation, mantissa↔plasticity boundary, size_of == 8.
- Cargo bump 0.1.0 → 0.2.0; `default = ["causal-edge-v2-layout"]`
feature flag.
D-CSV-3 — signed-mantissa InferenceType expansion (W-A1, same crate)
- `InferenceType::to_mantissa(self) -> i8` and `from_mantissa(m: i8)
-> Self` provide the bidirectional v2 mapping while keeping the
enum intact for v1 callers; PR-LL-1 Intervention/Counterfactual
absorb into mantissa magnitude 5/6 per L-9.
D-CSV-4 — CollapseGateEmission (W-A2, contract crate)
- NEW `pub type MailboxId = u32;` — canonical W-slot corpus-root
handle / mailbox addressing surface.
- NEW `CollapseGateEmission { batons: Vec<(u16, u64)>, source_mailbox,
chain_position, merge_mode }`. Architectural deviation from plan
§8.1 documented inline: `Vec<(u16, u64)>` instead of
`SmallVec<[(u16, CausalEdge64); 8]>` to preserve contract zero-dep
invariant; SmallVec inline-storage optimization deferred to
sprint-12+. Receivers wrap raw u64 back via `CausalEdge64(raw)`.
- API: `new`, `push_baton`, `baton_count`, `wire_cost_bytes`
(13 + 10 × N batons matching plan §8.2), provenance accessors;
NO `cycle_id` field (provenance via source_mailbox + chain_position
per §8.1).
- 8 tests cover empty emission, push, wire-cost-budget assertion at
8 batons (= 93 bytes per §8.2), provenance round-trip, all 4
merge modes (Xor/Bundle/Superposition/AlphaFrontToBack).
P0 fix (main-thread code review caught)
- `pack()` v1 9-arg constructor with v2 feature on was writing
`temporal << 52` into the v2 reclaim zone (bit 52 = plasticity[2],
bits 53-58 = W, 59-60 = lens, 61-63 = spare). Same root cause as
the W3 spec codex P1 from PR #381: v1 temporal aliases the v2
reclaim zone. Fixed by feature-gating the temporal write so v2
pack silently drops the temporal arg (with doc-comment migration
pointer to pack_v2). Two v1-only tests (`test_roundtrip`,
`test_temporal_in_msb_gives_sort_order`) gated on
`#[cfg(not(feature = "causal-edge-v2-layout"))]`.
Test status
- causal-edge v2 (default): 30 pass / 1 fail (test_build_fast,
pre-existing on main per stash-revert check — to be filed in
ISSUES separately).
- causal-edge v1 (no default features): 16 pass / 1 fail
(same pre-existing test_build_fast).
- lance-graph-contract: 8/8 collapse_gate tests pass.
- p64-bridge / lance-graph-planner: clean compile with deprecation
warnings on `inference_type()` and `temporal()` — the intended
migration signal for downstream callers.
https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
…PR + AGENT_LOG entry Per CLAUDE.md §Mandatory Board-Hygiene Rule (and E-META-9 main-thread- sentinel recommendation from PR #382): board updates in the SAME PR as the work commit `ab39d01`. STATUS_BOARD.md — Phase A table: D-CSV-1 / D-CSV-3 / D-CSV-4 transition Queued → **In PR** with branch + commit reference + OQ-CSV-2 ratification note (6 bits per default). AGENT_LOG.md — PREPEND sprint-11-wave-a-impl fleet entry. Documents 2-worker CCA2A parallel run, the P0 found in main-thread code review (v1 pack() corrupting v2 reclaim zone — same root cause as the W3 codex P1 from PR #381), and the test status across both feature configurations. Notes pre-existing `test_build_fast` failure for separate ISSUES filing. https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: fd61310111
ℹ️ 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".
…ck semantic-routing bugs Codex review on PR #383 surfaced three semantic-routing bugs all sharing the root cause of "v1 API path bypasses v2 mantissa / reclaim-zone semantics". Same anti-pattern as the W3 spec codex P1 from PR #381. All three fixed + paired with regression tests. P1 #1 — forward() decoded weight.inference_type() (3-bit unsigned) even under v2, so a v2 edge built with `with_inference_mantissa(-1)` (Abduction direction) would read bits 46-48 as 0b111 = Reserved7 and dispatch through the synthesis/default branch instead of Abduction. Negative mantissas (Abduction, Counterfactual) silently produced wrong NARS truth propagation. Fix: under `causal-edge-v2-layout`, decode via `InferenceType::from_mantissa(weight.inference_mantissa())` for the match arm. Result re-stamped via `with_inference_mantissa( resolved_infer.to_mantissa())` so the sign bit (49) survives pack()'s v2 mantissa write (pack() needs the v1 enum value but to_mantissa() maps it through correctly — see P2 fix below). P1 #2 — set_temporal() unconditionally wrote bits 52-63 even under v2 where those bits are plasticity[2] + W-slot + lens + spare. The v1 learn() path calls set_temporal(current_time) after every observation; that call clobbered W-slot routing state and corrupted the reclaim zone for any edge that had been stamped via with_w_slot/ with_truth/etc. Same root cause as the pack() temporal-write bug fixed in commit ab39d01 — just a different setter path that wasn't gated. Fix: feature-gate set_temporal() the same way as pack(): under v2, the call is a complete no-op (the `t: u16` arg is silently dropped with documented migration pointer to chain-position + AriGraph Triplet.timestamp). learn() transitively becomes safe under v2 since the only reclaim-zone write was the set_temporal call. P2 — pack() under v2 wrote the raw `inference as u8` discriminant into bits 46-48 (3-bit mask). With the v1 enum: - Deduction=0, Induction=1, Abduction=2, Revision=3, Synthesis=4 - pack(Abduction) → bits 46-48 = 0b010, bit 49 = 0 - inference_mantissa() reads 4 bits as i4 → +2 - from_mantissa(+2) decodes as Induction, NOT Abduction Silent semantic drift on every v2 pack() call for any non-Deduction inference type. Fix: under v2, pack() writes `inference.to_mantissa() as i4` (4 bits including sign) so the round-trip pack→inference_mantissa→ from_mantissa preserves the semantic. The v1 branch keeps the original 3-bit discriminant write for back-compat. forward()'s final re-stamp (P1 #1 fix) covers the case where the resolved InferenceType needs to be re-encoded after composition. Three regression tests added to `v2_layout_tests.rs`: - `test_forward_decodes_negative_mantissa_under_v2` — Abduction via mantissa=-1 must NOT alias Reserved7 - `test_set_temporal_no_op_under_v2` — set_temporal(1023) on an edge with w=42/truth=Fuzzy/spare=0b101 must leave the raw u64 unchanged - `test_pack_uses_mantissa_mapping_under_v2` — pack(Abduction), pack(Counterfactual), pack(Intervention) all round-trip through inference_mantissa → from_mantissa with semantic identity preserved Test status post-fix: - v2 (default): 33 pass / 1 pre-existing fail (test_build_fast) - v1 (no features): 16 pass / 1 pre-existing fail - The 3 new regression tests prevent silent re-introduction https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
… v2 must route through from_mantissa() Two tests in `crates/lance-graph/tests/intervene_counterfactual.rs` failed CI after the codex P2 fix (`pack()` writes `to_mantissa()` under v2): - `causal_edge_intervention_roundtrip` expected Intervention, got Counterfactual - `causal_edge_counterfactual_roundtrip` expected Counterfactual, got Abduction Root cause: the deprecated v1 `inference_type()` accessor read bits 46-48 as a 3-bit unsigned discriminant. Under v2, pack() writes the signed mantissa (4 bits, bits 46-49) via `to_mantissa()`, so reading back through the v1 3-bit accessor silently swapped variants: - pack(Intervention) → mantissa = +6 = 0b0110 - inference_type() reads 0b110 = 6 → Counterfactual (wrong) - pack(Counterfactual) → mantissa = −6 = 0b1010 - inference_type() reads 0b010 = 2 → Abduction (wrong) Fix: `inference_type()` and `set_inference_type()` under v2 route through `from_mantissa(inference_mantissa())` and `to_mantissa()` respectively. This preserves the v1 API contract semantically: every v1 enum variant round-trips through pack/inference_type because the mantissa table is bijective for the v1 enum (Deduction=+1, Induction =+2, Abduction=−1, Revision=+4, Synthesis=+5, Intervention=+6, Counterfactual=−6, Reserved7=+7). Same family as the prior 3 codex P1s in commit 42b3215: every v1 API path under v2 must transparently route through the mantissa mapping or be feature-gated to no-op. The pattern is now firmly established and could be lifted into a `LegacyInferenceAccess` trait if more v1 accessors surface — for now the per-method gating is fine. No new tests needed: the failing CI tests in `tests/intervene_counterfactual.rs` (causal_edge_intervention_roundtrip + causal_edge_counterfactual_roundtrip) become the regression gate for this fix; they were already in the suite and re-pass with this patch (local: `cargo test -p lance-graph --test intervene_counterfactual` exit 0). https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
User request: harvest WoA/app.py routes as CSV+JSON, commit as cross-repo reference in lance-graph/.claude. Source is the 2,904-line Flask backend at /home/user/WoA/app.py (Acme Services GmbH WoA app, mandantenfähig). Harvester: pure-static Python `ast.parse` walker that recognizes @app.route(path, methods=[...]) plus Flask 2.x .get/.post/.put/.delete /.patch/.options/.head decorator shortcuts. Extracts path, methods, handler name, decorator chain (@login_required etc.), enclosing function context (usually create_app per WoA's app-factory pattern), docstring first line, and source line number. Result: 96 routes captured (60 with GET, 59 with POST; many serve both). Sorted by (path, methods) for deterministic diffs. Files: - .claude/knowledge/woa-routing/routing-table.json (~1.3K lines, full detail) - .claude/knowledge/woa-routing/routing-table.csv (~97 lines, flat for spreadsheet) - .claude/knowledge/woa-routing/README.md (harvester contract, refresh procedure, use cases) Use cases per the README: - Cross-repo audit (grep here, jump to WoA/app.py:<line>) - Membrane wiring planning (callcenter / sharepoint / spear / q2) - Sprint planning for lance-graph ↔ WoA integration Not a live runtime extraction (no app.url_map introspection) — pure AST. Decorators computed at runtime (e.g. dynamic path expressions) are skipped silently. Refresh by re-running the heredoc-embedded harvester when WoA/app.py changes meaningfully. https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
…route mirror from WoA PR #33 User pointed at WoA PR #33 (merged 2026-05-16) which already harvested the full WoA routing surface — 514 routes across `app.py` (91 routes in the monolith) + 53 blueprint modules under `woa/blueprints/*.py`. The prior commit in this branch (87f5076) harvested only the 2,904-line app.py via a local AST walker and captured 96 routes — the monolith remnant only, missing the entire modular blueprint architecture (423 routes). That harvest is now superseded by this canonical mirror. Mirror fetched via `mcp__github__get_file_contents` against AdaWorldAPI/WoA `.claude/reference/routing_table.{json,csv}`, with the MCP response wrapper (the "[Resource from github at repo://..." prefix and the surrounding `[{"type":"text", "text":...}]` envelope) stripped. Schema per WoA PR #33: endpoint / function / path / methods / source_file / line / blueprint / cluster Coverage: 514 of 515 runtime routes; the delta is Flask's auto `/static/` rule (no decorator → invisible to AST). README updated to: - name WoA PR #33 as the canonical source - document the mirror schema + refresh procedure - record the supersession history (96 partial → 514 canonical) so future sessions don't reinvent the partial harvest - list the cross-repo use cases (membrane wiring planning, route- disappearance audit across refactors, etc.) https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
Pre-existing formatting drift in two files surfaced when CI upgraded to rustfmt 1.95.0. Pure mechanical reformat via `cargo fmt --manifest-path crates/lance-graph/Cargo.toml`. Not a behavioral change; just unblocks the rustfmt-check CI step on PR #383. Files: - crates/lance-graph/src/graph/arigraph/triplet_graph.rs:723 — multi-line filter() collapsed to single-line per rustfmt 1.95 default - crates/lance-graph/tests/intervene_counterfactual.rs:184 — assert_ne! expanded across multiple lines per rustfmt 1.95 default https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
4 tasks
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
…cation (Option α)
Wave-B sprint-11 Phase A substrate primitive: i4-16D packed qualia
vector (8 bytes, 9× compression vs the historical [f32; 18]) for the
upcoming `QualiaColumn` migration (D-CSV-5, Wave C).
OQ-CSV-1 ratification (autoattended)
The plan §7.2 proposed a felt-qualia vocab (Wisdom/Trust/Hope/etc.).
Cross-check against the canonical surfaces revealed:
- `crates/thinking-engine/src/qualia.rs::Qualia17D` uses convergence
observables (arousal/valence/tension/warmth/clarity/boundary/depth/
velocity/entropy/coherence/intimacy/presence/assertion/receptivity/
groundedness/expansion/integration)
- `crates/lance-graph-contract/src/qualia.rs::QualiaVector = [f32; 17]`
uses the same labels (`AXIS_LABELS`)
The plan footnote already flagged §7.2 as CONJECTURE pending qualia-
engineer cross-check. Ratified as Option α: keep the canonical
observable vocab, drop dim 16 "integration" to fit 16 i4 lanes
(integration is recoverable on demand from valence + coherence +
last cycle delta). Lower migration risk than a vocab swap.
D-CSV-2 implementation (W-B1, Sonnet)
- NEW `QUALIA_I4_DIMS: usize = 16` constant
- NEW `QUALIA_I4_LABELS: [&str; 16]` matching `AXIS_LABELS[0..16]`
- NEW `pub struct QualiaI4_16D(pub u64) #[repr(C, align(8))]` —
exactly 8 bytes, 16 i4 lanes
- Accessors `get(dim) -> i8` / `set(dim, value)` / `with(dim, value)`
with i4 signed pack/unpack via `(raw << 4) >> 4` arithmetic-shift
sign-extension; clamp to −8..+7; defensive no-op on out-of-range dim
- Migration helpers `from_f32_17d(&QualiaVector) -> Self` and
`to_f32_17d(self) -> QualiaVector`. Asymmetric quantization
intentional: positive f32 × 7.0 (7 quanta in i4 [0, +7]); negative
f32 × 8.0 (8 quanta in i4 [-8, -1]). Dim 16 ("integration") is
dropped on encode and zero-filled on decode.
- `magnitude(self) -> i8` = `coherence.saturating_mul(valence)` —
per plan §7.2 "Wisdom × Staunen → i8" intent, mapped to canonical
vocab pair (intensity × valence-direction). One i8 multiply,
SIMD-friendly.
8 new tests in `cargo test -p lance-graph-contract qualia`:
- size invariant (8 bytes)
- zero default (all dims = 0)
- signed roundtrip across [-8, -7, -1, 0, 1, 7]
- clamp on overflow (+100 → +7, -100 → -8)
- field isolation (writing dim 5 leaves dims 4, 6 untouched)
- from_f32_17d ↔ to_f32_17d round-trip with dim 16 dropped
- label alignment with `AXIS_LABELS[0..16]`
- magnitude saturating_mul correctness on extremes
Test status: 14/14 pass (8 new + 6 pre-existing). Contract crate
remains ZERO deps.
Board hygiene (per E-META-9 main-thread sentinel)
- STATUS_BOARD.md — D-CSV-2 row Queued → **In PR** with branch
reference + OQ-CSV-1 ratification note
- AGENT_LOG.md — PREPEND wave-B fleet entry with the OQ-CSV-1
ratification reasoning + 8-test coverage detail + open question
on Wave C (D-CSV-5 needs cognitive-shader-driver crate which is
referenced in CLAUDE.md but not in workspace members; investigation
required before spawn)
Wave C dependencies (deferred to next loop iteration)
- D-CSV-5 (QualiaColumn migration in cognitive-shader-driver) — needs
PR #383 merged (so v2 layout is on main) AND clarification on
cognitive-shader-driver workspace membership
- D-CSV-6 (WitnessCorpus replacing SpoWitnessChain<32>) — depends on
D-CSV-4 from PR #383
- D-CSV-7 (MailboxSoA integration) — depends on D-CSV-1 + D-CSV-4
https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
Pre-existing assert_eq! macro single-line forms in W-D2's witness_corpus.rs tests need multi-line wrapping per rustfmt 1.95 defaults. Pure mechanical reformat via `cargo fmt --manifest-path crates/lance-graph/Cargo.toml`. No behavior change; 8/8 witness tests still pass. Same fmt-gate pattern as PR #383 (rustfmt 1.95 upgrade) and PR #384 (qualia.rs single-line guards). https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
…ate-decisions knowledge doc W-F10 — Sprint-11 meta-review (.claude/board/sprint-log-11/meta-review.md, 341 lines) - Executive summary + sprint grade - Per-PR grades for waves A-E (PRs #383..#387) - Cross-sprint inconsistencies (CSI-1..6): TrustTexture ×2, v1-API- under-v2 alias anti-pattern (E-META-10 candidate), subagent permission isolation, SplatField/QualiaI4 bit-compat mirrors, plan §7.2 CONJECTURE-vs-FINDING ratification (OQ-CSV-1), bg-worker file-collision pattern - Sprint-12 spawn decision YES with merge gates on Wave F + open PRs (#385 #386); recommended sprint-12 phase scope = SIMD vec for D-CSV-8 + ndarray streams productization + on-Think method migration for D-CSV-12 + Jirak-derived Σ10 threshold (TD-7) - Per-worker grade placeholders for Wave F (W-F1..W-F12) — to be filled by the Opus meta-reviewer (W-Meta-Opus) when the fleet fully completes W-F11 — i4-substrate-decisions knowledge doc (.claude/knowledge/, 200 lines) - Tier-1 knowledge doc with READ BY: header - i4 substrate doctrine: sign = direction, |magnitude| = NARS rule slot; i4 × i4 → i8 precision family - All 20 locked decisions L-1..L-20 with one-sentence summary + shipping PR + canonical code site + deviations from plan - Four-column SoA (EdgeColumn / QualiaColumn / MetaColumn / FingerprintColumns) — sprint-11 outcomes per column - All six OQ-CSV-* ratifications recorded with wave evidence - Codex P1 anti-pattern: 5 documented v1-API-under-v2-feature aliasing instances (temporal write, inference_type read, set_temporal no-op, pack raw discriminant, W3 spec temporal=1023) - 12-mapping transcoder table (8 channels × NARS slots × Pearl rungs) with lossy-collapse equivalence classes - Cross-refs: plan v1 + sprint-log-10/11 meta-reviews + STATUS_BOARD + PR_ARC + AGENT_LOG + TECH_DEBT + EPIPHANIES + TYPE_DUPLICATION_MAP + CLAUDE.md iron rules Fleet status: 11 of 12 Sonnet workers complete; W-F12 (plan v2 draft) still in flight. W-Meta-Opus (1 honest cross-cutting reviewer) dispatch deferred until W-F12 finalizes. https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
Pre-existing assert_eq! macro single-line forms in W-D2's witness_corpus.rs tests need multi-line wrapping per rustfmt 1.95 defaults. Pure mechanical reformat via `cargo fmt --manifest-path crates/lance-graph/Cargo.toml`. No behavior change; 8/8 witness tests still pass. Same fmt-gate pattern as PR #383 (rustfmt 1.95 upgrade) and PR #384 (qualia.rs single-line guards). https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
… lines) W-F12 final Sonnet worker output. Plan v2 revision capturing sprint- 11 outcomes + sprint-12 forward plan. Mirrors v1 structure with §0..§18; every changed section marked [UPDATED 2026-05-16] / 🆕 vs v1 (21 annotations); unchanged sections labeled UNCHANGED from v1. Highlights: - §0 status delta — Phase A/B/C outcomes: D-CSV-1/3/4 (#383), D-CSV-2 (#384), D-CSV-5a/6a+7 (#385/#386), D-CSV-8+9 (#387), D-CSV-10 (W-F1) - §5 L-1..L-20 implementation-outcome annotations (PR #+commit+ accessor file per row) - §6/§8 UNCHANGED architecture, annotated with shipping commits + TD pointers for deviations (SmallVec) - §11 D-CSV-* table — D-CSV-1..12 status; D-CSV-13/14/15 NEW Phase E sprint-12 entries (SIMD vec, on-Think method migration, Jirak Σ10) - §12 OQ table — all 6 OQs annotated with ratification - §13 Risk — 10 risks (vs 6 in v1); §13.7–13.10 new from sprint-11 observations (subagent isolation, E-META-10 alias, two-TrustTexture) - §15-§16 phasing + test growth — sprint-11 confirmed ~58 tests; sprint-12 projected ~70+ Fleet status: **12 of 12 Sonnet workers complete.** Honest cross- cutting Opus meta-review (W-Meta-Opus) dispatched next. https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
…sprint-12 meta + board refresh + OQ catalog Five more Opus planners landed: PP-4 (Opus): `pr-sprint-13-think-methods.md` (674 LOC) — D-CSV-14 spec for splat-ops on Think carrier. Found: zero external callers of the 4 free fns (deprecation cycle is conservative not forcing); Think struct doesn't exist yet (sprint-13 introduces minimum-viable with splat_field + cycle; sprint-15+ accretes trajectory/awareness/etc). PP-5 (Opus): `pr-sprint-13-witness-cam-pq.md` — D-CSV-16 spec for real ndarray CAM-PQ wiring replacing the Wave G HashMap placeholder. PP-7 (Opus): `.claude/board/sprint-log-12/meta-review.md` — sprint-12 closing meta-review. PP-10 (Opus): LATEST_STATE.md (+50 lines) + STATUS_BOARD.md (+15 lines) refresh. 7 new "Recently Shipped" PR rows (#383-#389), 19+ new contract types in inventory, sprint-13 queued specs surfaced. Phase A/B/C marked Shipped; Phase D partial; Phase E (sprint-13) section added. PP-11 (Opus): `.claude/board/sprint-log-13/oq-catalog.md` — 13 OQs (OQ-CSV-7..19); 10 block sprint-13 spawn; 3 sprint-14+ tracking (ndarray PR #116 pin/vendor, VAMPE+Jirak scope, splat persistence). 7 of 12 PP planners done. 5 still in flight (PP-2 iron-rules done separately; PP-6 SIMD spec, PP-9 PR_ARC backfill, PP-12 cross-repo audit pending). https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
…ntries (#383..#390) PP-9 (Opus) prepended 8 PR entries to PR_ARC_INVENTORY.md (1537→1903 lines, +366 / +50,619 bytes). APPEND-ONLY rule respected — no prior entries touched. Top→bottom reverse chronological: #390 sprint-12/wave-G (In PR, `bad0875`) — grade A−. D-CSV-5b cutover + D-CSV-6b WitnessCorpus + D-CSV-13 batch + D-CSV-15 Jirak math. #389 sprint-12 wave-F codex P2 follow-up — AttentionMaskBackend impl + canonical MailboxId (CSI-10). #388 sprint-12 Wave F fleet (12 Sonnet + 1 Opus) — grade B. D-CSV- 10/11/12 scaffolds + AttentionMask + plan v2. #387 sprint-11 Wave E — grade A−. D-CSV-8 MUL i4 scalar + D-CSV-9 8-channel transcoder (Option R-3). #386 sprint-11 Wave D — grade B+. D-CSV-7 MailboxSoA + D-CSV-6a WitnessCorpus core. #385 sprint-11 Wave C — grade B+. D-CSV-5a sibling QualiaI4Column. #384 sprint-11 Wave B — grade A. D-CSV-2 QualiaI4_16D + OQ-CSV-1 Option α ratification. #383 sprint-11 Wave A — grade A−. D-CSV-1 v2 layout + D-CSV-3 signed mantissa + D-CSV-4 CollapseGateEmission. Every entry mirrors the #381/#379 template — Header / Confidence / Added / Locked / Deferred / Docs / Cross-refs — with forward+backward linkages (#383→#385→#390 D-CSV-5 chain; E-META-10 catch in #383 → iron-rule promotion in #390 W-G5; etc.). Total PR headers in file: 28 (was 20). 13 of 14 planners done. Only PP-13 (brutally-honest-tester agent) still in flight. https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
AdaWorldAPI
pushed a commit
that referenced
this pull request
May 16, 2026
PP-13 (Opus) — `.claude/agents/brutally-honest-tester.md` (708 LOC, 29.6 KB). User-requested agent that bundles the stable-Rust toolchain into a strict pre-merge gate plus codex-style P1 anticipation. Structure: - YAML frontmatter (model: opus; tools: Read/Glob/Grep/Bash) - Mandatory reads Tier 0/1/2 (iron-rules-doctrine PP-2 + sprint-log meta-reviews + worker-template-v2 §5.5/§9 + diff-triggered domain knowledge docs) - §1 Toolchain across 5 tiers: Mandatory (clippy + fmt + audit + deny), Strict (clippy pedantic/nursery), Recommended (machete + geiger + semver-checks + outdated), Targeted (spellcheck + public-api + bloat + nextest), Formal-ish (kani + loom). Explicit non-fit: Miri / fuzz / mutants (nightly or heavy) - §2 Codex P1 catalogue AP1..AP8 (v1-under-v2-alias / bit-collision / sub-crate [workspace] / lib.rs orphan / cross-repo mod.rs orphan / new-abstraction / unsafe-without-SAFETY / REST-endpoint-drift). Each pattern documents grep targets + rule + suggested fix + sprint instance citation (CSI-2/7/8/9 etc.) - §3 Output format — markdown verdict block with P0/P1/P2 lists + toolchain rollup + anti-pattern rollup + ternary LAND/HOLD/REJECT - §4 Workflow integration — CCA2A slot post-impl pre-meta-review; draft `.github/workflows/honest-tester.yml` (flagged as D-CSV-18) - §5 BOOT.md Tier-1 trigger row - §6 Promotion ceremony (3 gates + 1 false-positive + 1 missed-bug) - §7 Cross-refs - §8 "One sentence that should survive any refactor" + authorship Mirrors `truth-architect.md` + `certification-officer.md` format precedent. Cites sprint-11 meta-review-opus CSI-2 (the 4-instance PR #383 cluster that drove I-LEGACY-API-FEATURE-GATED promotion), sprint-12 CSI-7/8/9 (orphan-pattern that motivated worker-template-v2), worker-template-v2 §5.5+§9 (the IMPL-side discipline this REVIEW agent mirrors). ALL 14 PP planners complete (12 original + PP-2 iron-rules-doctrine ran early + PP-13 brutally-honest-tester added mid-fleet per user request). W-Meta-Opus honest review dispatch next. https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
Merged
9 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Sprint-11 Wave A implementation landing the Phase A substrate primitives from
cognitive-substrate-convergence-v1.md§6 Option F locked layout. Two parallel Sonnet workers (CCA2A) + main-thread P0 fix on thepack()temporal-corrupts-reclaim-zone bug surfaced in code review (same root cause as the W3 codex P1 from PR #381). Board hygiene included in the SAME PR per E-META-9 main-thread-sentinel doctrine.OQ ratifications absorbed in this PR
D-CSV-1 — causal-edge v2 layout (W-A1)
crates/causal-edge/src/layout.rs(~130 LOC): all shift constants, masks,TrustTextureenum, compile-time_LAYOUT_COVERAGEconst-assert verifying 8+8+8+8+8+3+3+4+3+6+2+3 = 64edge.rs: v2 accessors (inference_mantissai4-signed,w_slot,truth,truth_raw,spare,with_routing(w, t));pack_v2()8-arg constructor (no temporal);#[deprecated]markers on v1inference_type()+temporal()v2_layout_tests.rs(~200 LOC): 16 tests across signed-mantissa round-trip, field-isolation matrix, 2-argwith_routing, spare isolation,size_of == 8default = ["causal-edge-v2-layout"]D-CSV-3 — signed-mantissa InferenceType (W-A1, same crate)
InferenceType::to_mantissa(self) -> i8andfrom_mantissa(m: i8) -> Selfprovide bidirectional v2 mapping while keeping the enum for v1 callers. PR-LL-1 Intervention/Counterfactual absorb into magnitudes 5/6 per L-9.D-CSV-4 — CollapseGateEmission (W-A2, contract crate)
pub type MailboxId = u32— canonical W-slot corpus-root handleCollapseGateEmission { batons: Vec<(u16, u64)>, source_mailbox, chain_position, merge_mode }Vec<(u16, u64)>instead ofSmallVec<[(u16, CausalEdge64); 8]>to preserve the contract zero-dep invariant. SmallVec inline-storage optimization deferred to sprint-12+.new/push_baton/baton_count/wire_cost_bytes(13 + 10 × N per plan §8.2 budget) + provenance accessors. Nocycle_idfield (provenance viasource_mailbox+chain_positionper §8.1).P0 caught in main-thread code review
W-A1 initially left v1
pack()writingtemporal << 52even under v2 feature, corrupting the new reclaim zone (bit 52 = plasticity[2], bits 53-58 = W, bits 59-60 = lens, bits 61-63 = spare). Same root cause as the W3 spec codex P1 from PR #381 — v1 temporal aliases the v2 reclaim zone. Fixed by feature-gating the temporal write inpack()so v2 silently drops the arg with a doc-comment migration pointer topack_v2. Two v1-only tests (test_roundtrip,test_temporal_in_msb_gives_sort_order) gated on#[cfg(not(feature = "causal-edge-v2-layout"))].Pre-existing failure noted (not in scope)
causal_edge::tables::tests::test_build_fastfails on cleanmainunder both feature configurations (confirmed via stash-revert). Unrelated to this PR's reclaim-zone scope. To be filed in ISSUES.md separately.Board hygiene in this PR (per E-META-9)
Test plan
cargo test -p causal-edge --features causal-edge-v2-layout— 30 pass / 1 pre-existing failcargo test -p causal-edge --no-default-features— 16 pass / 1 pre-existing failcargo test -p lance-graph-contract collapse_gate— 8/8 passcargo check -p lance-graph-planner— clean with deprecation warnings (intended)cargo check -p p64-bridge— clean with deprecation warning (intended)https://claude.ai/code/session_01UwJuKqP828qyX1VkLgGJFS
Generated by Claude Code