Skip to content

NO-PIN OGAR path deps + plug-and-play contract arming + roundtrip green light#658

Merged
AdaWorldAPI merged 7 commits into
mainfrom
claude/happy-hamilton-0azlw4
Jul 7, 2026
Merged

NO-PIN OGAR path deps + plug-and-play contract arming + roundtrip green light#658
AdaWorldAPI merged 7 commits into
mainfrom
claude/happy-hamilton-0azlw4

Conversation

@AdaWorldAPI

@AdaWorldAPI AdaWorldAPI commented Jul 7, 2026

Copy link
Copy Markdown
Owner

Operator rulings executed (companions: AdaWorldAPI/OGAR#174 + AdaWorldAPI/tesseract-rs#13, both merged). Revised after the CI workspace-load failure — see the last commit.

  1. NO-PIN: all 10 OGAR deps (symbiont / lance-graph-ogar / cognitive-stack) switch from git+branch=main (which always writes a rev pin into Cargo.lock) to PATH deps on the local sibling OGAR checkout — "wenn's knallt, dann einmal, nicht 200 Pins monitoren." Drift is a single compile-time bang against the sibling's CURRENT state.
  2. The armed tier is lance-graph-ogar (workspace-EXCLUDED), NOT the contract. First attempt put an optional ogar-vocab path dep + feature on lance-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 owns COUNT_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's capability_registry::verify_registration (tesseract-rs#13).
  3. CI sibling checkouts added for the second root cause: lance-graph-consumer-conformance (member) → lance-graph-ogarogar-* path deps sit in the root crate graph, so every workflow now checks out AdaWorldAPI/OGAR: path: OGAR in the sibling-layout workflows (build / rust-test / style, next to the existing ndarray step), a parent-level git clone ../OGAR in the root-layout ones (jc-proof / release).

Verified locally: contract 839 lib tests green (zero-dep), fmt clean, lance-graph-consumer-conformance compiles through the ogar chain against the sibling, lance-graph-ogar 82 tests green incl. the roundtrip light. Note: cargo fmt --all --check carries ~1331 PRE-EXISTING drift diffs on main (untouched files) plus a dangling pub mod tests; in lance-graph-cognitive/container_bs — both predate this branch and are not addressed here.

🤖 Generated with Claude Code

https://claude.ai/code/session_016b33swuXE23hKtqxsHu9p1

claude added 2 commits July 7, 2026 15:33
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
@cursor

cursor Bot commented Jul 7, 2026

Copy link
Copy Markdown

Bugbot couldn't run - usage limit reached

Bugbot 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)

@coderabbitai

coderabbitai Bot commented Jul 7, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@AdaWorldAPI, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 9 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 48b27d2f-534c-431e-bbf6-225d140d0221

📥 Commits

Reviewing files that changed from the base of the PR and between f9e528d and dd46ad2.

⛔ Files ignored due to path filters (1)
  • Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (12)
  • .claude/board/EPIPHANIES.md
  • .claude/knowledge/hotplug-consumer-migration.md
  • .github/workflows/build.yml
  • .github/workflows/jc-proof.yml
  • .github/workflows/release.yml
  • .github/workflows/rust-test.yml
  • .github/workflows/style.yml
  • crates/lance-graph-contract/Cargo.toml
  • crates/lance-graph-contract/src/hotplug.rs
  • crates/lance-graph-contract/src/lib.rs
  • crates/lance-graph-ogar/Cargo.toml
  • crates/lance-graph-ogar/src/lib.rs
📝 Walkthrough

Walkthrough

Switches 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 ogar feature to lance-graph-contract with a compile-time COUNT_FUSE parity check, adds parity/roundtrip tests, and updates the board state doc.

Changes

OGAR arming: path deps and drift fuse

Layer / File(s) Summary
Contract ogar feature and COUNT_FUSE drift check
crates/lance-graph-contract/Cargo.toml, crates/lance-graph-contract/src/ogar_codebook.rs
Adds optional ogar-vocab path dependency and ogar feature; introduces armed module re-exporting ogar_vocab and a COUNT_FUSE compile-time assertion checking CODEBOOK length parity, plus a parity test.
lance-graph-ogar wiring and OCR roundtrip test
crates/lance-graph-ogar/Cargo.toml, crates/lance-graph-ogar/src/lib.rs
Enables ogar feature on the contract dependency and switches OGAR deps to local paths; adds a test validating OCR capability constants against the contract codebook mirror.
Path dependency switch in cognitive-stack and symbiont
crates/cognitive-stack/Cargo.toml, crates/symbiont/Cargo.toml
Replaces git main-branch OGAR dependencies with local path dependencies, preserving the surrealdb-parser feature.
Board state entry
.claude/board/LATEST_STATE.md
Documents the switch to path deps and the new ogar feature/COUNT_FUSE verification result.

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

Hop, hop, off git's leash we bound,
Path deps sprout from local ground.
COUNT_FUSE ticks, a watchful eye,
Codebooks matched — no drift, no lie.
A rabbit cheers with twitching nose 🐇
As OGAR arms and green light glows!

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: no-pin OGAR path deps, contract arming, and roundtrip validation.

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread crates/lance-graph-contract/Cargo.toml Outdated
# 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 }

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge 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 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
crates/lance-graph-contract/Cargo.toml (1)

11-19: 📐 Maintainability & Code Quality | 🔵 Trivial

Verify CI provisions the sibling OGAR checkout for the ogar feature.

Switching to an unpinned path dependency means the ogar feature 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 ogar without 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

📥 Commits

Reviewing files that changed from the base of the PR and between dc79f9c and f9e528d.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • crates/cognitive-stack/Cargo.lock is excluded by !**/*.lock
📒 Files selected for processing (7)
  • .claude/board/LATEST_STATE.md
  • crates/cognitive-stack/Cargo.toml
  • crates/lance-graph-contract/Cargo.toml
  • crates/lance-graph-contract/src/ogar_codebook.rs
  • crates/lance-graph-ogar/Cargo.toml
  • crates/lance-graph-ogar/src/lib.rs
  • crates/symbiont/Cargo.toml

Comment thread crates/lance-graph-contract/src/ogar_codebook.rs Outdated
claude added 5 commits July 7, 2026 16:18
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
@AdaWorldAPI AdaWorldAPI merged commit 593b7b7 into main Jul 7, 2026
1 check was pending
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants