Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
## 2026-08-01 — E-KANBANMOVE-IS-THE-PARCEL-ADDRESS-STEP-IS-THE-DELIVERY-SCAN-1 — the D-MBX-A6 move is pre-write intent; the KanbanStep is post-write; the persistence sink wires Lance 7's existing MemWAL and invents nothing

**Status:** FINDING (operator-ruled 2026-08-01). **Confidence:** High — the pre-write half is shipped with 5 falsifiable probes (`lance_graph_planner::owner_adapter`); the persistence half's API is verified against real `lance-7.0.0` source.

**The two moments (do not conflate — the error this entry pins).** A `KanbanMove` is the **destination written on the parcel before dispatch** — the transition a completed thought *intends* the mailbox to become. It is cast **ahead** of persistence (`BatchWriter::cast`, fire-and-forget) and travels with the write descriptor. It is NOT the tugboat: casting advances no lifecycle. The **KanbanStep** is the **delivery scan after Lance accepts the write** — `try_advance_phase` applied post-persistence on the successful `LanceVersion`. **No successful write ⇒ no applied step.** This separation is what masks thinking-time against write-time (≈64k trajectories at ≈2M SoA-evals/s, persistence amortized across batch flushes).

**Fire-and-forget rules (operator).** The thinker never waits for the WAL, version compaction, or a step ack. DO NOT ADD: confirmation ledger, replay queue, per-thought ack (`E-ACK-ELIMINATED-1`), custom WAL, ownership/version arbitration, or a synchronous callback into the thinker. Ownership travels in the cast's `on_behalf` envelope; the move payload needs no synchronous ownership-adoption ceremony to be reported.

**Post-write invariant (for the sink builder).** The version-completion path must apply the move **paired with that write** — never manufacture a generic `next_phases().first()` transition merely because some Lance version appeared. The falsifier must prove ORDERING (no write→no step; write→exactly one *corresponding* step; new version visible as latest before next eval), not sentinel substitution.

**Verified surface (wire, don't invent).** Lance 7.0.0 ships the MemWAL/LSM path: `dataset::mem_wal::WalAppender::append(Vec<RecordBatch>)`, `memtable::BatchStore::append`, `mem_wal::wal::flush`, and `dataset::merge_insert`. The WAL append is the durable handoff that makes fire-and-forget safe; base-dataset compaction is NOT the sync boundary. Sink build is gated on `protoc` + disk (offline slice). Full handoff: `.claude/v3/knowledge/d-mbx-a6-owner-consume-and-persistence.md`.
Comment on lines +1 to +11

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

Do not describe the gated persistence path as shipped.

The PR objective states that the drain-to-Lance sink remains gated and out of scope. This entry says that the persistence sink wires MemWAL and that WalAppender::append makes fire-and-forget safe. State this as a target contract until the sink is enabled. Keep the current guarantee limited to the owner adapter staging the cast.

Suggested wording
- The WAL append is the durable handoff that makes fire-and-forget safe;
+ The WAL append is the planned durable handoff once the gated sink is enabled;
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
## 2026-08-01 — E-KANBANMOVE-IS-THE-PARCEL-ADDRESS-STEP-IS-THE-DELIVERY-SCAN-1 — the D-MBX-A6 move is pre-write intent; the KanbanStep is post-write; the persistence sink wires Lance 7's existing MemWAL and invents nothing
**Status:** FINDING (operator-ruled 2026-08-01). **Confidence:** High — the pre-write half is shipped with 5 falsifiable probes (`lance_graph_planner::owner_adapter`); the persistence half's API is verified against real `lance-7.0.0` source.
**The two moments (do not conflate — the error this entry pins).** A `KanbanMove` is the **destination written on the parcel before dispatch** — the transition a completed thought *intends* the mailbox to become. It is cast **ahead** of persistence (`BatchWriter::cast`, fire-and-forget) and travels with the write descriptor. It is NOT the tugboat: casting advances no lifecycle. The **KanbanStep** is the **delivery scan after Lance accepts the write**`try_advance_phase` applied post-persistence on the successful `LanceVersion`. **No successful write ⇒ no applied step.** This separation is what masks thinking-time against write-time (≈64k trajectories at ≈2M SoA-evals/s, persistence amortized across batch flushes).
**Fire-and-forget rules (operator).** The thinker never waits for the WAL, version compaction, or a step ack. DO NOT ADD: confirmation ledger, replay queue, per-thought ack (`E-ACK-ELIMINATED-1`), custom WAL, ownership/version arbitration, or a synchronous callback into the thinker. Ownership travels in the cast's `on_behalf` envelope; the move payload needs no synchronous ownership-adoption ceremony to be reported.
**Post-write invariant (for the sink builder).** The version-completion path must apply the move **paired with that write** — never manufacture a generic `next_phases().first()` transition merely because some Lance version appeared. The falsifier must prove ORDERING (no write→no step; write→exactly one *corresponding* step; new version visible as latest before next eval), not sentinel substitution.
**Verified surface (wire, don't invent).** Lance 7.0.0 ships the MemWAL/LSM path: `dataset::mem_wal::WalAppender::append(Vec<RecordBatch>)`, `memtable::BatchStore::append`, `mem_wal::wal::flush`, and `dataset::merge_insert`. The WAL append is the durable handoff that makes fire-and-forget safe; base-dataset compaction is NOT the sync boundary. Sink build is gated on `protoc` + disk (offline slice). Full handoff: `.claude/v3/knowledge/d-mbx-a6-owner-consume-and-persistence.md`.
## 2026-08-01 — E-KANBANMOVE-IS-THE-PARCEL-ADDRESS-STEP-IS-THE-DELIVERY-SCAN-1 — the D-MBX-A6 move is pre-write intent; the KanbanStep is post-write; the persistence sink wires Lance 7's existing MemWAL and invents nothing
**Status:** FINDING (operator-ruled 2026-08-01). **Confidence:** High — the pre-write half is shipped with 5 falsifiable probes (`lance_graph_planner::owner_adapter`); the persistence half's API is verified against real `lance-7.0.0` source.
**The two moments (do not conflate — the error this entry pins).** A `KanbanMove` is the **destination written on the parcel before dispatch** — the transition a completed thought *intends* the mailbox to become. It is cast **ahead** of persistence (`BatchWriter::cast`, fire-and-forget) and travels with the write descriptor. It is NOT the tugboat: casting advances no lifecycle. The **KanbanStep** is the **delivery scan after Lance accepts the write**`try_advance_phase` applied post-persistence on the successful `LanceVersion`. **No successful write ⇒ no applied step.** This separation is what masks thinking-time against write-time (≈64k trajectories at ≈2M SoA-evals/s, persistence amortized across batch flushes).
**Fire-and-forget rules (operator).** The thinker never waits for the WAL, version compaction, or a step ack. DO NOT ADD: confirmation ledger, replay queue, per-thought ack (`E-ACK-ELIMINATED-1`), custom WAL, ownership/version arbitration, or a synchronous callback into the thinker. Ownership travels in the cast's `on_behalf` envelope; the move payload needs no synchronous ownership-adoption ceremony to be reported.
**Post-write invariant (for the sink builder).** The version-completion path must apply the move **paired with that write** — never manufacture a generic `next_phases().first()` transition merely because some Lance version appeared. The falsifier must prove ORDERING (no write→no step; write→exactly one *corresponding* step; new version visible as latest before next eval), not sentinel substitution.
**Verified surface (wire, don't invent).** Lance 7.0.0 ships the MemWAL/LSM path: `dataset::mem_wal::WalAppender::append(Vec<RecordBatch>)`, `memtable::BatchStore::append`, `mem_wal::wal::flush`, and `dataset::merge_insert`. The WAL append is the planned durable handoff once the gated sink is enabled; base-dataset compaction is NOT the sync boundary. Sink build is gated on `protoc` + disk (offline slice). Full handoff: `.claude/v3/knowledge/d-mbx-a6-owner-consume-and-persistence.md`.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/board/EPIPHANIES.md around lines 1 - 11, Update the EPIPHANIES entry
to describe MemWAL wiring, WalAppender::append, and the drain-to-Lance
persistence path as a future target contract rather than shipped behavior. Limit
the current guarantee to the owner adapter staging the cast, and preserve the
distinction between the planned post-write KanbanStep and currently unavailable
persistence sink.


**How it was earned (five corrections in one session).** (1) causal arrow reversed (built pre-write intent as if it were the post-write witness); (2) worked from a branch 151 commits behind main; (3) grounded a `KanbanMove` literal on the **retired** `libet_offset_us` field; (4) re-imported the "550 ms = compute budget" category error (it is a Libet *semantic anchor*, never a scheduler allowance — `CycleBudget::charge/remaining_us` is the live anti-pattern); (5) falsifiers tested sentinel substitution, not ordering. The corrected pre-write adapter is `D-MBX-A6-P3c` (completes the P3b `owner-consume` deferral).

## 2026-07-31 — E-THE-RULER-READS-THE-ADDRESS-AS-A-NUMBER-NOT-A-HIERARCHY-1 — the helix intake is structure-blind (kills the residue sweep before it ran), and the "stride 4 isn't golden" suspicion remains NOT CONFIRMED (the 4-ary-matching claim drawn from it is withdrawn)

**Status:** FINDING (measured, 3/3 gates green). **Confidence:** High — pure integer arithmetic over the shipped `CurveRuler`, no sampling. Probe: `crates/helix/examples/probe_hhtl_intake_blindness.rs`; record: `.claude/board/exec-runs/hhtl-intake-blindness.md`.
Expand Down
41 changes: 41 additions & 0 deletions .claude/board/INTEGRATION_PLANS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,44 @@
## 2026-08-01 — CORRECTION to the §8 entry below: `RungLevel 0–10` → `0–9`

The `2026-07-31 — SYNERGY-MAP-S00-S07 §8` entry's summary line reads
"…SPO 2³ fill-state × RungLevel 0–10 → one of the 34 recipes…". `RungLevel` has
exactly 10 variants `Surface=0`…`Transcendent=9` (`crates/lance-graph-contract/src/cognitive_shader.rs:157-169`;
`from_u8` saturates `>9` to `Transcendent`) — there is no rung 10. The plan doc
body was corrected in `b6b6757`; this prepended note corrects the board twin
per the append-only rule (the past entry stays intact). Confirmed by a
three-agent stale-doc audit (2026-08-01).

## 2026-07-31 — SYNERGY-MAP-S00-S07 §8 (capstone inspiration, AMENDED into the existing map) — **⛔ RESTING (operator, 2026-07-31: too many gaps — do not build; §8.6/§8.7 purpose corrected to torque/semantic-pressure attention headers, never grammar resolution; council grades banked in the §8 status banner)** — main thread

**Plan:** `.claude/plans/SYNERGY-MAP-S00-S07.md` **§8.0–§8.8** (appended to the
existing S00–S07 map; §6 no-net-new-structures stays closed).
**⊘ READ §8.0 FIRST — it is a MEASURED RETRACTION of the original §8.1**
(six Read-only code passes falsified every load-bearing claim: domino is a
4×4/16-lane BF16 tile not 64×64; lane_j's 4096 is a hash-bucket group-by
table; attention is k×k palette-archetype canonically 256×256; stockfish-rs
is not readable in this environment; blasgraph has no splat/3DGS and no NaN
mechanism). §8.1-MEASURED carries the real Stockfish seam: NNUE FT columns
as a TEST CORPUS validating the palette256 cosine-replacement, not a
mechanism the substrate imitates. Operator-taught
arc, same-day corrections cited in the provenance footer. The map for the next
session: **§8.8 is the anchor despite being last-numbered** — the resolution
ladder runs grammar floor FIRST (24×i4 anaphora pointers where i4 = −8..+7 =
the sentence window, 24×i4 = 12 B = the facet payload [CONJECTURE, needs
ClassView sanction]; Valenz; Tempus as deinterlacer frame-stamps —
Plusquamperfekt/Futur II as version-stamps; SPO 2³ fill-state × RungLevel 0–10
→ one of the 34 recipes via the already-certified convention), then §8.5's
Evaluation wire (the ONE-phase join: kanban loop → nars_engine, an
Outcome→premises→op adapter — domino STAYS, pay-forward attention headers per
§8.1–8.2 with the Pythagorean-comma escalation residual), then §8.6 ambiguity
resolution as micro-Horizontverschmelzung over DEINTERLACED frames (§8.3:
temporal.rs = deinterlacing à la GPS-relativity, 64×64 = splat hydration; §8.4
corrected: NO vsa_bundle — Revision on (f,c), contradiction preserved), then
§8.7 four-lens Doppelspalt (Wittgenstein/Nietzsche/Kant/Hegel as style
vectors → four Ψ ripple fields; cloned-lens control as the can-it-stay-silent
falsifier), LLM tail last. deepnsm-v2 crate untouched by ruling. A withdrawn
probe verdict (tesseract-side, retention-axis category error) is recorded in
§8's provenance + tesseract-rs CLAUDE.md.

## 2026-07-26 — rosetta-codebook-convergence v1 — PROPOSED (D-RCC-1 calibrator runnable today) — main thread

**Plan:** `.claude/plans/rosetta-codebook-convergence-v1.md`
Expand Down
10 changes: 10 additions & 0 deletions .claude/board/LATEST_STATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 2026-08-01 — branch `claude/medcare-rs-continue-ufsazd` — D-MBX-A6-P3c owner-consume adapter (rebased onto main dcd9cc9)

### Current Contract Inventory — new module (lance-graph-planner)
- `lance_graph_planner::owner_adapter` — the D-MBX-A6 `Outcome → KanbanMove` **owner-consume** adapter; completes the `D-MBX-A6-P3b` deferral (`owner-consume`). Two functions, lance-free:
- `rebind_bootstrap(mv, owner, owner_cycle) -> Option<KanbanMove>` — rebinds the bootstrap sentinel (`mailbox 0`, `witness_chain_position 0`) to the live owner; returns `None` for a move that already names a live owner (**no ownership theft** — write-on-behalf iron rule) and for a partial sentinel.
- `emit_bootstrap_intent(outcome, owner, owner_cycle, writer, payload) -> Option<CastId>` — rebinds `StrategyOutcome::intended_move` and `BatchWriter::cast(on_behalf = owner, …)`. **Fire-and-forget** (returns immediately; no ack/ledger/WAL/arbitration/callback); the move is the pre-write "parcel address before dispatch", the lifecycle STEP stays post-write.
- **Causal model pinned** (`E-KANBANMOVE-IS-THE-PARCEL-ADDRESS-STEP-IS-THE-DELIVERY-SCAN-1`): the `KanbanMove` is cast ahead of the write; the KanbanStep (`try_advance_phase`) is applied post-persistence on the successful `LanceVersion` (no successful write ⇒ no step). The version-completion path must apply the **paired** move, never a generic `next_phases().first()`.
- **Persistence sink = verified-but-gated.** The drain→Lance sink wires Lance 7's shipped MemWAL surface (`dataset::mem_wal::WalAppender::append(Vec<RecordBatch>)`, `memtable::BatchStore::append`, `wal::flush`, `merge_insert`) — invents nothing. NOT buildable in the private medcare-session container (`protoc` missing; lance+datafusion+arrow would exhaust disk). Offline/next-env slice; `lance-graph-planner` must add the mandatory stack (lance 7 / lancedb 0.30 / arrow 58 / datafusion 53 + protoc) there. Full handoff: `.claude/v3/knowledge/d-mbx-a6-owner-consume-and-persistence.md`.
- Gates: 5/5 `owner_adapter` probes green, 324 existing planner tests intact, `cargo fmt -p` + `cargo clippy -p lance-graph-planner` clean. `KanbanMove` uses the current 5-field main shape (post `libet_offset_us` retirement).

## 2026-07-29 — branch `claude/x265-x266-plans-review-h9osnl` — `lance_graph::reasoning`, the concept-blind consumer seam

### Current Contract Inventory — new module (lance-graph core, `planner` feature)
Expand Down
1 change: 1 addition & 0 deletions .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -962,6 +962,7 @@ Plan path: `.claude/plans/unified-soa-convergence-v1.md`. Handover `.claude/hand
| D-MBX-A6-P2 | Rubicon lifecycle enforcement + exec-target tag: `KanbanColumn::{next_phases, can_transition_to, is_absorbing}` (the lifecycle DAG) + `MailboxSoaOwner::try_advance_phase` (checked, `RubiconTransitionError`) + `ExecTarget{Native,Jit,SurrealQl,Elixir}` on `KanbanMove` | lance-graph-contract | 120 | LOW | **In PR** | builds on P1; 489 lib tests (+4); downstream cargo-check clean; gates the ractor owner-impl + planner emit (P3) |
| D-MBX-A6-P3a | StyleStrategy: thinking-style -> cluster -> mechanism -> recipe_kernels Tactic selection (planning substrate; carries tau JIT addr) | lance-graph-planner | 130 | LOW | **In PR** | #439; first cut of A6-P3 consumer wiring; planner now consumes contract recipes/styles; deferred: i4-32D decode, Outcome->Candidate, tau->JIT, membrane commit |
| D-MBX-A6-P3b | output overhaul: `StrategyOutcome{reliability, intended_move: Option<KanbanMove>}` carrier on `PlanInput.outcome`; StyleStrategy retires the dead-store `_reliability`, SURFACES reliability + a bootstrap intended move (Planning→CognitiveWork, owner 0, warden-BOOTSTRAP-OK) — plan still pure | lance-graph-planner | 130 | LOW | **In progress** | additive Option field (6 in-crate literals); UNBLOCKED (no mint, not OQ-11.7); deferred: compose thread-out + contract-promote + owner-consume; E-STRATEGY-OUTCOME-CARRIER-1 |
| D-MBX-A6-P3c | owner-consume: `lance_graph_planner::owner_adapter` = the `Outcome → KanbanMove` bootstrap-rebind + ahead-cast adapter. `rebind_bootstrap` (mailbox 0/cycle 0 sentinel → live owner; refuses an already-owned move = no ownership theft) + `emit_bootstrap_intent` → `BatchWriter::cast(on_behalf = owner)`. Fire-and-forget (no ack/ledger/WAL/arbitration/callback); the move is the pre-write "parcel address", the lifecycle STEP stays post-write. Completes P3b's deferred `owner-consume`. | lance-graph-planner | 90 | LOW | **In PR** | 5 falsifiable probes (rebind 0→live anti-vacuity + no-theft + on-behalf cast + non-vacuous no-op silence); lance-free, builds without protoc. Persistence sink (drain→Lance 7 `mem_wal::WalAppender::append`) verified-but-gated (protoc missing + disk); knowledge doc `.claude/v3/knowledge/d-mbx-a6-owner-consume-and-persistence.md`; `E-KANBANMOVE-IS-THE-PARCEL-ADDRESS-STEP-IS-THE-DELIVERY-SCAN-1` |
| D-MBX-A6-P3-M1 | `Tactic::requires() -> ThoughtMask` + `ThoughtField`/`ThoughtMask` (checklist-as-data keystone): 34 tactics declare their ThoughtCtx field-reads; `covered_by` = reliability-coverage gate | lance-graph-contract | 120 | LOW | **In PR** | #439; the panel-recalibrated keystone (extraction not construction); makes P1/P7/P11 derived; teeth-test asserts masks varied not stub |
| D-CLS-FM | `class_view`: FieldMask(u64 presence) + ClassView meta-DTO resolver trait + ClassProjection (the class flies ABOVE the SoA; labels resolved late from OGIT cache, zero in the bytes) — extends ObjectView, reuses class_id | lance-graph-contract | 270 | LOW | **Shipped** | #441 D-CLS contract foundation; OD-gates ratified; presence!=semantics (C2); N3 stable positions; 3 teeth-tests |
| D-CLS-RES | `class_resolver`: `RegistryClassView` impls `ClassView` over the live OntologyRegistry — the ontology-side 'parser' (class_id -> shape, DOLCE resolved LATE via classify_odoo from the cache URI, memoized over the O(n) registry scan) | lance-graph-ontology | 200 | LOW | **Shipped** | #441 D-CLS; makes the contract trait live; field-set supplied (D-CLS audit deferred); 4 teeth-tests |
Expand Down
2 changes: 1 addition & 1 deletion .claude/knowledge/core-first-transcode-doctrine.md
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,7 @@ proven END-TO-END for the unicharset class, not just for the leaf's bytes. See
- `lance_graph_contract::orchestration` — `OrchestrationBridge` / `UnifiedStep` (the adapter invocation surface).
- `.claude/knowledge/frankenstein-checklist.md` — composition-failure / flattening guard.
- `crates/lance-graph-contract/src/jit.rs` — `JitCompiler` / `JitTemplate` / `KernelHandle` (the v2 JIT tier; ndarray jitson/Cranelift compiles, n8n-rs caches).
- `crates/lance-graph-contract/src/kanban.rs` — `KanbanMove` / `KanbanColumn` / `StepDomain::Kanban` (the v3 orchestration seam; planner emits, ractor drives, surreal projects).
- `crates/lance-graph-contract/src/kanban.rs` — `KanbanMove` / `KanbanColumn` / `StepDomain::Kanban` (the v3 orchestration seam; planner emits, the writer's inline kanbanstep drives, surreal projects — ractor is ownership-only, not the driver).

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -C 10 \
  'deliver_kanban_step|try_advance_phase|KanbanStep|kanbanstep' \
  crates/lance-graph-supervisor \
  crates/lance-graph-contract \
  crates/lance-graph-planner

Repository: AdaWorldAPI/lance-graph

Length of output: 45938


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== target knowledge lines =="
sed -n '220,240p' .claude/knowledge/core-first-transcode-doctrine.md

echo
echo "== kanban step definitions/usages =="
rg -n -C 5 'enum (UnifiedStep|StepDomain)|struct (KanbanMove|UnifiedStep)|KanbanMove|UnifiedStep|StepDomain::Kanban|StepDomain' crates/lance-graph-contract/src/kanban.rs crates/lance-graph-contract/src \
  crates/lance-graph-planner/src \
  crates/lance-graph-supervisor/src \
  crates/lance-graph-supervisor/tests \
  | head -n 260

echo
echo "== batch writer kanban invocation context =="
sed -n '1,220p' crates/lance-graph-planner/src/batch_writer.rs
rg -n -C 8 'try_advance_phase|advance_phase|on_version|deliver_kanban_step|KanbanMove|KanbanActor|KanbanMsg' crates/lance-graph-planner/src crates/lance-graph-supervisor/src crates/lance-graph-supervisor/tests

echo
echo "== production-call sites for deliver_kanban_step =="
rg -n -C 5 'deliver_kanban_step|lance_graph_supervisor.*kanban|KanbanActor|KanbanMsg::Advance' --glob '*.rs' . | rg -v 'crates/lance-graph-supervisor/tests/w2b_real_owner_probe.rs|crates/lance-graph-supervisor/src/kanban_actor.rs:[[:space:]]*#\[cfg\(test\)'

Repository: AdaWorldAPI/lance-graph

Length of output: 50380


Remove the false canonical claim about inline delivery.

The cross-reference says the writer’s inline kanbanstep drives production delivery and calls ractor ownership-only. If the writer path is not canonical, replace it with the resolved delivery seam and keep the actor-boundary note accurate.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.claude/knowledge/core-first-transcode-doctrine.md at line 234, Update the
cross-reference entry for KanbanMove, KanbanColumn, and StepDomain::Kanban to
remove the claim that the writer’s inline kanbanstep drives production delivery
and that ractor is ownership-only. Replace it with the resolved canonical
delivery seam, while retaining an accurate description of ractor’s role at the
actor boundary.

- `crates/surreal_container/` — the SurrealDB tier (`view`/`read` = projection, `write` = commit) that would host the v3 AST-DLL tissue store + hot-swap.
- `.claude/board/EPIPHANIES.md` `E-SUBSTRATE-IS-THE-SCHEDULER` — substrate emits the schedule (surreal LIVE reactive); the v3 Odoo→kanban reaction extends it. `E-TRANSCODE-EXEC-LADDER-1` records this ladder.
- `AdaWorldAPI/odoo` (`/home/user/odoo`) — the v3 shape source (Odoo model/stage shapes → `KanbanMove`).
Expand Down
Loading
Loading