Skip to content

rung-content ladder + persona demarcation, facet bridge, legacy_outliers, D-TSC-1 alias fix, chess-arc board bank#689

Merged
AdaWorldAPI merged 6 commits into
mainfrom
claude/review-claude-board-files-nhqgx1
Jul 14, 2026
Merged

rung-content ladder + persona demarcation, facet bridge, legacy_outliers, D-TSC-1 alias fix, chess-arc board bank#689
AdaWorldAPI merged 6 commits into
mainfrom
claude/review-claude-board-files-nhqgx1

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Jul 14, 2026

Copy link
Copy Markdown
Owner

What

Six commits, rebased onto post-#688 main — the operator-ruling arc of the 2026-07-13/14 session.

Rulings banked (doc + board)

  • 8540d0e5 — the rung-content ladder + persona demarcation (NEW .claude/v3/knowledge/persona-vs-rung-ladder.md, linked as a MANDATORY read from CLAUDE.md § V3 SUBSTRATE):
    • Rung 0–1 = observation · rung 2 = the 144 thinking atoms (12 verb families × 12 tenses; sigma_rosetta + verb_table) · rung 3 = the 34 NARS tactic recipes = THE runbooks (contract::recipes::RECIPES[34], primitives in ndarray hpc/styles) · rung 4 = StyleFamily-12 macros, autopoiesis through frozen × learned × exploration.
    • The adjective-36 in contract::thinking is the separate, unwired persona-modeling storyline — never rung 3, never "NARS runbooks". Corrects E-STYLE-FAMILY-VS-RUNBOOK-1's label (append-only, via E-RUNG-CONTENT-LADDER-1).
    • Open items O1–O6 tracked in the doc (rung↔content wiring, the true StyleFamily → recipes edge, D-TSC-1 residue, probe results).
    • Board: EPIPHANIES prepend + TECH_DEBT flip of TD-STYLE-TABLE-RESIDUE item 3 to PROBED/DORMANT (p64-bridge STYLES[ord % 12] has zero external callers; UNIFIED_STYLES confirmed tethered-not-collapsed).

Code

  • e83e5f10 — D-TSC-1 regression fix: 1a11038 left the deprecated ThinkingStyle alias stranded in thinking/style.rs while dropping its thinking/mod.rs re-export — the old import path hard-broke with no migration affordance. Re-exports the alias (#[allow(deprecated)]) + lifts PlannerStyleExt so style.cluster() callers get a one-line fix. Board: E-COMPAT-ALIAS-MUST-BE-LIFTED-1 (the gate lesson: a compat-alias gate must assert the old import PATH resolves, not that an alias token exists).
  • 9316d49dcontract::legacy_outliers (operator ruling, le-contract §3a): the three wide contiguous grace carvings for un-migrated V1 classes — WideMixed (3×u16+2×u24), WideTriple (4×u24), WideQuad (3×u32), all 96-bit, LE round-trip, bluntly named. Strongly discouraged if god-object-related or lacking bucket rollover; exit = L4 palette256². Deliberately NOT CascadeShape variants. 5 tests incl. the V1 family:identity degenerate-case proof. Board: E-V3-GRACE-WIDE-CARVINGS-1.
  • 6de620c6NodeGuid ↔ FacetCascade bridge: the two types are the same 16 bytes (classid(4) | 6×(8:8)) but had no conversion, which is why 3 call sites held their nose through the mint_for(classid_read_mode(c).tail_variant, …) detour while 8 files reached for facet::. Byte-identical From impls both ways + NodeGuid::facet(); additive only, direct cast (no registry lookup on the conversion path). Byte-identity test green.

Chess-arc board bank (pre-existing on branch, no PR before the main restart)

  • 99c11f3b / b9ae704eE-CHESS-ARC-TO-V3-TRANSFER-1 (4 validations + D-EPIPHANY-SIG-1 probe-gated + 3 rejected rhymes) and the temporal-markov spine evidence addendum (E-THINKING-SPINE-CHESS-EVIDENCE-1, 6 graded mappings).

Verification

  • cargo test -p lance-graph-contract --lib — legacy_outliers 5/5, facet_bridge 1/1 green; clippy clean.
  • cargo build -p lance-graph-planner — clean, no new warnings (2 pre-existing deprecated-CausalEdge64 warnings untouched).
  • Board hygiene: every ruling/correction landed same-commit with its code/doc.

Companion PR: AdaWorldAPI/OGAR (D‑V1‑GRACE‑CARVINGS mirror — the ⊘ V1-tail supersession gains the sanctioned waiting-room amendment).

🤖 Generated with Claude Code

https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD


Generated by Claude Code

Summary by CodeRabbit

  • New Features

    • Added support for converting between node identifiers and facet identifiers while preserving their underlying data.
    • Added migration-only support for three legacy 96-bit payload layouts.
  • Bug Fixes

    • Restored compatibility for existing imports of thinking styles.
    • Made planner style extensions available through the standard thinking module entry point.
  • Documentation

    • Clarified persona-versus-rung concepts, migration guidance, supported payload layouts, and style-family usage.

claude added 6 commits July 14, 2026 07:05
…HANY-SIG-1 (Hambly-Lyons epiphany detector, probe-gated) + rejected rhymes

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD
…— 6 graded mappings (sender→receiver=edge, wave=stream, basins ground/wave identifies)

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD
…C-1 regression fix)

1a11038 (D-TSC-1) renamed the planner 12-space ThinkingStyle -> StyleFamily
and left `#[deprecated] pub type ThinkingStyle = StyleFamily;` in
thinking/style.rs "for external compat" — but the same commit dropped
ThinkingStyle from the `thinking/mod.rs` re-export (line 22 went from
`pub use style::{…, ThinkingStyle}` to `…, StyleFamily`). So the alias
was stranded one level down: `thinking::style::ThinkingStyle` resolved,
but `thinking::ThinkingStyle` — the natural, pre-existing consumer import
path — hard-broke. Not a compat shim; a compat shim I forgot to wire up.

Same second-order break for the methods that used to be inherent on the
old enum (cluster/tau_address/modulation): they moved onto the
`PlannerStyleExt` ext trait, which was only privately `use`d in mod.rs,
so `style.cluster()` broke even with the type alias present.

Fix: re-export ThinkingStyle at thinking/mod.rs (with `#[allow(deprecated)]`
on the re-export line so the crate stays -D warnings clean) and lift
PlannerStyleExt via `pub use`. Consumers on the old paths now compile again
(with the deprecation warning steering them to StyleFamily) instead of
failing outright.

`cargo build -p lance-graph-planner` clean, no new warnings (the 2 remaining
are pre-existing deprecated-CausalEdge64 calls in nars_engine.rs, untouched).
thinking-engine's alias was already at its prior path (cognitive_stack::) so
it never broke; #674 audited clean (RESERVE-DON'T-RECLAIM, no stranded alias).
Board: EPIPHANIES E-COMPAT-ALIAS-MUST-BE-LIFTED-1.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD
…ator ruling 2026-07-13)

The V3 12-byte facet payload is a content-blind register the ClassView
projects; L1-L8 (le-contract §3) are all byte-axis readings (8:8 / 8:8:8 /
8:8:8:8). This adds the three WIDE CONTIGUOUS grace carvings a not-yet-
decomposed class may sit in temporarily, in a bluntly-named module so it
announces its own status:

- LegacyOutlier::WideMixed  (G1) — 3×u16 + 2×u24  = 48+48
- LegacyOutlier::WideTriple (G2) — 4×u24 (contiguous, NOT axis 4×(8:8:8))
- LegacyOutlier::WideQuad   (G3) — 3×u32 (contiguous, NOT axis 3×(8:8:8:8))

All 96 bit, LE read/write, u24 no-silent-truncation guard mirroring
NodeGuid::new. Deliberately a SEPARATE module from facet::CascadeShape and
NOT a variant of it — a wide carving with no rail/axis is exactly what that
enum refuses to bless, which is the whole point.

Tagged "strongly discouraged if god-object-related or lacking proper bucket
rollover; migrate to cosine-replacement palette256 (L4)" — the conditions
are the diagnosis (god object -> decompose; no bucket rollover -> saturates
silently; exit -> L4 6×(8:8) palette256²). NOT a V1 tail revival: one
register read coarsely, no path/tail split. The V1 family:identity u24
fragment is the degenerate G1/G2 case (test proves the waiting-room claim).
New classes MUST NOT be born into G1-G3.

le-contract.md §3a documents the catalogue + code home; EPIPHANIES
E-V3-GRACE-WIDE-CARVINGS-1 records the ruling. 5 lib tests green,
clippy clean (-p lance-graph-contract).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD
…surface, not mint_for

Adoption measured the market verdict: facet:: is used in 8 files / 28 sites
with no apology; NodeGuid::mint_for has 3 real call sites and EVERY one is
wrapped in a comment justifying the `mint_for(classid_read_mode(c)
.tail_variant, …)` incantation. Sessions reached for facet::FacetCascade
because it is the content-blind register done right; they held their nose
past mint_for's tail ergonomics.

Root cause: NodeGuid and FacetCascade are the SAME 16 bytes
(`classid(4) | 6×(8:8)`) — one the tail lens, one the content-blind lens —
but there was NO bridge, so a mint literally could not reach the good
surface. This adds it: byte-identical `From<FacetCascade> for NodeGuid`,
`From<NodeGuid> for FacetCascade`, and a `NodeGuid::facet()` accessor. No
layout change, no reinterpretation — a mint can now build the ergonomic
FacetCascade and `.into()` the node key with zero tail incantation.

Byte-identity proven (facet_bridge_tests, green). Additive only; retiring
mint_for/TailVariant and re-projecting the 3 sites' per-class ClassView
byte placement are the follow-ups (the latter is a per-class semantic call,
not a mechanical one).

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD
…ng banked (board + CLAUDE.md link)

Operator rulings from this session, calcified before they dilute:

- NEW `.claude/v3/knowledge/persona-vs-rung-ladder.md` — the demarcation
  file. The rung-content ladder (ladybug-rs -> thinking-engine lineage):
  0-1 observation / 2 = the 144 thinking atoms (12 verb families x 12
  tenses; sigma_rosetta + verb_table) / 3 = the 34 NARS reasoning
  tactics = THE runbooks (contract::recipes RECIPES[34], primitives in
  ndarray hpc/styles) / 4 = StyleFamily-12 macros, autopoiesis through
  frozen x learned x exploration. The adjective-36 in contract::thinking
  is the SEPARATE persona-modeling storyline - off-ladder, unwired by
  design, never rung 3, never "NARS runbooks". Corrects the
  E-STYLE-FAMILY-VS-RUNBOOK-1 label (default_runbook() bridges rung-4
  macros to the persona vocabulary while wearing the rung-3 tactics'
  name). Anti-conflation card for the four spaces + open items O1-O6
  (rung-content wiring, StyleFamily->recipes edge, persona future work,
  D-TSC-1 residue, probe results, triangle landing zone).

- CLAUDE.md: the doc linked from the V3 SUBSTRATE section as a
  MANDATORY read before touching StyleFamily / runbooks / recipes /
  144 verbs / RungLevel / persona modeling (in addition to the existing
  .claude/board links).

- Board: EPIPHANIES prepend E-RUNG-CONTENT-LADDER-1 (the ruling + the
  correction, append-only); TECH_DEBT prepend flipping
  TD-STYLE-TABLE-RESIDUE item 3 to PROBED/DORMANT (p64-bridge
  STYLES[ord % 12] has zero external callers; dependents import only
  CognitiveShader; UNIFIED_STYLES confirmed tethered-not-collapsed,
  closing the MODULE-TABLE census question).

Doc + board only; no code change in this commit.

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD
@cursor

cursor Bot commented Jul 14, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit.

A user or team admin can review and increase usage limits in the Cursor dashboard.

(requestId: serverGenReqId_c103f29c-6040-4fce-939c-0e9581399143)

@coderabbitai

coderabbitai Bot commented Jul 14, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The PR adds legacy 96-bit migration payload types, bridges NodeGuid with FacetCascade, restores planner compatibility exports, and records related V3 migration, persona, style, and chess-arc documentation.

Changes

V3 contracts and knowledge

Layer / File(s) Summary
Legacy outlier payload contract
crates/lance-graph-contract/src/legacy_outliers.rs, crates/lance-graph-contract/src/lib.rs, crates/lance-graph-contract/src/..., .claude/board/EPIPHANIES.md
Adds three discouraged 96-bit carving variants with little-endian read/write APIs, public module export, migration documentation, and round-trip tests.
NodeGuid and FacetCascade bridge
crates/lance-graph-contract/src/canonical_node.rs
Adds byte-identical conversions in both directions, a NodeGuid::facet() accessor, and validation tests.
Planner compatibility exports
crates/lance-graph-planner/src/thinking/mod.rs, .claude/board/EPIPHANIES.md
Restores the deprecated ThinkingStyle import path and publicly re-exports PlannerStyleExt.
V3 knowledge and evidence records
.claude/board/*, .claude/plans/*, .claude/v3/*, CLAUDE.md
Documents chess-arc evidence, persona/rung separation, style-table findings, migration rules, future-design conjectures, and the V3 documentation map.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Suggested reviewers: claude

Poem

I’m a rabbit hopping through payloads bright,
Three wide carvings fit the twelve-byte night.
NodeGuid meets FacetCascade hand in hand,
Planner exports bloom across the land.
Docs mark each trail with careful cheer—
V3 leaves a clearer path this year.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title is related to the PR and names the main areas changed, even though it is overly long and list-like.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8540d0e554

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

/// the same no-silent-truncation guard `NodeGuid::new` uses for its u24 groups.
#[inline]
fn put_u24_le(dst: &mut [u8], v: u32) {
debug_assert!(v <= 0x00FF_FFFF, "legacy outlier u24 field must fit 24 bits");

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Preserve u24 overflow checks in release builds

When callers pass a value above 0x00ff_ffff through write_wide_mixed or write_wide_triple, this guard is compiled out in release builds, so the subsequent byte writes silently drop the high bits and persist a different legacy payload than requested. The analogous NodeGuid::new u24 fields use assert! specifically to prevent this release-mode collision/truncation, so this helper should enforce the bound outside debug builds as well.

Useful? React with 👍 / 👎.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🤖 Prompt for all review comments with 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.

Inline comments:
In @.claude/v3/knowledge/persona-vs-rung-ladder.md:
- Around line 55-63: Update the stale “36 = literal NARS RUNBOOKS” definition in
FUTURE-DESIGN.md to distinguish persona-36 from the 34 NARS runbooks, or
explicitly mark that mapping as superseded by the persona-vs-rung-ladder
demarcation. Preserve the corrected 12↔36 persona-storyline mapping and avoid
implying that persona-36 belongs to the NARS runbook abstraction.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 9adddfe7-33f0-4df5-b266-b3ade2b6b549

📥 Commits

Reviewing files that changed from the base of the PR and between 757c3e8 and 8540d0e.

📒 Files selected for processing (12)
  • .claude/board/AGENT_LOG.md
  • .claude/board/EPIPHANIES.md
  • .claude/board/TECH_DEBT.md
  • .claude/plans/temporal-markov-and-style-classes-v1.md
  • .claude/v3/FUTURE-DESIGN.md
  • .claude/v3/knowledge/persona-vs-rung-ladder.md
  • .claude/v3/soa_layout/le-contract.md
  • CLAUDE.md
  • crates/lance-graph-contract/src/canonical_node.rs
  • crates/lance-graph-contract/src/legacy_outliers.rs
  • crates/lance-graph-contract/src/lib.rs
  • crates/lance-graph-planner/src/thinking/mod.rs

Comment on lines +55 to +63
**What made the conflation easy:** persona-36 is 12-groupable, the
word "style" appears in all four spaces, and D-TSC-1's board ruling
`E-STYLE-FAMILY-VS-RUNBOOK-1` labeled the persona-36 "literal NARS
runbooks seeding the rung ladder." That label is CORRECTED by this
demarcation: `StyleFamily::default_runbook()` bridges rung-4 macros to
the *persona vocabulary*, while wearing the name of the *rung-3
tactics*. The mapping pair (`family()`/`default_runbook()`) is
mechanically sound as a 12↔36 bridge WITHIN the persona storyline; only
its "runbook" naming and the board label cross storylines.

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 | 🟠 Major | ⚡ Quick win

Synchronize the stale FUTURE-DESIGN mapping.

This demarcation says persona-36 is separate from the 34 NARS runbooks, but .claude/v3/FUTURE-DESIGN.md Line 31 still defines “36 = literal NARS RUNBOOKS.” That contradiction can send future implementation work down the wrong abstraction path. Update the FUTURE-DESIGN entry or explicitly mark it superseded by this document.

Proposed documentation correction
-E-STYLE-FAMILY-VS-RUNBOOK-1 | 12 = abstract orchestration FAMILIES (`StyleFamily`); 36 = literal NARS RUNBOOKS
+E-STYLE-FAMILY-VS-RUNBOOK-1 | 12 = abstract orchestration FAMILIES (`StyleFamily`); 34 = literal NARS RUNBOOKS; persona-36 remains a separate, unwired vocabulary
🤖 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/v3/knowledge/persona-vs-rung-ladder.md around lines 55 - 63, Update
the stale “36 = literal NARS RUNBOOKS” definition in FUTURE-DESIGN.md to
distinguish persona-36 from the 34 NARS runbooks, or explicitly mark that
mapping as superseded by the persona-vs-rung-ladder demarcation. Preserve the
corrected 12↔36 persona-storyline mapping and avoid implying that persona-36
belongs to the NARS runbook abstraction.

@AdaWorldAPI AdaWorldAPI merged commit a260ff9 into main Jul 14, 2026
7 checks passed
AdaWorldAPI pushed a commit that referenced this pull request Jul 14, 2026
…; OGAR #201 companion noted)

Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Awg6TXocHcwTtc6eGsHcdD
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants