diff --git a/.claude/board/AGENT_LOG.md b/.claude/board/AGENT_LOG.md index 1f4cb0a70..3c9fd1ad3 100644 --- a/.claude/board/AGENT_LOG.md +++ b/.claude/board/AGENT_LOG.md @@ -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. diff --git a/.claude/board/EPIPHANIES.md b/.claude/board/EPIPHANIES.md index f15c1df61..64232c207 100644 --- a/.claude/board/EPIPHANIES.md +++ b/.claude/board/EPIPHANIES.md @@ -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. diff --git a/.claude/knowledge/context-role-traversal-tissue.md b/.claude/knowledge/context-role-traversal-tissue.md new file mode 100644 index 000000000..4d285f9d4 --- /dev/null +++ b/.claude/knowledge/context-role-traversal-tissue.md @@ -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).* diff --git a/.claude/plans/graphrag-doc-retrieval-soa-integration-v1.md b/.claude/plans/graphrag-doc-retrieval-soa-integration-v1.md index 0a1f7cc73..4cc195620 100644 --- a/.claude/plans/graphrag-doc-retrieval-soa-integration-v1.md +++ b/.claude/plans/graphrag-doc-retrieval-soa-integration-v1.md @@ -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