Difficulty: Beginner · You'll need: Markdown · Size: docs only
What's going on
container.remove is implemented across the agent, protocol, server and dashboard, but the documentation still describes a system without it.
| File |
What it says |
What is true |
docs/roadmap.md |
"Container lifecycle: start, stop, restart, with correlated results" under Completed |
delete also works |
docs/protocol.md |
no container.remove entry |
the message exists with a force flag |
docs/websocket-protocol.md |
lifecycle section lists three verbs |
there are four |
docs/architecture.md |
command-flow diagram uses restart as the example |
fine, but the verb list around it is stale |
docs/architecture.md also still shows packages/types/, packages/config/ and packages/utils/ in the repository-layout tree. None of those directories exist — packages/protocol/ is the only package.
Why it matters
docs/roadmap.md opens by promising it is "deliberately conservative: a feature appears under Completed only when it works end-to-end on a real host." A roadmap that under-reports is as misleading as one that over-reports — contributors pick up work that is already done, and #29 was filed for exactly this failure mode with metrics.
The work
- Add delete to the Completed lifecycle line in
docs/roadmap.md
- Document
container.remove in docs/protocol.md and docs/websocket-protocol.md: payload fields, that force is optional, and that absence means false — an omitted flag gets Docker's own refusal to remove a running container
- Note that
ContainerAction in container.result now has four values
- Fix the repository-layout tree in
docs/architecture.md to list only packages/protocol/
Worth documenting explicitly
The force semantics are the non-obvious part and are currently only written down in a code comment. The rule — absent means false, so an older or malformed message gets the safe behaviour — is repeated deliberately in four places (Go bool zero value, TypeScript optional property, the server's default parameter, the DTO's @IsOptional()). That reasoning belongs in the protocol docs.
Done when
Difficulty: Beginner · You'll need: Markdown · Size: docs only
What's going on
container.removeis implemented across the agent, protocol, server and dashboard, but the documentation still describes a system without it.docs/roadmap.mddocs/protocol.mdcontainer.removeentryforceflagdocs/websocket-protocol.mddocs/architecture.mddocs/architecture.mdalso still showspackages/types/,packages/config/andpackages/utils/in the repository-layout tree. None of those directories exist —packages/protocol/is the only package.Why it matters
docs/roadmap.mdopens by promising it is "deliberately conservative: a feature appears under Completed only when it works end-to-end on a real host." A roadmap that under-reports is as misleading as one that over-reports — contributors pick up work that is already done, and #29 was filed for exactly this failure mode with metrics.The work
docs/roadmap.mdcontainer.removeindocs/protocol.mdanddocs/websocket-protocol.md: payload fields, thatforceis optional, and that absence meansfalse— an omitted flag gets Docker's own refusal to remove a running containerContainerActionincontainer.resultnow has four valuesdocs/architecture.mdto list onlypackages/protocol/Worth documenting explicitly
The
forcesemantics are the non-obvious part and are currently only written down in a code comment. The rule — absent meansfalse, so an older or malformed message gets the safe behaviour — is repeated deliberately in four places (Goboolzero value, TypeScript optional property, the server's default parameter, the DTO's@IsOptional()). That reasoning belongs in the protocol docs.Done when
container.removeis documented in both protocol pages with itsforcesemanticsdocs/roadmap.mdlists container deletion under Completeddocs/architecture.mdrepository layout matches the actualpackages/contents