Skip to content

Support OpenSpec stores as a first-class spec root - #174

Merged
androidand merged 3 commits into
mainfrom
feat/173-openspec-store-support
Sep 30, 2026
Merged

androidand merged 3 commits into
mainfrom
feat/173-openspec-store-support

Conversation

@androidand

@androidand androidand commented Sep 29, 2026 •

Copy link
Copy Markdown
Owner

Summary

  • Read store: from openspec/config.yaml so bare specsync resolves an OpenSpec store's spec root, with -store <id> resolving through OpenSpec's machine registry.
  • Add targets to a committed per-change specsync.yml, inserted into repo resolution ahead of git-remote auto-detection; fan out one change to several target repos.
  • Refuse an unscoped whole-store sync unless -all is passed.
  • Extend doctor with store health checks: resolved, registered, behind remote, dirty, changes missing targets.
  • Parse specs/**/spec.md deltas into the Change model, and add the Verify phase (specsync verify -change <slug>, with -json/-checklist).
  • Repo-local mode (no store:, no targets) is unchanged.

Recovered from a stale, never-merged branch and reconciled onto current main: restored slug-length capping/collision-avoidance (#167) and sync's board-projection wiring (#165), both of which the original branch predated.

Remaining follow-ups, tracked in the change's tasks.md rather than blocking this PR: cross-linking multi-target issues, projecting the acceptance checklist into the issue body, a specsync store migrate command, and three items to report upstream to OpenSpec.

Closes #173

…kout

Captures uncommitted work found staged in the main checkout (spec store
support, spec deltas, and the Verify phase) so it isn't lost while it gets
reconciled against current main. Known issue at this checkpoint: pull.go and
repo.go were reverted to an older version, dropping maxSlugLen/capSlug/
dirExists/nextAvailableSlug from already-merged main work — go test fails to
build until that's reconciled.
…nspec-store-support rebase

The staged openspec-store-support work reverted pull.go and sync.go to
versions that predated two already-merged main features: slug-length
capping/collision-avoidance (#167, dirExists/nextAvailableSlug/capSlug/
maxSlugLen) and wiring sync's -project flag to actually call
ProjectOntoBoard (#165). Restores both so `go test ./...` builds and passes
again.
@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 29, 2026 •

Copy link
Copy Markdown

Deploying specsync with  Cloudflare Pages  Cloudflare Pages

Latest commit: 933284c
Status: ✅  Deploy successful!
Preview URL: https://a29ae41c.specsync.pages.dev
Branch Preview URL: https://feat-173-openspec-store-supp.specsync.pages.dev

View logs

The old branch's flat diff also carried three unrelated changes along for
the ride (spec-issue-linker archival, warn-before-creating-a-duplicate-issue,
and a missing tasks.md on commit-change-stage) that don't belong in this PR
and broke CI's structural validate gate. Drops the two fully unrelated ones,
and adds tasks.md to commit-change-stage — a legitimate follow-up spun off
from this feature's own tasks.md, just not yet planned into tasks.
@androidand
androidand merged commit 6a3dbcd into main Sep 30, 2026
2 checks passed
androidand added a commit that referenced this pull request Sep 30, 2026
…port merge (#177)

## Summary
- PR #174's source branch predated the "See who's already working what"
(`specsync topology`) feature card's addition to `site/features.json`,
and its flat-diff reapplication silently deleted it during that merge —
same shape of regression as the pull.go/sync.go issues already caught
and fixed in that PR, just not covered by any test or the structural
validator since it's a content file.
- Restores the entry verbatim (still `status: soon`, issue #168 — the
card's own status is a separate content decision, out of scope here).

Found while verifying the #174 deploy is up to date on specsync.se.

🤖 Generated with [Claude Code](https://claude.com/claude-code)
androidand added a commit that referenced this pull request Oct 6, 2026
## Summary
- `specsync topology` was silently broken by PR #174's rebase (its
source branch predated the command's dispatch wiring) — restores
`"topology": true` in `knownSubcommands` and the `case "topology":
runTopology(rest)` arm.
- Drops the stale `"status": "soon"` badge from three feature cards on
specsync.se whose features actually shipped weeks ago (design notes
overflow #139, topology #168, adopt #160).

Found while verifying the #174/#177 deploys were fully correct.

Closes #179

🤖 Generated with [Claude Code](https://claude.com/claude-code)
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.

Support OpenSpec stores as a first-class spec root

1 participant