Twinned from https://github.com/cfsh/ninefold/issues/655 by tools/beads/import_github.py's reconcile pass.
Suggestions from ninefold-reviewer's review of #653. Both are below that PR's gate floor — filed so they are not lost, not to be folded back into #653.
Unclaimed and unlabelled, per CLAUDE.md.
recorded with a time nothing was measured attools/pr/probe_gate.py — the widened skip calls build_record(baseline, already, sha, now), and build_record sets "recorded": now unconditionally (probe_gate.py, build_record).
The per-failure since / sinceDate are carried forward untouched, which was the load-bearing case and is right. But the record's own recorded field becomes the *re-stamp* time. After a run of inert merges — ~3 of every 4, by #653's own measurement — ./tools/pr/probe_gate.py --show reports a recording timestamp for a sweep that never ran, and there is no longer any way to read off when main was last actually swept.
Nothing in the code reads recorded, so this is --show fidelity only, and it is the same class of bookkeeping the re-stamp exists to keep exact.
Shape, if it is worth doing: keep recorded as the measurement time and add a separate field for the re-stamp (restamped, or a measuredAt that only a real sweep moves) — a human reading --show can then tell a carried-forward baseline from a fresh one at a glance.
Ninefold.sln's test project is a sweep input the predicate calls inertprobe_all.build_once runs dotnet build Ninefold.sln, and Ninefold.sln contains both Ninefold.csproj and tests/Ninefold.Tests.csproj — which <Compile Include>s ..\tools\tests\*.cs (tests/Ninefold.Tests.csproj:38).
Both of those paths are godot_inert (tests/… matches the tests segment; tools/tests/… matches the tools/ prefix) and neither is in SWEEP_INPUT_PREFIXES, so a merge touching only them takes the skip.
Before #653 such a merge would have swept, hit a build failure, and returned EXIT_REFUSED → *"probe_all refused to run the sweep — nothing compared or recorded"*. Now it skips and re-stamps.
Contained in practice, which is why this is a follow-up and not a finding on the PR:
merge_pr.py runs presubmit.py --all before the merge, so a non-building sln cannot reach main by the sanctioned path.probe_gate was never the build gate.Worth recording because nflib/godot_build.py and probe_gate.py both argue the skip's licence as *"every input the sweep reads is the one already swept"*, and this is one input that sentence does not quite cover. Either widen the prefixes to include the sln's test half, or narrow the claim in the comment to "every input that can change a probe's RESULT".
None.
No comments.