Skip to content

Commit fdbe09d

Browse files
authored
Merge pull request #589 from AdaWorldAPI/claude/medcare-bridge-lance-graph-wmx76z
docs+deprecate(bridges): preemptive landing shape for OGAR consumer migration
2 parents f56caf3 + 10e717d commit fdbe09d

20 files changed

Lines changed: 292 additions & 2 deletions

crates/lance-graph-consumer-conformance/src/lib.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
// Exercises the deprecated `MedcareBridge` / `OgitBridge` / `WoaBridge`
2+
// symbols on purpose — this harness IS the conformance gate for them.
3+
// See `docs/CONSUMER-BRIDGE-DEPRECATION.md`.
4+
#![allow(deprecated)]
5+
16
//! `lance-graph-consumer-conformance` — cross-crate registry conformance harness.
27
//!
38
//! This crate is the CI gate that prevents a consumer crate from shipping a

crates/lance-graph-ogar/src/bridges/medcare_bridge.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,13 @@ use ogar_vocab::ports::PortSpec;
3333

3434
/// MedCare `NamespaceBridge` — alias over the generic harness, locked to
3535
/// the `Healthcare` namespace via [`HealthcarePort`].
36+
///
37+
/// **Deprecated:** pull the classid via the OGAR PortSpec instead —
38+
/// `ogar_vocab::ports::HealthcarePort::class_id(name)`. See
39+
/// `docs/CONSUMER-BRIDGE-DEPRECATION.md` + AdaWorldAPI/OGAR#95.
40+
#[deprecated(
41+
note = "pull the classid via `HealthcarePort::class_id(name)` — see AdaWorldAPI/OGAR#95 + docs/CONSUMER-BRIDGE-DEPRECATION.md"
42+
)]
3643
pub type MedcareBridge = UnifiedBridge<HealthcarePort>;
3744

3845
/// Canonical namespace name for MedCare / Healthcare. Mirrors
@@ -41,6 +48,7 @@ pub type MedcareBridge = UnifiedBridge<HealthcarePort>;
4148
pub const NAMESPACE: &str = HealthcarePort::NAMESPACE;
4249

4350
#[cfg(test)]
51+
#[allow(deprecated)] // exercises the deprecated bridge alias on purpose
4452
mod tests {
4553
//! Co-located unit tests for the migrated alias — constructor
4654
//! success/failure, contract methods, codebook resolution, fallback

crates/lance-graph-ogar/src/bridges/odoo_bridge.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,20 @@ use ogar_vocab::ports::PortSpec;
2525

2626
/// Odoo `NamespaceBridge` — alias over the generic harness, locked to
2727
/// the `Odoo` namespace via [`OdooPort`].
28+
///
29+
/// **Deprecated:** pull the classid via the OGAR PortSpec instead —
30+
/// `ogar_vocab::ports::OdooPort::class_id(name)`. See
31+
/// `docs/CONSUMER-BRIDGE-DEPRECATION.md` + AdaWorldAPI/OGAR#95.
32+
#[deprecated(
33+
note = "pull the classid via `OdooPort::class_id(name)` — see AdaWorldAPI/OGAR#95 + docs/CONSUMER-BRIDGE-DEPRECATION.md"
34+
)]
2835
pub type OdooBridge = UnifiedBridge<OdooPort>;
2936

3037
/// Canonical namespace name for Odoo. Mirrors `OdooPort::NAMESPACE`.
3138
pub const NAMESPACE: &str = OdooPort::NAMESPACE;
3239

3340
#[cfg(test)]
41+
#[allow(deprecated)] // exercises the deprecated bridge alias on purpose
3442
mod tests {
3543
use super::*;
3644
use lance_graph_ontology::bridge::{BridgeError, NamespaceBridge};

crates/lance-graph-ogar/src/bridges/openproject_bridge.rs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ pub use ogar_vocab::ports::OpenProjectPort;
2222
use ogar_vocab::ports::PortSpec;
2323

2424
/// OpenProject `NamespaceBridge` — alias over the generic harness.
25+
///
26+
/// **Deprecated:** pull the classid via the OGAR PortSpec instead —
27+
/// `ogar_vocab::ports::OpenProjectPort::class_id(name)`. The bridge will
28+
/// be removed once all consumers migrate. See
29+
/// `docs/CONSUMER-BRIDGE-DEPRECATION.md` + AdaWorldAPI/OGAR#95.
30+
#[deprecated(
31+
note = "pull the classid via `OpenProjectPort::class_id(name)` — see AdaWorldAPI/OGAR#95 + docs/CONSUMER-BRIDGE-DEPRECATION.md"
32+
)]
2533
pub type OpenProjectBridge = UnifiedBridge<OpenProjectPort>;
2634

2735
/// Canonical namespace name for OpenProject. Mirrors
@@ -41,6 +49,7 @@ pub const NAMESPACE: &str = OpenProjectPort::NAMESPACE;
4149
pub const OPENPROJECT_CODEBOOK: &[(&str, u16)] = ogar_vocab::ports::OPENPROJECT_ALIASES;
4250

4351
#[cfg(test)]
52+
#[allow(deprecated)] // exercises the deprecated bridge alias on purpose
4453
mod tests {
4554
//! Co-located unit tests retained from the pre-migration shape —
4655
//! constructor success/failure, contract methods, codebook

crates/lance-graph-ogar/src/bridges/redmine_bridge.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,13 @@ use ogar_vocab::ports::PortSpec;
1717
pub use ogar_vocab::ports::RedminePort;
1818

1919
/// Redmine `NamespaceBridge` — alias over the generic harness.
20+
///
21+
/// **Deprecated:** pull the classid via the OGAR PortSpec instead —
22+
/// `ogar_vocab::ports::RedminePort::class_id(name)`. See
23+
/// `docs/CONSUMER-BRIDGE-DEPRECATION.md` + AdaWorldAPI/OGAR#95.
24+
#[deprecated(
25+
note = "pull the classid via `RedminePort::class_id(name)` — see AdaWorldAPI/OGAR#95 + docs/CONSUMER-BRIDGE-DEPRECATION.md"
26+
)]
2027
pub type RedmineBridge = UnifiedBridge<RedminePort>;
2128

2229
/// Canonical namespace name for Redmine. Mirrors `RedminePort::NAMESPACE`
@@ -33,6 +40,7 @@ pub const NAMESPACE: &str = RedminePort::NAMESPACE;
3340
pub const REDMINE_CODEBOOK: &[(&str, u16)] = ogar_vocab::ports::REDMINE_ALIASES;
3441

3542
#[cfg(test)]
43+
#[allow(deprecated)] // exercises the deprecated bridge alias on purpose
3644
mod tests {
3745
use super::*;
3846
use lance_graph_ontology::bridge::{BridgeError, NamespaceBridge};

crates/lance-graph-ogar/src/bridges/smb_bridge.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,20 @@ pub use ogar_vocab::ports::SmbPort;
2424

2525
/// SMB `NamespaceBridge` — alias over the generic harness, locked to
2626
/// the `SMB` namespace via [`SmbPort`].
27+
///
28+
/// **Deprecated:** pull the classid via the OGAR PortSpec instead —
29+
/// `ogar_vocab::ports::SmbPort::class_id(name)`. See
30+
/// `docs/CONSUMER-BRIDGE-DEPRECATION.md` + AdaWorldAPI/OGAR#95.
31+
#[deprecated(
32+
note = "pull the classid via `SmbPort::class_id(name)` — see AdaWorldAPI/OGAR#95 + docs/CONSUMER-BRIDGE-DEPRECATION.md"
33+
)]
2734
pub type SmbBridge = UnifiedBridge<SmbPort>;
2835

2936
/// Canonical namespace name for SMB. Mirrors `SmbPort::NAMESPACE`.
3037
pub const NAMESPACE: &str = SmbPort::NAMESPACE;
3138

3239
#[cfg(test)]
40+
#[allow(deprecated)] // exercises the deprecated bridge alias on purpose
3341
mod tests {
3442
use super::*;
3543
use lance_graph_ontology::bridge::{BridgeError, NamespaceBridge};

crates/lance-graph-ogar/src/bridges/woa_bridge.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,20 @@ pub use ogar_vocab::ports::WoaPort;
3131

3232
/// WoA `NamespaceBridge` — alias over the generic harness, locked to
3333
/// the `WorkOrder` namespace via [`WoaPort`].
34+
///
35+
/// **Deprecated:** pull the classid via the OGAR PortSpec instead —
36+
/// `ogar_vocab::ports::WoaPort::class_id(name)`. See
37+
/// `docs/CONSUMER-BRIDGE-DEPRECATION.md` + AdaWorldAPI/OGAR#95.
38+
#[deprecated(
39+
note = "pull the classid via `WoaPort::class_id(name)` — see AdaWorldAPI/OGAR#95 + docs/CONSUMER-BRIDGE-DEPRECATION.md"
40+
)]
3441
pub type WoaBridge = UnifiedBridge<WoaPort>;
3542

3643
/// Canonical namespace name for WoA. Mirrors `WoaPort::NAMESPACE`.
3744
pub const NAMESPACE: &str = WoaPort::NAMESPACE;
3845

3946
#[cfg(test)]
47+
#[allow(deprecated)] // exercises the deprecated bridge alias on purpose
4048
mod tests {
4149
use super::*;
4250
use lance_graph_ontology::bridge::{BridgeError, NamespaceBridge};

crates/lance-graph-ogar/src/lib.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,18 @@ pub use ogar_vocab::Class;
8282
// which is OGIT and must not depend on ogar-vocab) ──
8383
pub mod bridges;
8484

85+
// Per-port bridge aliases (`MedcareBridge` / `OpenProjectBridge` /
86+
// `RedmineBridge` / `OdooBridge` / `SmbBridge` / `WoaBridge`) are
87+
// `#[deprecated]` (2026-06-22) — pull the classid via the corresponding
88+
// PortSpec instead. The `Port` types and `UnifiedBridge` harness are
89+
// NOT deprecated. See `docs/CONSUMER-BRIDGE-DEPRECATION.md` +
90+
// AdaWorldAPI/OGAR#95.
8591
pub use bridges::{
86-
HealthcarePort, MedcareBridge, OpenProjectBridge, OpenProjectPort, RedmineBridge, RedminePort,
87-
UnifiedBridge,
92+
HealthcarePort, OdooPort, OpenProjectPort, RedminePort, SmbPort, UnifiedBridge, WoaPort,
93+
};
94+
#[allow(deprecated)]
95+
pub use bridges::{
96+
MedcareBridge, OdooBridge, OpenProjectBridge, RedmineBridge, SmbBridge, WoaBridge,
8897
};
8998

9099
/// Codebook parity-guard — the drift fuse between OGAR's authoritative codebook

crates/lance-graph-ogar/tests/bridge_codebook_convergence.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
// Skip under Miri — TTL fixtures use `tempfile::tempdir()` +
22
// `std::fs::create_dir_all/write`, both blocked by Miri's isolation.
33
#![cfg(not(miri))]
4+
// Exercises the deprecated `OpenProjectBridge` / `RedmineBridge` aliases on
5+
// purpose — the convergence pin is what we're testing. See
6+
// `docs/CONSUMER-BRIDGE-DEPRECATION.md`.
7+
#![allow(deprecated)]
48

59
//! Bridge codebook convergence test — codex P1 on PR #559.
610
//!

crates/lance-graph-ogar/tests/bridge_scope_lock.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
// isolation blocks `mkdir`/`open`. Stable and nightly without Miri run it
44
// normally.
55
#![cfg(not(miri))]
6+
// Exercises the deprecated bridge aliases on purpose — see
7+
// `docs/CONSUMER-BRIDGE-DEPRECATION.md`.
8+
#![allow(deprecated)]
69

710
//! Bridge scope-lock test.
811
//!

0 commit comments

Comments
 (0)