Skip to content

fix(spec-hygiene): project only active campaigns into active.json (campaign GC) - #283

Merged
ProtocolWarden merged 1 commit into
mainfrom
fix/campaign-projection-active-only
Jun 13, 2026
Merged

fix(spec-hygiene): project only active campaigns into active.json (campaign GC)#283
ProtocolWarden merged 1 commit into
mainfrom
fix/campaign-projection-active-only

Conversation

@ProtocolWarden

Copy link
Copy Markdown
Owner

What

_rebuild_active_projection wrote every campaign group — including complete and cancelled ones — into state/campaigns/active.json, the projection OperatorConsole's campaign pane reads. Terminal campaigns are history (their record lives in Plane), but they accumulated forever, so the status pane filled with finished campaigns.

Observed live: 11 campaign records — 9 cancelled, 1 complete, 1 stale-"active" (already done, spec merged as #266), 0 genuinely active.

Fix

Skip non-active campaigns when rebuilding the projection, so active.json reflects only in-flight work.

Why not a one-time prune?

active.json is rebuilt every spec-hygiene cycle from Plane, so a manual edit is overwritten within minutes. The projection filter is the durable prune — once this lands and the spec watcher picks it up, the pane drops the 10 terminal records automatically.

Test

+1: a mix of active / cancelled / done campaign issues → only the active one is projected. Full spec-hygiene + spec_author suites pass; audit clean; ruff clean.

🤖 Generated with Claude Code

…mpaign GC)

_rebuild_active_projection wrote every campaign group — including complete and
cancelled ones — into state/campaigns/active.json, the projection OperatorConsole's
campaign pane reads. Terminal campaigns are history (their record lives in Plane),
but they accumulated in the projection forever, so the status pane filled with
finished campaigns (observed: 11 records, 10 terminal, 0 genuinely active).

Skip non-active campaigns when rebuilding the projection so active.json reflects
only in-flight work. A one-time manual prune of active.json does not stick — the
file is rebuilt every spec-hygiene cycle — so this projection filter is the durable
prune. +1 test (a mix of active/cancelled/done issues → only the active one is
projected).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ProtocolWarden
ProtocolWarden merged commit 676bec1 into main Jun 13, 2026
17 checks passed
@ProtocolWarden
ProtocolWarden deleted the fix/campaign-projection-active-only branch June 13, 2026 23:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant