Skip to content

Commit 9be5335

Browse files
committed
fix(bridges)+docs: clippy-guard the ogar bridge re-export + board hygiene
Follow-up to the cherry-picked #589 beacon (fb0d8c4d), landing two things the 5+3 review surfaced: - P0 (brutally-honest-tester): crates/lance-graph-ogar/src/bridges/mod.rs re-exported the 6 deprecated bridge aliases (Medcare/Odoo/OpenProject/ Redmine/Smb/Woa) WITHOUT #[allow(deprecated)], so cargo clippy -- -D warnings failed there. #589 split lib.rs + the ontology mod.rs + the *_CODEBOOK re-exports but missed this ogar bridges/mod.rs site. Split it the same way: the *Port types + UnifiedBridge stay clean; the deprecated aliases sit under #[allow(deprecated)]. Verified: cargo check -p lance-graph-ogar green, 0 deprecated-alias warnings at mod.rs. #589 itself still ships this gap. - Board hygiene (integration-lead P1, mandatory per CLAUDE.md): plan doc + PR_ARC_INVENTORY + AGENT_LOG + LATEST_STATE prepended for the beacon landing and the 5+3 sprint/review record. Residual lint noise (odoo_blueprint doc_lazy_continuation/iter_cloned_collect + oxrdf::Subject deprecations) is pre-existing TD-ONTOLOGY-LINT in the excluded lance-graph-ontology crate, out of scope. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TzqvDqbFRzyx17EkLKBoZF
1 parent 698d002 commit 9be5335

5 files changed

Lines changed: 184 additions & 6 deletions

File tree

‎.claude/board/AGENT_LOG.md‎

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,35 @@
1+
## 2026-06-22 — 5+3 sprint+review: landed #589 OGAR bridge-deprecation beacon on the dev line + caught & fixed a P0 #589 ships
2+
3+
**Main thread (Opus, autoattended extreme sprint).** Operator goal: "land where
4+
lance-graph #589 is — pull OGAR via class, no bridge." Read OGAR #95 in full via
5+
pygithub/GH_TOKEN (docs-only, merged; `classid = [hi u16 APP/render][lo u16
6+
concept]`, class-pull returns lo, consumer stamps hi). #589 = `main` + 1
7+
deprecation commit; the designated dev branch `claude/pensive-mendel-ou2rj6` was
8+
2-behind/3-ahead of main and lacked the woa/odoo/smb bridge files.
9+
10+
**Sprint:** merged `origin/main` (full 8-bridge set via #585/#586/#587) +
11+
cherry-picked #589's beacon `10e717d4` → `fb0d8c4d` (20 files, +292/-2, clean).
12+
13+
**5+3 review (8 parallel savants, static, no cargo — orchestrator compiled once
14+
per cargo-hygiene):** brutally-honest-tester HOLD→**P0** (`lance-graph-ogar/src/
15+
bridges/mod.rs` re-exported the 6 deprecated aliases WITHOUT `#[allow(deprecated)]`
16+
→ `clippy -D warnings` fail — **#589 itself ships this gap**); preflight-drift
17+
CLEAN (byte-identical to #589); core-first TARGETS-CORE; truth-architect
18+
ACCURATE; iron-rule YIELDS-ALL; integration-lead COHERENT (+board-hygiene P1);
19+
baton-handoff CATCH-LATENT (P1 nits: OgitBridge note example, Spear/SharePoint
20+
ports unowned); dto-soa FITS-COLUMN.
21+
22+
**Fix:** split + `#[allow(deprecated)]`-guarded the `mod.rs` re-export (matches
23+
`lib.rs`). Verified: `cargo check -p lance-graph-ogar` green, **0** deprecated-
24+
alias warnings at `mod.rs` post-fix. Residual lint noise = pre-existing
25+
`TD-ONTOLOGY-LINT` (odoo_blueprint clippy + `oxrdf::Subject`) in the excluded
26+
ontology crate, out of scope.
27+
28+
**Outcome:** IN PR on `claude/pensive-mendel-ou2rj6` (`fb0d8c4d` beacon +
29+
follow-up P0 fix + board hygiene). Strictly better than #589 (carries the P0
30+
fix). Plan `2026-06-22-land-589-bridge-deprecation-beacon-v1.md`; PR_ARC +
31+
LATEST_STATE prepended. Next: push, PR, subscribe, flag the P0 to #589's author.
32+
133
## 2026-06-21 (cont.³⁶) — run-NaN COGNITIVE half PROVEN green (#580 handoff) + fixed the ogar_codebook drift that blocked it
234

335
**Main thread (Opus), cognitive-compilation session.** Picked up the cognitive

‎.claude/board/LATEST_STATE.md‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
1111
---
1212

13+
## 2026-06-22 — IN PR (`claude/pensive-mendel-ou2rj6`): #589 OGAR bridge-deprecation beacon on the dev line + P0 fix
14+
15+
`#[deprecated(note=…)]` on 10 per-tenant bridge symbols (6 `lance_graph_ogar::bridges` aliases + 4 `lance_graph_ontology::bridges` structs) → OGAR `*Port::class_id(name)`; `#![allow(deprecated)]` harness; `lib.rs` + `bridges/mod.rs` re-export split; new `docs/CONSUMER-BRIDGE-DEPRECATION.md`. Lands #589's shape (merge-`origin/main` for the full 8-bridge set via #585/#586/#587, then cherry-pick `fb0d8c4d`) **plus a P0 fix #589 lacks** — `lance-graph-ogar/src/bridges/mod.rs` re-exported the 6 deprecated aliases unguarded → `clippy -D warnings` fail; split + `#[allow(deprecated)]`. OGAR #95 contract (read in full via pygithub/GH_TOKEN; docs-only, merged): `classid = [hi u16 APP/render][lo u16 concept]`, class-pull returns the shared lo u16, consumer stamps hi (`0x0003_0103` WoA). `UnifiedBridge<P>` + `*Port` + `*_CODEBOOK` NOT deprecated. 5+3 parallel savant panel → LAND (tester HOLD→LAND post-fix). cargo check green, 0 deprecated-alias warnings post-fix; pre-existing `TD-ONTOLOGY-LINT` (excluded crate) untouched. Refs: PR_ARC + AGENT_LOG 2026-06-22, plan `2026-06-22-land-589-bridge-deprecation-beacon-v1.md`.
16+
1317
## 2026-06-20 — golden-image (symbiont) harness shipped to `main`; lance-7 lockstep unified end-to-end
1418

1519
`crates/symbiont/` (workspace-`exclude`d) compiles+links the FULL stack into ONE binary — lance-graph + lance7/lancedb0.30 + ndarray + ractor + surrealdb(kv-lance) + OGAR. **Verified green** (real git-deps build, `CARGO_EXIT=0`, 4.3 MB binary runs): unified `lance 7.0.0 / lance-index 7.0.0 / lancedb 0.30.0 / datafusion 53.1.0 / arrow 58` — no lance-6/7 split. It is a **living integration harness** (`Dockerfile` + portable git-deps `Cargo.toml`) that tracks each fork's canonical branch (`master`/`main`), **NOT** a frozen snapshot; every per-session `jirak` branch is stale (HEAD ⊂ main/master, 0 unique commits). **`TD-SURREALDB-KVLANCE-LANCE7` PAID** — surrealdb `main` carries the lance-7 bump. PR #555 adds the 5+3 council `INTEGRATION_PLAN.md` (loose-end ledger → the Spain-grid acceptance gate). **Honest state:** linked into one binary; the *runtime edges* between the five crates are still pending integration (Grid→NodeRow bridge, kanban loop). Battle-test plan (probes A1–E3) queued behind the singleton-BindSpace → SoA switch. Refs: PR_ARC #555, EPIPHANIES `E-GOLDEN-IMAGE-IS-A-LIVING-HARNESS`, AGENT_LOG 2026-06-20.

‎.claude/board/PR_ARC_INVENTORY.md‎

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

38+
## (IN PR, branch `claude/pensive-mendel-ou2rj6`) #589 landed on the dev line — OGAR bridge-deprecation beacon (pull-via-class, no bridge) + P0 fix
39+
40+
**Added:** `#[deprecated(note=…)]` on 10 per-tenant bridge symbols (6
41+
`lance_graph_ogar::bridges` aliases + 4 `lance_graph_ontology::bridges`
42+
structs) pointing at OGAR `*Port::class_id(name)`; `#![allow(deprecated)]` on
43+
the test/conformance harness; `lib.rs` re-export split; new
44+
`docs/CONSUMER-BRIDGE-DEPRECATION.md` (171 L). Lands #589's shape on the
45+
canonical dev line via merge-`origin/main` (full 8-bridge set from #585/#586/
46+
#587) + cherry-pick `fb0d8c4d`.
47+
**Locked:** OGAR #95 contract (read in full via pygithub/GH_TOKEN; docs-only,
48+
merged) — `classid:u32 = [hi u16 APP/render][lo u16 concept]`; class-pull
49+
returns the shared lo u16 (`0x0103`), consumer stamps hi u16 (`0x0003_0103`
50+
WoA). `UnifiedBridge<P>` + `*Port` + `*_CODEBOOK` (#570) NOT deprecated.
51+
**P0 fixed (NOT in #589):** `lance-graph-ogar/src/bridges/mod.rs` re-exported
52+
the 6 deprecated aliases WITHOUT `#[allow(deprecated)]` → `clippy -D warnings`
53+
fail. Split + guarded (matches `lib.rs`). **#589 still ships this gap.**
54+
**Deferred:** RBAC `authorize(actor,classid,op)` keystone (gated on
55+
PROBE-OGAR-RBAC-AUTHORIZE); SpearPort/SharePointPort authoring (unowned);
56+
terminal `bridges/` deletion (gated on MedCare-rs 33 / woa-rs 6 / smb-office-rs
57+
4 consumer migrations). Pre-existing `TD-ONTOLOGY-LINT` (odoo_blueprint clippy
58+
debt, excluded crate) untouched — out of scope.
59+
**Docs:** `docs/CONSUMER-BRIDGE-DEPRECATION.md`; plan
60+
`.claude/plans/2026-06-22-land-589-bridge-deprecation-beacon-v1.md`.
61+
**Review:** 5+3 parallel savant panel → LAND (drift CLEAN · core TARGETS-CORE
62+
· truth ACCURATE · iron YIELDS-ALL · integration COHERENT · baton CATCH-LATENT
63+
· dto FITS-COLUMN · tester HOLD→LAND post-P0-fix).
64+
**Confidence (2026-06-22):** IN PR; cargo check green, deprecated re-export
65+
warning cleared post-fix.
66+
3867
## (IN PR, branch `claude/edge-distance-basin-node-epiphany`) basin-IS-a-node — members/memberof navigation + GUID self-routing + field-perturbation probe
3968

4069
**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.
Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
# Land #589 — OGAR bridge-deprecation beacon (pull-via-class, no bridge)
2+
3+
> **Status:** IN PR (branch `claude/pensive-mendel-ou2rj6`). 5+3 sprint + 5+3
4+
> review complete; P0 fixed; clippy gate re-run. Supersedes open PR #589 by
5+
> landing its shape on the canonical dev line **plus** a P0 fix #589 ships.
6+
> **Date:** 2026-06-22.
7+
8+
## Overview / goal
9+
10+
Operator goal: *"land where open PR #589 is, without bridge, only pulling OGAR
11+
via class."* #589 is the lance-graph spine **deprecation beacon** that points
12+
consumers from per-tenant bridge OBJECTS to OGAR **class-pull**:
13+
14+
```rust
15+
// BEFORE (bridge object): lance_graph_ogar::bridges::WoaBridge::new(reg)?.entity("Stundenzettel")?
16+
// AFTER (class pull): ogar_vocab::ports::WoaPort::class_id("Stundenzettel") == Some(0x0103)
17+
```
18+
19+
### The OGAR #95 contract this serves (read in full via pygithub/GH_TOKEN)
20+
21+
OGAR PR #95 (`docs(OGAR): APP‖class codebook layout`, merged, **docs-only,
22+
1136 LOC, nothing minted**): `classid: u32 = [hi u16 = APP / render prefix]
23+
[lo u16 = shared canonical concept]`.
24+
25+
- `*Port::class_id(name)` returns the **lo u16** concept (`0x0103`), shared
26+
across apps (RBAC grant + ontology + cross-app identity).
27+
- The consumer stamps its **hi u16** app prefix for the render id:
28+
`0x0003 (WoA) << 16 | 0x0103 = 0x0003_0103`. App prefixes: `0x0001`
29+
OpenProject · `0x0002` Odoo · `0x0003` WoA · `0x0004` SMB · `0x0005`
30+
Medcare · `0x0007` Redmine.
31+
- Additive (every shipped id is `0x0000_DDCC`) → zero `ENVELOPE_LAYOUT_VERSION`
32+
cost, RESERVE-DON'T-RECLAIM holds. The hi u16 was reserved-zero, NOT SoA
33+
versioning.
34+
- The `lance-graph-rbac` `authorize(actor, classid, op)` keystone does **not**
35+
exist yet (gated on `PROBE-OGAR-RBAC-AUTHORIZE`). Consumers migrate the
36+
classid pull only; do NOT re-introduce a bridge as an auth stopgap.
37+
38+
## What landed
39+
40+
`fb0d8c4d` (cherry-pick of #589's commit `10e717d4`, after merging `origin/main`
41+
to bring the full 8-bridge set via #585/#586/#587) + a follow-up commit:
42+
43+
- 10 bridge symbols `#[deprecated(note=…)]` (6 `lance_graph_ogar::bridges`
44+
aliases + 4 `lance_graph_ontology::bridges` structs), each note naming the
45+
correct `*Port::class_id` replacement.
46+
- `#![allow(deprecated)]` on the test/conformance harness files.
47+
- `lib.rs` re-export split (deprecated aliases under `#[allow(deprecated)]`).
48+
- New `docs/CONSUMER-BRIDGE-DEPRECATION.md` (171 lines).
49+
- **P0 fix (this session, not in #589):** `lance-graph-ogar/src/bridges/mod.rs`
50+
re-exported the 6 deprecated aliases WITHOUT `#[allow(deprecated)]` — would
51+
fail `cargo clippy -- -D warnings`. Split the re-export the same way as
52+
`lib.rs`. **#589 itself still ships this gap.**
53+
54+
`UnifiedBridge<P>`, the `*Port` types, and the `*_CODEBOOK` constants (already
55+
deprecated in #570) are correctly NOT re-deprecated.
56+
57+
## 5+3 review (parallel savants, static, no cargo — orchestrator compiled once)
58+
59+
| Lens | Verdict |
60+
|---|---|
61+
| brutally-honest-tester | HOLD → **P0** (mod.rs re-export); **fixed** → LAND |
62+
| preflight-drift-auditor | CLEAN (byte-identical to #589, no conflict markers) |
63+
| core-first-architect | TARGETS-CORE (sheds bridge residue, keeps harness+Ports) |
64+
| truth-architect | ACCURATE (doc matches OGAR #95; RBAC gap honestly flagged) |
65+
| iron-rule-savant | YIELDS-ALL (I-LEGACY-API-FEATURE-GATED yields; nothing reclaimed) |
66+
| integration-lead | COHERENT (+ board-hygiene P1 → this doc + board entries) |
67+
| baton-handoff-auditor | CATCH-LATENT (no P0; P1 nits: OgitBridge note example; Spear/SharePoint ports unowned) |
68+
| dto-soa-savant | FITS-COLUMN (hi/lo split = codebook prefix on existing classid column) |
69+
70+
## Checklist
71+
72+
- [x] Merge `origin/main` into pensive-mendel (full 8-bridge set)
73+
- [x] Cherry-pick #589 beacon (`fb0d8c4d`)
74+
- [x] Central `cargo check` of touched crates (exit 0)
75+
- [x] 5+3 parallel review panel
76+
- [x] Fix P0 (`bridges/mod.rs` re-export `#[allow(deprecated)]`)
77+
- [x] Re-run `cargo clippy -- -D warnings` on `lance-graph-ogar`
78+
- [x] Board hygiene (this plan + PR_ARC + LATEST_STATE + AGENT_LOG)
79+
- [ ] Push pensive-mendel, open PR, subscribe to PR activity
80+
- [ ] Note the P0 to #589 (the canonical open PR still ships it)
81+
82+
## Deferred (named, non-blocking)
83+
84+
- P1 (baton): `OgitBridge` deprecation note names `WoaPort` as the example but
85+
the struct is namespace-agnostic — left verbatim to match #589; flagged for
86+
#589's author.
87+
- P1 (baton): `SpearBridge`/`SharePointBridge` deprecate to ports that don't
88+
exist yet — honest gap, documented in the beacon doc; no owner assigned.
89+
- The terminal `bridges/` deletion PR is gated on the three remaining consumer
90+
migrations (MedCare-rs 33, woa-rs 6, smb-office-rs 4) — future work, no
91+
removal window.

‎crates/lance-graph-ogar/src/bridges/mod.rs‎

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,35 @@ mod redmine_bridge;
6363
mod smb_bridge;
6464
mod woa_bridge;
6565

66-
pub use medcare_bridge::{HealthcarePort, MedcareBridge};
67-
pub use odoo_bridge::{OdooBridge, OdooPort};
68-
pub use openproject_bridge::{OpenProjectBridge, OpenProjectPort};
69-
pub use redmine_bridge::{RedmineBridge, RedminePort};
70-
pub use smb_bridge::{SmbBridge, SmbPort};
66+
// Canonical (non-deprecated) surface: the `*Port` types + the
67+
// `UnifiedBridge` harness.
68+
pub use medcare_bridge::HealthcarePort;
69+
pub use odoo_bridge::OdooPort;
70+
pub use openproject_bridge::OpenProjectPort;
71+
pub use redmine_bridge::RedminePort;
72+
pub use smb_bridge::SmbPort;
7173
pub use unified::UnifiedBridge;
72-
pub use woa_bridge::{WoaBridge, WoaPort};
74+
pub use woa_bridge::WoaPort;
75+
76+
// The per-port bridge aliases are `#[deprecated]` (2026-06-22) — pull the
77+
// classid via the corresponding `*Port::class_id(name)` instead. This
78+
// re-export site carries `#[allow(deprecated)]` so the spine stays
79+
// `cargo clippy -- -D warnings`-clean; downstream consumers still receive
80+
// the deprecation lint at the use site. The companion `lib.rs` crate-root
81+
// re-export is split the same way. See `docs/CONSUMER-BRIDGE-DEPRECATION.md`
82+
// + AdaWorldAPI/OGAR#95.
83+
#[allow(deprecated)]
84+
pub use medcare_bridge::MedcareBridge;
85+
#[allow(deprecated)]
86+
pub use odoo_bridge::OdooBridge;
87+
#[allow(deprecated)]
88+
pub use openproject_bridge::OpenProjectBridge;
89+
#[allow(deprecated)]
90+
pub use redmine_bridge::RedmineBridge;
91+
#[allow(deprecated)]
92+
pub use smb_bridge::SmbBridge;
93+
#[allow(deprecated)]
94+
pub use woa_bridge::WoaBridge;
7395

7496
// Compatibility shims for the pre-migration constants. `bridges`
7597
// previously re-exported `OPENPROJECT_CODEBOOK` / `REDMINE_CODEBOOK`

0 commit comments

Comments
 (0)