Repository navigation
feat(fleet): active, settled, and retired sections across squadrons - #242
Conversation
|
Claimed for review by Jackson with Claude Fable 5.1 and GPT-6-Astra (the crews review thread). Other agents: please skip this one. |
The single J5 CI job ran format, lint, typecheck, and every package's tests serially and had crept up to its 20 minute timeout with all tests green; the PR run for #242 was cancelled at 20m03s while its push twin passed at 19m19s. Split the job the way upstream ci.yml does: a checks job for format, lint, and typecheck, a test job for every package except the server, and three server shards, since the server suite runs files one at a time and alone took over eleven minutes. A gate job keeps the check name the default-branch ruleset requires and fails when any split job fails, is cancelled, or is skipped. Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
b90ac17 to
37cd4a4
Compare
|
#254 landed on option A: an archive touches one agent, and a Captain's archive still retires its Crews for now. I rebased this onto the reworked #244 and #241's Captain link. The partition reads only current placement and upstream's settle facts, so the child of an archived agent now renders at the Squadron root in whichever section it belongs to, and each retired Crew row across Squadrons keeps the Captain line from #241. I also dropped the partition's client-side filter for archived threads (37cd4a4). The client's thread shells never carry archived threads, so it could never fire; the roster read is what keeps a retired agent off the page. When the Captain→Crew cascade comes out, that PR also needs to group a Captain-less Crew at the root so it still settles as a unit (fleet-page AC31). Merge order: top of the fleet stack, so #241 merges first, then #244, then this. |
Jacksondr5
left a comment
There was a problem hiding this comment.
Rebased cleanly on the reworked #244 and #241's Captain line. The partition reads only current placement and upstream's settle facts, a child of an archived agent renders at the Squadron root in whichever section it belongs to (tested), retired rows keep the Captain line, and the dropped archived-thread filter is safe: the server snapshot splits archived threads out, the shell stream turns an archive into a removal, and the shells atom reads only the active set, so the filter could never fire. Approving, to merge after #244.
One consistency nit: thread.archivedAt !== null on the retired-row branch can never be true by the same argument; keep both checks or neither. And the AC31 note (a Captain-less Crew groups at the root and settles as a unit) is only in your comment, which is fine for the cascade-removal PR to pick up.
Reviewed by Claude Fable 5.1 in Claude Code, with an independent pass by GPT-6-Astra in Codex.
The Fleet page showed one table per Squadron with every Crew expanded, so a person could not tell at a glance what was still in motion. The page now has three sections. Active is one table across every Squadron of every connected environment, with a Squadron column on each tree's root row and Crew expanders collapsed by default. Settled is a collapsed expander holding the trees whose every agent, Crew seats included, reads as settled from upstream's settle mechanic; idle and unknown stay Active, and a mixed tree is never split. Retired is one collapsed list of archived Crews across Squadrons, each row naming its Squadron. The partition is a pure function with focused tests, and the Fleet page product definition now describes the built page. Designed, built, and reviewed by a J5 crew under Claude Fable 5.1. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ives The client's thread shells hold only unarchived threads (the shell snapshot splits archived ones out), so the partition's "drop an agent whose thread shows archived" filter could never fire, and its comment promised a stale-read guard that did not exist. The roster read already leaves retired agents out, so the filter goes and the test now covers what does happen: the child of a retired agent roots in its own section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
37cd4a4 to
3fb3bd0
Compare
Joins fork head 2cf4ad7 (j5/main, including #247, #241, #244, #242, #214, #215, #216, #248, #249, #250, #251) with the reviewed candidate (j5/upstream-sync-20260924-candidate), which descends from frozen upstream 67a2be0. Upstream force-rewrote history, so per FORK.md's rewrite runbook the candidate was built from the upstream tree with pin 62aef85 as the content base, then carried each j5/main PR since 8f56083 onto it and adapted it to upstream V2. This merge's tree equals the candidate tree exactly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Fleet page showed one table per Squadron with every Crew expanded, so I could not tell at a glance what was still in motion, what was done, and what had retired.
The page now has three sections. Active is one table across every Squadron of every connected environment, with a Squadron column on each tree's root row (the environment label joins it only when several environments merge) and Crew expanders collapsed by default. Settled is a collapsed expander holding the trees whose every agent, Crew seats included, reads as settled from upstream's settle mechanic; idle and unknown stay Active, a mixed tree is never split, and a settled root held in Active by a working child says "Settled" in its status cell. Retired is one collapsed list of archived Crews across Squadrons, each row naming its Squadron. The partition is a pure function in
fleet.logic.tswith focused tests, and the Fleet page product definition now describes the built page (the one-Squadron-at-a-time page in the old criteria was never built, so those criteria are replaced in place).Stacked on #244, which makes a retired agent never a row; the partition depends on that. Only J5-owned files change, so the FORK.md inventory is unchanged. Mobile has no Fleet page.
Verified with the fleet logic tests (9 passing), the web typecheck, lint on the changed files, and a visual pass on a dev server seeded from real data.
Before
After, default
After, Crew and Retired opened
A settled Captain with idle seats stays in Active
Everything settled: collapsed, then opened
Designed, built, and reviewed by a J5 crew under Claude Fable 5.1 in Claude Code.
🤖 Generated with Claude Code