Context
We dual-author spec files in the specodelic four-layer markdown format (YAML frontmatter id/kind/EARS statement + ## Constraints, ## Model, ## Properties tables) alongside the openspec grammar — one file, two parsers (specodelic's documented dual-format protocol).
Our migration change: openspec/changes/migrate-specs-to-dual-format in charly-vibes/espectacular.
Problem
openspec archive (v0.19.0) merges the openspec half of a delta into the deployed spec but strips the specodelic half — frontmatter and the three tables do not survive the deploy. Verified against docs we wrote: docs/src/dual-format-authoring.md ("Archive round-trip").
Consequences:
- Deployed specs silently lose their machine-linted layers after every archive touching the capability.
- Repos that mandate dual-format corpus-wide (like ours now does) need a manual re-derivation recipe after each archive: copy frontmatter from the archived delta, carry surviving constraint/property rows from git history, add rows for merged requirements, re-run gates.
Request
Preserve YAML frontmatter and the ## Constraints / ## Model / ## Properties tables when openspec archive merges a delta into a deployed spec (e.g., carry them verbatim from the delta, or merge table rows when both sides have them).
This keeps deployed specs lint-clean under specodelic lint without post-archive surgery, and matches openspec's design principle that specs are the source of truth — the formal layers are part of that truth.
Workaround
Documented in our repo: staged-file frontmatter mandate in pre-commit + CI (just spec-lint) makes the strip non-silent and forces re-derivation.
Thanks for a great tool — happy to provide more detail or a failing example.
Context
We dual-author spec files in the specodelic four-layer markdown format (YAML frontmatter
id/kind/EARS statement +## Constraints,## Model,## Propertiestables) alongside the openspec grammar — one file, two parsers (specodelic's documented dual-format protocol).Our migration change:
openspec/changes/migrate-specs-to-dual-formatin charly-vibes/espectacular.Problem
openspec archive(v0.19.0) merges the openspec half of a delta into the deployed spec but strips the specodelic half — frontmatter and the three tables do not survive the deploy. Verified against docs we wrote:docs/src/dual-format-authoring.md("Archive round-trip").Consequences:
Request
Preserve YAML frontmatter and the
## Constraints/## Model/## Propertiestables whenopenspec archivemerges a delta into a deployed spec (e.g., carry them verbatim from the delta, or merge table rows when both sides have them).This keeps deployed specs lint-clean under
specodelic lintwithout post-archive surgery, and matches openspec's design principle that specs are the source of truth — the formal layers are part of that truth.Workaround
Documented in our repo: staged-file frontmatter mandate in pre-commit + CI (
just spec-lint) makes the strip non-silent and forces re-derivation.Thanks for a great tool — happy to provide more detail or a failing example.