NO-PIN OGAR path deps + plug-and-play contract arming + roundtrip green light#658
Conversation
Operator ruling: never a rev pin -- "wenn's knallt, dann einmal, nicht 200 Pins monitoren". All OGAR deps (symbiont, lance-graph-ogar, cognitive-stack) switch from git+branch=main (which always writes a rev into Cargo.lock) to PATH deps on the local sibling /home/user/OGAR; the fuse then always checks the sibling's CURRENT state and drift is a single compile-time bang. Plug-and-play arming: lance-graph-contract gains the optional `ogar` feature -- the ONE sanctioned optional dep (ogar-vocab, path, no pin). Arming activates `ogar_codebook::armed`: contract-side COUNT_FUSE compile assert + per-entry parity test + `armed::vocab` re-export so a consumer pulls the live codebook through the contract instead of its own dep line. Default build stays zero-dep. lance-graph-ogar arms it. Verified: contract default + --features ogar green (840 lib tests incl. entry-for-entry mirror parity); symbiont / lance-graph-ogar (77 tests) / cognitive-stack all build against the sibling at OGAR main 68d85f02. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
… only) Operator design: lance-graph does NOT carry ontologies -- it flips one fuse. For the OCR capability table the test asserts (a) the authority named an expected executor, (b) every subject classid exists in the wire mirror this crate already guards, (c) the table is internally consistent. The consumer half (registration + coverage + classid activation) is verified in the consumer binary via OGAR's new capability_registry::verify_registration -- authority checks stay in OGAR, mirror checks stay here, nothing serializes. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_f20c143d-9a6c-4f86-bad9-4062eaee442b) |
|
Warning Review limit reached
Next review available in: 9 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?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 reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. 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, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (12)
📝 WalkthroughWalkthroughSwitches OGAR crate dependencies (ogar-vocab, ogar-ontology, ogar-adapter-surrealql, ogar-class-view) from git main-branch pins to local path dependencies across cognitive-stack, lance-graph-contract, lance-graph-ogar, and symbiont. Adds an optional ChangesOGAR arming: path deps and drift fuse
Estimated code review effort: 2 (Simple) | ~12 minutes Sequence Diagram(s)Not applicable — changes are dependency wiring and compile-time/test assertions rather than multi-component runtime flows. Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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 |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f9e528d26c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| # policy 2026-07-07) into the same binary, which activates the compile-time | ||
| # COUNT_FUSE in `ogar_codebook::armed`. Plug-and-play: a consumer that arms | ||
| # `ogar` gets mirror-vs-vocab drift as a BUILD FAILURE, once, at compile time. | ||
| ogar-vocab = { path = "../../../OGAR/crates/ogar-vocab", optional = true } |
There was a problem hiding this comment.
Keep default contract builds independent of OGAR checkout
This path dependency makes the default workspace require a sibling OGAR checkout even when the new ogar feature is not enabled. lance-graph-contract is a workspace member, and Cargo still resolves optional path dependency manifests during workspace resolution; in a normal checkout without /workspace/OGAR, cargo metadata --manifest-path crates/lance-graph-contract/Cargo.toml --no-deps aborts with failed to read /workspace/OGAR/crates/ogar-vocab/Cargo.toml. That breaks the documented zero-dep/default CI-gated contract build unless every environment now provisions OGAR, so the optional dependency needs to remain resolvable without that sibling or be moved out of the default workspace path.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Confirmed and fixed in 9608151 (before this thread landed — same failure hit CI directly): the optional path dep + ogar feature are removed entirely; the contract is strictly zero-dep again, with the workspace-load lesson documented in the manifest comment. The armed tier (fuses + live-vocab access) lives in the workspace-EXCLUDED lance-graph-ogar crate, whose path deps cannot affect workspace resolution.
Generated by Claude Code
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
crates/lance-graph-contract/Cargo.toml (1)
11-19: 📐 Maintainability & Code Quality | 🔵 TrivialVerify CI provisions the sibling OGAR checkout for the
ogarfeature.Switching to an unpinned path dependency means the
ogarfeature build (and its COUNT_FUSE) is only as reproducible as whatever happens to be checked out at../../../OGAR— no git rev, no version to anchor against. This is consistent with the PR's stated "no pins" policy, but any CI job or contributor that builds with--features ogarwithout an up-to-date sibling checkout at that exact relative path will fail or silently drift.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/lance-graph-contract/Cargo.toml` around lines 11 - 19, The `ogar-vocab` optional path dependency in this Cargo.toml makes the `ogar` feature build depend on a sibling checkout being present at the expected relative location. Update CI and any feature-enabled build jobs to explicitly provision or sync the `../../../OGAR` workspace before running `cargo build --features ogar`, and make the setup step part of the documented build flow. Verify the `ogar` feature path for `lance-graph-contract` is exercised in CI so `ogar_codebook::armed` and the COUNT_FUSE are built against the intended local sibling.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/lance-graph-contract/src/ogar_codebook.rs`:
- Around line 955-994: The OGAR parity test in
armed::tests::mirror_matches_live_vocab_entry_for_entry is currently not
exercised by CI because the contract crate is only tested without the ogar
feature. Add a CI job or update the existing contract test command so it runs
the crate with --features ogar (or an equivalent target that enables armed),
ensuring both COUNT_FUSE and the per-entry mirror-vs-live vocab checks are
executed.
---
Nitpick comments:
In `@crates/lance-graph-contract/Cargo.toml`:
- Around line 11-19: The `ogar-vocab` optional path dependency in this
Cargo.toml makes the `ogar` feature build depend on a sibling checkout being
present at the expected relative location. Update CI and any feature-enabled
build jobs to explicitly provision or sync the `../../../OGAR` workspace before
running `cargo build --features ogar`, and make the setup step part of the
documented build flow. Verify the `ogar` feature path for `lance-graph-contract`
is exercised in CI so `ogar_codebook::armed` and the COUNT_FUSE are built
against the intended local sibling.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 818fcba0-c172-4acc-8c6c-023f3042c4fb
⛔ Files ignored due to path filters (2)
Cargo.lockis excluded by!**/*.lockcrates/cognitive-stack/Cargo.lockis excluded by!**/*.lock
📒 Files selected for processing (7)
.claude/board/LATEST_STATE.mdcrates/cognitive-stack/Cargo.tomlcrates/lance-graph-contract/Cargo.tomlcrates/lance-graph-contract/src/ogar_codebook.rscrates/lance-graph-ogar/Cargo.tomlcrates/lance-graph-ogar/src/lib.rscrates/symbiont/Cargo.toml
The optional ogar-vocab path dep on lance-graph-contract (a workspace MEMBER) broke every cargo invocation in CI at workspace-load time -- the runner has no OGAR sibling, so even fmt/build jobs died with "failed to read .../OGAR/crates/ogar-vocab/Cargo.toml". Reverted: the contract is strictly zero-dep again (doc comment states the lesson); the armed tier is the workspace-EXCLUDED lance-graph-ogar crate, which already owns COUNT_FUSE + per-entry parity + the roundtrip green light, and now deps the contract without a feature. Second root: lance-graph-consumer-conformance (member) -> lance-graph- ogar -> ogar-* path deps are in the root graph, so CI still needs the sibling. Added the OGAR sibling checkout to every workflow: `path: OGAR` in the sibling-layout workflows (build/rust-test/style, next to the existing ndarray step) and a parent-level `git clone ../OGAR` step in the root-layout ones (jc-proof/release). Verified: contract 839 lib tests green (zero-dep), fmt clean, consumer-conformance compiles through the ogar chain against the local sibling. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
The plug-and-play pattern goes GENERIC (operator ruling) -- the
migration target for ALL consumers, not a per-consumer plug crate:
- lance-graph-contract gains src/hotplug.rs, the zero-dep SOCKET:
HotPlug { consumer, classids, covered }, Activation { concepts,
capabilities }, ActivationDrift (5 named arms), and the
CapabilityAuthority trait. Pure types -- no OGAR dep, member-safe
(the CI workspace-load lesson is in the module doc).
- lance-graph-ogar (workspace-EXCLUDED) gains OgarAuthority: the
contract socket implemented via ogar_vocab::capability_registry::
resolve_hotplug -- the consumer tells OGAR which classids are
hot-plugged and receives BOTH the vocab rows and the action surface
for exactly those ids; classid is the join key on both sides. E2E
bridge test: the OCR plug resolves to 3 concepts + 8 capabilities
through a dyn CapabilityAuthority.
Co-Authored-By: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
Review finding on #658 (still valid after the armed-contract revert): the entry-level mirror<->live-vocab parity and the roundtrip green light live in the workspace-EXCLUDED lance-graph-ogar crate, so CI never executed them -- COUNT_FUSE alone cannot catch a same-sized codebook remap. The OGAR sibling checkout already exists in this workflow; one scoped test step closes the gap. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
A diagnostic `cargo fmt --all` run (reproducing the CI failure) reformatted ~60 files this PR never intended to touch, and a later `git add -A` swept them in -- ontology hydrators, planner, callcenter, thinking-engine, etc. Restored to origin/main byte-for-byte; the pre-existing workspace fmt drift stays a separate concern (noted in the PR body). The PR is back to its declared surface: NO-PIN path deps, zero-dep contract + hotplug socket, lance-graph-ogar armed tier + OgarAuthority, CI sibling checkouts + fuse gate, dawg preflight, board notes. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
…ON-1 ruling Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1
Operator rulings executed (companions: AdaWorldAPI/OGAR#174 + AdaWorldAPI/tesseract-rs#13, both merged). Revised after the CI workspace-load failure — see the last commit.
git+branch=main(which always writes a rev pin into Cargo.lock) to PATH deps on the local siblingOGARcheckout — "wenn's knallt, dann einmal, nicht 200 Pins monitoren." Drift is a single compile-time bang against the sibling's CURRENT state.lance-graph-ogar(workspace-EXCLUDED), NOT the contract. First attempt put an optionalogar-vocabpath dep + feature onlance-graph-contract— a workspace MEMBER — which broke EVERY cargo invocation in CI at workspace-load time (failed to read .../OGAR/crates/ogar-vocab/Cargo.toml; that was the "massive fmt issues"). Reverted: the contract is strictly zero-dep again with the lesson in its doc comment;lance-graph-ogar(which already ownsCOUNT_FUSE+ per-entry mirror parity) now also carries the authoritative-table roundtrip green light — ID-level only, lance-graph hauls no ontology payload: expected executor named, every subject classid present in the wire mirror, table internally consistent. The consumer half (registration / coverage / classid activation) lives in the consumer binary via OGAR'scapability_registry::verify_registration(tesseract-rs#13).lance-graph-consumer-conformance(member) →lance-graph-ogar→ogar-*path deps sit in the root crate graph, so every workflow now checks outAdaWorldAPI/OGAR:path: OGARin the sibling-layout workflows (build / rust-test / style, next to the existing ndarray step), a parent-levelgit clone ../OGARin the root-layout ones (jc-proof / release).Verified locally: contract 839 lib tests green (zero-dep), fmt clean,
lance-graph-consumer-conformancecompiles through the ogar chain against the sibling,lance-graph-ogar82 tests green incl. the roundtrip light. Note:cargo fmt --all --checkcarries ~1331 PRE-EXISTING drift diffs on main (untouched files) plus a danglingpub mod tests;inlance-graph-cognitive/container_bs— both predate this branch and are not addressed here.🤖 Generated with Claude Code
https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1