openspec/work/simplify-context-and-workspace-model/slices/store-root-parity/spec.md
context-store setup and context-store register treat a context store as a
normal standalone OpenSpec root with a thin identity file.
After setup or registration, the durable planning state lives in normal
OpenSpec artifacts: config, specs, changes, and archived changes. The
.openspec-store/ directory remains identity or local registry metadata, not a
separate planning model.
The existing beta context-store, initiative, and workspace shapes are not a
compatibility contract. This slice ignores old beta files unless they are the
thin .openspec-store/store.yaml identity file used by the new model.
A human or agent can create or register a standalone OpenSpec repo and then see the same root shape they would expect from a normal OpenSpec project:
context-store-root/
.openspec-store/
store.yaml
openspec/
config.yaml
specs/
changes/
archive/
The command output and help point users toward normal OpenSpec specs and changes, not initiatives, workspace-owned planning, generated agent files, or collection-specific state.
In plain terms:
context store = normal OpenSpec root + .openspec-store/store.yaml
In scope:
context-store setup and context-store register.context-store doctor reporting for OpenSpec-root health.Out of scope:
context-store setup creates or preserves a healthy OpenSpec root. A healthy
OpenSpec root contains openspec/, a config file
(openspec/config.yaml or openspec/config.yml), openspec/specs/,
openspec/changes/, and openspec/changes/archive/.
When setup creates a config file, it creates openspec/config.yaml with the
default spec-driven schema.
context-store setup.openspec-store/store.yamlopenspec/config.yaml exists with the default spec-driven schemaopenspec/specs/, openspec/changes/, and
openspec/changes/archive/ existcreated_files.git/context-store setup.git/context-store setup.openspec-store/store.yaml when identity metadata
is missingopenspec/config.yaml or openspec/config.yml existsopenspec/config.yaml exists with the default spec-driven schemaopenspec/config.yaml or openspec/config.yml already existscontext-store setupcontext-store setupcontext-store register remembers a local clone or existing local root on this
machine. It does not initialize planning files.
.openspec-store/store.yamlcontext-store register.openspec-store/store.yamlcontext-store register.openspec-store/store.yaml
and registers the store locally.openspec-store/store.yamlcontext-store register in non-interactive or JSON mode
without explicit confirmationcontext-store register.openspec-store/store.yaml or local
registry stateContext-store metadata remains identity or registry metadata only.
openspec init, tool detection, legacy
cleanup, migration, skill generation, command generation, or onboarding flowsinitiatives/,
.openspec-workspace/, workspace.yaml, AGENTS.md, .codex/, .claude/,
or .cursor/.openspec-store/store.yaml existscontext-store doctor reports OpenSpec-root health separately from
context-store metadata and Git health. In JSON output, each store includes a
distinct openspec_root section.
openspec/ directory,
openspec/config.yaml or openspec/config.yml, openspec/specs/,
openspec/changes/, and openspec/changes/archive/openspec_root separately from metadata and
gitopenspec/changes/archive/openspec_rootopenspec/changes/archive/This slice protects user-authored files and repeatable command behavior. It does not treat previous beta context-store behavior as a stable surface.
openspec/config.yaml or openspec/config.yml after
setup