Skip to content

product(j5): decide what archive, unarchive, and settle mean for agents, Crews, and their children #254

Description

@Jacksondr5

Why this issue

Archive and unarchive keep coming up in every Crews review round, and each round adds machinery: the unit-archive rule, the Captain cascade, the boot sweep, the lone-seat guard on the server, and now #244's proposal to archive every agent placed beneath an archived thread. Each piece is a reasonable answer to the previous piece. Together they mean the platform has opinions about agent lifetime that a person cannot override, and there is no way to move an agent out from under a parent before archiving the parent (placement is immutable: the ledger reserves a participant.reparented event but nothing produces it). Before the next fix, the team should decide what archive is for.

What the words mean today

Upstream has three lifecycle verbs on a thread, all reversible except one:

  • Settle: a marker. The thread leaves the active list and nothing else changes. Set by hand, on a merged PR, or after idle days. Reversible with unsettle.
  • Archive: eviction with teardown. The thread leaves the sidebar, its provider session ends, its run is interrupted. Reversible with unarchive, which restores the thread but not the run.
  • Delete: permanent.

J5 adds a participant on top of a thread, and fourteen server modules react to archive events for that participant: the ledger marks it archived and hidden from the address book, open Exchanges end with a notice to every waiter, inbox items leave, the Captain cascade retires Crews, the seat notifier stops watching, delivery refuses it as a target, and the Fleet drops or placeholders its row. The archive-flow definition (docs/j5/product/features/archive-flow.md) records thirteen criteria for this, and the crews definition adds the unit rule (members never archived alone, a Captain never archived while its Crew lives) and the cascade (a Captain's archive retires its Crews). #244 would extend the cascade to solo spawned agents at any depth.

The questions to settle

  1. Is archive a person's act on one agent, or on a subtree? Today it is one agent, and the cascade is the exception for Crews. fix(fleet): a retired agent is never a row #244 makes subtree the rule. If subtree, there must be a way to move an agent out first, or a way to archive a parent and keep a child, otherwise the person cannot retire a finished Captain without killing a reviewer it spawned that is mid-task.
  2. Does unarchive undo what archive did? Today unarchiving a Captain does not unarchive its Crews or children; the archive-flow criteria say the participant comes back addressable, and nothing more. Either the cascade runs in reverse, or the docs say plainly that archive-with-children is one-way. AGENTS.md: "If you added a way in, add the way out and the way to see it."
  3. Does a Crew have a lifecycle separate from its members? The unit rule says yes: members retire together, and archive_crew needs a signed confirmation over open asks and running turns. Jackson's stated leaning (2026-09-18) is that disposability should come from the work, not from platform enforcement, and that a Crew is at core a group of agents. If so, stop_crew and archive_crew become conveniences, the lone-seat guard and the Captain refusal come out, and a poisoned seat can be replaced without retiring the Crew.
  4. What does settle mean for a J5 participant? The platform used to settle seats on finish and no longer does (2026-09-17). Settle now only affects the Fleet partition in feat(fleet): active, settled, and retired sections across squadrons #242. Is it a J5 concept at all, or purely upstream's marker?
  5. Which doors enforce which rule? Web has the preflight dialog; the MCP verbs have their own refusals; mobile archives with no dialog and no guard; delete bypasses the cascade by design. Every rule that lives in one door and not another produces a "from any surface" finding in review. Decide the set of rules once and put it on the server command path, or accept that mobile is a plain door and say so.
  6. Is placement mutable? If a person can reparent or unplace an agent, most of the subtree questions dissolve: archive stays one-agent, and the person moves what they want to keep first. That is the reserved-but-unbuilt participant.reparented producer.

Options on the table

  • A. One agent, no cascade. Archive touches one participant. Children keep working and re-root in the Fleet (the fix(fleet): a retired agent is never a row #244 read already does this). Crews are a grouping; archive_crew is a batch convenience with the dialog, not a unit rule. Smallest model; it deletes the cascade, the boot sweep for it, the lone-seat guard, and the Captain refusal.
  • B. Subtree, with reparent. Archive takes the subtree, and the person can move an agent out first. Needs the reparent producer, its UI, and a reverse cascade on unarchive.
  • C. Subtree, one-way, documented. What fix(fleet): a retired agent is never a row #244 builds, with the docs saying children are gone and must be restored one at a time. Cheapest to finish, hardest to live with.

Jackson's leaning is A. This issue is for the team to decide before #244 and any further lifecycle PR lands.

Affected open work

#244 (paused on this), #242 (stacked on it), #235/#236 (already being closed under launch-once), the unit-rule criteria in crews.md, archive-flow.md AC10-13, and the direction record in docs/j5/worklog/2026-09-16-crew-command-decoupling.md.

Activity

  1. bryantderosier commented on Sep 23, 2026

    @bryantderosier
    Collaborator

    My call is option A: an archive touches one agent. Placement can't be changed after spawn, so a subtree archive gives the person no way to keep a child they still need, and every rule we layer on ends up living in one door and not the others. With archive scoped to one agent, unarchive is a true reverse, the mobile swipe is correct as a plain door, and the dialog just names what's beneath as facts that keep running.

    Next: #244 lands as the Fleet read only, and a separate PR removes the Captain→Crew cascade, its boot sweep, the lone-seat guard and the Captain refusal, so a Crew becomes a grouping and stop_crew/archive_crew are batch conveniences behind the dialog. That PR also has to group a Crew that outlives its Captain at the Squadron root so it still settles as a unit (fleet-page AC31).

  2. Jacksondr5 commented on Sep 26, 2026

    @Jacksondr5
    OwnerAuthor

    Partly answered on 2026-09-26: Jackson ratified #312. A Crew follows its Captain through archive, delete, unarchive, settle and unsettle. Settle follows upstream's meaning (a marker) and skips seats with pending requests or running work. See the ruling on #312.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions