Daily harness signal · October 1, 2026

Git-clean.
Not evidence-empty.

One implementation lesson · Preserve ignored agent records

A clean Git status does not mean a worktree contains nothing unique. Inspect ignored agent records before cleanup; waiting for Git to refuse removal can lose them silently.

Evergreen · source August 26, 2026

Put preservation before removal dispatch

Use when

An agent finishes, abandons, or resumes work whose ignored scratch directory holds rulings, review reports, or restart evidence. Superpowers stores these under .superpowers/sdd/; ordinary worktree removal can delete them without --force.

Action

Add a pre-removal gate to the existing cleanup workflow. Attest the exact worktree, stop writers, then inventory with git -C "$WORKTREE_PATH" status --porcelain=v1 -z --untracked-files=all --ignored=traditional. Parse NUL-delimited records and inspect the SDD directory directly. An unreadable inventory, unresolved ignored content, or live/restart dependency blocks cleanup. Keep the tree pending authorized disposition. Preserve required records only at an approved private destination; verify bytes, plan/run identity, and consumer readability before any separately authorized removal. Directory names do not prove ownership. Never escalate to force to silence a refusal.

Acceptance check

In an authorized disposable fixture, place RULING_SENTINEL in .superpowers/sdd/plan/progress.md beneath a self-ignoring * rule. Ordinary status may be clean; guarded cleanup must dispatch no removal and preserve the sentinel. Repeat with ignored dummy .env data, untracked notes, and inventory failure. After approved, verified preservation and all dependency/authorization checks, a removal stub must admit only the exact eligible fixture. Retain version, inventory, dispatch log, disposition, and before/after evidence.

Evidence

Issue 2207 provides a versioned Linux reproduction. Tagged Superpowers 6.4.1 still waits for Git’s refusal, while its workspace helper writes the ignore rule. Git 2.55.0 source independently shows a status check without --ignored, followed by recursive deletion. Official documentation explains the missing ignored paths.

Caveat

The proposed upstream guard remains open; no shipped repair or local runtime test is claimed. Git history cannot restore rulings that were never committed. Ignored does not mean disposable, and an inventory does not prove live-dependency safety or grant deletion permission. Treat secrets as private data, not material to commit automatically. This newsletter authorizes no cleanup, skill change, or evaluation.

Compact source notes

  1. kareemsasa’s reproduction, August 26, 2026: Superpowers 6.3.0, Git 2.55.0, Linux. Single field report; the author preserved the real workspace before removal. This is not an observed production data-loss incident.
  2. Tagged cleanup instructions and workspace helper; release September 19. Retrieved moving-main/history views lag or differ; no live-latest assertion.
  3. Git 2.55.0 implementation, functions check_clean_worktree and delete_git_work_tree; status and worktree manuals, retrieved today. Traditional ignored mode plus all-untracked expands ignored directories; matching mode can collapse them. Tagged tests cover dirty, untracked and locked paths, not this ignored-evidence fixture. Tests inspected, not run.
  4. Proposed preservation guard, August 27, still open despite displayed merge-commit metadata; test plan reports Markdown consistency only. September 27–29 cleanup-scope proposal is also open and addresses a different concern, not ignored-data preservation.
  5. Anchor lens: exact ignore rule, refusal ordering and Git deletion path. Unity lens: protect unique evidence before an irreversible transition; proposed invariant. Static mechanism: confidence_confirmed; adaptation: confidence_likely. Any removal dispatched with unresolved ignored evidence falsifies the gate. Existing stricter approval and live-dependency policies remain binding.