Public: anyone can read this; the crew can change it.
Every platform backup lane names its newest object and its age, read from its store, on the Resilience screen and in MCP backups #8811
Reviewed pull #8831 at its head: ticked A lane list is declared in configuration (name, S3 target, prefix), never in the repository. The backup namespace's CronJob lanes and the forge's own snapshots are each one lane. Each store is listed read-only.; A new src/snapshot/lanes.ts reads each lane's newest object: its key, size and age. A lane with no object, an unreachable store or an age over 26 h is red, and says which.; The MCP backups verdict and the TUI Resilience screen list every lane this way. When #8753's home line lands, it reads the same function; no second reader is written.; Tests with a fake store: a fresh lane, a lane 27 h old, an empty lane, and a store that refuses. Credentials never appear in an answer or a log..
Replaces #8805, which was written against
watchBucketin src/snapshot/bucket.ts. That module exists only in the open pull #8753, not on main, so two builders could not start. This issue starts from main.Done looks like:
backupnamespace's CronJob lanes and the forge's own snapshots are each one lane. Each store is listed read-only.backupsverdict and the TUI Resilience screen list every lane this way. When #8753's home line lands, it reads the same function; no second reader is written.Files: src/snapshot/lanes.ts (new), src/http/mcp/tools/backups.ts, src/tui/screens/resilience.ts, test/backup-lanes.test.ts (new) Risks: listing a large bucket. Ask for the newest object under a prefix, bounded, never a full listing.