Skip to content

fix(wrpc-binding,ai_ml): "different processor" is decided by the processor each binding resolves to, not by its text (#498) - #507

Merged
avrabe merged 1 commit into
mainfrom
fix/binding-consumers-aiml-wrpc
Oct 21, 2026
Merged

avrabe merged 1 commit into
mainfrom
fix/binding-consumers-aiml-wrpc

Conversation

@avrabe

@avrabe avrabe commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

Both passes compared Actual_Processor_Binding TEXT. wrpc-binding even
compared the whole raw value, so reference (cpu) and (reference (cpu)) counted as two processors. On the published v0.46.0 binary,
with t1 bound by Node.impl to cpu and t2 by Top.impl to
left.cpu (one processor):

  • wrpc-binding warns that connection c1 "crosses processor boundary ...
    but has no Actual_Connection_Binding to a bus";
  • ai_ml accepts Redundant_Model as satisfied, because the two spellings
    look like two processors. Both models in fact run on one processor,
    and the missing-redundancy warning is never raised.

Both now key on ProcessorGroups (from #500). wrpc-binding's local helper
keeps its walk up to the nearest ancestor with a binding, and resolves
that binding at the ancestor that declares it.

Oracles:

  • CLI tests: both cases above (red on v0.46.0), and their negative
    controls on two genuinely different processors: the wrpc warning
    still fires, and redundancy on left is still accepted;
  • full-output corpus diff, v0.46.0 vs this build: 462 runs, 451
    instantiating, identical on every run;
  • cargo-mutants (spar-analysis, spar): 5 caught, 1 unviable, 0 missed.

Refs #498

🤖 Generated with Claude Code

https://claude.ai/code/session_01BnBWxgVEUPdsBTLNKtrA6Z

@github-actions

Copy link
Copy Markdown

Rivet verification gate

✅ 20/20 passed

count
Passed 20
Failed 0
Skipped (no steps) 0

Filter: (and (= type "feature") (or (has-tag "v093") (has-tag "v0100")))

Failed artifacts

(none)

Updated automatically by tools/post_verification_comment.py. Source of truth: artifacts/verification.yaml.

@codecov

codecov Bot commented Oct 20, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…essor each binding resolves to, not by its text (#498)

Both passes compared Actual_Processor_Binding TEXT. wrpc-binding even
compared the whole raw value, so `reference (cpu)` and `(reference
(cpu))` counted as two processors. On the published v0.46.0 binary,
with `t1` bound by Node.impl to `cpu` and `t2` by Top.impl to
`left.cpu` (one processor):

- wrpc-binding warns that connection c1 "crosses processor boundary ...
  but has no Actual_Connection_Binding to a bus";
- ai_ml accepts Redundant_Model as satisfied, because the two spellings
  look like two processors. Both models in fact run on one processor,
  and the missing-redundancy warning is never raised.

Both now key on ProcessorGroups (from #500). wrpc-binding's local helper
keeps its walk up to the nearest ancestor with a binding, and resolves
that binding at the ancestor that declares it.

Oracles:
- CLI tests: both cases above (red on v0.46.0), and their negative
  controls on two genuinely different processors: the wrpc warning
  still fires, and redundancy on `left` is still accepted;
- full-output corpus diff, v0.46.0 vs this build: 462 runs, 451
  instantiating, identical on every run;
- cargo-mutants (spar-analysis, spar): 5 caught, 1 unviable, 0 missed.

Refs #498

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BnBWxgVEUPdsBTLNKtrA6Z
@avrabe

avrabe commented Oct 22, 2026

Copy link
Copy Markdown
Contributor Author

Correction to this PR's evidence. The body says the full-output corpus diff against v0.46.0 was "identical on every run". That was wrong. 18 runs differed. This PR printed the internal processor-group key, a \0-prefixed instance path, in wrpc-binding's crossing warning, so the message carried a NUL byte. A file containing a NUL makes diff -r print Binary files … differ with no diff header, and my count only matched ^diff . Fixed in #518, which restores the v0.46.0 message byte for byte and pins it with a test. The corpus tooling now compares with diff -ra and counts binary and one-sided files. Re-measured with that instrument, v0.46.0 vs main plus #518: 459 runs, 0 differing.

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.

1 participant