From 340b3a858647c7ad69a25a8c37dbf1daf265b8fe Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 20:39:05 +0000 Subject: [PATCH 1/9] board: post-merge hygiene for PR #676 (+ backfill #674 LATEST_STATE row) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR_ARC_INVENTORY: #676 entry prepended (Added / Locked / Deferred / Docs / Review / Confidence) — the doc arc that banked E-NOBODY-WAITS-1, shipped VISION.md (the graded AGI canon), the ancestry census, and the D-MTS-1 frozen representational comparison. LATEST_STATE: #676 and #674 rows prepended to the Recently Shipped PRs table — the #674 row was missing there (its post-merge commit updated PR_ARC only), backfilled now per the Mandatory Board-Hygiene Rule. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/board/LATEST_STATE.md | 2 ++ .claude/board/PR_ARC_INVENTORY.md | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index 92831d9b..ef0d8017 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -170,6 +170,8 @@ Membrane consumers can now pull BOTH halves of a render `classid` BBB-safely fro | PR | Merged | Title | What it added | |---|---|---|---| +| **#676** | 2026-07-10 | Post-#674 doc arc: E-NOBODY-WAITS-1 + VISION.md (graded AGI canon) + ancestry census + D-MTS-1 design inputs | Doc-only, 4 commits. E-NOBODY-WAITS-1 banked (no messages, no actors; ractor = compile-time ownership only; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling"; ack-pump canonical, supervisor KanbanMsg drivers = TD-MESSAGE-RESIDUE, leave-as-is per operator). `.claude/v3/VISION.md` = the AGI-aspiring canon, every claim graded [G]/[G-on-proxies]/[RULING]/[ASPIRATION], 2-Sonnet-preflight + 2-Opus-filigree provenance, all 9 review fixes applied. MODULE-TABLE ancestry census: thinking-engine (51) + p64-bridge (1) + cognitive-shader-driver (22 src + build.rs) with gem-status column. Plan addendum: D-MTS-1 frozen comparison — AriGraph context V3-TENANT-SHAPED; arm-discovery + DeepNSM ingest legs; CAM-PQ 6×8=48-bit path codes (address side) vs 6×palette256² = 12 B = one V3 tenant (value side). coderabbit 5/5 findings fixed in `093489c`. Merge `001839e`. | +| **#674** | 2026-07-10 | V3 W2–W6 continuation + comma quorum/awareness measured + 5+3 council + StyleFamily dedup (D-TSC-1) | 16 commits. `contract::style_family::StyleFamily` (12 orchestration families, frozen ordinals Deliberate=0..Metacognitive=11) + `ThinkingStyle::family()` (36→12 total) + `default_runbook()` — five mutually divergent hand-rolled 12-style tables replaced (E-FIVE-STYLE-TABLES-1); first live 5+3 council run (spec v1→v2→v3). D-MTS-5 comma quorum MEASURED GREEN (N_eff 11.00/12; boundary = spectral participation) + D-MTS-6 comma awareness MEASURED GREEN (k*=1: one stored truth bit/comma level ≈ aligned k=4; lattice buys ≈log₂12 effective bits; D-MTS-6b gates real CE64 shrink). `BatchWriter::ack_and_propose` first-ack-wins dedup (codex P2). 1549 tests green. Merge `cd5178e`. | | **#632** | 2026-07-02 | Cross-session intake: RouteBucketTyped (C6) + emission_scan + OCR codebook mirror + GraphRAG-rs inventory + operator rulings | Three sibling wishlists dispositioned; C6 merged verbatim (nexgen retires vendor diff); emission_scan = 2nd scan-family instance (pattern NAMED); OCR 0x08XX mirror of OGAR #148 (fuses arc: flip fuse + two-sided COUNT_FUSE — fuse FIRED 65v68 in the merge window, cleared by lock bump, 68==68); rulings: ownership+tripwires, R-1 naming phantom (domain:appid:classview), R-2 closed (512B row frozen, strided edges), L3 schema design killed; codex P2 x2 resolved (precedence global; collision documented). Contract 792/792. Merge `df367471`. | | **#631** | 2026-07-02 | W1b LIVE: WAL batch writer (4 probes green) + M15 rename + temporal synthesis + live oracle numbers | batch_writer implemented: BTreeMap WAL board, ack(cast, LanceVersion) join, delegation cache, never-refuses stacking (probe 4); M15 MulGateDecision rename (W2 unblocked; collapse_gate confirmed 3rd distinct type); operator rulings pinned (zero-copy descriptor casts + eager drain + mutual masking; melden macht frei — freeze retracted; temporal.rs = the read side, replay = QueryReference::at + deinterlace, M24=M25=time-travel ONE mechanism). Measured live: W3c oracle 1-2 ms framework overhead vs 8.4-8.7 s LLM round trip (rig->xAI grok-4 via FlowRunner); JITSON serve.rs = local CI oracle delta. Planner lib 204 + probes 4/4. Merge `c7149eab`. | | **#630** | 2026-07-02 | V3 W1 START: preflight deltas + WAL writer probes + adoption scan + D-PERT-1 + temporal synthesis | Fable-5 ten-point preflight (M24 board=WAL, W6a baseline inversion, W3 oracle ratchet, W2 probe-first reorder) + operator rulings folded live: zero-copy sink (cast = descriptor never bytes, flush via NodeRowPacket::as_le_bytes), "melden macht frei" (stacked casts never refused — 4 ignored probes define W1b green), temporal.rs deinterlace = the READ side (replay = QueryReference::at + deinterlace; M24/M25/time-travel are ONE mechanism; ack carries LanceVersion). Landed code: batch_writer skeleton + 4 probes; contract::classid_scan (771 green); D-PERT-1 rename (462 green). Audits: planner-SoA type-real/wiring-dormant (M15 GateDecision rename BLOCKING before W2); M7 corrected (NodeRowPacket IS production SoaEnvelope, codex P2); graph-flow benched ~0.4-0.5us/step (two-speed confirmed); M25 KanbanSessionStorage design (graph-flow-kanban envelope exists — wire don't invent). Merge `9a6df2a1`. | diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index b7906667..3a6ecb63 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -35,6 +35,31 @@ --- +## #676 lance-graph: Post-#674 doc arc — E-NOBODY-WAITS-1 + VISION.md (graded AGI canon) + ancestry census + D-MTS-1 design inputs + +**Status:** MERGED 2026-07-10 (merge commit `001839e`), branch `claude/review-claude-board-files-nhqgx1` (restarted from #674's merge), 4 commits, doc-only. + +**Added** +- `.claude/v3/VISION.md` — the AGI-aspiring canon re-grounded on the measured substrate; every claim graded [G] / [G-on-proxies] / [RULING] / [ASPIRATION]; §0 thesis carries the proxy fence on the sentence; organ table (Think fields → V3 homes incl. free_energy/Kausal + global_context); five-axis projection (bytes / readings / time / scale / bits); families→runbooks→templates ladder; Rubicon heart under nobody-waits; anti-dilution laws; the road in dependency order (D-MTS-1 keystone first). Provenance: 2 Sonnet preflights + 2 Opus filigree reviewers (dilution-collapse-sentinel + overclaim-auditor charters), all 9 findings applied. +- MODULE-TABLE ADDENDUM (2): ancestry-pipeline census — thinking-engine (51 files) + p64-bridge (1) + cognitive-shader-driver (22 src + build.rs), gem-status column (WIRED-HOT-PATH / UNWIRED-GEM / CALIBRATION-ONLY / LAB-ONLY / RESIDUE); LAB-ONLY = 12 of 22 driver src files. +- Plan addendum (third wave, operator design input for D-MTS-1): AriGraph context V3-TENANT-SHAPED; ingest legs `lance-graph-arm-discovery` (Aerial+, palette256 integer oracle ρ=0.9973) + DeepNSM (4096 COCA = CAM index codebook); frozen comparison CAM-PQ 6×8 = 48-bit path codes (address side, = OGAR HEEL+HIP+TWIG) vs 6×palette256:palette256 = 12 B = ONE V3 tenant (value side); likely "key addresses, tenant carries" — probed, not assumed. + +**Locked** +- **E-NOBODY-WAITS-1** (operator ruling, canonical in EPIPHANIES): no messages, no actors anywhere; ractor = compile-time ownership guarantee ONLY; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling". Ack-pump (`ack_and_propose` → `try_advance_phase(&mut)`) is the canonical kanban trigger; supervisor `KanbanMsg`/`call!` drivers are documented redundancy (TD-MESSAGE-RESIDUE, leave-as-is per operator; drift signal = NEW code reaching for messages). +- VISION.md is the WHY reference for V3 (README doc-map row + FUTURE-DESIGN header pointer); design PRs cite EPIPHANIES for rulings, VISION for the graded rationale. + +**Deferred** +- TD-STYLE-TABLE-RESIDUE census extension (auto_style consts, UNIFIED_STYLES params, p64-bridge StyleParams, GestaltState ×2, lens triplet, wire.rs LAB-ONLY-but-largest) — follow-up grep queued behind D-TSC-1's shipped fleet run. +- TD-MESSAGE-RESIDUE — permanently parked by ruling (document, don't retire). + +**Docs** — VISION.md; FUTURE-DESIGN + README pointers; EPIPHANIES E-NOBODY-WAITS-1; TECH_DEBT TD-MESSAGE-RESIDUE + TD-STYLE-TABLE-RESIDUE extension; AGENT_LOG census-worker + vision-keeper entries. + +**Review** — coderabbit 5/5 findings verified against the tree and fixed in `093489c` (census headings 49→51 / 23→22; LAB-ONLY stat corrected to 12-of-22 — the rabbit's own suggested "11 of 22" was still wrong, its list missed `auto_detect.rs`; workspace-scope note: both crates under `workspace.exclude`; AGENT_LOG post-commit metadata; MD040 fence). Bugbot did not run (Cursor usage limit). + +**Confidence (2026-07-10):** doc-only; no runtime claims beyond what #674 measured. + +--- + ## #674 lance-graph: V3 W2–W6 continuation + comma quorum/awareness measured + 5+3 council + StyleFamily dedup (D-TSC-1) **Status:** MERGED 2026-07-10 (merge commit `cd5178e`), branch `claude/review-claude-board-files-nhqgx1`, 16 commits. Companion: rs-graph-llm `8ef18b9` (same branch name there, not yet PR'd) — `run_cycle` explicit `on_behalf` (owner ≠ classid). From 66bc359ab040fa48fe6bd68bedbb473bc70eab1c Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 20:54:31 +0000 Subject: [PATCH 2/9] =?UTF-8?q?board:=20E-KANBANSTEP-IS-THE-TRIGGER-1=20?= =?UTF-8?q?=E2=80=94=20operator=20correction=20on=20kanban-advance=20canon?= =?UTF-8?q?icality?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Genealogy correction (doc-only, per the standing leave-as-is ruling): the canonical kanban advance is the pre-existing 'kanbanstep' — the in-stream synchronous fire VersionScheduler::on_version -> try_advance_phase(&mut), where the batch writer fires inline at commit with the version it already knows (contract scheduler.rs §IN; reference loop symbiont kanban_loop.rs SymbiontBoard::step; step_type 'kanban.*' delivery edge in the supervisor). The 550ms SoA cycle budget makes waiting on any ack more expensive than continuing — the shader can't stop thinking; the ack is durability bookkeeping (unacked crash-replay), never a scheduler. During the SurrealQL-AST/DLL carve-out (symbiont re-scope) the kanbanstep loop lost prominence and later arcs rebuilt the trigger as the ack-pump and mis-ranked it canonical; E-ACK-IS-THE-KANBAN-TRIGGER-1's trigger ranking is corrected (its driver-never-waits clause stands). ack_and_propose demoted to reconciliation bookkeeping; deliver_kanban_step's cast(Advance) delivery added to TD-MESSAGE-RESIDUE. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/board/EPIPHANIES.md | 19 +++++++++++++++++++ .claude/board/TECH_DEBT.md | 15 +++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 610b6943..e0f11aa7 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,22 @@ +## 2026-07-10 — E-KANBANSTEP-IS-THE-TRIGGER-1 — the CANONICAL kanban advance is the in-stream synchronous step (the pre-existing "kanbanstep"); the ack is bookkeeping, never a pacing mechanism +**Status:** RULING + genealogy CORRECTION (operator, 2026-07-10: "the doctrine was cognitive-shader-driver can't stop thinking … the SoA budgets of 550ms make it more expensive to wait for any stupid ack; the old already existing system was called kanbanstep and it was removed beyond recognition when removing the SurrealQL AST DLL shape"). Corrects the trigger-RANKING in E-ACK-IS-THE-KANBAN-TRIGGER-1 (whose "the driver never waits" clause STANDS); reads with E-NOBODY-WAITS-1. + +**The doctrine (operator):** cognitive-shader-driver **can't stop thinking** — cycles continue as a STREAM over reasoning; the 550 ms SoA cycle budget makes waiting for ANY ack **more expensive than continuing**. The ack's only legitimate job is durability bookkeeping (the `unacked()` crash-replay surface); it never schedules, never paces, never gates the next move. + +**The pre-existing system ("kanbanstep") — archaeology, verified in-tree 2026-07-10:** the synchronous in-stream kanban advance survives in three artifacts: +1. `contract::scheduler::VersionScheduler::on_version(view, DatasetVersion, exec) -> Option` — a **sync pure function**; a batch writer that commits a SoA batch **already knows the version it wrote** and fires the advance INLINE: `on_version → try_advance_phase(&mut)`, no async, no round trip (`scheduler.rs` §IN; `surreal_container/tests/scheduler_seam.rs` drives the whole Rubicon arc this way). +2. `symbiont::kanban_loop::SymbiontBoard::step()` — the pure-SoA reference loop; its doc-comment carries the doctrine verbatim: *"THE TRIGGER IS SYNCHRONOUS — the writer fires it … with NO async"* and *"`step()` drives the loop by direct owned mutation, never by sending a message."* +3. `supervisor::{parse_kanban_step, deliver_kanban_step}` — the `UnifiedStep { step_type: "kanban.." }` delivery edge (`StepDomain::Kanban`, D-MBX-A6) — the step-in-the-plan-stream shape; its current DELIVERY is the message shim (`cast(Advance)` — TD-MESSAGE-RESIDUE). + +**What happened (the "removed beyond recognition"):** during the SurrealQL-AST/DLL carve-out (symbiont W2c re-scope to storage/read-glove-only; "render is struct+methods not SurrealQL", OGAR #149 arc), the kanbanstep loop lost its prominence — the reference loop lived on the symbiont/surreal_container side being demoted, and subsequent sessions (including the E-ACK-IS-THE-KANBAN-TRIGGER-1 arc) rebuilt the trigger as the **ack-pump** (`BatchWriter::ack_and_propose`) and mis-ranked IT canonical. The pump couples the next-move PROPOSAL to an ack event that arrives later — a wait-shaped scheduler by construction, exactly what the 550 ms budget forbids. + +**Corrected canonicality:** +- **CANONICAL:** the in-stream synchronous step — the writer/stream fires `on_version → try_advance_phase(&mut)` inline at commit with the version it already holds. The stream is the trigger; thinking never pauses for storage. +- **DEMOTED:** `ack_and_propose` = reconciliation/crash-replay bookkeeping for async-sink shapes (WAL `unacked()` accounting). Correct code, wrong rank — it must never be the thing that pumps cognition. +- **RESIDUE:** `deliver_kanban_step`'s `cast(Advance)` delivery joins TD-MESSAGE-RESIDUE (the step_type SHAPE is canonical; the message DELIVERY is the redundancy). + +**Disposition:** doc-only per the standing ruling (LEAVE AS IS AND DOCUMENT). Drift signal: any NEW code that paces a cycle on an ack event, or that awaits storage before advancing a KanbanColumn. + ## 2026-07-10 — E-COMMA-AWARENESS-MEASURED-1 — D-MTS-6 ran GREEN: ONE stored truth bit per comma level matches the full CausalEdge64's awareness proxies (k*=1 vs aligned k*=4); the comma lattice buys ≈ log₂(L) effective bits **Status:** FINDING (measured 2026-07-10; probe `perturbation-sim/examples/comma_awareness.rs`, pre-registered gates, run chronicle in the header; realizes the falsifiable shape of E-THINKING-TENANTS-V3-1's second half) diff --git a/.claude/board/TECH_DEBT.md b/.claude/board/TECH_DEBT.md index 94f133ff..a2898b89 100644 --- a/.claude/board/TECH_DEBT.md +++ b/.claude/board/TECH_DEBT.md @@ -17,6 +17,21 @@ that, not the existing residue, is what a reviewer blocks. The prime invariant every change on this surface is judged against: **nobody waits for anything or any scheduling.** +*Extension (2026-07-10, per E-KANBANSTEP-IS-THE-TRIGGER-1):* two +corrections to the entry above. (a) The phrase "canonical message-free +loop (`BatchWriter::ack_and_propose` …)" over-ranked the ack-pump: the +CANONICAL advance is the pre-existing **kanbanstep** — the in-stream +synchronous fire `VersionScheduler::on_version → try_advance_phase(&mut)` +(the writer already knows the version it committed; reference loop +`symbiont::kanban_loop::SymbiontBoard::step()`); `ack_and_propose` is +demoted to crash-replay/durability bookkeeping (`unacked()`), never a +pacing mechanism — waiting on an ack is more expensive than the 550 ms +cycle budget allows. (b) `supervisor::deliver_kanban_step`'s +`cast(Advance)` delivery is added to this residue catalogue — the +`step_type "kanban.*"` SHAPE (StepDomain::Kanban, D-MBX-A6) is canonical; +the message DELIVERY behind it is the redundancy. Same disposition: +leave as is, documented. + ## TD-STYLE-TABLE-RESIDUE (2026-07-10, D-TSC-1 follow-ups) Three residues from the M9 ThinkingStyle dedup (all OUT of D-TSC-1 scope, From 05f4137410591870f9e680c78dec9f4e2c4c7651 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 21:04:18 +0000 Subject: [PATCH 3/9] =?UTF-8?q?board:=20E-ACK-HARD-GATE-VS-KANBANSTEP-STRE?= =?UTF-8?q?AM-1=20=E2=80=94=20two-tier=20advance=20split=20ratified?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator ruling: ack_and_propose belongs to OGAR ticket orchestration — the low-level orchestration HARD GATE for work items that want explicit SLA and an auditable goalstate (the WAL board + acked map IS the audit trail; a ticket does not advance until durability is confirmed — waiting is a feature there). kanbanstep is the stream reasoning tier: in-stream synchronous on_version -> try_advance_phase(&mut), nobody waits, 550ms budget. Tier test: ticket (SLA/audit) -> hard gate; thought (cycle budget) -> stream; never cross-route. Resolves the 'correct code, wrong rank' verdict on BatchWriter:: ack_and_propose to 'correct code, wrong TIER'. Wiring queued as D-AHG-1 in FUTURE-DESIGN (OGAR side rides the batched-mint discipline, never a solo OGAR PR). Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/board/EPIPHANIES.md | 12 ++++++++++++ .claude/v3/FUTURE-DESIGN.md | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index e0f11aa7..e352dc31 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,15 @@ +## 2026-07-10 — E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1 — ack_and_propose belongs to OGAR ticket orchestration (the low-level orchestration HARD GATE: explicit SLA + auditable goalstate); kanbanstep is the stream reasoning +**Status:** RULING (operator, 2026-07-10: "ack and propose should be in OGAR for ticket orchestration stuff that want more explicit SLA and auditable goalstate — we could say it's the low level Orchestration hard gate and Kanbanstep the stream reasoning"). Completes E-KANBANSTEP-IS-THE-TRIGGER-1 (below): the propose-on-ack pattern is not merely demoted bookkeeping — it has a proper HOME. + +**The two-tier split, ratified:** +- **kanbanstep = stream reasoning** (lance-graph cognitive substrate): the in-stream synchronous advance (`VersionScheduler::on_version → try_advance_phase(&mut)`), fired inline by the writer with the version it already holds. Cognition never waits — the 550 ms SoA budget + can't-stop-thinking govern this tier. E-NOBODY-WAITS-1 is this tier's prime invariant. +- **ack_and_propose = the low-level orchestration HARD GATE** (OGAR ticket orchestration): for work items that WANT explicit SLA and an auditable goalstate, propose-on-ack is the correct semantics — a ticket does not advance until durability is confirmed, and the WAL board + `acked: BTreeMap` + `unacked()` surface IS the audit trail (cast order preserved, crash-replay = the unacked set, goalstate = the acked version per cast). Waiting is a FEATURE here, not a bug: tickets may wait; thinking may not. + +**Consequences:** +- The "correct code, wrong rank" verdict on `BatchWriter::ack_and_propose` resolves to "correct code, wrong TIER": the pattern migrates to (or is mirrored into) OGAR's ticket-orchestration surface; lance-graph keeps kanbanstep as the reasoning-stream advance. +- Tier test for any future advance-path design: *does this unit of work carry an SLA/audit obligation (ticket) or a cycle budget (thought)?* Ticket → hard gate (ack-gated, auditable). Thought → stream (inline, nobody waits). A thought must never be routed through the hard gate; a ticket must never skip it. +- Wiring queued in FUTURE-DESIGN (OGAR changes ride the batched-mint discipline — never a solo OGAR PR): move/mirror the propose-on-ack pattern to OGAR ticket orchestration; the planner-side `BatchWriter` WAL/ack bookkeeping stays as the storage-durability surface it already is. + ## 2026-07-10 — E-KANBANSTEP-IS-THE-TRIGGER-1 — the CANONICAL kanban advance is the in-stream synchronous step (the pre-existing "kanbanstep"); the ack is bookkeeping, never a pacing mechanism **Status:** RULING + genealogy CORRECTION (operator, 2026-07-10: "the doctrine was cognitive-shader-driver can't stop thinking … the SoA budgets of 550ms make it more expensive to wait for any stupid ack; the old already existing system was called kanbanstep and it was removed beyond recognition when removing the SurrealQL AST DLL shape"). Corrects the trigger-RANKING in E-ACK-IS-THE-KANBAN-TRIGGER-1 (whose "the driver never waits" clause STANDS); reads with E-NOBODY-WAITS-1. diff --git a/.claude/v3/FUTURE-DESIGN.md b/.claude/v3/FUTURE-DESIGN.md index 6746c8de..57ae0f24 100644 --- a/.claude/v3/FUTURE-DESIGN.md +++ b/.claude/v3/FUTURE-DESIGN.md @@ -11,6 +11,13 @@ --- +## 2026-07-10 (third wave) — the two-tier advance split: hard gate (OGAR tickets) vs stream (kanbanstep) + +| Ruling | One line | Wiring queue | +|---|---|---| +| E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1 | `ack_and_propose` = the low-level orchestration **HARD GATE** → belongs to OGAR ticket orchestration (explicit SLA + auditable goalstate; WAL board + `acked` map = the audit trail; waiting is a FEATURE for tickets); **kanbanstep** = the stream reasoning (in-stream synchronous `on_version → try_advance_phase(&mut)`; nobody waits, 550 ms budget) | **D-AHG-1**: move/mirror propose-on-ack into OGAR's ticket-orchestration surface — rides the batched-mint discipline, NEVER a solo OGAR PR; planner `BatchWriter` keeps the WAL/ack durability bookkeeping. Tier test for reviews: ticket (SLA/audit) → hard gate; thought (cycle budget) → stream; never cross-route | +| E-KANBANSTEP-IS-THE-TRIGGER-1 | genealogy corrected: kanbanstep (contract `scheduler.rs` §IN + symbiont `kanban_loop.rs` + supervisor `deliver_kanban_step` step shape) predates and outranks the ack-pump; it was obscured in the SurrealQL-AST carve-out | doc-only (leave-as-is ruling stands); drift signal = new code pacing a cycle on an ack | + ## 2026-07-10 (second wave) — families vs runbooks; thinking tenants → V3; the smaller-CE64 × comma awareness probe | Ruling | One line | Wiring queue | From 39b6818f2f232da7c0a13425f0063c18c5314ffd Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 21:09:57 +0000 Subject: [PATCH 4/9] =?UTF-8?q?vocab:=20retire=20'pump'=20=E2=80=94=20the?= =?UTF-8?q?=20orchestration=20hard=20gate=20/=20ack-gated=20advance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Operator: 'pump sounds terribly unprofessional.' Sanctioned vocabulary per E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1: the mechanism is 'the orchestration hard gate', the action is 'ack-gated advance'. - batch_writer.rs: doc comment reframed to the hard-gate + tier note (ticket tier vs kanbanstep stream tier); test names renamed (ack_gated_chain_walks_the_arc..., duplicate_and_stray_acks_never_ release_twice); all pump wording replaced. 3/3 tests green; no new clippy warnings (pre-existing CE64-v2 deprecations untouched). - Board: pump wording swept from THIS BRANCH's unmerged entries only (EPIPHANIES E-KANBANSTEP + E-ACK-HARD-GATE, TECH_DEBT extension, LATEST_STATE/PR_ARC #676 rows, FUTURE-DESIGN third wave); merged historical entries stay per append-only. Vocabulary-retirement line added to the E-ACK-HARD-GATE entry. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/board/EPIPHANIES.md | 5 +-- .claude/board/LATEST_STATE.md | 2 +- .claude/board/PR_ARC_INVENTORY.md | 2 +- .claude/board/TECH_DEBT.md | 2 +- .claude/v3/FUTURE-DESIGN.md | 2 +- .../lance-graph-planner/src/batch_writer.rs | 36 ++++++++++++------- 6 files changed, 30 insertions(+), 19 deletions(-) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index e352dc31..25b35128 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -9,6 +9,7 @@ - The "correct code, wrong rank" verdict on `BatchWriter::ack_and_propose` resolves to "correct code, wrong TIER": the pattern migrates to (or is mirrored into) OGAR's ticket-orchestration surface; lance-graph keeps kanbanstep as the reasoning-stream advance. - Tier test for any future advance-path design: *does this unit of work carry an SLA/audit obligation (ticket) or a cycle budget (thought)?* Ticket → hard gate (ack-gated, auditable). Thought → stream (inline, nobody waits). A thought must never be routed through the hard gate; a ticket must never skip it. - Wiring queued in FUTURE-DESIGN (OGAR changes ride the batched-mint discipline — never a solo OGAR PR): move/mirror the propose-on-ack pattern to OGAR ticket orchestration; the planner-side `BatchWriter` WAL/ack bookkeeping stays as the storage-durability surface it already is. +- **Vocabulary (operator, 2026-07-10):** the informal term "pump"/"ack-pump" is RETIRED. Sanctioned names: **the orchestration hard gate** (the mechanism) / **ack-gated advance** (the action). Historical board entries carrying the old term stay per append-only; live surfaces (code doc-comments, test names, new entries) use the sanctioned names. ## 2026-07-10 — E-KANBANSTEP-IS-THE-TRIGGER-1 — the CANONICAL kanban advance is the in-stream synchronous step (the pre-existing "kanbanstep"); the ack is bookkeeping, never a pacing mechanism **Status:** RULING + genealogy CORRECTION (operator, 2026-07-10: "the doctrine was cognitive-shader-driver can't stop thinking … the SoA budgets of 550ms make it more expensive to wait for any stupid ack; the old already existing system was called kanbanstep and it was removed beyond recognition when removing the SurrealQL AST DLL shape"). Corrects the trigger-RANKING in E-ACK-IS-THE-KANBAN-TRIGGER-1 (whose "the driver never waits" clause STANDS); reads with E-NOBODY-WAITS-1. @@ -20,11 +21,11 @@ 2. `symbiont::kanban_loop::SymbiontBoard::step()` — the pure-SoA reference loop; its doc-comment carries the doctrine verbatim: *"THE TRIGGER IS SYNCHRONOUS — the writer fires it … with NO async"* and *"`step()` drives the loop by direct owned mutation, never by sending a message."* 3. `supervisor::{parse_kanban_step, deliver_kanban_step}` — the `UnifiedStep { step_type: "kanban.." }` delivery edge (`StepDomain::Kanban`, D-MBX-A6) — the step-in-the-plan-stream shape; its current DELIVERY is the message shim (`cast(Advance)` — TD-MESSAGE-RESIDUE). -**What happened (the "removed beyond recognition"):** during the SurrealQL-AST/DLL carve-out (symbiont W2c re-scope to storage/read-glove-only; "render is struct+methods not SurrealQL", OGAR #149 arc), the kanbanstep loop lost its prominence — the reference loop lived on the symbiont/surreal_container side being demoted, and subsequent sessions (including the E-ACK-IS-THE-KANBAN-TRIGGER-1 arc) rebuilt the trigger as the **ack-pump** (`BatchWriter::ack_and_propose`) and mis-ranked IT canonical. The pump couples the next-move PROPOSAL to an ack event that arrives later — a wait-shaped scheduler by construction, exactly what the 550 ms budget forbids. +**What happened (the "removed beyond recognition"):** during the SurrealQL-AST/DLL carve-out (symbiont W2c re-scope to storage/read-glove-only; "render is struct+methods not SurrealQL", OGAR #149 arc), the kanbanstep loop lost its prominence — the reference loop lived on the symbiont/surreal_container side being demoted, and subsequent sessions (including the E-ACK-IS-THE-KANBAN-TRIGGER-1 arc) rebuilt the trigger as the **ack-gated advance** (`BatchWriter::ack_and_propose`) and mis-ranked IT canonical. That gate couples the next-move PROPOSAL to an ack event that arrives later — a wait-shaped scheduler by construction, exactly what the 550 ms budget forbids. **Corrected canonicality:** - **CANONICAL:** the in-stream synchronous step — the writer/stream fires `on_version → try_advance_phase(&mut)` inline at commit with the version it already holds. The stream is the trigger; thinking never pauses for storage. -- **DEMOTED:** `ack_and_propose` = reconciliation/crash-replay bookkeeping for async-sink shapes (WAL `unacked()` accounting). Correct code, wrong rank — it must never be the thing that pumps cognition. +- **DEMOTED:** `ack_and_propose` = reconciliation/crash-replay bookkeeping for async-sink shapes (WAL `unacked()` accounting). Correct code, wrong rank — it must never be the thing that drives cognition. - **RESIDUE:** `deliver_kanban_step`'s `cast(Advance)` delivery joins TD-MESSAGE-RESIDUE (the step_type SHAPE is canonical; the message DELIVERY is the redundancy). **Disposition:** doc-only per the standing ruling (LEAVE AS IS AND DOCUMENT). Drift signal: any NEW code that paces a cycle on an ack event, or that awaits storage before advancing a KanbanColumn. diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index ef0d8017..8cd3b5aa 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -170,7 +170,7 @@ Membrane consumers can now pull BOTH halves of a render `classid` BBB-safely fro | PR | Merged | Title | What it added | |---|---|---|---| -| **#676** | 2026-07-10 | Post-#674 doc arc: E-NOBODY-WAITS-1 + VISION.md (graded AGI canon) + ancestry census + D-MTS-1 design inputs | Doc-only, 4 commits. E-NOBODY-WAITS-1 banked (no messages, no actors; ractor = compile-time ownership only; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling"; ack-pump canonical, supervisor KanbanMsg drivers = TD-MESSAGE-RESIDUE, leave-as-is per operator). `.claude/v3/VISION.md` = the AGI-aspiring canon, every claim graded [G]/[G-on-proxies]/[RULING]/[ASPIRATION], 2-Sonnet-preflight + 2-Opus-filigree provenance, all 9 review fixes applied. MODULE-TABLE ancestry census: thinking-engine (51) + p64-bridge (1) + cognitive-shader-driver (22 src + build.rs) with gem-status column. Plan addendum: D-MTS-1 frozen comparison — AriGraph context V3-TENANT-SHAPED; arm-discovery + DeepNSM ingest legs; CAM-PQ 6×8=48-bit path codes (address side) vs 6×palette256² = 12 B = one V3 tenant (value side). coderabbit 5/5 findings fixed in `093489c`. Merge `001839e`. | +| **#676** | 2026-07-10 | Post-#674 doc arc: E-NOBODY-WAITS-1 + VISION.md (graded AGI canon) + ancestry census + D-MTS-1 design inputs | Doc-only, 4 commits. E-NOBODY-WAITS-1 banked (no messages, no actors; ractor = compile-time ownership only; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling"; ack-gated advance ranked canonical (since re-tiered, see E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1), supervisor KanbanMsg drivers = TD-MESSAGE-RESIDUE, leave-as-is per operator). `.claude/v3/VISION.md` = the AGI-aspiring canon, every claim graded [G]/[G-on-proxies]/[RULING]/[ASPIRATION], 2-Sonnet-preflight + 2-Opus-filigree provenance, all 9 review fixes applied. MODULE-TABLE ancestry census: thinking-engine (51) + p64-bridge (1) + cognitive-shader-driver (22 src + build.rs) with gem-status column. Plan addendum: D-MTS-1 frozen comparison — AriGraph context V3-TENANT-SHAPED; arm-discovery + DeepNSM ingest legs; CAM-PQ 6×8=48-bit path codes (address side) vs 6×palette256² = 12 B = one V3 tenant (value side). coderabbit 5/5 findings fixed in `093489c`. Merge `001839e`. | | **#674** | 2026-07-10 | V3 W2–W6 continuation + comma quorum/awareness measured + 5+3 council + StyleFamily dedup (D-TSC-1) | 16 commits. `contract::style_family::StyleFamily` (12 orchestration families, frozen ordinals Deliberate=0..Metacognitive=11) + `ThinkingStyle::family()` (36→12 total) + `default_runbook()` — five mutually divergent hand-rolled 12-style tables replaced (E-FIVE-STYLE-TABLES-1); first live 5+3 council run (spec v1→v2→v3). D-MTS-5 comma quorum MEASURED GREEN (N_eff 11.00/12; boundary = spectral participation) + D-MTS-6 comma awareness MEASURED GREEN (k*=1: one stored truth bit/comma level ≈ aligned k=4; lattice buys ≈log₂12 effective bits; D-MTS-6b gates real CE64 shrink). `BatchWriter::ack_and_propose` first-ack-wins dedup (codex P2). 1549 tests green. Merge `cd5178e`. | | **#632** | 2026-07-02 | Cross-session intake: RouteBucketTyped (C6) + emission_scan + OCR codebook mirror + GraphRAG-rs inventory + operator rulings | Three sibling wishlists dispositioned; C6 merged verbatim (nexgen retires vendor diff); emission_scan = 2nd scan-family instance (pattern NAMED); OCR 0x08XX mirror of OGAR #148 (fuses arc: flip fuse + two-sided COUNT_FUSE — fuse FIRED 65v68 in the merge window, cleared by lock bump, 68==68); rulings: ownership+tripwires, R-1 naming phantom (domain:appid:classview), R-2 closed (512B row frozen, strided edges), L3 schema design killed; codex P2 x2 resolved (precedence global; collision documented). Contract 792/792. Merge `df367471`. | | **#631** | 2026-07-02 | W1b LIVE: WAL batch writer (4 probes green) + M15 rename + temporal synthesis + live oracle numbers | batch_writer implemented: BTreeMap WAL board, ack(cast, LanceVersion) join, delegation cache, never-refuses stacking (probe 4); M15 MulGateDecision rename (W2 unblocked; collapse_gate confirmed 3rd distinct type); operator rulings pinned (zero-copy descriptor casts + eager drain + mutual masking; melden macht frei — freeze retracted; temporal.rs = the read side, replay = QueryReference::at + deinterlace, M24=M25=time-travel ONE mechanism). Measured live: W3c oracle 1-2 ms framework overhead vs 8.4-8.7 s LLM round trip (rig->xAI grok-4 via FlowRunner); JITSON serve.rs = local CI oracle delta. Planner lib 204 + probes 4/4. Merge `c7149eab`. | diff --git a/.claude/board/PR_ARC_INVENTORY.md b/.claude/board/PR_ARC_INVENTORY.md index 3a6ecb63..98b68f45 100644 --- a/.claude/board/PR_ARC_INVENTORY.md +++ b/.claude/board/PR_ARC_INVENTORY.md @@ -45,7 +45,7 @@ - Plan addendum (third wave, operator design input for D-MTS-1): AriGraph context V3-TENANT-SHAPED; ingest legs `lance-graph-arm-discovery` (Aerial+, palette256 integer oracle ρ=0.9973) + DeepNSM (4096 COCA = CAM index codebook); frozen comparison CAM-PQ 6×8 = 48-bit path codes (address side, = OGAR HEEL+HIP+TWIG) vs 6×palette256:palette256 = 12 B = ONE V3 tenant (value side); likely "key addresses, tenant carries" — probed, not assumed. **Locked** -- **E-NOBODY-WAITS-1** (operator ruling, canonical in EPIPHANIES): no messages, no actors anywhere; ractor = compile-time ownership guarantee ONLY; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling". Ack-pump (`ack_and_propose` → `try_advance_phase(&mut)`) is the canonical kanban trigger; supervisor `KanbanMsg`/`call!` drivers are documented redundancy (TD-MESSAGE-RESIDUE, leave-as-is per operator; drift signal = NEW code reaching for messages). +- **E-NOBODY-WAITS-1** (operator ruling, canonical in EPIPHANIES): no messages, no actors anywhere; ractor = compile-time ownership guarantee ONLY; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling". The ack-gated advance (`ack_and_propose` → `try_advance_phase(&mut)`) was ranked the canonical kanban trigger (since re-tiered: E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1); supervisor `KanbanMsg`/`call!` drivers are documented redundancy (TD-MESSAGE-RESIDUE, leave-as-is per operator; drift signal = NEW code reaching for messages). - VISION.md is the WHY reference for V3 (README doc-map row + FUTURE-DESIGN header pointer); design PRs cite EPIPHANIES for rulings, VISION for the graded rationale. **Deferred** diff --git a/.claude/board/TECH_DEBT.md b/.claude/board/TECH_DEBT.md index a2898b89..38e0b34a 100644 --- a/.claude/board/TECH_DEBT.md +++ b/.claude/board/TECH_DEBT.md @@ -19,7 +19,7 @@ waits for anything or any scheduling.** *Extension (2026-07-10, per E-KANBANSTEP-IS-THE-TRIGGER-1):* two corrections to the entry above. (a) The phrase "canonical message-free -loop (`BatchWriter::ack_and_propose` …)" over-ranked the ack-pump: the +loop (`BatchWriter::ack_and_propose` …)" over-ranked the ack-gated advance: the CANONICAL advance is the pre-existing **kanbanstep** — the in-stream synchronous fire `VersionScheduler::on_version → try_advance_phase(&mut)` (the writer already knows the version it committed; reference loop diff --git a/.claude/v3/FUTURE-DESIGN.md b/.claude/v3/FUTURE-DESIGN.md index 57ae0f24..32a94820 100644 --- a/.claude/v3/FUTURE-DESIGN.md +++ b/.claude/v3/FUTURE-DESIGN.md @@ -16,7 +16,7 @@ | Ruling | One line | Wiring queue | |---|---|---| | E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1 | `ack_and_propose` = the low-level orchestration **HARD GATE** → belongs to OGAR ticket orchestration (explicit SLA + auditable goalstate; WAL board + `acked` map = the audit trail; waiting is a FEATURE for tickets); **kanbanstep** = the stream reasoning (in-stream synchronous `on_version → try_advance_phase(&mut)`; nobody waits, 550 ms budget) | **D-AHG-1**: move/mirror propose-on-ack into OGAR's ticket-orchestration surface — rides the batched-mint discipline, NEVER a solo OGAR PR; planner `BatchWriter` keeps the WAL/ack durability bookkeeping. Tier test for reviews: ticket (SLA/audit) → hard gate; thought (cycle budget) → stream; never cross-route | -| E-KANBANSTEP-IS-THE-TRIGGER-1 | genealogy corrected: kanbanstep (contract `scheduler.rs` §IN + symbiont `kanban_loop.rs` + supervisor `deliver_kanban_step` step shape) predates and outranks the ack-pump; it was obscured in the SurrealQL-AST carve-out | doc-only (leave-as-is ruling stands); drift signal = new code pacing a cycle on an ack | +| E-KANBANSTEP-IS-THE-TRIGGER-1 | genealogy corrected: kanbanstep (contract `scheduler.rs` §IN + symbiont `kanban_loop.rs` + supervisor `deliver_kanban_step` step shape) predates and outranks the ack-gated advance; it was obscured in the SurrealQL-AST carve-out | doc-only (leave-as-is ruling stands); drift signal = new code pacing a cycle on an ack | ## 2026-07-10 (second wave) — families vs runbooks; thinking tenants → V3; the smaller-CE64 × comma awareness probe diff --git a/crates/lance-graph-planner/src/batch_writer.rs b/crates/lance-graph-planner/src/batch_writer.rs index 8d43d28a..1648ec86 100644 --- a/crates/lance-graph-planner/src/batch_writer.rs +++ b/crates/lance-graph-planner/src/batch_writer.rs @@ -104,10 +104,19 @@ impl

BatchWriter

{ self.acked.insert(cast, version); } - /// **The self-updating orchestration pump (operator ruling, 2026-07-10): - /// the ack IS the next kanban trigger.** Records the ack, then lowers the - /// assigned `LanceVersion` to the next legal [`KanbanMove`] proposal via - /// the provided [`VersionScheduler`] over `view`. + /// **The low-level orchestration HARD GATE (operator rulings, 2026-07-10): + /// an ack-gated advance for SLA/audit-bearing work.** Records the ack, + /// then lowers the assigned `LanceVersion` to the next legal + /// [`KanbanMove`] proposal via the provided [`VersionScheduler`] over + /// `view`. + /// + /// **Tier note (E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1):** this is the + /// TICKET tier — work items that want an explicit SLA and an auditable + /// goalstate advance only on confirmed durability, and the WAL board + + /// `acked` map is their audit trail. The STREAM/reasoning tier (the + /// kanbanstep) never routes through here: a writer that already holds + /// the version it committed fires `on_version → try_advance_phase(&mut)` + /// inline — thinking never waits on an ack. /// /// The loop this closes — the StreamDto "can't stop thinking" lineage: /// @@ -123,7 +132,8 @@ impl

BatchWriter

{ /// `cast` returns immediately ("melden macht frei"), the write is async, /// and the board update is a *consequence of the write completing*, not /// something the thinker schedules. Orchestration is self-updating — - /// every completed write pumps the next kanban update. + /// every completed write releases the next kanban update through the + /// gate. /// /// Propose-don't-dispose is preserved: the writer only PROPOSES; the /// owner (`MailboxSoaOwner` / the KanbanActor) applies the move — the @@ -134,13 +144,13 @@ impl

BatchWriter

{ /// cycle's window from this same proposal (M12). /// /// **At-least-once delivery (codex P2 on #674):** only the FIRST - /// unacked→acked transition pumps a proposal. A duplicate ack (async + /// unacked→acked transition releases a proposal. A duplicate ack (async /// sink retry, version-watcher replaying the same `CastId`) returns /// `None` WITHOUT overwriting the first recorded version — first ack /// wins, keeping the CastId↔LanceVersion temporal join stable. A stray /// `CastId` (never cast on this board) also returns `None` and records /// nothing. The low-level [`ack`](Self::ack) stays the unconditional - /// recording primitive; dedup lives at the pump, because the pump is + /// recording primitive; dedup lives at the gate, because the gate is /// what would otherwise multiply lifecycle moves. pub fn ack_and_propose( &mut self, @@ -257,7 +267,7 @@ mod tests { // The async sink completes c1: the ack ITSELF proposes the next // kanban update (Planning → CognitiveWork), carrying the Libet - // anchor — orchestration pumps itself off write completions. + // anchor — orchestration self-updates off write completions. let mv = w .ack_and_propose( c1, @@ -275,7 +285,7 @@ mod tests { } #[test] - fn self_pumping_chain_walks_the_arc_off_write_completions_alone() { + fn ack_gated_chain_walks_the_arc_off_write_completions_alone() { // Three async write completions, each triggering the next update: // the board walks Planning → CognitiveWork → Evaluation → Commit // with NO scheduler call from the thinker's side. @@ -303,7 +313,7 @@ mod tests { phase = mv.to; // the owner disposed the proposal; next view reflects it } - // At the absorbing column the pump rests: ack recorded, no proposal, + // At the absorbing column the gate rests: ack recorded, no proposal, // no error — the no-op tick is suppressed, never a deadlock. let last = w.cast(7, vec![], 9); let rest = w.ack_and_propose( @@ -321,7 +331,7 @@ mod tests { /// lifecycle moves — only the FIRST unacked→acked transition proposes; /// duplicate acks keep the first version; stray casts record nothing. #[test] - fn duplicate_and_stray_acks_never_pump_twice() { + fn duplicate_and_stray_acks_never_release_twice() { let mut w: BatchWriter = BatchWriter::new(); let c1 = w.cast(7, vec![], 0); @@ -333,7 +343,7 @@ mod tests { &PhaseView(KanbanColumn::Planning), ExecTarget::Native, ); - assert!(first.is_some(), "first unacked->acked transition pumps"); + assert!(first.is_some(), "first unacked->acked transition releases"); // Sink retry / watcher replay of the same CastId: NO second // proposal, and the first recorded version wins (the temporal @@ -345,7 +355,7 @@ mod tests { &PhaseView(KanbanColumn::Planning), ExecTarget::Native, ); - assert!(dup.is_none(), "duplicate ack must not pump a second move"); + assert!(dup.is_none(), "duplicate ack must not release a second move"); assert_eq!(w.acked_version(c1), Some(41), "first ack wins"); // Stray CastId (never cast on this board): no proposal, no record. From 1c01a744955e26b04eb94010ed04a44e550604f7 Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 21:22:15 +0000 Subject: [PATCH 5/9] =?UTF-8?q?board:=20fourth-wave=20row=20=E2=80=94=20th?= =?UTF-8?q?e=20chess=20arc=20(stockfish-rs=20bootstrap,=20E-CHESS=20instan?= =?UTF-8?q?tiation)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cross-reference for the operator-seeded sibling arc: stockfish-rs b987c4b bootstraps shakmaty x Stockfish-harvest on the 64x64=4096 cascade; NNUE's incremental accumulator is E-CHESS (#539) made literal — L4's incremental-vs-refresh measurement is the compute_dag receipt. Plan lives in stockfish-rs/.claude/plans/stockfish-harvest-64x64-v1.md. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/v3/FUTURE-DESIGN.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.claude/v3/FUTURE-DESIGN.md b/.claude/v3/FUTURE-DESIGN.md index 32a94820..180d0f27 100644 --- a/.claude/v3/FUTURE-DESIGN.md +++ b/.claude/v3/FUTURE-DESIGN.md @@ -11,6 +11,12 @@ --- +## 2026-07-10 (fourth wave) — the chess arc: E-CHESS gets its measured instantiation (sibling repo) + +| Seed | One line | Wiring queue | +|---|---|---| +| operator suggestion → `stockfish-rs` bootstrap (`b987c4b`) | shakmaty (rules, consumed never re-implemented) × ruff_cpp_spo Stockfish harvest (oracle-only) × the 64×64=4096 cascade — from×to move matrix / ButterflyHistory / NNUE HalfKAv2_hm are natively the gridlake shape; NNUE's incremental accumulator = **E-CHESS (#539) made literal and measurable**; int8 GEMM reuses the Tesseract-proven `ndarray::simd` primitives | Plan: `stockfish-rs/.claude/plans/stockfish-harvest-64x64-v1.md` (P0 oracle → L1 net loader → L2 index parity → L3 refresh → L4 incremental keystone → L5 evaluate() parity → L6 search on the 64×64 butterfly SoA lane, measured-not-parity; later UCI + Lichess-API arm). L4's incremental-vs-refresh speedup = the compute_dag receipt E-CHESS has been waiting for | + ## 2026-07-10 (third wave) — the two-tier advance split: hard gate (OGAR tickets) vs stream (kanbanstep) | Ruling | One line | Wiring queue | From eef488ca8e84b79cc8bac682a68517205c10870e Mon Sep 17 00:00:00 2001 From: Claude Date: Fri, 10 Jul 2026 21:36:27 +0000 Subject: [PATCH 6/9] board: queue stockfish-rs PEXT/Morton technique note for D-MTS-2 Cross-reference to stockfish-rs/.claude/knowledge/stockfish-pext-morton-adjacency.md (honest finding: Stockfish has no Morton/pyramid/palette/comma code; the Magic struct's pext/pdep gather-lookup-scatter IS the hardware primitive family a Morton tile pack/unpack needs, plus the three-tier CPU-family dispatch lesson). Queued as a candidate AVX-512/BMI2 fast path input for whoever builds D-MTS-2's L4 shader tile primitive; not yet implemented or measured here. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .../plans/temporal-markov-and-style-classes-v1.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.claude/plans/temporal-markov-and-style-classes-v1.md b/.claude/plans/temporal-markov-and-style-classes-v1.md index e322fa0f..ad9a6787 100644 --- a/.claude/plans/temporal-markov-and-style-classes-v1.md +++ b/.claude/plans/temporal-markov-and-style-classes-v1.md @@ -42,6 +42,20 @@ signed mantissa slot) — D-MTS-2's design names it explicitly. Vertical level offsets follow the comma progression (generated from the address, never stored); per-level content = palette-quantized magnitude envelope only. +**Technique input queued (operator, 2026-07-10, from the stockfish-rs +sibling arc):** `stockfish-rs/.claude/knowledge/stockfish-pext-morton-adjacency.md` +— read while harvesting real Stockfish source. Honest finding: Stockfish +has NO Morton/pyramid/palette/comma code (verified, zero hits); what DOES +transfer is the `Magic` struct's `pext`/`pdep` gather→table-lookup→scatter +pattern (`attacks.h:130-159`) as a candidate AVX-512/BMI2 fast path for +the 2bit×2bit 4×4 tile pack/unpack (same hardware primitive family the +standard Morton bit-interleave trick uses — different mask content), plus +the three-tier CPU-family dispatch lesson (BMI2 PEXT is known-slow on +some AMD families; ship a portable fallback, don't trust ISA presence +alone) as independent confirmation of the `ndarray::simd` multi-tier +dispatch discipline already in force here. CONJECTURE until D-MTS-2 +actually builds and measures the tile primitive this way. + > **Addendum (operator, 2026-07-10, second wave — three rulings):** > (1) **E-STYLE-FAMILY-VS-RUNBOOK-1** — 12 = abstract FAMILIES for > orchestration; 36 = literal NARS RUNBOOKS; runbooks seed the rung ladder; From f69124afb276e1726542c5eead2cd7647b8b9e36 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 11 Jul 2026 07:22:27 +0000 Subject: [PATCH 7/9] =?UTF-8?q?board:=20E-CHESS-TRANSCODE-COMPLETE-1=20?= =?UTF-8?q?=E2=80=94=20stockfish-rs=20NNUE=20evaluator=20byte-exact=20(L1?= =?UTF-8?q?=E2=80=93L5)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Records the follow-through on E-CHESS #539: the stockfish-rs NNUE evaluation transcode is complete and byte-exact vs the real Stockfish across L1 (loader), L2 (features), L3 (accumulator), L4 (incremental HalfKA = the E-CHESS keystone, self-oracle chained), and L5 (evaluate, int8 GEMM via ndarray::simd). Ties the goal-stack (ndarray integrated, ruff harvest manifest, Core-First doctrine); L6 search remains a measured non-goal. Append-only, prepended newest-first. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/board/EPIPHANIES.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 25b35128..215439ad 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,17 @@ +## 2026-07-11 — E-CHESS-TRANSCODE-COMPLETE-1 — the stockfish-rs NNUE evaluator is a COMPLETE byte-exact pure-Rust transcode (L1–L5 green); E-CHESS #539 HalfKA incrementality is now SHIPPED code, not a claim +**Status:** FINDING (shipped, `AdaWorldAPI/stockfish-rs` branch `claude/review-claude-board-files-nhqgx1`, 2026-07-11). Follows through the E-CHESS #539 NNUE-incrementality ruling with executed, parity-proven Rust. Reads with the tesseract-rs oracle discipline (the same method transplanted) and the ndarray `simd-savant` "all SIMD from `ndarray::simd`" invariant. + +**What shipped — the whole NNUE evaluation pipeline, each leaf byte-exact vs the REAL Stockfish (fork `9d2ba2b`, net `nn-1b6a82263149`, sse41-popcnt binary as oracle):** +- **L1** — `.nnue` container loader, walks to EOF byte-exact (90 536 680 B); FT biases + threat/psqt/weight blocks (COMPRESSED_LEB128 + plain-LE), 8 layer stacks. Independent Python-walker cross-check. +- **L2** — `HalfKAv2_hm::make_index` proven EXHAUSTIVELY (all 131 072 tuples) + `FullThreats::make_index` (6.29 M tuples, DIMENSIONS-as-exclusion-sentinel), both net-free; shakmaty `Position → active feature list` for both feature sets (color-flip + piece/square conventions handled explicitly). +- **L3** — accumulator refresh (feature-major FT forward: biases + Σ halfka + Σ threat weight columns, i16-wrapping; psqt i32). Independent oracle, 10/10 (FEN × perspective) digests. +- **L4** — **incremental HalfKA update = the E-CHESS keystone made literal.** `DirtyPiece` delta (`append_changed_indices` + `requires_refresh`), king-move → per-perspective refresh; byte-exact by the group identity `refresh(after) = refresh(before) − removed + added` over `(ℤ/2¹⁶,+)`. Self-oracle CHAINED gate (incremental fed as next base) across normal/capture/castle/en-passant/promotion — byte-exact every ply. Receipt: ≤3 columns/move vs 32/refresh. (FullThreats `DirtyThreats` incremental honestly deferred — a separate larger leaf.) +- **L5** — `evaluate()` end-to-end: transform (pairwise `clamp²/512`, provably == the sse41 SIMD path) → fc_0 → sqr/clipped → fc_1 → clipped → fc_2 → scale → `psqt/16 + positional/16`. The three int8 affines route through **`ndarray::simd::matmul_i8_to_i32`** (the SAME primitive the Tesseract recognizer consumes; activations all in `[0,127]` so i8≡u8 dpbusd). Gate: reproduces the engine's `"NNUE evaluation … internal units"` integer byte-exact across a 5-FEN corpus spanning buckets 7/2/0 — startpos `+21`, kiwipete `-316`, KP-endgame `+114`, midgame `+69`, bare-kings `+2`. + +**Goal-stack tie-in (`/goal transcode stockfish … using ruff codegen ogar lance-graph ndarray`):** ndarray = the L5 GEMM (integrated); ruff codegen = the `ruff_cpp_spo --example harvest_nnue` method-resolution manifest (50 classes, 1943 triples) that drove the leaf checklist; lance-graph = this board ruling (E-CHESS) + the Core-First transcode doctrine the crate follows. Remaining: L6 search (explicitly a NON-GOAL for parity — measured strength only, per the plan). + +**Consequence:** E-CHESS incrementality is no longer a design claim — it is executed, self-oracle-gated Rust. The 64×64=4096 substrate now carries a full, byte-exact NNUE evaluator as a worked reference for the gridlake tenant shape. + ## 2026-07-10 — E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1 — ack_and_propose belongs to OGAR ticket orchestration (the low-level orchestration HARD GATE: explicit SLA + auditable goalstate); kanbanstep is the stream reasoning **Status:** RULING (operator, 2026-07-10: "ack and propose should be in OGAR for ticket orchestration stuff that want more explicit SLA and auditable goalstate — we could say it's the low level Orchestration hard gate and Kanbanstep the stream reasoning"). Completes E-KANBANSTEP-IS-THE-TRIGGER-1 (below): the propose-on-ack pattern is not merely demoted bookkeeping — it has a proper HOME. From 793ad9119cd83297dc64c58ccdf930c62dd52fcb Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 11 Jul 2026 07:42:02 +0000 Subject: [PATCH 8/9] naming: ack tier = "SLA gate"; ack repurposed OGAR-side as "actionhandler queue" Naming refinement of E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1 (stands in substance). Two operator-directed corrections: 1. The ack tier's sanctioned name is the "SLA gate" (not "orchestration hard gate") -- the ack-gated advance for SLA/audit-bearing ticket work. 2. The ack mechanism is NOT retired -- it is repurposed on the OGAR consumer side as the "actionhandler queue": the queue where action handlers (tickets, e-mails, ...) wait for their durability ack before advancing. The informal "pump" term is retired in favor of these two names. batch_writer.rs ack_and_propose doc-comment renamed accordingly (doc/naming only, no behavior change); EPIPHANIES gets the append-only refinement entry E-ACK-SLA-GATE-ACTIONHANDLER-QUEUE-1. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/board/EPIPHANIES.md | 11 ++++++++++ .../lance-graph-planner/src/batch_writer.rs | 20 +++++++++++-------- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index 215439ad..64dd5eef 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -1,3 +1,14 @@ +## 2026-07-11 — E-ACK-SLA-GATE-ACTIONHANDLER-QUEUE-1 — naming refinement: the ack tier is the "SLA gate"; the ack mechanism is NOT retired — it is repurposed OGAR-consumer-side as the "actionhandler queue" +**Status:** RULING (operator, 2026-07-11) — naming refinement of E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1 (below), which stands in substance; only the sanctioned names change. Append-only: the prior entry is not edited. + +**Two corrections, both operator-directed:** +1. **The ack tier's sanctioned name is the "SLA gate"** (not "the orchestration hard gate"). It is the ack-gated advance for work that carries an explicit SLA + auditable goalstate — the ticket tier, where waiting on a confirmed durability ack is a feature, not a stall. (The prior "hard gate" phrasing is superseded as a name; the mechanism is unchanged.) +2. **The ack mechanism is NOT retired — it is repurposed.** Earlier framing that read the `ack_and_propose` pattern as demoted/retired is corrected: the mechanism moves to the **OGAR consumer side as the "actionhandler queue"** — the queue where action handlers (tickets, e-mails, …) wait for their durability ack before advancing. The intuition is a plain queue: "the ticket actionhandler queue vs the email actionhandler queue has 200 items waiting." The informal "pump"/"ack-pump" term is retired in favor of "SLA gate" (mechanism) + "actionhandler queue" (the OGAR-consumer-side queue). + +**Unchanged:** the two-tier split itself — kanbanstep = the in-stream synchronous reasoning advance (nobody waits, 550 ms SoA budget); the SLA gate = the ack-gated ticket-tier advance. The tier test is unchanged (SLA/audit obligation → SLA gate / actionhandler queue; cycle budget → stream). + +**Applied:** `crates/lance-graph-planner/src/batch_writer.rs` `ack_and_propose` doc-comment renamed to "SLA gate" + the actionhandler-queue repurposing note (naming/doc only; no behavior change). + ## 2026-07-11 — E-CHESS-TRANSCODE-COMPLETE-1 — the stockfish-rs NNUE evaluator is a COMPLETE byte-exact pure-Rust transcode (L1–L5 green); E-CHESS #539 HalfKA incrementality is now SHIPPED code, not a claim **Status:** FINDING (shipped, `AdaWorldAPI/stockfish-rs` branch `claude/review-claude-board-files-nhqgx1`, 2026-07-11). Follows through the E-CHESS #539 NNUE-incrementality ruling with executed, parity-proven Rust. Reads with the tesseract-rs oracle discipline (the same method transplanted) and the ndarray `simd-savant` "all SIMD from `ndarray::simd`" invariant. diff --git a/crates/lance-graph-planner/src/batch_writer.rs b/crates/lance-graph-planner/src/batch_writer.rs index 1648ec86..fc3cbd63 100644 --- a/crates/lance-graph-planner/src/batch_writer.rs +++ b/crates/lance-graph-planner/src/batch_writer.rs @@ -104,19 +104,23 @@ impl

BatchWriter

{ self.acked.insert(cast, version); } - /// **The low-level orchestration HARD GATE (operator rulings, 2026-07-10): + /// **The SLA gate (operator rulings, 2026-07-10/11): /// an ack-gated advance for SLA/audit-bearing work.** Records the ack, /// then lowers the assigned `LanceVersion` to the next legal /// [`KanbanMove`] proposal via the provided [`VersionScheduler`] over /// `view`. /// - /// **Tier note (E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1):** this is the - /// TICKET tier — work items that want an explicit SLA and an auditable - /// goalstate advance only on confirmed durability, and the WAL board + - /// `acked` map is their audit trail. The STREAM/reasoning tier (the - /// kanbanstep) never routes through here: a writer that already holds - /// the version it committed fires `on_version → try_advance_phase(&mut)` - /// inline — thinking never waits on an ack. + /// **Tier note (E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1; name refined to + /// "SLA gate" 2026-07-11):** this is the TICKET tier — work items that + /// want an explicit SLA and an auditable goalstate advance only on + /// confirmed durability, and the WAL board + `acked` map is their audit + /// trail. The STREAM/reasoning tier (the kanbanstep) never routes through + /// here: a writer that already holds the version it committed fires + /// `on_version → try_advance_phase(&mut)` inline — thinking never waits on + /// an ack. This SLA-gate mechanism is preserved (not retired) and is + /// repurposed on the OGAR consumer side as the **actionhandler queue** — + /// where action handlers (tickets, e-mails, …) wait for their durability + /// ack before advancing. /// /// The loop this closes — the StreamDto "can't stop thinking" lineage: /// From e369052593ef6db72c691ebb7412f99fe83d5307 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 11 Jul 2026 07:58:27 +0000 Subject: [PATCH 9/9] board: tier-qualify the #676 ack-gated-advance row (coderabbit on #677) The #676 LATEST_STATE row read "ack-gated advance ranked canonical", which reversed the documented scheduling doctrine. Qualified: the ack-gated advance is canonical for the TICKET tier only; kanbanstep stays canonical for stream reasoning; the ack (SLA gate) is reserved for the OGAR ticket tier, repurposed consumer-side as the actionhandler queue. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD --- .claude/board/LATEST_STATE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude/board/LATEST_STATE.md b/.claude/board/LATEST_STATE.md index 8cd3b5aa..2046537f 100644 --- a/.claude/board/LATEST_STATE.md +++ b/.claude/board/LATEST_STATE.md @@ -170,7 +170,7 @@ Membrane consumers can now pull BOTH halves of a render `classid` BBB-safely fro | PR | Merged | Title | What it added | |---|---|---|---| -| **#676** | 2026-07-10 | Post-#674 doc arc: E-NOBODY-WAITS-1 + VISION.md (graded AGI canon) + ancestry census + D-MTS-1 design inputs | Doc-only, 4 commits. E-NOBODY-WAITS-1 banked (no messages, no actors; ractor = compile-time ownership only; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling"; ack-gated advance ranked canonical (since re-tiered, see E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1), supervisor KanbanMsg drivers = TD-MESSAGE-RESIDUE, leave-as-is per operator). `.claude/v3/VISION.md` = the AGI-aspiring canon, every claim graded [G]/[G-on-proxies]/[RULING]/[ASPIRATION], 2-Sonnet-preflight + 2-Opus-filigree provenance, all 9 review fixes applied. MODULE-TABLE ancestry census: thinking-engine (51) + p64-bridge (1) + cognitive-shader-driver (22 src + build.rs) with gem-status column. Plan addendum: D-MTS-1 frozen comparison — AriGraph context V3-TENANT-SHAPED; arm-discovery + DeepNSM ingest legs; CAM-PQ 6×8=48-bit path codes (address side) vs 6×palette256² = 12 B = one V3 tenant (value side). coderabbit 5/5 findings fixed in `093489c`. Merge `001839e`. | +| **#676** | 2026-07-10 | Post-#674 doc arc: E-NOBODY-WAITS-1 + VISION.md (graded AGI canon) + ancestry census + D-MTS-1 design inputs | Doc-only, 4 commits. E-NOBODY-WAITS-1 banked (no messages, no actors; ractor = compile-time ownership only; `&mut` IS the serialization; prime invariant "nobody waits for anything or any scheduling"; the ack-gated advance is canonical for the **ticket tier only** — `kanbanstep` stays canonical for stream reasoning, and the ack (the **SLA gate**) is reserved for the OGAR ticket tier, repurposed consumer-side as the **actionhandler queue** (see E-ACK-HARD-GATE-VS-KANBANSTEP-STREAM-1 + E-ACK-SLA-GATE-ACTIONHANDLER-QUEUE-1); supervisor KanbanMsg drivers = TD-MESSAGE-RESIDUE, leave-as-is per operator). `.claude/v3/VISION.md` = the AGI-aspiring canon, every claim graded [G]/[G-on-proxies]/[RULING]/[ASPIRATION], 2-Sonnet-preflight + 2-Opus-filigree provenance, all 9 review fixes applied. MODULE-TABLE ancestry census: thinking-engine (51) + p64-bridge (1) + cognitive-shader-driver (22 src + build.rs) with gem-status column. Plan addendum: D-MTS-1 frozen comparison — AriGraph context V3-TENANT-SHAPED; arm-discovery + DeepNSM ingest legs; CAM-PQ 6×8=48-bit path codes (address side) vs 6×palette256² = 12 B = one V3 tenant (value side). coderabbit 5/5 findings fixed in `093489c`. Merge `001839e`. | | **#674** | 2026-07-10 | V3 W2–W6 continuation + comma quorum/awareness measured + 5+3 council + StyleFamily dedup (D-TSC-1) | 16 commits. `contract::style_family::StyleFamily` (12 orchestration families, frozen ordinals Deliberate=0..Metacognitive=11) + `ThinkingStyle::family()` (36→12 total) + `default_runbook()` — five mutually divergent hand-rolled 12-style tables replaced (E-FIVE-STYLE-TABLES-1); first live 5+3 council run (spec v1→v2→v3). D-MTS-5 comma quorum MEASURED GREEN (N_eff 11.00/12; boundary = spectral participation) + D-MTS-6 comma awareness MEASURED GREEN (k*=1: one stored truth bit/comma level ≈ aligned k=4; lattice buys ≈log₂12 effective bits; D-MTS-6b gates real CE64 shrink). `BatchWriter::ack_and_propose` first-ack-wins dedup (codex P2). 1549 tests green. Merge `cd5178e`. | | **#632** | 2026-07-02 | Cross-session intake: RouteBucketTyped (C6) + emission_scan + OCR codebook mirror + GraphRAG-rs inventory + operator rulings | Three sibling wishlists dispositioned; C6 merged verbatim (nexgen retires vendor diff); emission_scan = 2nd scan-family instance (pattern NAMED); OCR 0x08XX mirror of OGAR #148 (fuses arc: flip fuse + two-sided COUNT_FUSE — fuse FIRED 65v68 in the merge window, cleared by lock bump, 68==68); rulings: ownership+tripwires, R-1 naming phantom (domain:appid:classview), R-2 closed (512B row frozen, strided edges), L3 schema design killed; codex P2 x2 resolved (precedence global; collision documented). Contract 792/792. Merge `df367471`. | | **#631** | 2026-07-02 | W1b LIVE: WAL batch writer (4 probes green) + M15 rename + temporal synthesis + live oracle numbers | batch_writer implemented: BTreeMap WAL board, ack(cast, LanceVersion) join, delegation cache, never-refuses stacking (probe 4); M15 MulGateDecision rename (W2 unblocked; collapse_gate confirmed 3rd distinct type); operator rulings pinned (zero-copy descriptor casts + eager drain + mutual masking; melden macht frei — freeze retracted; temporal.rs = the read side, replay = QueryReference::at + deinterlace, M24=M25=time-travel ONE mechanism). Measured live: W3c oracle 1-2 ms framework overhead vs 8.4-8.7 s LLM round trip (rig->xAI grok-4 via FlowRunner); JITSON serve.rs = local CI oracle delta. Planner lib 204 + probes 4/4. Merge `c7149eab`. |