Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 09 Jul 03:55
Immutable release. Only release title and notes can be modified.
99197c4

v0.3.0: Store-aware change lifecycle

This release makes cospec store-aware: a new --store <id> global flag runs the entire typed change lifecycle against a registered OpenSpec store — a standalone, shared planning repo for cross-repo work — instead of the local repo. Nothing about the workflow changes; only the operating root does. With no flag and no config pointer, behavior is byte-identical to before.

Added

  • --store <id>: the change lifecycle, over a store (#16 by @thoughtpunch) — OpenSpec 1.5.0 ships stores (registered planning repos several code repos can plan against), but cospec was single-tree: every command keyed on the invocation cwd and assumed openspec/ lived beneath it, so a cross-repo epic authored in a store lost cospec's typed schemas, the apply gate, the verified archive, and the blocking-changes ledger. Now new, validate, apply, archive, status, list, instructions, sync-blockers, and migrate all honor --store:

    cospec new feat cross-repo-epic --store platform
    cospec validate cross-repo-epic --store platform --strict
    cospec apply cross-repo-epic --store platform      # the gate, over the store
    cospec archive cross-repo-epic --store platform    # verified move, in the store

    A code repo can point at a store by default instead of passing --store on every call, via its own openspec/config.yaml:

    schema: feat
    store: platform # cospec + openspec resolve commands against this store
    references:
      - platform    # read-only upstream context surfaced in instructions

    Resolution mirrors OpenSpec's own precedence — explicit --store flag, else a store: config pointer, else the local repo — with the store path resolved from the machine registry via openspec store ls --json. A references: list is read-only context and never a root override. An unregistered --store id fails loudly (naming the registered stores) rather than silently falling back to local, so a typo can never write a change to the wrong place.

    Store management stays native — openspec store setup|register|ls, context, and workset are local/read-only and carry no cospec gate. To give a store cospec's typed schemas, run cospec init <store-path> --harness none. Full details in docs/stores.md.

New Contributors

Full Changelog: v0.2.1...v0.3.0