Skip to content

Commit 2f13861

Browse files
authored
Merge pull request #624 from AdaWorldAPI/claude/v3-substrate-migration-review-o0yoxv
V3 substrate convergence: probes P0–P5 prove one palette across distance/edge/causality/discovery/reasoning
2 parents b56deab + ef5aaaa commit 2f13861

15 files changed

Lines changed: 1446 additions & 46 deletions

File tree

.claude/board/EPIPHANIES.md

Lines changed: 579 additions & 0 deletions
Large diffs are not rendered by default.

.claude/board/ISSUES.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,22 @@
11
# Issues Log — Open + Resolved (double-entry, append-only)
22

3+
## 2026-07-01 — ISS-OGAR-OSINT-MIRROR-PENDING — OGAR #145's OSINT mint (+2 to `class_ids::ALL`) breaks the contract-mirror `COUNT_FUSE` on merge; the paired lance-graph mirror rows must land in the same arc
4+
5+
**Status:** OPEN (tracked) · **Resolution path RULED by operator 2026-07-01: keep the fuse (it IS the dependency contract enforcing OGAR↔lance-graph parallel movement); do NOT pin to a rev — "option 1" is REJECTED. Land the 2 mirror rows + `domains_agree` arm in parallel with OGAR #145 (option 2 / coordinated merge; brief transient red is acceptable — "the fuse is okay for now"). See `E-OGAR-LANCEGRAPH-MOVE-IN-PARALLEL`.** · Owner: OGAR `ogar-vocab` (PR #145) + `lance-graph-contract::ogar_codebook` mirror + `lance-graph-ogar::parity::domains_agree`. Surfaced 2026-07-01 while self-reviewing PR #624 / #145. Same cross-repo-arc shape as `ISS-OGAR-AUTH-MIRROR-DRIFT` (which took medcare CI red) and `ISS-OGAR-GENETICS-MIRROR-PENDING`; cited by `E-CODEBOOK-MINT-IS-A-CROSS-REPO-ARC`.
6+
7+
**READY PATCH (apply to lance-graph the moment OGAR #145 is on OGAR main; NOT to #624 while OGAR main is still 65 — that breaks #624's own fuse):** in `crates/lance-graph-contract/src/ogar_codebook.rs` add the two rows `("osint_system", 0x0700), ("osint_person", 0x0701)` to `mirror::CODEBOOK` (65 → 67); add the `(O::Osint, C::Osint)` arm to `lance-graph-ogar::parity::domains_agree` (the `ConceptDomain::Osint` enum + `0x07 => Osint` route already exist). Then `mirror::CODEBOOK.len() == ogar_vocab::class_ids::ALL.len()` (67 == 67) restored.
8+
9+
**The break.** OGAR PR #145 mints `osint_system` (0x0700) + `osint_person` (0x0701) into `ogar_vocab::class_ids::ALL` (+2). `lance-graph-ogar` pins `ogar-vocab = { git = ".../OGAR", branch = "main" }` (tracks main, NOT a rev), and carries the compile-time `COUNT_FUSE`: `assert!(mirror::CODEBOOK.len() == ogar_vocab::class_ids::ALL.len())` (`lance-graph-ogar/src/lib.rs:119`). The contract mirror `lance-graph-contract::ogar_codebook::CODEBOOK` currently has **65 rows with NO osint entries** (it reserved `ConceptDomain::Osint` + the `0x07 => Osint` route + a domain-nibble test, but not the two concept rows). So **the instant #145 merges to OGAR main, `COUNT_FUSE` fires `error[E0080]` in every consumer vendoring `lance-graph-ogar`** — medcare, smb, woa, etc.
10+
11+
**Why the mirror rows can't just be added to PR #624 now.** #624's `lance-graph-ogar` compiles against OGAR **main**, which still has 65 (osint mint is unmerged on #145). Adding +2 to the mirror now → mirror 67 vs OGAR-main 65 → breaks #624's OWN CI. The two sides are chicken-and-egg across the `branch = "main"` tracking.
12+
13+
**Resolution (coordinated arc, per the auth precedent):** land in lock-step —
14+
1. OGAR #145 merges to OGAR main (ALL → 67); **at this moment lance-graph main's `COUNT_FUSE` goes red** (known transient, as with the auth mint).
15+
2. Immediately merge a lance-graph change adding the 2 osint rows to `ogar_codebook::CODEBOOK` (`("osint_system", 0x0700)`, `("osint_person", 0x0701)`) + the `(O::Osint, C::Osint)` arm to `lance-graph-ogar::parity::domains_agree` → 67 == 67 restored.
16+
- The `ConceptDomain::Osint` enum + `0x07 => Osint` route already exist in the mirror, so only the 2 CODEBOOK rows + the `domains_agree` arm are missing.
17+
18+
**Merge-ordering decision needed from operator:** whether to (a) merge #145 + the mirror follow-up back-to-back accepting the brief transient red, (b) hold #145 until the mirror PR is staged, or (c) pin `lance-graph-ogar` to a rev instead of `branch = "main"` to decouple the cadence. Flagged to the operator 2026-07-01.
19+
320
## 2026-06-26 — ISS-OGAR-GENETICS-MIRROR-PENDING — contract mirror gained `ConceptDomain::Genetics` (0x0E) ahead of OGAR; the `domains_agree` arm + OGAR side follow
421

522
**Status:** OPEN (tracked) · Owner: OGAR `ogar-vocab` + `lance-graph-ogar` · Surfaced by: CodeRabbit on #618. The same cross-repo-arc shape as `ISS-OGAR-AUTH-MIRROR-DRIFT` / `E-CODEBOOK-MINT-IS-A-CROSS-REPO-ARC`, but **domain-only** so it does not break in isolation.

.claude/board/TECH_DEBT.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,19 @@
1515

1616
## Open Debt
1717

18+
### TD-RUNGLEVEL-DUP — `RungLevel` duplicated verbatim in `thinking-engine` vs the canonical `lance-graph-contract` (2026-07-01)
19+
20+
**Open.** `thinking-engine::cognitive_stack::RungLevel` is a byte-for-byte
21+
duplicate of `lance_graph_contract::cognitive_shader::RungLevel` (0..9:
22+
Surface..Transcendent), and `thinking-engine` does **not** dep
23+
`lance-graph-contract` — so the two can silently drift. Same anti-pattern as
24+
`E-CE64-NAME-COLLISION-DEDUP` (the P0 dedup), but the fix is heavier: it needs
25+
`thinking-engine` to take the zero-dep contract dep and `pub use` the canonical
26+
enum, not a local rename. Canonical = the contract. Surfaced while grounding
27+
`E-RUNG-LADDER-IS-A-DEPENDENCY-STACK` (operator's 1–9 rung-ladder reminder).
28+
Deferred: cross-crate dep addition, out of scope for the convergence-probe
29+
increment. Same class as the resolved `CausalEdge64` shadow.
30+
1831
### TD-ONTOLOGY-LINT — `lance-graph-ontology` pre-existing clippy (12) on toolchain 1.95 (2026-06-18)
1932

2033
`cargo clippy -p lance-graph-ontology -- -D warnings` exits 101 with 12 errors on the pinned 1.95 toolchain — all **pre-existing on `main`** (e.g. `odoo_blueprint/op_emitter.rs:182` is byte-identical on `origin/main`), in `hydrators/owl.rs` (2), `odoo_blueprint/op_emitter.rs` (1), `ttl_parse.rs` (3), + others. Mostly mechanical (`iter_cloned_collect``.to_vec()`, etc.). The crate is not in the CI clippy sweep ("CI tests 4 of ~30 crates"), so the debt accumulated un-gated. Surfaced while wiring `class_id_for_guid` (E-OGAR-ONTOLOGY-WIRED-1; `registry.rs` itself is clippy-clean + fmt-clean). Fix is a focused lint pass, out of scope for the wiring increment. Same class as `TD-CAUSAL-EDGE-LINT`.

crates/lance-graph-osint/Cargo.lock

Lines changed: 67 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/lance-graph-osint/Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,6 @@ default = []
4141
spider-crawl = ["dep:spider", "dep:tokio"]
4242

4343
[dev-dependencies]
44+
# P1 convergence probe: the third distance source (discovery oracle) —
45+
# proves SpoDistances (planner) ≡ MatrixDistance (arm-discovery) on one palette.
46+
lance-graph-arm-discovery = { path = "../lance-graph-arm-discovery" }
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//! Shared test helpers for the P-series convergence probes.
2+
//!
3+
//! Lives in `tests/common/mod.rs` (not `tests/common.rs`) so cargo does not
4+
//! compile it as its own test binary — it is included by each probe via
5+
//! `mod common;`.
6+
7+
/// Deterministic PRNG — SplitMix64. No `rand`, no seed entropy; every probe's
8+
/// index stream is byte-identical on every run and every target.
9+
pub fn splitmix64(state: &mut u64) -> u64 {
10+
*state = state.wrapping_add(0x9E37_79B9_7F4A_7C15);
11+
let mut z = *state;
12+
z = (z ^ (z >> 30)).wrapping_mul(0xBF58_476D_1CE4_E5B9);
13+
z = (z ^ (z >> 27)).wrapping_mul(0x94D0_49BB_1331_11EB);
14+
z ^ (z >> 31)
15+
}

0 commit comments

Comments
 (0)