a672f91d90
Rig rebuilt from this branch (image built at d8979664; migration 20260914173147_AddSiteArtifactRevision applied by central-b on boot). verify-pending-updates.sh drives the CLI end to end: the site list carries the artifact-revision fields, a fleet-wide deploy stamps every site with a sha256:<64 hex> hash and a fresh timestamp, creating a shared script leaves the stamp alone until the next deploy and then moves EVERY site's hash, and deleting it again returns every hash byte-for-byte to its pre-create value — so the hash is content-addressed, not deploy-addressed. PASS 13 / FAIL 0. Step A asserts the SHAPE rather than key presence: the management API serializer omits null properties, so on a never-deployed site the two keys are absent, not present-and-null. Step E is a soft reachability check only; the badge text and the rail indicator land after the Blazor circuit's post-render load. PendingUpdatesTests covers that browser half — the rail footer settles off "Checking for updates…", the Sites page carries an Artifacts badge per site card plus a working Re-check control, and the rail nav's scroll pane computes overflow-y: auto at lg+. 3/3 passed against the rig (rail read "Up to date", 3 badges over 3 cards, all "Artifacts current"). Claude-Session: https://claude.ai/code/session_01Y5ef34iUUMjmwnMpL9xgmB