From 21f271ac1bbca3357acfbb2995864e1ca1f40db6 Mon Sep 17 00:00:00 2001 From: AdaWorldAPI Date: Sun, 21 Jun 2026 21:38:15 +0200 Subject: [PATCH] docs: point bridge references at lance-graph-ogar after #585 OGIT/OGAR split MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit lance-graph #585 moved the OGAR-driven port bridges (UnifiedBridge harness + OpenProject/Redmine/Medcare bridges) from lance-graph-ontology (OGIT) to lance-graph-ogar (OGAR). Two OGAR-side docs still pointed at the old home: 1. ogar-vocab::ports rustdoc (live docs.rs surface) — 4 references to `lance_graph_ontology::{UnifiedBridge, bridges::OPENPROJECT_CODEBOOK}` and `lance_graph_ontology`'s `MedcareBridge` repointed to `lance_graph_ogar`. (Also dropped one square-bracket intra-doc link to a lance-graph path that ogar-vocab can't resolve — now a plain code span.) 2. CLASSVIEW-MATERIALIZATION-PLAN.md — §0 dataflow picture pointed the bridge box at [lance-graph-ontology]; §3 C4/C5 rows listed the bridges landing in openproject-nexgen-rs / redmine-rs 'sibling of MedcareBridge'. Added a 'how C4+C5 actually landed' note recording the real path: planned in the port repos -> converged on UnifiedBridge type aliases (ports in ogar-vocab::ports, lance-graph #570) -> first in lance-graph-ontology (#558/#559) -> moved to lance-graph-ogar (#585) to keep OGIT free of ogar-vocab. Docs-only. `cargo check -p ogar-vocab` clean. --- crates/ogar-vocab/src/ports.rs | 10 +++---- .../CLASSVIEW-MATERIALIZATION-PLAN.md | 26 ++++++++++++++----- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/crates/ogar-vocab/src/ports.rs b/crates/ogar-vocab/src/ports.rs index 38dc0a9..46b780e 100644 --- a/crates/ogar-vocab/src/ports.rs +++ b/crates/ogar-vocab/src/ports.rs @@ -1,6 +1,6 @@ //! Port specifications — `(namespace, bridge_id, public_name → class_id)` -//! triples consumed by `lance_graph_ontology::UnifiedBridge` to project -//! per-port public name vocabularies onto the shared OGAR codebook. +//! triples consumed by `lance_graph_ogar::bridges::UnifiedBridge` to +//! project per-port public name vocabularies onto the shared OGAR codebook. //! //! # The goal — one bridge harness, port-specific data //! @@ -12,7 +12,7 @@ //! NamespaceBridge impl AND duplicating its alias table. //! //! [`PortSpec`] flips that: the bridge becomes one generic -//! [`lance_graph_ontology::UnifiedBridge`] harness, and +//! `lance_graph_ogar::bridges::UnifiedBridge` harness, and //! the per-port differences (namespace, bridge_id, alias table) live //! here as data attached to the canonical class schema. Adding a port //! is now one `impl PortSpec for FooPort {...}` block with three @@ -91,7 +91,7 @@ impl PortSpec for OpenProjectPort { /// The OpenProject port's `(public_name, class_id)` alias slice, /// exposed for downstream `pub const` re-exports -/// (e.g. `lance_graph_ontology::bridges::OPENPROJECT_CODEBOOK` keeps +/// (e.g. `lance_graph_ogar::bridges::OPENPROJECT_CODEBOOK` keeps /// its pre-migration shape by aliasing this slice). Prefer /// [`OpenProjectPort::aliases`] in new code — going through the /// `PortSpec` impl works generically across ports. @@ -206,7 +206,7 @@ pub const REDMINE_ALIASES: &[(&str, u16)] = &[ /// Unlike [`OpenProjectPort`] / [`RedminePort`] — which converge two /// project-management forks on a shared codebook — Healthcare is a /// single-tenant namespace today, so there is no cross-port convergence -/// pin yet. The port exists so `lance_graph_ontology`'s `MedcareBridge` +/// pin yet. The port exists so `lance_graph_ogar`'s `MedcareBridge` /// collapses to `UnifiedBridge`: the namespace, /// bridge_id, and alias table are now **inherited from this canonical /// class schema** instead of being re-declared per bridge in lance-graph. diff --git a/docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md b/docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md index 95e9f39..997b865 100644 --- a/docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md +++ b/docs/integration/CLASSVIEW-MATERIALIZATION-PLAN.md @@ -152,7 +152,7 @@ epiphany #4). public name "WorkPackage" │ ▼ - NamespaceBridge.entity("WorkPackage") [lance-graph-ontology] + UnifiedBridge.entity("WorkPackage") [lance-graph-ogar] │ ▼ UnifiedBridge.authorize_read(...) [lance-graph-callcenter] @@ -215,11 +215,25 @@ of the first emitted concept). | C1 | `op-codegen-projection` adopts `ogar-render-askama` for paths currently using `format!` | `openproject-nexgen-rs` | | C2 | `redmine-canon` re-exports `OgarClassView` (symmetric with the existing `class_ids` re-export) | `redmine-rs` | | C3 | `op-surreal-ast::from_class_view` adapter — feeds the canonical shape into the byte-identical-pinned typed AST | `openproject-nexgen-rs` | -| C4 | `OpenProjectBridge: impl NamespaceBridge` — `g_lock` to "OpenProject" namespace, public-name dictionary populated from `op-canon` snapshot. `entity_type_id()` returns OGAR codebook ids. | `openproject-nexgen-rs` (sibling of `MedcareBridge`) | -| C5 | `RedmineBridge: impl NamespaceBridge` — symmetric, "Redmine" namespace, same codebook ids. | `redmine-rs` | - -After C4 + C5: a consumer holding `UnifiedBridge` AND -`UnifiedBridge` resolves `"WorkPackage"` OR `"Issue"` +| C4 | `OpenProjectBridge: impl NamespaceBridge` — `g_lock` to "OpenProject" namespace, `entity_type_id()` returns OGAR codebook ids. | `lance-graph-ogar` (sibling of `MedcareBridge`) | +| C5 | `RedmineBridge: impl NamespaceBridge` — symmetric, "Redmine" namespace, same codebook ids. | `lance-graph-ogar` | + +**How C4 + C5 actually landed (location corrected post-merge).** The +original plan listed C4 in `openproject-nexgen-rs` and C5 in `redmine-rs`, +"sibling of `MedcareBridge`." During implementation the bridges converged +on a single generic harness instead of two cloned structs: +`OpenProjectBridge` / `RedmineBridge` are now **type aliases over +`UnifiedBridge`**, where `OpenProjectPort` / `RedminePort` +(the per-port `NAMESPACE` / `BRIDGE_ID` / alias table) live in +`ogar-vocab::ports` (lance-graph PR #570). The bridges first landed in +`lance-graph-ontology` (#558/#559), then **moved to `lance-graph-ogar` +by #585** to restore the OGIT/OGAR separation of concerns — OGIT +(`lance-graph-ontology`) must not depend on `ogar-vocab`. The codebook +itself (the `(public_name → class_id)` data) stays in `ogar-vocab`; only +the bridge *harness* lives in `lance-graph-ogar`. + +After C4 + C5: a consumer holding `UnifiedBridge` AND +`UnifiedBridge` resolves `"WorkPackage"` OR `"Issue"` through the policy-evaluated, audit-chained path → gets an `EntityRef` whose `class_id` routes to the *same* `OgarClassView` arm.