Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,20 @@ jobs:
# unchanged, so a drift is still REPORTED red there on the commit that introduced it; this job
# heals it for the next one rather than hiding it.
#
# Converges without a loop guard: the commit it pushes re-triggers this workflow, that run finds
# no drift, writes nothing, and pushes nothing.
# WHY THERE IS NO LOOP, and the first version of this comment got the reason WRONG. It claimed
# "the commit it pushes re-triggers this workflow, that run finds no drift, and pushes nothing".
# It does not re-trigger anything: a push made with the default GITHUB_TOKEN does not start a
# workflow run at all. Measured on the first real reconcile (2026-08-23): the pushed commit
# 349cb1c6 has ZERO workflow runs. So the loop is impossible, but for a stronger reason than
# convergence.
#
# TWO CONSEQUENCES, both of which the wrong reason hid:
# * the reconcile commit is never verified by ci.yml. Harmless as written -- it changes only
# the two integers this run just measured -- but it does mean main carries a commit CI never
# saw, so keep this job's write narrow enough that that is obviously safe.
# * IF ANYONE SWAPS THIS FOR A PAT OR AN APP TOKEN to get CI on the commit, the loop becomes
# REAL and this job needs an explicit guard. That is the change to be careful about, and the
# old comment would have told you it was already handled.
reconcile-floor:
name: reconcile the collection floor (main only)
# Never on a pull_request: a PR's floor is the author's claim about their own delta, and
Expand Down
7 changes: 6 additions & 1 deletion verify.py
Original file line number Diff line number Diff line change
Expand Up @@ -658,8 +658,13 @@ def _cap(key: str) -> str:
)
FLOOR.write_text(json.dumps(blob, indent=1) + "\n", encoding="utf-8")
wrote_floor = True
# Report the number WRITTEN, not `py["passed"]`. The blob records `passed + skipped`
# (machine-invariant, see above), so printing the bare pass count made the line disagree
# with the file it had just written: the first production run logged `passed=416` while
# recording 442. A log that contradicts the artifact is how a correct write comes to look
# like a bug -- and how a real one could hide.
lines.append(
f" floor updated: collected={py['collected']} passed={py['passed']} "
f" floor updated: collected={blob['collected']} passed={blob['passed']} "
f"(ceilings preserved)"
)

Expand Down
Loading