Skip to content

Commit ebeacde

Browse files
authored
Merge pull request #593 from AdaWorldAPI/claude/board-592-merged
docs(board): record #592 merged — PR_ARC entry + LATEST_STATE status flip
2 parents 48794ea + 3e2b33d commit ebeacde

2 files changed

Lines changed: 20 additions & 2 deletions

File tree

.claude/board/LATEST_STATE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@
1010
1111
---
1212

13-
## 2026-06-22 — IN PR (`claude/contract-app-prefix-mirror`) — `contract::ogar_codebook` APP-prefix (hi-u16) mirror — closes `ISS-CONTRACT-APP-PREFIX-MIRROR`
13+
## 2026-06-22 — MERGED #592 (merge `48794eaf`, `claude/contract-app-prefix-mirror`) — `contract::ogar_codebook` APP-prefix (hi-u16) mirror — closes `ISS-CONTRACT-APP-PREFIX-MIRROR`
1414

15-
Membrane consumers can now pull BOTH halves of a render `classid` BBB-safely from `lance_graph_contract::ogar_codebook` — no hand-stamped `0x000N`. **NEW:** `AppPrefix` enum (the OGAR#95 §2 allocation table as typed data — `Core 0x0000` / OpenProject `0x0001` / Odoo `0x0002` / WoA `0x0003` / SMB `0x0004` / Healthcare `0x0005` / Redmine `0x0007`) with `prefix()` / `from_prefix()` / `render(concept)`; free fns `render_classid(prefix, concept)`, `render_classid_for_concept(AppPrefix, &str)`, `classid_app_prefix(classid)`, `classid_concept(classid)` — the wire-compat mirror of OGAR#97 `ogar_vocab::app` (`render_classid_for::<P>` / `app_of` / `concept_of`), **no `ogar-vocab` dependency**. Two parity tests: `app_prefixes_match_ogar_allocation_table` (pins the 6 prefixes vs OGAR `PortSpec::APP_PREFIX`) + `render_classid_composes_decomposes_and_preserves_the_concept_half` (pins the `0x0005_0901` MedCare-patient worked example, and that the render lens never perturbs the lo-u16 concept RBAC keys on). Follows the OGAR#98 `canonical_concept_name` mirror precedent. Closes the gap the #591 consumer spellbook surfaced. Contract lib **+2 tests** / +1 doctest; `cargo fmt -p lance-graph-contract --check` clean; `clippy -p lance-graph-contract --all-targets -D warnings` clean (also `--features guid-v2-tail`). (Incidental: the crate-wide `cargo fmt` pass also corrected pre-existing struct-literal/line-width drift in `content_store.rs` — same crate, no behavior change.) Refs: PR (this branch), ISSUES `ISS-CONTRACT-APP-PREFIX-MIRROR` (RESOLVED), `.claude/knowledge/ogar-consumer-preflight.md` § Core-gap (CLOSED), OGAR#97/#98.
15+
Membrane consumers can now pull BOTH halves of a render `classid` BBB-safely from `lance_graph_contract::ogar_codebook` — no hand-stamped `0x000N`. **NEW:** `AppPrefix` enum (the OGAR#95 §2 allocation table as typed data — `Core 0x0000` / OpenProject `0x0001` / Odoo `0x0002` / WoA `0x0003` / SMB `0x0004` / Healthcare `0x0005` / Redmine `0x0007`) with `prefix()` / `from_prefix()` / `render(concept)`; free fns `render_classid(prefix, concept)`, `render_classid_for_concept(AppPrefix, &str)`, `classid_app_prefix(classid)`, `classid_concept(classid)` — the wire-compat mirror of OGAR#97 `ogar_vocab::app` (`render_classid_for::<P>` / `app_of` / `concept_of`), **no `ogar-vocab` dependency**. Two parity tests: `app_prefixes_match_ogar_allocation_table` (pins the 6 prefixes vs OGAR `PortSpec::APP_PREFIX`) + `render_classid_composes_decomposes_and_preserves_the_concept_half` (pins the `0x0005_0901` MedCare-patient worked example, and that the render lens never perturbs the lo-u16 concept RBAC keys on). Follows the OGAR#98 `canonical_concept_name` mirror precedent. Closes the gap the #591 consumer spellbook surfaced. Contract lib **+2 tests** / +1 doctest; `cargo fmt -p lance-graph-contract --check` clean; `clippy -p lance-graph-contract --all-targets -D warnings` clean (also `--features guid-v2-tail`). (Incidental: the crate-wide `cargo fmt` pass also corrected pre-existing struct-literal/line-width drift in `content_store.rs` — same crate, no behavior change.) Refs: PR #592 (merged `48794eaf`), ISSUES `ISS-CONTRACT-APP-PREFIX-MIRROR` (RESOLVED), `.claude/knowledge/ogar-consumer-preflight.md` § Core-gap (CLOSED), OGAR#97/#98.
1616

1717
---
1818

.claude/board/PR_ARC_INVENTORY.md

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,24 @@
3535
3636
---
3737

38+
## #592 lance-graph: `contract::ogar_codebook` APP-prefix (hi-u16) mirror — closes ISS-CONTRACT-APP-PREFIX-MIRROR
39+
40+
**Status:** MERGED 2026-06-22 (merge commit `48794eaf`), branch `claude/contract-app-prefix-mirror`. Closes the Core gap the #591 consumer spellbook surfaced: `contract::ogar_codebook` mirrored the lo-u16 concept pull but not OGAR#97's hi-u16 render composition, so membrane consumers had to hand-stamp `0x000N`.
41+
42+
**Added (`lance-graph-contract::ogar_codebook`, wire-compat mirror of OGAR `ogar_vocab::app`, no `ogar-vocab` dep):** `AppPrefix` enum (the OGAR#95 §2 allocation table as typed data — `Core 0x0000` / OpenProject `0x0001` / Odoo `0x0002` / WoA `0x0003` / SMB `0x0004` / Healthcare `0x0005` / Redmine `0x0007`) with `prefix()` / `from_prefix()` / `render(concept)`; free fns `render_classid(prefix, concept)` (mirror of `app::render_classid`), `render_classid_for_concept(AppPrefix, &str)` (one-call membrane helper), `classid_app_prefix(classid)` (`app::app_of`), `classid_concept(classid)` (`app::concept_of`). Re-exported at crate root. 2 parity tests + 1 doctest.
43+
44+
**Locked:** the membrane consumer pulls BOTH halves of a render classid BBB-safely from one zero-dep source — `render_classid_for_concept(AppPrefix::Healthcare, "patient") == Some(0x0005_0901)` — never hand-stamping `0x000N`, never copying OGAR's table; the hi-u16 render lens never perturbs the lo-u16 concept (RBAC/ontology key on the low half). The contract is the **wire-compat mirror** (parity-test drift-guarded), NOT a dependency on `ogar-vocab` — same pattern as the lo-u16 `CODEBOOK` (#563). Follows the OGAR#98 `canonical_concept_name`-mirror precedent.
45+
46+
**Deferred (OGAR-side, other session):** the spine-vs-membrane import-path distinction in OGAR#100's best-practices §2 Pattern 1 (the BBB-barrier case — membrane uses `contract::ogar_codebook`, spine uses `ogar_vocab` / `*Port`). This PR is the contract half; the OGAR-doc half is theirs.
47+
48+
**Docs/board:** `ISSUES.md` ISS-CONTRACT-APP-PREFIX-MIRROR → RESOLVED; `.claude/knowledge/ogar-consumer-preflight.md` Core-gap → CLOSED + remediation step 3 cites the new helper; LATEST_STATE inventory entry. Incidental: crate-wide `cargo fmt` corrected pre-existing `content_store.rs` struct-literal drift (no behavior change).
49+
50+
**Confidence (2026-06-22):** HIGH — `cargo test -p lance-graph-contract` green, `clippy -p lance-graph-contract --all-targets -D warnings` clean (default + `guid-v2-tail`), fmt clean; CodeRabbit 5/5 pre-merge checks, no actionable comments. Consumed by the medcare-rs consumer spellbook (`MedCare-rs` `claude/pensive-mendel-ou2rj6`, commit `1e1652d`).
51+
52+
**Cross-ref:** ISSUES `ISS-CONTRACT-APP-PREFIX-MIRROR` (RESOLVED); knowledge `ogar-consumer-preflight.md`; PR #591 (the spellbook that surfaced the gap) + #563 (the lo-u16 base this extends); OGAR#95/#97/#98/#100.
53+
54+
---
55+
3856
## (IN PR, branch `claude/edge-distance-basin-node-epiphany`) basin-IS-a-node — members/memberof navigation + GUID self-routing + field-perturbation probe
3957

4058
**Added (lance-graph core):** `graph::mailbox_scan::{members, memberof, BasinOf}` — the one-to-many / many-to-one basin-node navigation realizing `E-BASIN-IS-A-NODE` as **virtual tree navigation over the flat MailboxSoA** (no ownership change, no SoA restructure, zero-copy invariant untouched). All pure key arithmetic, **zero value decode**: `members(basin)` = direct children one HHTL tier down (`is_ancestor_of` + depth); `memberof(node) -> BasinOf::{Local(row), Route(NiblePath)}` = parent via `NiblePath::parent`, returning a **route** (the HHTL prefix = shard key) when the parent is non-local, `None` only at the top tier. Inverses. 5 new tests, 16/16 mailbox_scan green, clippy clean.

0 commit comments

Comments
 (0)