Scoped to contract authority, schema versioning, package coverage, CI, and
downstream validation tooling. Aligned to ROADMAP.md.
All Phase 1 items were delivered during the initial release cycle.
-
Add schema version to
spectre.manifest.json"schemaVersion": "0.1"present in manifest- Schema rejects missing or unrecognized
schemaVersion - Version semantics documented in
README.md
-
Add CI pipeline
.github/workflows/ci.ymlrunspnpm verifyon push and PR across Node 22 and 24
-
Document manifest entry structure for contributors
- Template entry for new packages in
CONTRIBUTING.mdorREADME.md - Validation instructions included
- New package self-registration process clear
- Template entry for new packages in
-
Add
CHANGELOG.md- Keep a Changelog format
- Documents package contract additions, updates, and deprecations
All items below are forward-looking. This phase starts from the stable foundation and focuses on full package coverage, downstream consumer tooling, and contract automation.
-
Add
spectre-wordpress-themesto the manifestspectre-wordpress-themeswas renamed to@phcdevworks/spectre-base(https://github.com/phcdevworks/spectre-base) and is already registered inspectre.manifest.jsonwith rolewordpress-theme-foundation- Full package coverage achieved — no remaining gap
-
Build downstream consumer validation tooling
spectre-manifest-checkCLI (packages/spectre-manifest/src/check-cli.ts,checker.ts) validates a downstream package'spackage.jsonagainst its manifest entry (registration, exports, dependency declarations)- Validation flow documented in
README.mdandCONTRIBUTING.md - Wired into
spectre-initscaffolding via itscheck:ecosystemscript (spectre-manifest-validate ... && spectre-manifest-check ...)
-
Build automated contract diff tooling
spectre-manifest-diffCLI (packages/spectre-manifest/src/diff-cli.ts,differ.ts) compares two manifest files and classifies every change as additive, semantic, or breaking; exits non-zero on breaking changesdiffManifests/formatManifestDiffexported from the package's public API for programmatic use- Covered by
test/differ.test.mjs(unit + CLI integration)
-
Evaluate publishing manifest to npm
- Decision recorded in
DECISION-manifest-distribution.md: shipspectre.manifest.jsonfrom the existing@phcdevworks/spectre-manifestpackage via a new./manifestexport (mirrors./schema), rather than reference-by-URL — keeps schema and manifest versioned together and pinnable through the existing npm dependency - Follow-up implemented:
./manifestexport added,spectre.manifest.jsoncopied into the package duringpnpm buildand included in the npm tarball viafiles, documented inREADME.md
- Decision recorded in
Full package coverage✓ (spectre-wordpress-themesrenamed tospectre-baseand registered)Downstream consumer validation tooling✓ (spectre-manifest-check)Contract diff tooling✓ (spectre-manifest-diffCLI)npm publish evaluation✓ (./manifestexport shipped)
- Do not define UI behavior or component logic here
- Do not absorb token generation or CSS output
- Do not add package-specific runtime code
None yet.