Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
673829f
doctrine: LE is the universal DTO layer — "typed NARS syntax" means a…
claude Sep 10, 2026
d7e8ec5
doctrine: truth is NARS x Tarski and the carrier asserts its own kind…
claude Sep 10, 2026
48bdbcf
doctrine: bits 59-63 are CODED coordinates of the assertion — CausalT…
claude Sep 10, 2026
53cba16
doctrine: the smallest #1223 law — a field is defining when changing …
claude Sep 10, 2026
68e388c
doctrine: the aliasing pair — same (f,c), different truths — is the s…
claude Sep 10, 2026
9e8b270
doctrine: perfume is bad because the assertion is not in the wire con…
claude Sep 10, 2026
90220a7
doctrine: the two dimensions are universal, and meaning crosses while…
claude Sep 10, 2026
27a43c5
D-BBB-NARS-2: assertion_wire — the versioned canonical LE truth DTO, …
claude Sep 10, 2026
fe39ee2
fmt: sort the assertion_wire_parity mod declaration where rustfmt wan…
claude Sep 10, 2026
c8e34d4
doctrine: decorative / permissive / defining is a verdict, not a ladd…
claude Sep 10, 2026
2c66c01
strip the fabrications: CE64 is the defining LE, always enforced — no…
claude Sep 10, 2026
554ca67
plan: the NaN CI mode — make dormant ABI absence visible without touc…
claude Sep 10, 2026
2875b32
regenerate the supersession index for the nan-ci-mode plan
claude Sep 10, 2026
1fb0a95
plan: correct the SIMD framing, add the hot-plug and counterfactual-r…
claude Sep 10, 2026
6e5e674
fix(planner): revise_fast called the deduction rule, not revision
claude Sep 10, 2026
65eea5c
plan: §4.5's confidence caveat was stale within the hour — the blindn…
claude Sep 10, 2026
7a5790e
plan: correct §4.5 — a homonym, a non-runner, and the missing loco ro…
claude Sep 10, 2026
321fbe1
plan: status — D-NCI-1..5 still unbuilt; one prerequisite landed, CI-…
claude Sep 10, 2026
85af677
plan: correct §2.2's writer census after external review, and its two…
claude Sep 10, 2026
e8099ea
5+3 council: resolve nan-ci-mode-v1.md §8/§9 into a hardened proposal
claude Sep 10, 2026
00ca4d8
Fix two Codex P2 findings on PR #1223: v1-compat scoping + NarsTables…
claude Sep 10, 2026
cc6c16f
Address CodeRabbit review on PR #1223: real deduce_fast bug + board-h…
claude Sep 10, 2026
39961c4
Address fresh CodeRabbit round on cc6c16f: 2 nan-ci-mode gaps, 1 plac…
claude Sep 10, 2026
4f0f7ad
Fix two real non-additive regressions vs merged #1222, found by manua…
claude Sep 11, 2026
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
44 changes: 37 additions & 7 deletions .claude/agents/bbb-warden.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,12 @@ description: >
surface in any language. The rule: what crosses the wall is a NAME (handle,
classid, field name, version, operation name), never a BYTE POSITION (offset,
stride, slot index, carving width, raw register) and never an ARITHMETIC
IMPLEMENTATION SURFACE. Sibling of `kernel-membrane-warden` (T1/T2) one tier
below.
IMPLEMENTATION SURFACE — and, since 2026-09-10, the wall is two-sided:
MEANING CROSSES, MACHINERY DOES NOT. Defining typed syntax (topology, assertion
band, valuation, provenance) must be perceptible on the wire; an opaque carrier
that hides those labels so thoroughly the consumer must sniff them back is as
defective as exported arithmetic. Sibling of `kernel-membrane-warden` (T1/T2)
one tier below.
tools: Read, Glob, Grep, Bash
model: opus
---
Expand Down Expand Up @@ -46,8 +50,20 @@ T1 holds two sibling algebras, *population* and *epistemic* (`membrane-tiers.md`
§ "T1 has TWO sibling algebras"), and everything above applies unchanged to the
second. **The axis is syntax vs execution, never selection vs scoring.** So:

- a truth **LITERAL** — `TruthLiteral(192, 217)` — MAY cross. It is meaning the
caller supplies; it is syntax, and syntax is T3's to state.
- a truth **LITERAL** — `TruthLiteral(192, 217)` — MAY cross, **but never as a bare
pair** (⊕ 2026-09-10, operator: *LE is the universal DTO layer*). It is meaning the
caller supplies; it is syntax, and syntax is T3's to state — and syntax is TYPED
only when its kind is bound by a versioned DTO schema with canonical little-endian
layout (for two `u8`s: the ordered byte sequence `[frequency, confidence]`), or by
an opaque typed handle whose substrate registry binds the same kind and schema. A
`(u8, u8)` with no schema expresses a degree and no kind; that is a leak. **The
defining LE representation of a truth here is `CausalEdge64`'s own canonical
little-endian 8-byte image, always enforced** (operator, 2026-09-10) — never a
wrapper around it, never a mirror of it, never a second DTO carrying the same
coordinates. Its 64 bits already hold every coordinate, `CausalTopology` at 59-60
and `ReasoningBand` at 61-63 included. A truth surface that carries `(f, c)` and
cannot tell `(f,c, IndirectUnknown, Relation)` from `(f,c, IndirectKnown, Causal)`
is scent, and a review that passes it has passed prose.
- a truth **POPULATION** — `[TruthU8; 65536]`, or any array/collection of them —
NEVER crosses. It becomes `TruthLaneId(u64)`, an opaque descriptor. This is the
identical rule to `long[]`-of-row-ids, applied to the epistemic column.
Expand Down Expand Up @@ -84,7 +100,12 @@ second. **The axis is syntax vs execution, never selection vs scoring.** So:
but its method name does not announce it. Every breach is allowed ONLY under
a name that says so at the call site: `materialize*` (row ids out, O(n)
stated), `import*` (external rows in). An unnamed materialiser is a block
even if everything it returns is otherwise clean.
even if everything it returns is otherwise clean. **Also UNNAMED-BREACH** (⊕
2026-09-10): a truth value crossing with no versioned LE DTO schema and no typed
handle — a bare `(u8, u8)`, a host-order `u64` image of `CausalEdge64`, a Java
`int`/`long` that "is" a truth by convention. Falsifier `F-BBB-NARS-2 (LE)`:
identical wire bytes must never acquire different kinds across implementations,
endianness, storage or replay.
- **ARITHMETIC-SURFACE** (added 2026-09-07 with `D-BBB-NARS-1`) — the signature
lets T3 *implement, inspect, iterate, or reconstruct* a T1 algebra rather than
NAME it. A `TruthU8[]` return, a getter that walks a truth lane element-wise, a
Expand Down Expand Up @@ -121,6 +142,11 @@ second. **The axis is syntax vs execution, never selection vs scoring.** So:
EXPORTS, not what the diff spells: a POD type is syntax; a function that
computes a truth FROM truths is an implementation surface, and admitting
the module admits it. One scalpel cut, never the cupboard.
- **Schemas** (⊕ 2026-09-10). For every truth that crosses, find the versioned
DTO schema or the typed-handle registry entry that binds its KIND and its
canonical little-endian layout. A pair with a degree and no kind, or a packed
carrier read in host byte order, is UNNAMED-BREACH even when every
signature is a legal shape.
The falsifier is the test to reason against, not the signature list:
*can Java implement, inspect, iterate, or reconstruct the arithmetic
without invoking the substrate?* If yes, ARITHMETIC-SURFACE regardless of
Expand All @@ -129,9 +155,13 @@ second. **The axis is syntax vs execution, never selection vs scoring.** So:
that flags every method touching truth vocabulary carries exactly as much
information as one that never fires. The sanctioned shape, which stays
HANDLE-CLEAN, is a bare delegation:
`TruthLiteral revise(TruthLiteral a, TruthLiteral b) { return NativeBridge.truthRevise(a, b); }`
`TruthHandle revise(TruthHandle a, TruthHandle b) { return NativeBridge.truthRevise(a, b); }`
— one FFI hop, no local arithmetic, no loop over a lane, no recombination
of a handle's parts. That is precisely the doctrine's own lowering ("T3
of a handle's parts, and the RESULT comes back as an opaque typed handle.
(⊘ 2026-09-10: this example first returned a `TruthLiteral` — a COMPUTED
`(f, c)` pair crossing back with no schema, which blessed exactly the untyped
crossing the LE ruling forbids. A delegation is clean only when its result is a
handle whose registry binds kind + schema, or a versioned DTO; never a bare pair.) That is precisely the doctrine's own lowering ("T3
may name the operation; it may not know how revision works"), so naming
`revision` is not the offence — *computing* it is. Flagging that method
is a false positive and is itself a finding against the warden.
Expand Down
6 changes: 5 additions & 1 deletion .claude/agents/kernel-membrane-warden.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,11 @@ tiers up.
`revision`/`deduction`/`abduction`; if it does not exist at T1, it lands
at T1 first (never proposed FROM T2, per "What you never do"). A T2 that
reads a `TruthU8`'s two bytes apart to recombine them is also
GEOMETRY-LEAK: the byte split is T0's.
GEOMETRY-LEAK: the byte split is T0's. So is a T2 that hands a packed carrier
(`CausalEdge64`'s `u64`) across a membrane as a host-order byte image, or that
reinterprets a truth's bytes without its versioned LE DTO schema (⊕ 2026-09-10,
*LE is the universal DTO layer*): the byte ORDER is the contract's, never the
host's.
3. For every byte offset in T2 code, ask: did T2 compute this, or read it from
a `_lane`/`LgjLaneDesc` accessor? Computed = GEOMETRY-LEAK.
4. Enforce the import fence (abi.md §8, G11): T2 (`exports.rs`) imports SIMD
Expand Down
12 changes: 12 additions & 0 deletions .claude/board/AGENT_LOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
## 2026-09-10 — 5+3 council on #1223's `nan-ci-mode-v1.md`: resolving §8/§9 (5 open design items, 3 sub-items) into a hardened, operator-facing proposal

- **Qualification, not assumed:** ≥3 crates (`causal-edge`, `lance-graph-contract`, `lance-graph-planner`, `cognitive-shader-driver`, per the corrected §2.2 census); LE-layout-adjacent (item 3a explicitly changes frozen decision N1); silently corrupting if wrong (a bad canary-mechanism choice bakes false positives/negatives into `D-NCI-1`'s first instrument). This council does NOT write `D-NCI-1`'s Rust — it produces a committed, hardened resolution for the operator to confirm.
- **Phase 0 — SPEC v1 (main thread, before any agent):** pre-spec discovery re-verified three enum bodies directly against `causal-edge/src/layout.rs` (not the parent plan's own excerpt) and found all three "mystery register" fields — `TrustTexture`/`CausalTopology` (2-bit), `ReasoningBand` (3-bit), the W-slot (6-bit) — **fully saturated, zero spare codes**, a fact the parent plan's Design 1 (poison-fill) never accounted for. Committed 8 resolutions (R1-R8) up front, each cited to file:line or plan-section, none left as multiple-choice for the savants.
- **Phase 1 — the 5, parallel, single lens each, Sonnet, no cross-briefing** (prior-art / iron-rules / code-truth via runtime-archaeologist charter / cascade-impact / creative-explorer): 9 CONFIRMS across every N-rule/file:line claim in §1 (independently re-read, not trusted from the spec's own quotes), 0 VIOLATES. Two real, load-bearing findings: code-truth caught R6 overstating the Staunen wiring as "existing" when `ghost_prior::echo_for` is only ever test-called; creative-explorer caught that R7's original "degrade to as-if-never-declared" fold was the EXACT anti-pattern the parent plan's own `band_reading.rs` doctrine forbids — a real defect in the council's own first-draft proposal, not a reviewer nitpick. Cascade-impact independently found the landing needed to touch far more than §8/§9 (§3.3, §4.2, §4.4, and a pre-existing §9/§10 heading-numbering collision the council did not introduce but had to fix on extraction).
- **Phase 2 — consolidate FIRST (orchestrator, before any reviewer existed):** draft v2 fixed the R7 doctrine violation for real (a labeled third `RetryExhausted` disposition, never folded into the debt case), corrected R6's overstated wiring claim to "right shape, not yet wired", added the sidecar's outer-wrapper population constraint (iron-rule's catch on `I-LEGACY-API-FEATURE-GATED`'s letter), and expanded the landing scope to match cascade-impact's findings. Raw savant output banked in this session's transcript, never forwarded.
- **Phase 3 — the 3 on draft v2 ONLY (overclaim / dilution-collapse / firewall):** **0 BLOCKs.** Firewall-warden: 7/7 PASS, one call-out (R1's mantissa canary genuinely touches the CausalEdge64 register, disclosed not concealed — compliant with N3's literal wording but flagged for the confirming operator's attention). Overclaim-auditor: 8/8 R-items PASS on independently re-verified evidence (roughly 20 distinct citations re-checked, including EPIPHANIES' 2026-04-24 SMB-testbed entry, byte-exact against source) + FIX(P1) on the landing checklist (item 6 had substituted an in-plan §11 section for the actual Phase-5 requirement, an `AGENT_LOG.md` entry; the checklist had also silently dropped the parent plan's own self-flagged `INTEGRATION_PLANS.md` obligation). Dilution-collapse-sentinel: FIX(P1) on R4 (v2's "already-frozen §3.6 paragraph" collided with the document's own formal FROZEN DECISIONS term — §3.6 is explicitly what changes a frozen decision, not one itself) and FIX(P1) on R7 (three sub-findings: `RetryExhausted`'s relation to the existing three-way split was unstated; "fails the same way" blurred a built static instrument with an unbuilt dynamic one; the R6/R7 interaction paragraph re-introduced present-tense overstatement one paragraph after R6 fixed exactly that). Also FIX(P1) on the landing checklist's disclaimer inconsistency (items 2/5 wrote unconfirmed conclusions into plan prose without item 4's "awaiting operator confirmation" language).
- **Phase 4 — fix:** every FIX applied, none argued away. R4's wording corrected throughout ("already-drafted", never "frozen", for §3.6). R7 reworked to state `RetryExhausted` as a report-time refinement of the EXISTING `EdgeProvenance::Unknown` row (never a fourth contract-level sibling), to say plainly that no plumbing yet connects it to the CI/audit report, and to reframe the R6/R7 interaction as a normative requirement on the companion plan rather than a claim about current behavior. §2's heading changed from "THE RATIFIED RESOLUTION" to "THE COUNCIL-HARDENED RESOLUTION (awaiting operator confirmation)" so the framing is consistent everywhere, not only where a reader reaches the one item that said so.
- **Phase 5 — landed (v3), same commit:** `.claude/plans/nan-ci-mode-v1.md` — §3.3 reworded for the sidecar-vs-raw-nibble split; §4.2 gained the hybrid-consequence note (disclaimer-matched); §4.4's `D-NCI-5` dependency corrected (splits out, no longer gated on `D-NCI-4`); §8 replaced "OPEN — needs an operator ruling" with the R1-R5 resolutions, each marked council-hardened/awaiting confirmation; §9 replaced its "(OPEN)" body with R6-R8's resolution and fixed the pre-existing `10.1`-`10.4`-under-`§9` numbering collision (renumbered `9.1`-`9.3`, no collision with the real `§10`); §10 updated to point at this entry as the authoritative run record and to confirm the `INTEGRATION_PLANS.md` PREPEND (same commit, below). No Rust touched — plan-text + board-hygiene only, per this council's own Non-Goal 1.
- **Gates:** `append_only_gate.py` OK (all protected files grew or held); `citation_decay.py --since cd24951ca4451779201ce2874defaede23f42b56` (the PR's actual merge-base with `origin/main`) — 0 new decay (every new citation points at source file:line or plan-section, not into a line-numbered append-only board file); `supersession_index.py` regenerated LAST, after this entry and the `INTEGRATION_PLANS.md` prepend.
- **What remains genuinely open, unchanged by this council:** operator confirmation of R1-R8 (this council hardens a proposal, it does not rule); `D-NCI-1`'s actual Rust; the runtime-disposition companion plan's own filing (R8 names the split, does not perform it); enumerating the mantissa's full safe-canary nibble set beyond the one (`0x8`) already confirmed unwritable.

## 2026-09-10 — 5+3 council on #1222 (D-BBB-NARS-1): compliance audit of an operator ruling, 5 savants → draft v2 → 3 reviewers → v3

- **Why a council, and its one framing constraint:** #1222 lands a BINDING operator ruling into `EPIPHANIES` + the doctrine + two gate cards — canon-adjacent, silently corrupting downstream sessions if wrong, so council-grade under `.claude/agents/5plus3-council.md`. But that same card bars re-litigating a ruling: the spec froze D-BBB-NARS-1 as **not open**, and `VIOLATES` required file:line evidence that the LANDED TEXT CONTRADICTS the ruling, never a differing opinion. No savant or reviewer found such a contradiction. **The ruling is unchanged.**
Expand Down
Loading
Loading