chore(openspec): archive four completed changes and write their specs - #444
Merged
Merged
Conversation
`/opsx:archive` is what makes `openspec/specs/` true, and it had not been run for four changes whose work is long since on `main` — the oldest merged ten weeks ago. Until it runs, the behaviour those changes shipped is absent from the source of truth, so the next change reads `openspec/specs/` and sees a repo that does not do things it has done since June. Archived: add-eat-visualization, organize-predicted-annotations, optimize-e2e-suite, fix-numeric-binning-e2e. Each was checked to be genuinely finished before archiving, not just ticked: its last commit is an ancestor of `origin/main`, and no open PR still touches its change directory (the twelve open PRs each carry their own new change dir). Six new capabilities land in `openspec/specs/` — eat-annotation-overlay, eat-provenance-connectors, annotation-metadata, annotation-presentation, e2e-validation and query-builder-filtering — none of which collides with an existing one. Deliberately not archived: `merge-protspace-monorepo` (16/30) and `unified-visibility-model` (20/22). Both need reconciling against what actually shipped rather than archiving. merge-protspace-monorepo in particular would land a `bundle-contract` capability next to the `bundle-format-contract` that already exists, and its tasks.md is wrong in both directions: 4.3 (archive the old repo) is done but unticked, while 5.2-5.6 call for a `packages/bundle-contract/` with a schema.json that does not exist — the contract work shipped by another route, as `bundle-contract.yml` running `pnpm test:contract` shows. Archiving would freeze a superseded plan as current behaviour. Also fill in the `## Purpose` of every new capability. `openspec archive` writes "TBD - created by archiving change X. Update Purpose after archive." and that placeholder still passes `validate --strict`, so it survives unless someone looks — two from an earlier archive (`fix-pdb-annotation-without-uniprot`) were still there, which is how this goes unnoticed. All eight now say what the capability covers. Verified: `openspec validate --all --strict` passes 19/19, `openspec list` now shows only the two genuinely incomplete changes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ar6ME3o6VYLYsie3J4kxE5
This was referenced Aug 12, 2026
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.
/opsx:archiveis what makesopenspec/specs/true, and it had not been run for four changes whose work is long since onmain— the oldest merged ten weeks ago. Until it runs, the behaviour those changes shipped is simply absent from the source of truth, so the next change readsopenspec/specs/and sees a repo that does not do things it has done since June.Split out of #391 rather than folded into it: this writes six new capability specs into the source of truth, which deserves its own review rather than being buried in a 42-file docs cleanup.
Archived
mainadd-eat-visualization082b8b75eat-annotation-overlay,eat-provenance-connectorsorganize-predicted-annotationsee707064(10 wks)annotation-metadata,annotation-presentationoptimize-e2e-suited15d73f0(5 wks)e2e-validationfix-numeric-binning-e2eadeb2dd1(8 wks)query-builder-filteringEach was checked to be genuinely finished, not merely ticked: its last commit is an ancestor of
origin/main, and no open PR still touches its change directory — the twelve open PRs each carry their own new change dir. All six capabilities are new, so none collides with an existing spec.Ordering note:
add-eat-visualizationis archived ahead of #427, whoseimprove-eat-reliability-filterbuilds oneat-annotation-overlayand wants that capability to exist first.Deliberately not archived
merge-protspace-monorepo(16/30) andunified-visibility-model(20/22). Both need reconciling against what actually shipped rather than archiving.merge-protspace-monorepois the clearer case. Its delta would land abundle-contractcapability directly alongside thebundle-format-contractthat already exists, leaving two specs on the same subject with nothing to say which is authoritative. And itstasks.mdis wrong in both directions:4.3 archive the old repois unticked but done (tsenoner/protspace-legacyisarchived: true), while tasks 5.2–5.6 call for apackages/bundle-contract/with aschema.jsonthat does not exist anywhere in the repo — the contract work shipped by a different route, asbundle-contract.ymlrunningpnpm test:contracton every PR shows. Archiving would freeze a superseded plan as current behaviour.Purpose placeholders
openspec archivewritesTBD - created by archiving change X. Update Purpose after archive.into each new capability, and that placeholder passesvalidate --strict— so it survives unless somebody looks. Two from an earlier archive (fix-pdb-annotation-without-uniprot) were still sitting there, which is how it goes unnoticed. All eight now describe what the capability actually covers, written from each spec's own requirements.Verification
openspec validate --all --strict→ 19 passed, 0 failed, re-run after prettier reformatted the spec markdown in precommit (it rewraps text, and--strictonly scans a requirement's first line for the normative clause).openspec listnow shows only the two genuinely incomplete changes.pnpm precommitgreen.🤖 Generated with Claude Code
https://claude.ai/code/session_01Ar6ME3o6VYLYsie3J4kxE5