Harden the trail list --mine merge and match the plain list's JSON
main·
Commit
- --mine --json items now have the plain
trail list --jsonitem shape (camelCase api.ProjectTrail, with the project inline), plus phase and lastActivityAt, instead of the cells' snake_case items. - Each region's items are read in its own callback: an unreadable item (bad or missing last_activity_at, wrong types) is left out and its region reported partial, and an item without an id is skipped, instead of failing the whole list.
- Duplicates keep the newest copy (latest activity, then metadata update), and the page is ordered by activity with ties by id, as the web sidebar does.
- A 401/403 from any region fails the command, since every region gets the same credentials.
- Partial entries name the region with status, code and request ID only; an error body (possibly an HTML error page) goes to the debug log.
- Partial warnings go to stderr with --json too.
- The default-cluster-per-jurisdiction choice is shared with the cell fan-out through defaultClusterByJurisdiction.
- api-routing.md states where the CLI differs from the sidebar: it lists the regions that answered instead of failing on any outage.
Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com Entire-Checkpoint: 01M6GXKWEWBGCMEHVKEYFGW8BH