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
7 changes: 7 additions & 0 deletions .claude/board/AGENT_LOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
## 2026-07-17 — E-CONTEXT-ROLE-TISSUE-1 capture — connecting-tissue traversal doctrine (main thread, no subagents)

- **Task:** capture the operator's context:role generalization (vertical HHTL / horizontal 6-context) and find the clean cross-domain reuse (screens, documents, time series, AriGraph) with classid+appid+ClassView/WideFieldMask.
- **Consulted first (no guessing):** le-contract §3 (polymorphic (8:8), classview-selects); `class_view.rs` (`FieldMask:70`, `WideFieldMask:221`, `screens_reachable_from:701`, `menu_address:1073/2004`); `view_angle.rs` (presence=attention doctrine); `hhtl.rs` (`NiblePath`); `temporal_pov.rs`; `ogar_codebook.rs` (`AppPrefix`/`render_classid`). No prior traversal-tissue doc existed (verified).
- **Deliverable:** `.claude/knowledge/context-role-traversal-tissue.md` — the lens-stack inventory, the two axes, the per-domain instantiation table, 6 reuse rules (unify at the REGISTER never the API — no `Traversal` trait), probe pair (P-HIER-LEIDEN-HHTL vertical / S1-on-basin:role horizontal). Plan §3b.1 pointer added.
- **Board:** EPIPHANIES `E-CONTEXT-ROLE-TISSUE-1`. Branch restarted from post-#720 main; PR pending.

## 2026-07-17 — D-GR-1 + D-GR-3b + G0 shipped (3 background agents: 1 Opus filigree + 2 Sonnet grindwork; Opus orchestrator wired mod.rs + compiled centrally, one shared target)

- **Task:** "Finish D-GR-*, Opus agents for filigree + Sonnet 5 for grindwork" — the graphrag plan's buildable/ungated deliverables.
Expand Down
10 changes: 10 additions & 0 deletions .claude/board/EPIPHANIES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
## 2026-07-17 — E-CONTEXT-ROLE-TISSUE-1 — operator ruling: `part_of:is_a` ≡ **context:role**, one polymorphic `6×(8:8)` register with TWO orientations — VERTICAL (stacked exactness = HHTL family identity, q2-FMA-helix-attested) and HORIZONTAL (6-context / episodic-witness `basin:role`, eventual) — reused with classid+appid+ClassView/WideFieldMask as the CONNECTING-TISSUE TRAVERSAL for screens, documents, time series, and AriGraph

**Status:** CAPTURED (knowledge doc `.claude/knowledge/context-role-traversal-tissue.md`, this commit). Doctrine + reuse checklist + probe pair; no code this arc (the anchors already exist — that is the finding).

- **The ruling:** context:role is what `part_of:is_a` IS — one classview-selected reading of the polymorphic `(8:8)` pair (le-contract §3), oriented vertically (six pairs = a 6-level radix path, progressive exactness — HHTL family identity) or horizontally (six pairs = six parallel `basin:role` contexts — episodic-witness frame). Same 12 bytes, two axes; the ClassView is the focus lens, never byte inspection.
- **The reuse is already half-live:** `menu_address` = "the radix-trie path lowered from the `is_a` rail" (`class_view.rs:2004`) — screens ALREADY walk it vertically; `screens_reachable_from → WideFieldMask` — screens ALREADY frame it horizontally; `NiblePath` (contract hhtl) = the vertical descent primitive; `TemporalPov`+rung = the time window; `Communities.levels` = the vertical stack on the AriGraph side. The tissue doc names them ONE walk shape: `(classid→ClassView reading) × mask × axis × rung × pov`.
- **The clean way = unify at the REGISTER, never the API.** Carrier methods stay native (`menu_address` / `retrieve` / `at` / `communities`); NO unifying `Traversal` trait (Frankenstein flattening + carrier-litmus violation). appid (classid lo-u16) renders, concept (hi-u16) means — same walk, different rendering per app.
- **One invariant, two falsifiers (both pre-named in graphrag §6):** vertical = `P-HIER-LEIDEN-HHTL` (Louvain `levels` vs HHTL tiers) [CONJECTURE, not run]; horizontal = the shipped S1 harness (#720) re-fed from the 6-slot `basin:role` frame [EVENTUAL]. The S1 identity (community ≡ basin ≡ is_a category) is the register-level invariant both orientations test.
- Cross-ref: `E-GRAPHRAG-DGR3B-1`, `E-EMPIRICAL-VS-SCIENTIFIC-JC-1`, le-contract §3, #719 (mint train), #720 (S1 harness).

## 2026-07-17 — E-EMPIRICAL-VS-SCIENTIFIC-JC-1 — layer boundary: jc is the SCIENTIFIC crate (consume, never extend to fit a probe); graphrag probes are EMPIRICAL (measure, consume jc's science). P-COMMUNITY-BASIN-AGREE (S1) harness shipped — mechanism green, verdict awaits a real is_a corpus

**Status:** SHIPPED (branch `claude/happy-hamilton-0azlw4`, post-#719). `crates/lance-graph/examples/p_community_basin_agree.rs` + `jc` dev-dep on lance-graph. Runs clean; fmt + clippy clean.
Expand Down
152 changes: 152 additions & 0 deletions .claude/knowledge/context-role-traversal-tissue.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,152 @@
# context:role Traversal Tissue — one register, two axes, every domain

> **READ BY:** integration-lead, truth-architect, v3-envelope-auditor,
> trajectory-cartographer, convergence-architect, dto-soa-savant — and any
> session about to write a *walk* (menu path, document tree descent, time
> window, graph hop, basin scan) in ANY consumer domain. Read BEFORE
> designing a traversal; the walk you need almost certainly already has its
> lens and its register reading.
>
> **Status:** operator-ruled framing (2026-07-17, this doc is the capture);
> vertical axis operator-attested (q2 FMA helix maps) + probe-gated in-repo
> (P-HIER-LEIDEN-HHTL); horizontal axis EVENTUAL (probe named, not run).
> Labels below per the insight cycle — nothing here is silently promoted.

---

## The ruling (operator, 2026-07-17)

> *"part_of:is_a is logically consistent with **context:role** — whether
> it's HHTL family identity (**vertical**, tested in q2 FMA helix maps) or
> eventually even **horizontal** (6 context / episodic-witness basin:role /
> identity). Together with classid and appid and ClassView WideFieldMask we
> can reuse it for everything — screen and document representation, time
> series, AriGraph synergies — as connecting tissue traversal."*

This is not an analogy: it is the le-contract's own polymorphism ruling
read as a *traversal* doctrine. `.claude/v3/soa_layout/le-contract.md` §3
already rules **"the (8:8) pair is polymorphic — the classview selects the
reading"** — `part_of:is_a` (L1), `memberof:members` (L2),
`mereology:taxonomy` (L3), `palette256²` (L4), `area:location` **stacked**,
`basin:relationtype`. Every one of those is a **context:role** pair. The new
capture is the *orientation* claim:

- **VERTICAL** = the *stacked* reading. The six pairs are a **6-level radix
path**: each pair refines within the one above ("progressive exactness",
le-contract). Descending = adding exactness; ascending = widening. This IS
HHTL family identity (HEEL→HIP→TWIG; `contract::hhtl::NiblePath` is the
shipped descent primitive). Evidence: q2 FMA helix maps
(operator-attested; contract read-modes `ReadMode::{FMA, FMA_V3}`).
- **HORIZONTAL** = the *6-slot-parallel* reading. The six pairs are **six
contexts side by side**, each `basin:role` / `context:identity` — the
episodic-witness basins spread across the plane (the le-contract "second
GUID relationships" + "static-basin" variants). EVENTUAL — sanctioned,
not yet exercised.

Same 12 bytes. The ClassView is the focus lens that picks the axis and the
reading; code never inspects payload bytes to guess (le-contract §3 slot
purity).

## The lens stack (all shipped — reuse, never reinvent)

| Layer | What it selects | Where (file:line-ish) |
|---|---|---|
| `classid` hi-u16 | the CONCEPT (canon-high) | `canonical_node.rs` key |
| `classid` lo-u16 = **appid** | the APP render prefix (who renders) | `ogar_codebook::{AppPrefix, render_classid}` |
| `classid → ClassView` | the READING of the 12-byte register | `canonical_node.rs::classid_read_mode`, le-contract §3 |
| `FieldMask(u64)` / `WideFieldMask` | which fields are present ⇒ attended ("attend to what's present" — structural, never per-row semantics) | `class_view.rs:70,221`; `view_angle.rs` doctrine |
| `ViewAngle` (4-bit) | which inherited view-schema attends (angles compete via `head2head`) | `view_angle.rs` |
| `RungLevel`/`RungElevator` | how DEEP/WIDE the walk goes this cycle | `cognitive_shader.rs:157,272`; `doc_graph.rs::retrieve` |
| `TemporalPov`/`VersionRange` + rung | WHEN — the version window the walk reads | `temporal_pov.rs` |

**One traversal shape, informally:**
`walk = (classid → ClassView reading) × (mask: which slots/fields live) ×
(axis: vertical descend / horizontal hop) × (rung: depth-or-width) ×
(pov: version window)`. A vertical step = *refine role within context*
(pair k → pair k+1). A horizontal step = *switch context, same role plane*
(slot i → slot j).

## Per-domain instantiation (the synergy map)

| Domain | VERTICAL (stacked exactness) | HORIZONTAL (6-context) | Shipped anchor |
|---|---|---|---|
| **Semantic / cognitive** | HHTL family identity; `NiblePath` descent; the rung ascent (0–1 rank → 2 hop → 3 community) | 6 CAM-PQ subspaces (L4); `basin:relationtype` rails | L1/L4 readings; `DocGraphQuery::retrieve`; S1 probe |
| **Screen (Klickwege / a2ui)** | `menu_address(class)` — "the radix-trie path lowered from the `is_a` rail" (`class_view.rs:2004`) | `screens_reachable_from(root, edges) → WideFieldMask` | class_view.rs — BOTH already live |
| **Document (ogar-doc / doc.v1)** | doc→section→block→line→word→glyph — a 6-level radix path in the SAME register shape | 6 regions / witness basins per page; DocumentID→KV handle (D-GR-6) | doc-W4 spec; tesseract doc.v1 regions |
| **Time series** | calendar radix as stacked pairs (yr:mo \| day:hr \| min:s …) — coarse:fine at every pair | 6 parallel lanes (`MultiLaneColumn`, D-DNV-1); per-lane basin | `temporal_pov` (episodic = Lance versions) |
| **AriGraph** | `Communities.levels` — the Louvain hierarchy IS a vertical stack; basin descent | 6 episodic-witness basins; PPR restart set per slot | `communities()`/`ppr` (#714/#716); S1 (#720) |

Read the table columns downward and the reuse is literal: the screen menu
path, the document tree, the calendar drill-down, the HHTL family descent,
and the community hierarchy are **the same vertical walk** over the same
register shape; reachability masks, page regions, parallel lanes, subspaces,
and witness basins are **the same horizontal frame**.

## The clean way to reuse it (the rules)

1. **Unify at the REGISTER, never at the API.** The tissue is the one
`6×(8:8)` register + the lens stack. Carrier methods stay native
(`menu_address` on the class index, `retrieve` on `DocGraphQuery`,
`at(v, rung)` on the temporal reference, `communities()` on
`TripletGraph`). Do NOT introduce a unifying `Traversal` trait — that is
the Frankenstein flattening (unlike functions blurred into one codec too
early) and it violates the carrier-method litmus. Convergence of *code*
(if ever) is probe-gated, not assumed.
2. **Before writing ANY walk, check the lens stack first.** New menu logic →
`menu_address` exists. New reachability → `screens_reachable_from`
exists. New descent → `NiblePath` exists. New window → `TemporalPov`
exists. New depth policy → `RungElevator` exists. A new walk that
re-implements one of these is a rediscovery tax AND a drift risk.
3. **The ClassView selects; bytes never self-describe.** Axis and reading
come from `classid → ClassView` (+ `ViewAngle` when angles compete).
Never branch on payload bytes to guess the orientation (§3 slot purity).
4. **`u8:u8` stays two bytes.** Vertical stacking is *reading* six pairs as
a path — never widening them into u16 radix digits (canon: never widen).
5. **appid renders, concept means.** classid hi = what the walk is *about*;
classid lo (`AppPrefix`) = who is *rendering* the walk (screen vs
document vs lane view of the same concept). Two walks over the same
concept with different appids are the same traversal differently
rendered — that is the whole point of the reuse.
6. **Ownership unchanged.** Traversal is read-side. Any persisted result of
a walk lands per V3 write-on-behalf (`mailbox_owner()`), never as-self.

## Probes (falsifiers — one invariant, two orientations)

The S1 identity (*community ≡ basin ≡ is_a category*, `E-GRAPHRAG-DGR3B-1`,
probe shipped #720) is ONE invariant on this register; the orientations give
it two falsifiers, both ALREADY NAMED in the graphrag plan §6:

- **Vertical:** `P-HIER-LEIDEN-HHTL` — hierarchical Leiden super-communities
(`Communities.levels`) vs the coarse HHTL tiers / taxonomy parents.
Agreement ⇒ the community hierarchy and the stacked-pair family descent
are the same vertical walk. [CONJECTURE — probe defined, NOT RUN; q2 FMA
helix evidence is operator-attested, out-of-repo.]
- **Horizontal:** `P-COMMUNITY-BASIN-AGREE` **on the `basin:role` reading**
— the shipped S1 harness (`examples/p_community_basin_agree.rs`) re-run
with basins taken from the 6-slot horizontal frame instead of the graph
`is_a` edges. [EVENTUAL — mechanism shipped, horizontal feed not built.]

Both consume `jc::reliability` (scientific crate — consumed, never extended;
`E-EMPIRICAL-VS-SCIENTIFIC-JC-1`).

## Where this lands in current + future plans

- **graphrag v1.2 (ACTIVE):** D-GR-2's rung walk = the vertical axis; the
§4a DocumentID-KV seam = the document instantiation; §3b.1 sharpened to
cite this doc.
- **doc-W4 (council-gated):** document reconstruction reads = the vertical
radix path; "documents in this community" = horizontal. The `document
0x080B` / `typed_field 0x080A` walks should be specified AS lens-stack
walks, not bespoke.
- **temporal-markov (ACTIVE):** the sorted-stream window IS the temporal
vertical (coarse→fine version ranges); D-MTS probes unaffected, this doc
only names the correspondence.
- **triangle-tenants / D-TRI (P4 pipeline):** `triangle_for(family)` reads
ride the same ClassView selection; the P4 reader inherits rule 3.
- **a2ui-rs / consumer repos:** screen representation consumes
`menu_address` + `WideFieldMask` through the contract — consumers never
re-derive the walk (ogar-consumer-preflight applies).

*Capture of the 2026-07-17 operator ruling; companion to
`E-GRAPHRAG-DGR3B-1` (S1 identity), `E-EMPIRICAL-VS-SCIENTIFIC-JC-1`
(probe/science boundary), and le-contract §3 (the polymorphism canon).*
13 changes: 12 additions & 1 deletion .claude/plans/graphrag-doc-retrieval-soa-integration-v1.md
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,18 @@ already carries, and they are **distributional-meaning modes, NARS-truth-weighte
high-but-<1.0 ⇒ correlated-but-distinct, and the disagreements are exactly the
bridges / revision candidates. Either way a finding; the identity is the
*hypothesis*, the probe is the *falsifier* (the "same concept at the same time"
claim made precise).
claim made precise). **[S1 harness SHIPPED #720** —
`examples/p_community_basin_agree.rs`, φ via `jc::pearson`: aligned 1.0000 /
bridged 0.5500 with the bridge named; real-corpus verdict OPEN.]
**Orientation generalization (operator, 2026-07-17 — captured in
`.claude/knowledge/context-role-traversal-tissue.md`):** `part_of:is_a` ≡
**context:role**, one polymorphic `(8:8)` register with two orientations —
**vertical** (stacked exactness = HHTL family identity; falsifier =
P-HIER-LEIDEN-HHTL over `Communities.levels`) and **horizontal** (6-context
episodic-witness `basin:role`; falsifier = the shipped S1 harness re-fed from
the 6-slot frame). The S1 identity is the register-level invariant both
orientations test; the same tissue is the reuse spine for screens
(`menu_address`/`WideFieldMask`), documents, and time series.
2. **× the 256² distribution — Leiden clusters the distribution, not the
ranking.** Modularity runs over the compose/distribution graph (256²
palette-compose + `CausalEdge64` SPO edges), NOT the 256 rank. A community IS
Expand Down