joulespec: applied to a standard that is not its own, which found a mis-aimed mutation #570
Loading…
Reference in a new issue
No description provided.
Delete branch "joulespec/applied"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A producer that has only ever measured its own specification has demonstrated a format, not a method. This points it at the proof standard.
proof/conformance/v1/joulespec.tomlreads that standard's conformance items from its own published §8 — a bulleted list with bold labels, declared as such because the shape is a fact about the document — and maps each to a named check inproof-rs, with a counter-artifact per mapping.Attestation is reported absent, not
A0: no work was declared, so no implementer is known, and absence of information about who built something is not evidence that someone else checked it.The measurement lands in its own subdirectory rather than beside that standard's vectors, which answer a different question. Its energy comes from a wall clock, so it is a measurement, not a vector — re-running changes the bytes, and its README says so.
What producing it found
The first counter-artifact for C1 aimed at
Tier::LADDER, assuming the router iterated that constant. It does not — the constant is read only by the monotonicity checks, and the router sorts the solvers it is handed. Sotrivial_closes_at_t0_no_wastepassed with the constant reordered, and the harvester reported that the check could not see its subject.The report was right and the manifest was wrong. That distinction is the whole reason the producer reports what it observed rather than concluding: a check that passes while something it should notice is broken is either a weak check or a mutation that missed, and only an operator can say which. Re-aimed at
Router::new's sort, the same check fails at once — so the check was strong all along, and C1's evidence is real rather than assumed.A first hypothesis, that z3's absence from the harvest's
PATHexplained it, was refuted before the real cause was found: with z3 on the path the check still passed.CI
applied: <manifest>is a separate step from the existing self-conformance harvest, because that one builds the producer from the workspace under test — which only works where the workspace under test is the producer's. This one builds the producer from its own workspace and runs it against someone else's.The build and the path lookup are deliberately separate commands: folded into one substitution, a build failure yields an empty path and the step reports "no such file" instead of the compiler error. No
--out, since a receipt written in CI would dirty the tree and its figures differ every run. The exact sequence the step runs was executed on the build host before being committed:E3, 0 open, 0 flags, clean tree.🤖 Generated with Claude Code