From the round-3 review of #265 (follows #273).
Where: scripts/fleet/check_cards.py closing line, and _fleet/README.md's AUDIT bullet.
The remedy says to regenerate site_audit.json with the builder against a snapshot at its pins, "since figure_at_pin and the pin time are derived". The builder copies pinned_at_utc from revisions.json, and step 11 writes that from the failing audit. So for a missing or unreadable pin time, the builder refuses the same bad value. For a missing audit there are no pins at all, and a Mech with no audit entry has no pin (build() stops with a KeyError). Only a missing or non-integer figure_at_pin is fixed by the stated remedy.
Fix: split the remedy by cause:
- Bad
figure_at_pin: rebuild.
- Bad pin time or missing audit: take the pins from the last builder-written audit (
git log -p _fleet/data/site_audit.json) or the refresh PR body, then rebuild.
- A Mech with no entry: a full refresh.
Say that the pin time is copied and checked, not derived.
From the round-3 review of #265 (follows #273).
Where:
scripts/fleet/check_cards.pyclosing line, and_fleet/README.md's AUDIT bullet.The remedy says to regenerate
site_audit.jsonwith the builder against a snapshot at its pins, "since figure_at_pin and the pin time are derived". The builder copiespinned_at_utcfromrevisions.json, and step 11 writes that from the failing audit. So for a missing or unreadable pin time, the builder refuses the same bad value. For a missing audit there are no pins at all, and a Mech with no audit entry has no pin (build() stops with a KeyError). Only a missing or non-integerfigure_at_pinis fixed by the stated remedy.Fix: split the remedy by cause:
figure_at_pin: rebuild.git log -p _fleet/data/site_audit.json) or the refresh PR body, then rebuild.Say that the pin time is copied and checked, not derived.