Skip to content

callcenter: fix the graph_table fixture's classid + tail mint (2 red tests) - #897

Merged
AdaWorldAPI merged 1 commit into
mainfrom
claude/x265-x266-plans-review-h9osnl
Aug 5, 2026
Merged

callcenter: fix the graph_table fixture's classid + tail mint (2 red tests)#897
AdaWorldAPI merged 1 commit into
mainfrom
claude/x265-x266-plans-review-h9osnl

Conversation

@AdaWorldAPI

Copy link
Copy Markdown
Owner

What this fixes

cargo test -p lance-graph-callcenter --features query was 209 passed /
2 failed
. Both failures are one defect in the graph_table test fixture.
This PR fixes it (211/211) and records the finding.

It is not a DataFusion-54 regression. The assertion that fires is
num_rows() == 0 against an expected 4 — decided in project_snapshot, before
DataFusion is involved at all.

The defect, in two links

  1. soa_graph::OSINT_GOTHAM.classid resolves to NodeGuid::CLASSID_OSINT_V3
    (0x0701_1000) under the default guid-v3-tail feature, falling back to
    the V1 NodeGuid::CLASSID_OSINT (0x0700_0000) only with the feature off.
    The fixture minted its two rows with the V1 constant spelled out literally,
    so project_snapshot's classid == domain.classid filter — the codex-P1
    guard against cross-class leakage — matched zero of two rows, and every
    assertion below ran against an empty snapshot.

  2. Fixing only the classid would be half a fix. With a V3 classid, family_of
    reads the tail through family_v2(), so a NodeGuid::new key (V1 tail,
    family:u24 at bytes 10..13) would carry the family in the wrong bits even
    after the filter passed.

The fixture now mints through mint_for(classid_read_mode(c).tail_variant, …)
with the classid taken from the domain — which is what the CANON requires of
every new mint anyway. Reading both the classid and the tail variant off the
domain keeps it correct under either feature setting, instead of encoding one
branch of a feature-conditional constant.

The part that is still open

This is V1→V3 migration residue (ISS-V1-TAIL-RESIDUE), not new breakage. It
survived because nothing runs this feature combination — the same coverage
hole that earlier in this arc let vsa_udfs and transcode::ontology_table
report clippy EXIT=0 while never being compiled, both being behind
query / query-lite.

The generalization, recorded as
E-A-FEATURE-CONDITIONAL-CLASSID-SILENTLY-EMPTIED-A-FIXTURE-1: a feature-gated
module is not covered by a green run that never compiled it, and a
feature-conditional constant is not pinned by a test that spells one of its
branches. The CI gap itself is not closed by this PR — no job runs
--features query today.

Testing

cargo +1.97.1 test -p lance-graph-callcenter --features query --lib
211 passed, 0 failed (was 209/2).

…tests)

`cargo test -p lance-graph-callcenter --features query` was 209/2 red. Both
failures were the same defect, and it is NOT a DataFusion-54 regression: the
assertion that fires is `num_rows() == 0` vs 4, decided before DataFusion is
involved.

`OSINT_GOTHAM.classid` resolves to `CLASSID_OSINT_V3` (0x0701_1000) under the
default `guid-v3-tail` feature, falling back to the V1 `CLASSID_OSINT`
(0x0700_0000) only with the feature off. The fixture minted its two rows with
the V1 constant written out literally, so `project_snapshot`'s
`classid == domain.classid` filter -- the codex-P1 cross-class leak guard --
matched zero rows and every assertion below it ran against an empty snapshot.

Fixing only the classid would have been half a fix: with a V3 classid,
`family_of` reads the tail via `family_v2()`, so a `NodeGuid::new` (V1 tail) key
would carry the family in the wrong bits even once the filter passed. The
fixture now mints through `mint_for(classid_read_mode(c).tail_variant, ...)`
with the classid taken from the domain -- which is what the CANON requires of
every new mint anyway -- so it is correct under either feature setting rather
than encoding one branch of it.

211/211 green under `--features query`.

This is V1->V3 migration residue (ISS-V1-TAIL-RESIDUE), not new breakage. It
survived because nothing runs this feature combination: the same coverage hole
that let `vsa_udfs` and `transcode::ontology_table` report clippy EXIT=0 earlier
in this arc while never being compiled. Recorded as
E-A-FEATURE-CONDITIONAL-CLASSID-SILENTLY-EMPTIED-A-FIXTURE-1; the CI gap itself
is still open.
@coderabbitai

coderabbitai Bot commented Aug 5, 2026

Copy link
Copy Markdown

Warning

Review limit reached

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

Next review available in: 1 minute

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

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: 8309c153-4b15-4832-bcc4-8bac07f2f805

📥 Commits

Reviewing files that changed from the base of the PR and between 6cf468c and 7ca4ea7.

📒 Files selected for processing (2)
  • .claude/board/EPIPHANIES.md
  • crates/lance-graph-callcenter/src/graph_table.rs

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.

@cursor

cursor Bot commented Aug 5, 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_ff92246c-6f55-4f74-8467-07c768425227)

@AdaWorldAPI
AdaWorldAPI marked this pull request as ready for review August 5, 2026 16:52
@AdaWorldAPI
AdaWorldAPI merged commit b66c7a0 into main Aug 5, 2026
5 of 6 checks passed
AdaWorldAPI pushed a commit that referenced this pull request Aug 5, 2026
…nd gate)

Nothing in CI ran this crate, and `default = []` means even a bare
`cargo test -p lance-graph-callcenter` would compile almost none of it and
report a green it had not earned. Two defects rode through that gap on
2026-08-05:

  - clippy EXIT=0 over `vsa_udfs` and `transcode::ontology_table`, which were
    never compiled (both behind `query` / `query-lite`);
  - 2 genuinely failing tests -- the `graph_table` fixture minted rows with the
    V1 `CLASSID_OSINT` while `OSINT_GOTHAM.classid` resolves to
    `CLASSID_OSINT_V3` under the default `guid-v3-tail`, so the class filter
    matched zero of two rows and every assertion ran against an empty snapshot
    (fixed in #897).

Two steps, both mandatory, matching the deepnsm posture: gate it WHILE it is
clean so it cannot regress. Verified locally on this tree before adding them --
clippy 0 errors, tests 211/211 -- so neither step lands red.

Advisory was considered and rejected: the advisory tier exists for crates
carrying pre-existing debt to be paid down (lance-graph core, bgz-tensor).
This crate has none under this feature today.

A green run that never compiled the module is not coverage. Same shape the repo
has already closed for deepnsm, supervisor, ogar and bgz-tensor -- this one is
subtler only because the missing coverage was a FEATURE, not a crate.
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