Repository navigation
test(relay): the pin test's message says what it pins, not what the bytes are not - #1033
Conversation
🦋 Changeset detectedLatest commit: 712cce5 The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the
|
[Low impact] This change appears safe to merge.
|
Closes #1028 — but see the note at the end: the keyword will not close it on this base.
The pin test's failure message said:
"the bytes are the wire contract"They are not. The refusal word never crosses the wire: it is a process-local
AtomicU8onAccount, written only byAccount::refuseand read only byAccount::refusal. The type's own doc says so twenty lines above (sink.rs:92-98, "Not reachable from the wire"), so the test's explanatory text contradicted the type it explains.The message now states the invariant the assertion actually holds:
Two files,
+12/−1: that line, and an empty-fronted changeset.Verification
No test observes this string, and the job's spec says so rather than dressing a green suite as proof: changing only the message leaves the suite at 259 passed / 0 failed. The sentence's truth is a read, and the evidence for it is: the assertion compares the three constants to the literals
(0, 1, 2);word()'s arms return those constants; the type is#[repr(u8)]with variants assigned from them; and the loop below holds the stored byte toword(). Re-measured rather than argued — withQUEUE_FULLset to4in a scratch copy the suite goes 258 passed / 1 failed and the new sentence prints verbatim withleft: (0, 4, 2).Observations from this job (first run on factory 0.12.9)
Recorded because they are findings about the pipeline, not caveats about this diff.
"oracle": "passed"when the only falsifiable claim is a reading.scope-plan.tschecks a plan's shape, not whether its oracle is mechanical; on this job it acceptedpassedon the strength of a grep and a one-test selector. Correct by its rules, and worth naming, because a prose job is exactly where that reads stronger than it is. Filed as cameri/skills#224.confirmationwas unreachable on 0.12.9 for any plan that stands a lens down.scope-plan.ts:256requires every lens not run to bePASS, which does not distinguish a lens the gate held back from one the plan stood down. Round 3 therefore ran three lenses where one would have done — four sessions instead of two, a 2x on that round — and the fix is in 0.12.11, which accepts the second case using the round'splanline.CHANGESon job state, not on the change. Round 2's architecture review opened "My round-1 finding is closed on all four grounds, and the code half of this round needs no further change", then blocked onspec.md— untracked, unshipped, invisible to anyone reading this diff. In round 3 the same lens named it: "aCHANGESthat the builder can only satisfy by editing an untracked file is a gate no code change opens; the correct instrument was a non-blocking finding." The finding was real and is fixed; the verdict was the wrong instrument.constfor the message had one consumer, deduplicated nothing, and contradicted every other message in that module; it was deleted. Round 2's finding was record repair, and only round 3 could confirm it. The cost is stated plainly because it is the number that argues for the rules above.One follow-up filed from the review: #1032 — a byte re-pin now needs three edits (constants, tuple, sentence) and only two are test-held, so
grep -n 'pinned to 0, 1, 2'is the only reminder of the third.Note on the keyword
Closes #1028does nothing on this repository: GitHub closes by keyword only when the pull request targets the default branch, and this targetsrewrite/main. Whoever merges closes the issue by hand and reads the state back.