docs+deprecate(bridges): preemptive landing shape for OGAR consumer migration#589
Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reached
More reviews will be available in 52 minutes and 53 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (20)
📝 WalkthroughWalkthroughDeprecates all consumer-facing per-tenant bridge alias types across ChangesConsumer Bridge Deprecation and OGAR Port Migration
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
…igration Adds `#[deprecated(note = "...")]` to every consumer-facing tenant bridge, pointing each at its OGAR PortSpec replacement. Symbols still compile; nothing removed. Companion to AdaWorldAPI/OGAR#95 (APP‖class codebook layout + per-app migration plan). Deprecated: - lance-graph-ogar::bridges — 6 per-port aliases: OpenProjectBridge, RedmineBridge, MedcareBridge, WoaBridge, SmbBridge, OdooBridge → pull via the corresponding `ogar_vocab::ports::*Port::class_id(name)` - lance-graph-ontology::bridges — 4 legacy structs: OgitBridge, WoaBridge, SpearBridge, SharePointBridge → pull via the relevant PortSpec (Spear/SharePoint require authoring a port first) NOT deprecated: the `UnifiedBridge<P>` harness (impl mechanism), the `*Port` types (the replacement), the OPENPROJECT_CODEBOOK / REDMINE_CODEBOOK constants (already deprecated in PR #570). Existing call sites (tests + the consumer-conformance harness) carry `#[allow(deprecated)]` so the build stays clean. cargo check green on both crates; pre-existing dead-code warnings on the `NAMESPACE` constants are unrelated. Scope this PR does NOT cover (explicitly flagged in docs/CONSUMER-BRIDGE-DEPRECATION.md, surfaced by parallel sessions): - lance-graph-rbac has no `authorize(actor, classid, op)` keystone yet. The keystone is `[H]` and gated on PROBE-OGAR-RBAC-AUTHORIZE (OGAR spec). It lands as its own PR after the probe runs green. Until then, consumers migrate the classid pull only and keep existing auth — do NOT reintroduce a bridge as an auth stopgap. - `Membership` / `Op` types not yet defined. Consumer status snapshot (`git grep` 2026-06-22): MedCare-rs: 33 files · woa-rs: 6 · smb-office-rs: 4 · odoo-rs: 0 ✓ · openproject-nexgen-rs: 0 ✓ Terminal `bridges/` deletion PR opens only after the three remaining consumers ship their migrations. No removal window announced. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EYvNjD8M8LMNYbRy3gq2FP
5dfa37f to
10e717d
Compare
…iene 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
|
Heads-up from a 5+3 review while reproducing this beacon's shape on another branch: the PR's "warning-clean" claim doesn't hold under
pub use medcare_bridge::{HealthcarePort, MedcareBridge}; // MedcareBridge is #[deprecated]
pub use odoo_bridge::{OdooBridge, OdooPort}; // OdooBridge …
pub use openproject_bridge::{OpenProjectBridge, OpenProjectPort};
pub use redmine_bridge::{RedmineBridge, RedminePort};
pub use smb_bridge::{SmbBridge, SmbPort};
pub use woa_bridge::{WoaBridge, WoaPort};The One-line-per-symbol fix (mirrors the // canonical surface
pub use medcare_bridge::HealthcarePort;
pub use odoo_bridge::OdooPort;
pub use openproject_bridge::OpenProjectPort;
pub use redmine_bridge::RedminePort;
pub use smb_bridge::SmbPort;
pub use unified::UnifiedBridge;
pub use woa_bridge::WoaPort;
// deprecated aliases (lint still fires at the consumer use-site)
#[allow(deprecated)] pub use medcare_bridge::MedcareBridge;
#[allow(deprecated)] pub use odoo_bridge::OdooBridge;
#[allow(deprecated)] pub use openproject_bridge::OpenProjectBridge;
#[allow(deprecated)] pub use redmine_bridge::RedmineBridge;
#[allow(deprecated)] pub use smb_bridge::SmbBridge;
#[allow(deprecated)] pub use woa_bridge::WoaBridge;Verified locally: with that split, Otherwise the beacon reviewed clean across drift / Core-first / OGAR #95 doc-accuracy / iron-rule / SoA-column lenses — nice landing shape. Generated by Claude Code |
…d-allow fix(bridges): guard deprecated-alias re-exports + ontology self-impls (#589 follow-up)
What
Preemptive soft deprecation of every consumer-facing tenant bridge, pointing each at its OGAR
PortSpecreplacement. Symbols still compile; nothing removed. Companion to AdaWorldAPI/OGAR#95 (APP‖class codebook layout + per-app migration plan).Scope
Deprecated (10 symbols):
lance-graph-ogar::bridgesOpenProjectBridgeOpenProjectPort::class_id(name)lance-graph-ogar::bridgesRedmineBridgeRedminePort::class_id(name)lance-graph-ogar::bridgesMedcareBridgeHealthcarePort::class_id(name)lance-graph-ogar::bridgesWoaBridgeWoaPort::class_id(name)lance-graph-ogar::bridgesSmbBridgeSmbPort::class_id(name)lance-graph-ogar::bridgesOdooBridgeOdooPort::class_id(name)lance-graph-ontology::bridgesOgitBridge*Port::class_id(name)lance-graph-ontology::bridgesWoaBridge(legacy)WoaPort::class_id(name)lance-graph-ontology::bridgesSpearBridgeSpearPortthen pulllance-graph-ontology::bridgesSharePointBridgeSharePointPortthen pullNOT deprecated:
UnifiedBridge<P>(impl harness), the*Porttypes (the replacement), and the*_CODEBOOKconstants (already deprecated in PR #570).What this PR does NOT do — flagged by parallel sessions
lance-graph-rbachas noauthorize(actor, classid, op)keystone yet. The crate ships scaffolding (AccessDecision::{Allow, Deny, Escalate},role/permission/policy/accessmodules) but the keystone signature does not exist. So a consumer reading the deprecation note "authorize by classid" cannot, today, call that.Why this PR doesn't add it: the keystone is graded
[H]and gated onPROBE-OGAR-RBAC-AUTHORIZE(OGARCLAUDE.mdnon-negotiables;CLASSID-RBAC-KEYSTONE-SPEC.md§10). Shipping the signature before the probe locks the shape before falsification. The keystone is its own PR, after the probe runs green.Until the keystone ships, consumers should: migrate the classid pull off the bridges now (this PR's target), keep their existing auth (or none) for the authorize call site, and NOT re-introduce a bridge as an auth stopgap.
Build
Both touched crates
cargo checkgreen; existing call sites (tests + the consumer-conformance harness) carry#[allow(deprecated)]so the build stays warning-clean. Pre-existing dead-code warnings onNAMESPACEconstants are unrelated.Consumer status snapshot (
git grep2026-06-22)lance_graph_{ontology,ogar}::bridgesThe terminal
bridges/deletion PR opens only after the three remaining consumers ship their migrations. No removal window announced — the deprecation is a beacon, not a deadline.Status
[H]— landing shape only. The OGAR migration model is shipped (#95); this PR signals the target inside the spine. Promotion to[G]waits on the keystone + consumer migrations + the eventual deletion PR.🤖 Generated with Claude Code
https://claude.ai/code/session_01EYvNjD8M8LMNYbRy3gq2FP
Generated by Claude Code
Summary by CodeRabbit
New Features
Documentation
Deprecations