Problem
4 specs in openspec/specs/ still carry the literal Spectra archive-stub Purpose:
TBD - created by archiving change ''. Update Purpose after archive.
This is the exact opacity bug just fixed for idd-orchestrator-modes (renamed → idd-pr-hitl-modes + real Purpose; commit b6fd718, v2.76.1). The stub is opaque on sight — a reader cannot tell what the spec governs ("modes of what?").
| Spec |
Stub origin (source change) |
idd-all-chain |
add-idd-all-chain-skill |
idd-ic-r011-checkpoint |
idd-ic-r011-default-file |
idd-spawn-manifest |
add-idd-all-chain-skill |
idd-worktree-isolation |
idd-worktree-isolation |
Audit note: append-vs-modify-discipline showed up in the grep but is a false positive — its Purpose is real ("Defines the action-scoped modify discipline…"); the word "TBD" just appears in the body. NOT in scope.
Root Cause
Spectra archive materializes a new capability from a delta that has no ## Purpose (Purpose is not in the delta schema), so it writes the TBD … Update Purpose after archive stub and relies on a human to fill it later — with zero enforcement. Nobody filled these 4.
Proposed Solution
Mechanical, doc-only, zero behavior change — same move as the idd-pr-hitl-modes fix: give each of the 4 specs a real, intent-revealing one-sentence Purpose stating what the capability governs. Direct edit of each openspec/specs/<name>/spec.md Purpose section (the delta model cannot express a pure Purpose-fill — see Prevention).
Scope boundary (this is NOT "spec every skill")
Purpose-quality only, NOT spec-coverage. We are explicitly NOT speccing every idd skill — that is over-spec (per idd-diagnose Step 3.5 Layer 1: Plan/Spectra is dead weight for prose / no-external-contract skills). Skills like idd-comment / idd-config / idd-report / idd-edit being prose-only is correct, not a gap. This issue touches ONLY the Purpose text of specs that already exist.
Prevention (structural pairing)
This issue is the backlog (pre-existing stubs). The structural prevention (have archive/validate lint/flag any spec whose Purpose is still the TBD-stub, so promoted specs cannot silently ship opaque) was raised upstream as an inquiry to the Spectra maintainers: kaochenlong/spectra-app#100 — framed as questions, since Spectra is a closed app and this is a behavioral observation against spectra 2.3.1, not verified against source. (Note: the in-app spectra feedback CLI turned out to be a local echo pointing to a dead URL; the live repo is kaochenlong/spectra-app, not the kaochenlong/Spectra the binary prints.) If/when such a lint lands, no new stubs can appear; these 4 are the pre-lint backlog.
Success Criteria
- All 4 specs above have a real Purpose (no
TBD … Update Purpose after archive string remains in any openspec/specs/*/spec.md).
grep -rl "Update Purpose after archive" openspec/specs/ returns empty.
- No behavior change; no requirement deltas.
Source: surfaced during /idd-diagnose #164 + /spectra-discuss (naming + Purpose lesson; sister of the idd-orchestrator-modes → idd-pr-hitl-modes rename, commit b6fd718)
Current Status
Phase: closed
Last updated: 2026-06-01 by idd-close
Key Decisions
Scope Changes
Blocking
Commits
Verification
Problem
4 specs in
openspec/specs/still carry the literal Spectra archive-stub Purpose:This is the exact opacity bug just fixed for
idd-orchestrator-modes(renamed →idd-pr-hitl-modes+ real Purpose; commitb6fd718, v2.76.1). The stub is opaque on sight — a reader cannot tell what the spec governs ("modes of what?").idd-all-chainidd-ic-r011-checkpointidd-spawn-manifestidd-worktree-isolationAudit note:
append-vs-modify-disciplineshowed up in the grep but is a false positive — its Purpose is real ("Defines the action-scoped modify discipline…"); the word "TBD" just appears in the body. NOT in scope.Root Cause
Spectra archive materializes a new capability from a delta that has no
## Purpose(Purpose is not in the delta schema), so it writes theTBD … Update Purpose after archivestub and relies on a human to fill it later — with zero enforcement. Nobody filled these 4.Proposed Solution
Mechanical, doc-only, zero behavior change — same move as the
idd-pr-hitl-modesfix: give each of the 4 specs a real, intent-revealing one-sentence Purpose stating what the capability governs. Direct edit of eachopenspec/specs/<name>/spec.mdPurpose section (the delta model cannot express a pure Purpose-fill — see Prevention).Scope boundary (this is NOT "spec every skill")
Purpose-quality only, NOT spec-coverage. We are explicitly NOT speccing every idd skill — that is over-spec (per
idd-diagnoseStep 3.5 Layer 1: Plan/Spectra is dead weight for prose / no-external-contract skills). Skills likeidd-comment/idd-config/idd-report/idd-editbeing prose-only is correct, not a gap. This issue touches ONLY the Purpose text of specs that already exist.Prevention (structural pairing)
This issue is the backlog (pre-existing stubs). The structural prevention (have archive/validate lint/flag any spec whose Purpose is still the TBD-stub, so promoted specs cannot silently ship opaque) was raised upstream as an inquiry to the Spectra maintainers: kaochenlong/spectra-app#100 — framed as questions, since Spectra is a closed app and this is a behavioral observation against spectra 2.3.1, not verified against source. (Note: the in-app
spectra feedbackCLI turned out to be a local echo pointing to a dead URL; the live repo iskaochenlong/spectra-app, not thekaochenlong/Spectrathe binary prints.) If/when such a lint lands, no new stubs can appear; these 4 are the pre-lint backlog.Success Criteria
TBD … Update Purpose after archivestring remains in anyopenspec/specs/*/spec.md).grep -rl "Update Purpose after archive" openspec/specs/returns empty.Source: surfaced during /idd-diagnose #164 + /spectra-discuss (naming + Purpose lesson; sister of the idd-orchestrator-modes → idd-pr-hitl-modes rename, commit b6fd718)
Current Status
Phase: closed
Last updated: 2026-06-01 by idd-close
Key Decisions
d7ea0a9.Scope Changes
Blocking
Commits
d7ea0a9chore: fill TBD-stub Purpose for 3 specs ([chore] 4 specs still carry the TBD Purpose archive-stub (idd-all-chain, idd-ic-r011-checkpoint, idd-spawn-manifest, idd-worktree-isolation) #180)Verification