docs(campaign): correct the workspace-retention claim in board-campaigns - #49
Merged
Merged
Conversation
The Lifecycle section claimed that every already-launched worker, source, and workspace remains retained for explicit operator action. That has been untrue since #42: a running campaign sweeps cleanup candidates on its own, bounded by SNOWCAT_COCKPIT_RETAIN_WORKSPACES. Keep the true stop boundary (stop stops no worker and deletes no source, terminal, or workspace) and state the implemented in-campaign behavior: candidate eligibility, the count/duration bound and its default of 20, the explicit-zero sweep, and the failed-worker and cleanup-refusal exceptions. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01UigLsmd17TVDuaaSN4yfdU
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
docs/design/board-campaigns.md's Lifecycle section still claimed that"Already-launched workers and every source and workspace remain retained for
explicit operator action." That has been untrue since #42 ("clean terminal
worker workspaces automatically"): a running campaign sweeps cleanup
candidates on its own.
This change is documentation only — no Go, script, workflow, or contract file
is touched.
preflight, observation, and launch calls, but stops no already-launched
worker and deletes no source, terminal, or workspace.
candidate only when its provider process exited cleanly (never one reported
failed) and its exact attempt correlation reached a terminal Snowcatoutcome, or it was a stabilized worker whose lane found nothing to claim
(
markCleanupCandidatecall sites ininternal/campaign/campaign.go).SNOWCAT_COCKPIT_RETAIN_WORKSPACESand its parsing: a non-negativeinteger count of the newest candidates to keep, defaulting to 20
(
defaultRetainWorkspacesincmd/snowcat-cockpit/main.go), or a durationsuch as
6h; an explicit0cleans every eligible candidate on each sweep.reached a terminal outcome, and any candidate whose cleanup is refused (an
unclean tree, for example) stay retained, and a refused candidate is
reconsidered on the next tick. Names the
workspacesCleanedandlastCleanupAtrecord fields.Wording is kept consistent with
README.mdand clause 12 ofdocs/specs/repositories-and-board-campaigns.md, which already describe thisbehavior correctly.
Resolves Snowcat item
docs-drift-fix(e5b46e65-3b06-4574-a4bc-40e5d8e26f6f).Risk tier
Risk tier: Tier 1 (Low) — a single design document's prose. No runtime
behavior, credential projection, worker authority, networking, lifecycle,
workflow, or protected boundary changes; the diff removes a stale claim and
describes code that already shipped in #42.
Boundary check
automatic candidate sweep this text now documents was introduced by fix(campaign): clean terminal worker workspaces automatically #42
and is a caller of the explicit cleanup contract, not a change to it:
a cleanup refusal still leaves the workspace retained exactly as manual
cleanup does, and every non-eligible worker still awaits explicit
operator action.
Docs housekeeping
TEMPLATE.md— n/a, no doc addeddocs/README.md— n/a, no doc addedADR-0008/ADR-0009, spec, and plan links are unchanged and still resolve
(
node scripts/check-docs.mjs: 32 docs, 315 links, 10 symlinks, all ok)Verification
make ci— exit status 0 on this branch. Tail:go test ./cmd/snowcat-cockpit ./internal/campaignWorkflow changes pass
actionlint— n/a, no workflow changed;actionlintran green as part ofmake cianyway.Every action is SHA-pinned with a version comment and checkout disables
persisted credentials — n/a, no action or workflow touched.
🤖 Generated with Claude Code
https://claude.ai/code/session_01UigLsmd17TVDuaaSN4yfdU