Skip to content

#254 — versioned-model resolution via tested_node_unique_id - #263

Merged
cmbays merged 4 commits into
mainfrom
domain-254-versioned-model-resolution
Jun 12, 2026
Merged

cmbays merged 4 commits into
mainfrom
domain-254-versioned-model-resolution

Conversation

@cmbays

@cmbays cmbays commented Jun 12, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Versioned dbt models (model.proj.dim_customers.v2) mis-bound in cute-dbt's name resolution: leaf_segment()-style matching returns the version suffix ("v2") as the model name, so a versioned model's unit tests silently dropped out of covered-by attribution, scope selection, and every name-keyed lookup. The engine-resolved fix was already on the wire and dropped: this PR ingests tested_node_unique_id (and its this_input_node_unique_id twin) on the unit-test node and adds a single resolution authority, domain::state::resolve_tested_model, that prefers the engine-resolved id (direct nodes lookup, model-typed) and falls back to the existing resolve_target_model bare-name match when the field is absent, null, dangling, or non-model — exact pre-#254 behavior for dbt-core and older manifests.

Acceptance criteria — evidence

Fusion citation (SHA-pinned)

dbt-labs/dbt-fusion @ 9977b6cbb1b761065536300037560d8e3c037011 (same pin as the #252 research):

  • crates/dbt-schemas/src/schemas/manifest/manifest_nodes.rs:273-274 — ManifestUnitTest.tested_node_unique_id / this_input_node_unique_id, both Option<String>, unit-test nodes only (data tests carry attached_node, already ingested).
  • crates/dbt-parser/src/resolve/resolve_tests/resolve_unit_tests.rs:120-130, 370 — runtime meaning: the unversioned model's unique_id when resolvable, None when not (test goes to disabled); each per-version unit-test clone gets the .vN-suffixed versioned model unique_id.
  • Verified against a real fusion-compiled manifest (local dbt-project/, dbt 2.0.0-preview.177, never committed): tested_node_unique_id populated on every unit test; this_input_node_unique_id omitted when unset (#[skip_serializing_none]) — the wire structs tolerate both absence and null.

Leaf-segment consumer audit

Fixed here (the new field reaches them — all unit-test → target-model resolution):

Site Surface
domain/state.rs in_scope_unit_tests_with_modified, models_in_scope arm 1, unit_test_targets baseline scope + attribution
domain/scope.rs ×3 (pr-diff arm: in-scope, tests-per-model, model-ids) pr-diff scope
domain/preflight.rs first_in_scope_test_for_model Stage-2 NotCompiled attribution
domain/checks.rs detect_union_arm_coverage, tests_on_model coverage-intelligence attribution
adapters/render.rs index_tests_for_models report covered-by/model-tests grouping
adapters/explore.rs unit_test_counts, unit_test_paths_by_model explorer badges + paths

Not reached — follow-up needed (filed judgment: these are ref-name or model-side leaf derivations the unit-test field cannot fix):

  • adapters/render.rs resolve_given_ref_node (~957) — given ref() → node by leaf name; a given input referencing a versioned model by bare name still cannot bind (and the ref parser does not handle versioned ref('m', v=2) shapes). Candidate fix: per-node structured refs lists or model name ingestion.
  • adapters/render.rs build_manifest_nodes keys (~1088/1096) + build_model_payload bare_name (~1751) — payload keys / DAG + section labels would display "v2" for a versioned model.
  • adapters/explore.rs build_lineage node name (~178) — explorer lineage label would display "v2".
  • cli/mod.rs gather_model_yaml_with_reader (~525) — the models: YAML entry name is derived by leaf split → EntryNotFound for versioned models.
  • domain/check_config.rs model_matches (~567) — suppression rules naming a versioned model bare won't match.
  • domain/checks.rs branch_rollup_verdict model_bare (~2105) — cosmetic "v2" in verdict prose; leaf_resolves_to_seed/suggested_given_sketch are seed/ref-leaf based (seeds cannot be versioned — no impact).

The root fix for the display-name family is ingesting the model node's name (a model-side wire extension) — natural home is the #256 versions/governance slice; recommending it be folded there or filed as its own follow-up under epic #255.

Gates (run directly — lefthook skips in fresh worktrees)

  • cargo fmt --check — pass
  • cargo clippy --all-targets --locked -- -D warnings — exit 0
  • cargo nextest run — 1269 passed
  • cargo test --test bdd — 163 scenarios / 1044 steps passed
  • cargo test --test headless_toggle --locked -- --ignored — 67 passed
  • cargo test --test headless_zero_egress --locked -- --ignored — 10 passed
  • RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --locked — exit 0
  • cargo deny check — ok
  • Goldens: all five committed examples regenerated per the CI matrix and verified byte-identical (jaffle-shop, playground, diff-showcase, explore/dag.html, explore/tests.html); git diff -- examples/ empty (no committed fixture uses model versions, as expected).

Closes #254

🤖 Generated with Claude Code


Open in Stage

Summary by CodeRabbit

  • New Features

    • Added support for engine-resolved unit test targeting to improve accuracy of unit test attribution on versioned models.
  • Bug Fixes

    • Fixed unit test misattribution and dropped tests for versioned models; tests now correctly associate with their versioned targets.

github-actions Bot and others added 2 commits June 11, 2026 21:22
A versioned dbt model's unique_id ends in its version suffix
(model.proj.dim_customers.v2), so leaf-segment bare-name matching can
never bind it — covered-by attribution and every name-keyed lookup
silently missed versioned models.

Ingest the engine-resolved ids on the domain UnitTest
(tested_node_unique_id + the this_input_node_unique_id twin; fusion
dbt-schemas manifest_nodes.rs:273-274 @ 9977b6cb) and add
resolve_tested_model: prefer the direct nodes lookup when the id is
present, fall back to resolve_target_model bare-name matching when
absent/dangling/non-model (graceful absence for dbt-core and older
manifests). Switch every unit-test target resolution in the domain
(scope, state, preflight, checks) to the new bridge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
WireUnitTest gains tested_node_unique_id / this_input_node_unique_id
(Option + serde(default): tolerant of absent keys — every committed
fixture predates the fields — and explicit nulls, the engine null-fill
shape). into_domain threads them via builders. The render indexer
(index_tests_for_models) and both explore attribution surfaces
(unit_test_counts, unit_test_paths_by_model) switch to
resolve_tested_model so a versioned model's tests bind on every
surface. Goldens verified byte-identical (no committed fixture uses
model versions).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Jun 12, 2026 •

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@cmbays, we couldn't start this review because you've reached your PR review rate limit.

More reviews will be available in 10 minutes and 54 seconds. Learn how PR review limits work.

Your organization has run out of usage credits. Purchase more credits in the billing tab to continue.

⌛ How to resolve this issue?

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.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available.

Please see our Fair Usage Limits Policy for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 0d13c3ab-92d4-452f-a0f0-56ade742fe18

📥 Commits

Reviewing files that changed from the base of the PR and between 856e2d2 and 0583dcd.

📒 Files selected for processing (3)
  • src/adapters/explore.rs
  • src/adapters/render.rs
  • src/domain/state.rs
📝 Walkthrough

Walkthrough

The PR introduces engine-resolved unit-test target binding. UnitTest gains optional tested_node_unique_id and this_input_node_unique_id fields deserialized from the manifest wire format. A new resolve_tested_model resolver prefers these engine-provided IDs when available, falling back to bare-name resolution. This resolver is applied across scoping, lineage, rendering, detector, and preflight logic to correctly attribute versioned-model unit tests to their engine-provided NodeIds.

Changes

Engine-resolved unit-test target binding

Layer / File(s) Summary
Domain model for engine-resolved unit-test target IDs
src/domain/unit_test.rs
UnitTest adds optional tested_node_unique_id and this_input_node_unique_id fields with serde defaults, builder/getter methods, and serialization tests.
Wire deserialization and domain translation
src/adapters/manifest.rs
WireUnitTest deserializes engine-resolved target IDs; into_domain forwards them to UnitTest via setter calls; manifest parsing tests verify end-to-end ingestion for versioned models and tolerance of absent/null keys.
Core resolver implementation and scoping integration
src/domain/state.rs, src/domain/mod.rs
New public resolve_tested_model function prefers engine-resolved tested_node_unique_id binding to a model node, falls back to resolve_target_model when absent/dangling/non-model; unit_test_targets and scoping helpers (in_scope_unit_tests_with_modified, models_in_scope) apply it; extended test suite covers resolver behavior and end-to-end versioned-model in-scope scenarios.
Explore lineage unit-test attribution
src/adapters/explore.rs
unit_test_counts and unit_test_paths_by_model switch to resolve_tested_model so versioned-model unit tests count toward and list under the versioned NodeId; new test asserts binding via engine-resolved ID.
Report render unit-test indexing
src/adapters/render.rs
index_tests_for_models switches to resolve_tested_model when building the per-model unit-test index for payload assembly.
Detector unit-test selection
src/domain/checks.rs
detect_union_arm_coverage and tests_on_model apply resolve_tested_model to select which unit tests target the current model node.
PR-diff and explorer scope unit-test resolution
src/domain/scope.rs
PrDiff path-modified model detection, test-count computation, and explorer-mode models_in_scope use resolve_tested_model to bind unit tests to their target models during in-scope membership decisions.
Preflight in-scope test reporting
src/domain/preflight.rs
first_in_scope_test_for_model uses resolve_tested_model to determine which in-scope unit test name should be reported for an uncompiled model.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related issues

  • breezy-bays-labs/cute-dbt#254: Both changes address the same code-level fix—ingesting and using engine-provided tested_node_unique_id to correctly bind unit tests to versioned model NodeIds rather than relying on leaf-segment name splitting.

Possibly related PRs

  • breezy-bays-labs/cute-dbt#225: Both PRs modify src/adapters/explore.rs to change how unit tests are resolved/attributed when building the per-model lineage payload.
  • breezy-bays-labs/cute-dbt#97: The retrieved PR's rendering and changed-tag pipeline overlaps with the main PR's changes to unit-test→model association inside index_tests_for_models and unit-test scoping.
  • breezy-bays-labs/cute-dbt#86: Both PRs touch src/domain/scope.rs unit-test→model resolution in PR-diff in-scope selection logic.

Poem

A unit test hops through the wild dbt wood,
Finding its versioned model home as it should—
No more name-splitting, engine-resolved at last!
With tested_node_unique_id, the past is past. 🐰✨

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title directly and specifically describes the main change: introduction of versioned-model resolution via the tested_node_unique_id field, which is the core fix addressed across all modified files.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
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.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch domain-254-versioned-model-resolution

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 and usage tips.

@ghost

ghost commented Jun 12, 2026 •

Copy link
Copy Markdown

Ready to review this PR? Stage has broken it down into 5 individual chapters for you:

Title
1 Add engine-resolved unique IDs to UnitTest domain
2 Implement robust tested model resolution logic
3 Ingest unique IDs from manifest wire format
4 Update domain logic to use robust resolution
5 Wire robust resolution through adapter layers
Open in Stage

Chapters generated by Stage for commit 0583dcd on Jun 12, 2026 2:12am UTC.

@github-actions

github-actions Bot commented Jun 12, 2026 •

Copy link
Copy Markdown
Contributor

📄 Rendered report preview

All golden examples regenerated cleanly.

🟡 Golden examples

Committed to examples/ and byte-identity gated — the canonical reports contributors and consumers browse. Stable across PRs.

Report View Download
jaffle-shop-report.html ▶ Open ↗ ⬇ Download
diff-showcase-report.html ▶ Open ↗ ⬇ Download
playground-report.html ▶ Open ↗ ⬇ Download

🐶 Live dogfood preview

This PR doesn't touch dbt-project/, so there's no live dogfood preview.

▶ Open ↗ opens the report in your browser in one click —
published to this repo's GitHub Pages under /pr-263/.
⬇ Download fetches the same self-contained HTML as a workflow
artifact (auth-gated; works fully offline). Either way the report
makes zero external resource requests.

The Pages preview may take ~1 min to update after this comment
posts. On PRs from forks the Open link is unavailable (read-only
token) — use Download.

Alternative: GitHub CLI
# gh CLI >= 2.63 extracts into ./report-preview-playground/.
gh run download 27390048228 -R breezy-bays-labs/cute-dbt -n report-preview-playground
open report-preview-playground/playground-report.html

Posted by report-preview.yml for 0583dcd0a7108ffec9ffe65fab1c405f49b57324. Affordance only — never blocks merge.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request addresses an issue where unit tests targeting versioned models were not correctly resolved because bare-name matching failed on version suffixes (e.g., .v2). It introduces resolve_tested_model, which prioritizes the engine-resolved tested_node_unique_id from the manifest over bare-name matching, falling back gracefully if the ID is absent or null. The codebase has been updated to use this new resolution logic across adapters, checks, and scoping. Feedback is provided to refactor resolve_tested_model using idiomatic Option combinators instead of an explicit if let block.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread src/domain/state.rs

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
src/adapters/render.rs (1)

2273-2305: ⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Add a render-level regression test for versioned unit-test indexing.

This wiring change is correct, but this file’s test suite does not pin the new tested_node_unique_id path. Please add a case where a unit test targets model.proj.dim_customers.v2 via tested_node_unique_id while model: stays bare, then assert index_tests_for_models/build_payload indexes it under the versioned NodeId. Without that, this adapter can silently drift back to bare-name binding.

As per coding guidelines, **/*.rs: "Implement TDD — tests before implementation for all domain and adapter code."

🤖 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 `@src/adapters/render.rs` around lines 2273 - 2305, Add a render-level
regression test that constructs a Manifest containing a UnitTest whose
tested_node_unique_id is the versioned target (e.g.,
"model.proj.dim_customers.v2") while its bare `model:` reference remains
unversioned, then call index_tests_for_models (and build_payload if present in
this file's tests) with a ModelInScopeSet containing the versioned NodeId and
assert the returned map uses the versioned NodeId key and includes the test;
ensure the test exercises resolve_tested_model path that reads
`tested_node_unique_id` so the indexer cannot regress back to bare-name binding.

Source: Coding guidelines

src/adapters/explore.rs (1)

490-519: 🛠️ Refactor suggestion | 🟠 Major | ⚡ Quick win

The new engine-resolved binding is not fully regression-pinned across src/adapters/explore.rs, src/domain/scope.rs, and src/domain/preflight.rs. src/adapters/explore.rs proves the count path for versioned targets, but not the paths payload; src/domain/scope.rs and src/domain/preflight.rs switch to resolve_tested_model without a file-local versioned-model test at all. Please add one versioned-model fixture per consumer layer so the engine-resolved tested_node_unique_id branch stays locked for explore attribution, PR-diff scoping, and preflight error naming.

As per coding guidelines, "Implement TDD — tests before implementation for all domain and adapter code."

🤖 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 `@src/adapters/explore.rs` around lines 490 - 519, Add a unit test fixture
exercising an engine-resolved versioned model for each consumer layer so the
tested_node_unique_id branch is regression-pinned: (1) in tests around
unit_test_paths_by_model ensure the payload includes the versioned model path
(not just count) by creating a unit_test that resolves via resolve_tested_model
to a versioned model and asserting the returned
UnitTestPathsPayload.yaml/fixtures contain the versioned path; (2) in the domain
scope tests (tests for resolve_tested_model/Scope-related behavior) add a
file-local versioned-model fixture exercising the tested_node_unique_id branch
and assert resolution; and (3) in preflight tests (preflight.rs) add a
corresponding versioned-model fixture and assert preflight error naming uses the
engine-resolved tested_node_unique_id. Reference functions/structures:
unit_test_paths_by_model, resolve_tested_model, UnitTestPathsPayload, and the
preflight error naming code path so each layer has one explicit versioned-model
test before making further changes.

Source: Coding guidelines

🧹 Nitpick comments (2)
src/domain/unit_test.rs (1)

754-799: ⚡ Quick win

Exhaust the new resolved-id option matrix across both the domain and adapter tests.

src/domain/unit_test.rs and src/adapters/manifest.rs currently cover only the all-none/all-some corners for tested_node_unique_id and this_input_node_unique_id. The shared root cause is sampled coverage of a 2-field optional serde contract: mixed states (Some/None, None/Some, plus absent vs explicit null on the wire) are where skip_serializing_if / tolerant-deserialization regressions would hide, so both files should use the repo’s usual table-driven matrix coverage for these new fields.

🤖 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 `@src/domain/unit_test.rs` around lines 754 - 799, Add a table-driven test in
src/domain/unit_test.rs that exhausts the 2x2 matrix and wire variations for
tested_node_unique_id and this_input_node_unique_id (covering
(None,None),(Some,None),(None,Some),(Some,Some) using bare_unit_test() plus
with_tested_node_unique_id(...) and with_this_input_node_unique_id(...)); for
each case assert tested_node_unique_id() / this_input_node_unique_id() values,
assert serialization includes the key only when Some and omits when None, and
also exercise deserialization from JSON with the key absent and with the key
present as explicit null to ensure tolerant deserialization/skipping behavior
(use the existing resolved_node_ids_default_none_and_skip_keys and
resolved_node_ids_roundtrip_when_present as templates).

Sources: Coding guidelines, Learnings

src/domain/checks.rs (1)

1150-1152: ⚡ Quick win

Add a detector regression for the versioned-model resolution path.

These are the detector-side consumers of resolve_tested_model, but the file still does not pin the case this PR is fixing: an ambiguous bare model name with a tested_node_unique_id that targets the correct versioned model. Without that, checks can regress back to leaf-name matching while the shared resolver still looks correct elsewhere. As per coding guidelines, **/*.rs: Implement TDD — tests before implementation for all domain and adapter code. Based on PR objectives, this PR fixes versioned-model resolution via tested_node_unique_id.

Also applies to: 1569-1572

🤖 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 `@src/domain/checks.rs` around lines 1150 - 1152, Add a detector regression
test that exercises the versioned-model resolution path for
resolve_tested_model: create a manifest with two versions of the same bare model
name and a tested node having tested_node_unique_id that should pick the correct
versioned model, then assert resolve_tested_model(ctx.manifest, ut) returns
Some(model) whose id() equals ctx.model.id() (covering the ambiguous bare name +
tested_node_unique_id scenario); place the test before changing domain logic per
TDD, use the same test harness/setup used by existing checks in this module and
target the iterator/filter case that uses resolve_tested_model so the regression
cannot revert to leaf-name-only matching.

Source: Coding guidelines

🤖 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.

Outside diff comments:
In `@src/adapters/explore.rs`:
- Around line 490-519: Add a unit test fixture exercising an engine-resolved
versioned model for each consumer layer so the tested_node_unique_id branch is
regression-pinned: (1) in tests around unit_test_paths_by_model ensure the
payload includes the versioned model path (not just count) by creating a
unit_test that resolves via resolve_tested_model to a versioned model and
asserting the returned UnitTestPathsPayload.yaml/fixtures contain the versioned
path; (2) in the domain scope tests (tests for
resolve_tested_model/Scope-related behavior) add a file-local versioned-model
fixture exercising the tested_node_unique_id branch and assert resolution; and
(3) in preflight tests (preflight.rs) add a corresponding versioned-model
fixture and assert preflight error naming uses the engine-resolved
tested_node_unique_id. Reference functions/structures: unit_test_paths_by_model,
resolve_tested_model, UnitTestPathsPayload, and the preflight error naming code
path so each layer has one explicit versioned-model test before making further
changes.

In `@src/adapters/render.rs`:
- Around line 2273-2305: Add a render-level regression test that constructs a
Manifest containing a UnitTest whose tested_node_unique_id is the versioned
target (e.g., "model.proj.dim_customers.v2") while its bare `model:` reference
remains unversioned, then call index_tests_for_models (and build_payload if
present in this file's tests) with a ModelInScopeSet containing the versioned
NodeId and assert the returned map uses the versioned NodeId key and includes
the test; ensure the test exercises resolve_tested_model path that reads
`tested_node_unique_id` so the indexer cannot regress back to bare-name binding.

---

Nitpick comments:
In `@src/domain/checks.rs`:
- Around line 1150-1152: Add a detector regression test that exercises the
versioned-model resolution path for resolve_tested_model: create a manifest with
two versions of the same bare model name and a tested node having
tested_node_unique_id that should pick the correct versioned model, then assert
resolve_tested_model(ctx.manifest, ut) returns Some(model) whose id() equals
ctx.model.id() (covering the ambiguous bare name + tested_node_unique_id
scenario); place the test before changing domain logic per TDD, use the same
test harness/setup used by existing checks in this module and target the
iterator/filter case that uses resolve_tested_model so the regression cannot
revert to leaf-name-only matching.

In `@src/domain/unit_test.rs`:
- Around line 754-799: Add a table-driven test in src/domain/unit_test.rs that
exhausts the 2x2 matrix and wire variations for tested_node_unique_id and
this_input_node_unique_id (covering
(None,None),(Some,None),(None,Some),(Some,Some) using bare_unit_test() plus
with_tested_node_unique_id(...) and with_this_input_node_unique_id(...)); for
each case assert tested_node_unique_id() / this_input_node_unique_id() values,
assert serialization includes the key only when Some and omits when None, and
also exercise deserialization from JSON with the key absent and with the key
present as explicit null to ensure tolerant deserialization/skipping behavior
(use the existing resolved_node_ids_default_none_and_skip_keys and
resolved_node_ids_roundtrip_when_present as templates).

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: 6f5c89e4-44c2-4bdd-b356-db10962ff631

📥 Commits

Reviewing files that changed from the base of the PR and between b2315c3 and 856e2d2.

📒 Files selected for processing (9)
  • src/adapters/explore.rs
  • src/adapters/manifest.rs
  • src/adapters/render.rs
  • src/domain/checks.rs
  • src/domain/mod.rs
  • src/domain/preflight.rs
  • src/domain/scope.rs
  • src/domain/state.rs
  • src/domain/unit_test.rs

github-actions Bot and others added 2 commits June 11, 2026 21:32
…tor chain

Review feedback (gemini-code-assist on PR #263): replace the if-let
early-return with a single .or_else() chain. Behavior-identical — the
dangling-id and non-model fallback paths are pinned by
resolve_tested_model_falls_back_when_the_id_dangles and
resolve_tested_model_falls_back_when_the_id_names_a_non_model.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@cmbays
cmbays merged commit d9f75b2 into main Jun 12, 2026
33 checks passed
@cmbays
cmbays deleted the domain-254-versioned-model-resolution branch June 12, 2026 02:20
@cmbays

cmbays commented Jun 12, 2026

Copy link
Copy Markdown
Contributor Author

Orchestrator wrap-up (overnight session). Merged at d9f75b2 after: gate green (33/33 checks), the one Gemini thread probe-confirmed behavior-identical and applied (resolve_tested_model combinator chain; both dangling-id fallback paths pinned by existing tests), zero unresolved threads, goldens byte-identical, issue #254 auto-closed and verified. Consumer-audit follow-ups (model name ingestion, display labels, given-ref resolution) handed to #256 — now firing as part of the comprehensive ingestion-wave session (ops vault ingestion-wave-brief.md).

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.

domain: versioned-model name resolution mis-binds (leaf_segment returns the version suffix) — ingest tested_node_unique_id

1 participant