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
16 changes: 16 additions & 0 deletions .claude/board/INTEGRATION_PLANS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
## 2026-07-17 — dtri1-classid-mint-spec v1 — SPEC (ratifiable, mint-gated)

**Plan:** `.claude/plans/dtri1-classid-mint-spec-v1.md`
The classid half of D-TRI-1, spec'd to the handoff boundary after the
value-tenant half shipped (#717). Byte-precise proposals for the batched
OGAR mint: **chess `0x06`** (episode/candidate/iteration/event — operator-
ruled byte), **Cognition task domain `0x03`** (fan-out/counterfactual/
synthesis/inference/deduction/extrapolation/syllogism — operator-ruled
canonical; byte proposed, operator knob), **BoardAggregates** value tenant
@ row_offset 188 (`U8×8` proposed). Execution sequence (OGAR originates →
lance-graph mirrors + parity tests → read-modes → BoardAggregates lane),
the P4 `ValueSchema::Thinking` proposal (TD-TRI-1-P4 #2), and the S1/S3/S5
coordination with the graphrag arc. **No bytes land** — the doc-W4 council
executes post-S1 (community-id gate). Two open knobs flagged: Cognition
byte `0x03`, BoardAggregates width. Ties task #15 (P2).

Comment on lines +1 to +16

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Complete the integration-plan entry metadata.

This new entry does not follow the file’s declared per-entry format: it lacks explicit Author + date and Confidence fields, and encodes status only in the heading. Add the required fields so future sessions can distinguish proposal maturity from execution status.

🤖 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/INTEGRATION_PLANS.md around lines 1 - 16, Update the
2026-07-17 dtri1-classid-mint-spec v1 entry in INTEGRATION_PLANS.md to include
explicit Author + date and Confidence metadata fields, using the file’s
established per-entry format and preserving the existing heading/status and plan
content.

## 2026-07-17 — graphrag-doc-retrieval-soa-integration v1 — DESIGN + FIRST CODE (probe-gated)

**Plan:** `.claude/plans/graphrag-doc-retrieval-soa-integration-v1.md`
Expand Down
2 changes: 1 addition & 1 deletion .claude/board/STATUS_BOARD.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ Plan: `.claude/plans/triangle-tenants-gestalt-separation-v1.md`. Design shipped;

| D-id | Title | Repo | Status | Evidence |
|---|---|---|---|---|
| D-TRI-1 | Triangle tenant spec (Frozen/Learned/Explore, 12 slots x palette256) through envelope-auditor T1-T6, behind the batched mint | lance-graph | **VALUE-TENANT HALF IN PR** — 3 lanes `ValueTenant::{FrozenStyle=10,LearnedStyle=11,ExploreStyle=12}` U8×12 at row_offset 152/164/176 (value-slab [120,156)), additive after Kanban per operator ruling; in `Full` only (NOT Cognitive — entity classes keep their carve), zero ENVELOPE_LAYOUT_VERSION bump; `NodeRow::{style_lane,set_style_lane,triangle_for}` + field-isolation matrix test; v3-envelope-auditor gated. **classid half (chess 0x06 + Tasks-SoA + BoardAggregates @188) still queued — the cross-repo OGAR mint.** | plan §1, §6 |
| D-TRI-1 | Triangle tenant spec (Frozen/Learned/Explore, 12 slots x palette256) through envelope-auditor T1-T6, behind the batched mint | lance-graph | **VALUE-TENANT HALF MERGED (#717, main 74d16f92)** — 3 lanes `ValueTenant::{FrozenStyle=10,LearnedStyle=11,ExploreStyle=12}` U8×12 at row_offset 152/164/176; `Full`-only; zero ENVELOPE_LAYOUT_VERSION bump; `NodeRow::{style_lane,set_style_lane,triangle_for}`; auditor LAYOUT-CLEAN; Codex P2 fixed. **classid half = SPEC READY** (`dtri1-classid-mint-spec-v1.md`): chess `0x06` + Cognition `0x03` tasks + BoardAggregates@188 byte-precise, **gated on the other session's S1 (community-id) + the doc-W4 batched-mint council** (never solo). Open knobs: Cognition byte 0x03, BoardAggregates width. | plan §1/§5/§6, `dtri1-classid-mint-spec-v1.md` |

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

Preserve the historical board entry.

Line 22 rewrites more than the permitted status/confidence fields by changing merge evidence, classid state, and open-parameter details. Keep the prior row unchanged and prepend a new status entry or append an allowed correction so the ledger remains auditable.

Based on learnings, .claude/board/*.md files are append-only, newest-first ledgers; prior entries may only change in their Status and Confidence lines.

🤖 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/STATUS_BOARD.md at line 22, Preserve the existing D-TRI-1
board row unchanged as a historical ledger entry. Record the updated merge
evidence, classid state, and open parameters in a new newest-first status entry
or an allowed correction, modifying prior entries only in their Status and
Confidence lines.

Source: Learnings

| D-TRI-2 | 12-family vs 12-step reading agreement: jc battery (ICC, Pearson/Spearman, Cronbach alpha) over real shader cycles; collapse only on measured identity | lance-graph | Queued | plan §4, §6 |
| D-TRI-3 | Nail->hammer dispatch probe: object resonance -> atom retrieval vs inverted baseline; no inverted read path exists structurally | lance-graph | Queued | plan §3, §6 |
| D-TRI-4 | Chess<->thinking transfer measurement (validity + reliability) — the quarantine-lift gate | lance-graph + stockfish-rs | Queued | plan §5, §6 |
Expand Down
240 changes: 240 additions & 0 deletions .claude/plans/dtri1-classid-mint-spec-v1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,240 @@
# D-TRI-1 classid-half — batched OGAR mint spec — v1

> **Status:** SPEC (ratifiable), 2026-07-17. The value-tenant half of
> D-TRI-1 shipped (#717, autopoiesis triangle). This doc specs the
> **classid half** — the remaining batched mint — to the **handoff
> boundary**. It is byte-precise **except two open ratification knobs**
> (§0: the Cognition domain byte `0x03`, and the BoardAggregates lane
> width) — so mechanical council execution is **conditional on ratifying
> those two decisions**; everything else (chess `0x06`, the concept
> layouts, the read-mode contract, the execution sequence) is
> execution-ready. **No bytes land with this doc.** Every id below is a
> PROPOSAL for council/operator ratification (RESERVE-DON'T-RECLAIM =
> permanent once minted).
> **Plan:** `triangle-tenants-gestalt-separation-v1.md` §5 (mint discipline).
> **Index:** `.claude/board/INTEGRATION_PLANS.md` (prepended same commit).

---

## §0 The handoff boundary (what this session prepped vs what the council/other session executes)

This session owns the D-TRI triangle arc; the graphrag arc + the **S1
probe** (`P-COMMUNITY-BASIN-AGREE`) are the other session's. Per the
2026-07-17 synergy demarcation (S5 = one mint train):

- **Prepped to the boundary (this doc):** the byte-precise mint spec for
MY inputs — chess `0x06`, the Cognition task domain, BoardAggregates.
- **Gate (other session, before execution):** **S1** decides whether a
`community-id` discriminant joins the batch. If S1 measures *identity*
(`part_of:is_a ≡ Leiden ≡ episodic basin`, the operator's ruling),
community-id NEVER mints and the batch is exactly the three groups
below + the graphrag `D-GR-5` doc-seam classid. If S1 measures
*distinct*, one more concept row folds in.
- **Execution (council, never solo):** OGAR originates → lance-graph
mirrors with parity tests → read-modes land. One PR pair, audited by
`baton-handoff-auditor` at the OGAR↔lance-graph seam.

**Two knobs still open for the operator/council** (flagged, not
assumed): (a) the **Cognition domain byte** — `0x03` proposed (next free;
Unassigned spans `0x03`–`0x06`, `0x10`+), the operator named this the one
they may want to set; (b) the **BoardAggregates lane width** (§3).

---

## §0c Concept-id vs classid — the two are NOT the same (CodeRabbit #719)

The `0xDDCC` values in §1–§2 are **u16 CANON concept ids** (the codebook
key). A **classid** is the 32-bit node key = `compose_classid(canon,
appid)` = canon-high `(canon << 16) | appid`. Internal cognitive/chess
concepts carry **no per-app render skin**, so propose **appid `0x0000`**
(canon-only; a specific app — e.g. q2 `0x01` — stamps its appid at its own
render membrane, NEVER here). Read-mode = `{tail_variant, value_schema,
edge_codec}` from `BUILTIN_READ_MODES`. **This table is authoritative — every
parity test + the OGAR and lance-graph impls reference it; no impl guesses a
classid or a read-mode.**

| concept (u16) | classid (`canon<<16 \| 0x0000`) | read-mode `{tail, value_schema, edge_codec}` |
|---|---|---|
| `cognitive_task` `0x0308` | `0x0308_0000` | `{V3, Thinking (§5), CoarseOnly}` — the generic task row |
| `cognitive_fanout`…`cognitive_syllogism` `0x0301..0x0307` | `0x0301_0000`..`0x0307_0000` | `{V3, Thinking, CoarseOnly}` — the 7 task-type rows |
| `chess_episode` `0x0601` | `0x0601_0000` | `{V3, Compressed (Fingerprint+residues: FEN print + move edges), CoarseOnly}` — quarantined corpus |
| `chess_candidate`/`iteration`/`event` `0x0602..0x0604` | `0x0602_0000`..`0x0604_0000` | `{V3, Compressed, CoarseOnly}` |
| **board row** `cognitive_board` `0x0309` (proposed) | `0x0309_0000` | `{V3, Board (Cognitive ∪ BoardAggregates lane @188), CoarseOnly}` |

**BoardAggregates is two things** (CodeRabbit): a value **tenant** (the
lane @ row_offset 188, §3) AND a **board-row classid** whose schema
materializes that lane. The board concept (`cognitive_board 0x0309`) is
proposed in the Cognition domain; the council confirms the slot. Its
read-mode MUST NOT fall through to `ReadMode::DEFAULT` (Addendum-12a T3).
The `appid 0x0000` choice and the chess `Compressed`/board `Board` schemas
are proposals for council ratification (added to the §0 knob list).

## §1 Chess domain `0x06` (operator-ruled exact byte)

Operator ruling "Chess0x06". The `DecisionEpisodeV1` corpus (plan §5,
task DECISION-EPISODE-V1) decomposes into four concepts. Chess is a
**quarantined corpus** (plan §5): its rows are chess-domain rows, NEVER
thinking-row lanes, until `D-TRI-4` measures chess↔thinking transfer.
The 0x06 domain byte does NOT lift that quarantine.

**`ogar-vocab` `ConceptDomain`:** add `Chess` variant;
`canonical_concept_domain`: `0x06 => ConceptDomain::Chess`.

**CODEBOOK block** (pattern = the Geo `0x0FXX` block):

| concept | id | role |
|---|---|---|
| `chess_episode` | `0x0601` | a decision episode (one position-to-decide) |
| `chess_candidate` | `0x0602` | a candidate move under evaluation |
| `chess_iteration` | `0x0603` | one search/eval iteration over candidates |
| `chess_event` | `0x0604` | a played move / outcome event |

Comment thread
coderabbitai[bot] marked this conversation as resolved.
Feeds **P5** (chess-as-teacher via temporal.rs) once minted; consumers
pull via `contract::ogar_codebook::canonical_concept_id`, never a local copy.

---

## §2 Cognition task domain `0x03` (proposed byte; operator knob)

Operator ruling: *"Tasks like fan-out counterfactual synthesis inference
deduction extrapolation syllogism etc are canonical."* These are cognitive
**task TYPES** — canonical OGAR concepts (domain content like "Queen's
gambit" is NOT). They are the Tasks-SoA task-row classids' concepts.

**`ogar-vocab` `ConceptDomain`:** add `Cognition` variant;
`canonical_concept_domain`: `0x03 => ConceptDomain::Cognition` (**pending
operator confirm of the byte**).

**CODEBOOK block:**

| concept | id | verb |
|---|---|---|
| _(reserved)_ | `0x0300` | **Cognition domain root — `CC==0x00`, NOT a CODEBOOK entry** (`ogar_codebook.rs:4-6` convention: `CC==0x00` is the domain root; `canonical_concept_domain` returns the tag). Every promoted concept starts at `0x??01`. |
| `cognitive_fanout` | `0x0301` | fan-out |
| `cognitive_counterfactual` | `0x0302` | counterfactual |
| `cognitive_synthesis` | `0x0303` | synthesis |
| `cognitive_inference` | `0x0304` | inference |
| `cognitive_deduction` | `0x0305` | deduction |
| `cognitive_extrapolation` | `0x0306` | extrapolation |
| `cognitive_syllogism` | `0x0307` | syllogism |
| `cognitive_task` | `0x0308` | the generic Tasks-SoA task-row concept (an explicit slot, never the reserved root) |

**Codebook-root convention (Codex P2 on #719, applied):** slot `CC==0x00`
is the reserved domain root in every `0xDDCC` block — never a concept. The
chess block (§1) already starts at `0x0601`; this Cognition block now does
too (`0x0301`), with the generic task-row concept at `0x0308`. The council
must NOT emit a `0x??00` CODEBOOK row for any domain.

**Note on the noun/verb axis:** these are verb-shaped, but they enter the
codebook as concept **nouns** (`cognitive_<verb>`) — the OGAR codebook is
a concept registry keyed by `u16`; the verb catalogue (rung-2 144-verb
atoms, `persona-vs-rung-ladder.md`) is a SEPARATE storyline and is NOT
what this mint touches. The task-row classid resolves to the SoA row
(topic/angle/thinking/planner columns), not to a verb atom. Open item: if
the council wants the tasks aligned to the 144-verb rung-2 atoms instead
of standalone concepts, that's a design fork to settle before mint (record
on the board, do not guess).

---

## §3 BoardAggregates value tenant @ row_offset 188 (W2a)

NOT a classid — a value-slab lane (the W2a deliverable, Addendum-12a).
The triangle occupies `[152,188)`; BoardAggregates takes the next
contiguous offset **188** (operator ruling put the triangle first). It is
`ValueTenant` index **13**, added to `ValueSchema::Full` (same additive /
zero-version-bump discipline as the triangle, gated by
`v3-envelope-auditor`).

**Width — the open knob (§0b).** Addendum-12a left it "waits on the mint."
Per-mailbox board aggregates (kanban column counts, WIP, cycle stats) fit
a compact fixed lane; **propose `U8 × 8`** (`[188,196)`) — 8 KanbanColumn
counters as saturating u8, matching the KanbanColumn DAG width. Ends at
196 ≤ 480. Council/W2a-owner confirms the field set before mint. Its
classid + `BUILTIN_READ_MODES` board-row entry ride this batch (fall-
through to `ReadMode::DEFAULT` is FORBIDDEN — Addendum-12a T-gate).

---

## §4 Execution sequence (council, post-S1 — never solo)

1. **OGAR originates** (`ogar-vocab/src/lib.rs`): add the `Chess` +
`Cognition` `ConceptDomain` variants, the `canonical_concept_domain`
arms (`0x06`, `0x03`), the CODEBOOK blocks (§1, §2), and `class_ids`
module constants. One OGAR PR.
2. **lance-graph mirrors** (`lance-graph-contract::ogar_codebook`):
wire-compatible copy of the same variants + arms + ids, with the
two-sided **parity tests** (the drift fuse — `canonical_concept_domain`
agreement, id-uniqueness, `0x06→Chess`/`0x03→Cognition` pins).
3. **Read-modes** (`canonical_node::BUILTIN_READ_MODES`): a
`ReadMode` entry for the chess-episode classids, the Tasks-SoA task-row
classid, and the BoardAggregates board classid — each with its
`{tail_variant, value_schema, edge_codec}`. **No new classid falls
through to `ReadMode::DEFAULT=Full`** (T3 gate).
4. **BoardAggregates tenant** (`canonical_node`): `ValueTenant::BoardAggregates
= 13` @ row_offset 188, added to `Full`, field-isolation matrix test —
the same recipe #717 shipped for the triangle.
5. **Auditors:** `v3-envelope-auditor` (the BoardAggregates layout),
`baton-handoff-auditor` (the OGAR↔lance-graph mirror seam),
`firewall-warden` (no PII, no model id).

---

## §5 P4 thinking-row ValueSchema (TD-TRI-1-P4 obligation #2)

The triangle is in `Full` only (#717). P4 wires thinking rows to read the
triangle lanes; those rows need a schema that materialises Frozen/Learned/
Explore. **Proposal:** a NEW `ValueSchema::Thinking` with the EXACT field
mask = the `Cognitive` hot set **∪** the three triangle lanes — the
`ValueTenant` set:

```
{ Meta, Qualia, Fingerprint, Energy, Plasticity, EntityType, Kanban,
FrozenStyle, LearnedStyle, ExploreStyle } // 10 tenants
```

(NOT `MaterializedEdges` / `HelixResidue` / `TurbovecResidue`).
`tenant_bytes()` = Cognitive's 66 + 3×12 = **102 B** (≤ 480, layout-
preserving, zero `ENVELOPE_LAYOUT_VERSION` bump).

**Routing requirement (mandatory):** EVERY thinking/task classid — every
`cognitive_*` classid in §0c, and any future thinking-row class — resolves
to `Thinking` in `BUILTIN_READ_MODES`, **NEVER** to `Cognitive`. Entity
classes (OSINT/PROJECT/ERP/Commerce) keep plain `Cognitive` (no triangle).
This is the concrete form of `TD-TRI-1-P4` obligation #2.

**Persist-side test (mandatory):** a round-trip test that populates the
triangle lanes on a `Thinking`-schema row, bakes it through the
`field_mask`-driven persist, and asserts the triangle bytes **survive** (are
not dropped) — the exact failure obligation #2 names (a `Cognitive`-resolving
thinking row would drop them).

Lands **with** this batch (the Tasks-SoA task classid routes to `Thinking`),
not before — a schema with no classid routing to it would be dead until the
mint. Gated by `v3-envelope-auditor`.
Comment thread
coderabbitai[bot] marked this conversation as resolved.

---

## §6 Coordination seams (with the graphrag arc — record, don't duplicate)

- **S5 mint train:** this batch = {chess `0x06`, Cognition `0x03` +
Tasks-SoA, BoardAggregates@188} + graphrag `D-GR-5` doc-seam classid
(+ community-id iff S1 says distinct). One OGAR mint. The other session
owns D-GR-5 + community-id; this doc owns the three groups above.
- **S3 atom-0 / label-0:** #717 locked palette256 atom/index 0 = null. If
a graphrag community label (dense u32 from 0) is ever persisted into a
palette256 lane, it must be `label+1` (0 = unassigned). Same family as
`TD-TRI-1-P4` obligation #1 (codebook idx-0 = null).
- **S1 gate:** community-id is the other session's call; this batch does
not pre-mint it.

---

## §7 What this spec deliberately does NOT do

No byte minted (proposals only); no S1 run (theirs); no solo mint (the
council convenes the batch); no verb-catalogue touch (rung-2 144 verbs are
a separate storyline); no quarantine lift (chess `0x06` ≠ chess↔thinking
merge — `D-TRI-4` still gates that). The two open knobs (Cognition byte
`0x03`, BoardAggregates width `U8×8`) are flagged for ratification, not
assumed.