Files
suaveplan/openspec/changes/corpus-spec-hygiene/tasks.md
2026-05-27 23:29:53 +01:00

3.0 KiB

0. Pre-flight (non-negotiable)

  • 0.1 Confirm clean working tree (git status reports nothing) and no in-flight worktrees with uncommitted work (git worktree list then git status in each)
  • 0.2 If any worktrees exist under .claude/worktrees/, account for each one: still-active agent, work-pending-merge, or stale-and-prune. Stale worktrees MUST be removed (git worktree remove) before opening a new one — code that has been lost twice on main is the failure mode this guards against.
  • 0.3 Confirm the package set in MANIFEST.md matches find packages -maxdepth 3 -name package.json count. Drift here means a prior change archived without regenerating the manifest.

1. Audit

  • 1.1 Run openspec validate --specs --strict and capture the list of 43 ✗ specs.
  • 1.2 Per-spec audit: title present? purpose present? leftover ## ADDED / ## MODIFIED / **Status**: / delta-title? Bucket each spec into a fix category.

2. Apply fixes via parallel sub-agents (5 batches)

  • 2.1 Batch A — testing-integration family (6 specs): testing-integration, testing-integration-garage-s3, testing-integration-mailpit, testing-integration-postgres, testing-integration-redis, testing-integration-surrealdb. All have # Capability Spec Delta: titles, ## ADDED Requirements, **Status**: PROPOSED, no Purpose. Full delta-to-live conversion.
  • 2.2 Batch B — testing-infrastructure (4 specs): testing, testing-dom, testing-e2e, monorepo-structure. All missing title and Purpose. error, events also missing title.
  • 2.3 Batch C — foundation (12 specs): bytes, config, datetime, env, error, events, i18n, idempotency, json, logging, pagination, retry, serialization, validation. Most have title, all missing Purpose; some have **Status**: or ## MODIFIED Requirements to remove.
  • 2.4 Batch D — domain (10 specs): drive, install-agent-skills, installer, locale-data, mime, network, network-session, network-webrtc, noise-functions, packer. All have title, all missing Purpose.
  • 2.5 Batch E — primitives + remainder (10 specs): random-utilities, seeded-prng, slsa, statistical-distributions, storage, templates, timing, undo, utils. All have title, all missing Purpose; timing has **Status**: to remove.

3. Verify

  • 3.1 openspec validate --specs --strict — every previously-failing spec flips to ✓.
  • 3.2 openspec validate --specs — full corpus all ✓.
  • 3.3 Spot-check 5 random specs: open and confirm the structural rewrite preserved every requirement, scenario, and **Verified by:** pointer.

4. Archive

  • 4.1 openspec archive corpus-spec-hygiene --skip-specs --yes — moves the change folder without re-folding spec deltas (this change has none).
  • 4.2 Confirm the change appears in openspec/changes/archive/<yyyy-mm-dd>-corpus-spec-hygiene/.
  • 4.3 Confirm openspec list no longer shows the change.