Releases: benwu95/prospec
Release list
0.5.3 — Discoverable, Collision-Free Skill Triggers: Onboarding Scaffolds, Converged Baselines & Honest JS/TS-Only Import-Direction
Prospec 0.5.3
0.5.3 is a discoverability and correctness release. It makes prospec's skill triggers easy for onboarding agents to localize and hard to mis-fire, and it stops the import-direction drift check from faking a pass on projects with no JavaScript/TypeScript. Two new CLI commands — prospec agent triggers and prospec config example — surface the trigger-localization scaffold and a complete annotated config; eight skills' over-broad trigger baselines are converged to collision-free, ≥3-word sets; and import-direction now reports an honest skipped — pointing at the right native linter — wherever no JS/TS source exists.
62 files changed · +982 / −179 · 2 merged PRs (#86, #87) + landing-page SEO
✨ Headline features
Discoverable Skill Triggers — prospec agent triggers & prospec config example (PR #87)
prospec agent triggers emits a fill-missing skill_triggers localization scaffold (English baselines sourced from SKILL_DEFINITIONS), so an onboarding agent translates trigger words in place instead of grepping a deployed SKILL.md or reading the minified binary. prospec config example prints a complete, annotated .prospec.yaml reference covering every schema field, and runs pre-init as part of INIT_COMMANDS.
computeUnlocalizedSkillsis extracted as the single source for the fill-missing set, shared by the agent-sync hint andagent triggers- the agent-sync hint and the quickstart / upgrade onboarding skills now point at
prospec agent triggers - dead config-schema fields removed (
project.version,knowledge.files+KNOWLEDGE_FILE_TYPES, thepathscatchall); deprecated Zod.passthrough()migrated to Zod 4.loose()
Converged, Collision-Free Trigger Baselines (PR #87)
Eight skills' triggers are tightened to prospec-specific, collision-free, ≥3-word sets — dropping bare over-broad words that mis-fire on everyday dev talk (upgrade, setup, done, critical, feedback, clean up, migrate version, version bump, I want to). prospec-plan's sub-3 gap is filled with technical plan (not implementation plan, which would collide with implement). A new skill-format contract assertion machine-enforces REQ-AGNT-033's ≥3-triggers intent (guarded against mutation), and the convergence is mirrored into this repo's .prospec.yaml Chinese skill_triggers.
🐛 Bug fixes
import-directionfaked a pass on non-JS/TS projects — the check parses only JS/TS ES-module imports, but on a project with no JS/TS source it scanned 0 files yet still reportedavailable+ 0 edges → a vacuous PASS that claimed dependency direction was verified without reading a single file. It now reportsavailableonly where JS/TS source is actually found; otherwise it degrades to an honestskippedwhose reason names the right native linter (import-linter / deptrac / packwerk / dependency-cruiser …). JS/TS projects are unchanged; validated against a large real-world Python project (PR #86).- The import-scan extension set could drift — the directory-scan glob and the single-file-entry guard now derive from one
IMPORT_SCAN_EXTSconstant, so they can never diverge (PR #86).
🌐 Landing page
- Added FAQ structured data (schema.org) and an Open Graph social image to the landing page for richer search and social-share previews.
🔁 Dogfood
Both change sets were driven end-to-end through prospec's own SDD loop (story → plan → tasks → implement → review → verify grade A → archive). PR #87 graduated REQ-AGNT-019/020/021/026/033–036, REQ-CLI-021, REQ-SERVICES-066, REQ-SETUP-004/019/023/024, REQ-TEMPLATES-108/121/143/146, REQ-TYPES-038/059/062, and REQ-TESTS-046/047/049/051/052/053 into the agent-integration and project-setup feature specs. PR #86's remediation synced the lib drift-engine Knowledge — import-direction is now documented as JS/TS-ESM-only with an honest skip.
🧪 Quality & tests
- 2,131 tests passing (91 files) — up from 2,112 (87 files) in 0.5.2, adding the trigger-collision contract (English baselines +
.prospec.yamlChinese triggers → 0 violations, all 17 skills ≥3 triggers), the config-example completeness contract (every schema field present), and theimport-directionJS/TS-only / honest-skip regressions; mutation-verified. - ~96.2% line coverage;
prospec checkis fully green — 11/11, 0 fail, 0 warn, 0 skipped. Zero typecheck and lint warnings.
📊 Compared to 0.5.2
| Comparison | 0.5.2 | 0.5.3 |
|---|---|---|
| Trigger localization | Grep a deployed SKILL.md / read the binary |
prospec agent triggers emits a fill-missing scaffold |
| Config reference | No built-in example | prospec config example prints an annotated .prospec.yaml |
| Skill trigger baselines | Over-broad words mis-fire on everyday dev talk | Collision-free, ≥3-word, prospec-specific (contract-enforced) |
import-direction on non-JS/TS |
Vacuous PASS (0 files "verified") | Honest skipped → points at the native linter |
| Passing tests | 2,112 (87 files) | 2,131 (91 files) |
⬆️ Upgrade notes
- Re-run your installer script (
install.shorinstall.ps1) — both pullreleases/latest— to fetch the 0.5.3 binary. - After upgrading, run
prospec agent triggersto fill any missingskill_triggerslocalizations, andprospec config examplefor the full annotated.prospec.yamlreference. - No config change is required — the dropped schema fields (
project.version,knowledge.files, thepathscatchall) were already unused. If your project is not JS/TS,import-directionnow reportsskipped(JS/TS-only) instead of a vacuous pass — use your language's import linter. - Run
prospec checkto confirm all 11 drift checks pass.
0.5.2 — Unified Module-Map Path Semantics: File/Folder/Glob Parity Across Drift & Knowledge, Crash Fixes & CI Action Bumps
Prospec 0.5.2
0.5.2 is a correctness and consistency release that unifies how module-map.yaml paths entries are interpreted across every caller. File, folder, and glob entries now scan identically whether the drift engine or the knowledge generator reads them — closing a prospec check crash on file-level module entries and a silent zero-file miss on bare folder entries. It also refreshes the pinned GitHub Actions versions across all three CI workflows.
27 files changed · +377 / −56 · 1 merged PR (#85) + CI maintenance
✨ Headline feature
Unified Module-Map Path Semantics (PR #85)
module-map.yaml's paths field now supports three entry forms consistently across all callers (the drift engine and knowledge generation):
- File (e.g.
src/lib/config.ts) → scans and attributes only that file - Folder (e.g.
src/lib) → scans the whole subtree - Glob (e.g.
**/auth/**,dir/**) → preserved as-is (existing usage unaffected)
A single stat-based path classifier — classifyModulePath + moduleScanPatterns in lib — is now the one source of truth for "how a paths entry is scanned", shared by both the drift and knowledge scanning sides. The attribution matcher (makePathMatcher / fileMatchesModulePath) already matched files by exact literal and is unchanged.
🐛 Bug fixes
prospec checkENOTDIR crash on file entries — drift'simportScanPatternpreviously expanded every literal into<prefix>/**/*.ext, turning a file entry into<file>/**. File entries now scan the file directly; non-source-file entries produce no import edges.- Silent zero-file knowledge scan on bare folder entries —
getModuleInfos/updateModuleReadmematched bare folder entries (e.g.src/lib) against fast-glob'sonlyFilesmode and found 0 files. They now expand viamoduleScanPatternsinto the subtree.
🔧 CI maintenance
Bumped the pinned third-party GitHub Actions across ci.yml, prospec-check.yml, and release.yml — actions/checkout@v7, actions/setup-node@v6, pnpm/action-setup@v6, actions/upload-artifact@v7, and actions/download-artifact@v8.
🔁 Dogfood
PR #85 was driven end-to-end through prospec's own SDD workflow (story → plan → tasks → implement → review → verify grade S → archive). REQ-LIB-029 / REQ-TESTS-050 / REQ-KNOW-004 / REQ-LIB-014 graduated into drift-detection.md and ai-knowledge.md.
🧪 Quality & tests
- 2,112 tests passing (87 files) — up from 2,096 in 0.5.1, adding 16 cases (classifier four states,
moduleScanPatternsmapping, drift file-entry / non-source / glob regressions, knowledge subtree-scan wiring), all mutation-verified. - ~96.7% line coverage; all 11 drift checks pass (
prospec check: 0 fail, 0 skipped — the singleknowledge-sizeWARN is the deliberate SC-002 budget signal). - Zero typecheck and lint warnings.
📊 Compared to 0.5.1
| Comparison | 0.5.1 | 0.5.2 |
|---|---|---|
paths file entry |
prospec check crashes (ENOTDIR) |
Scans the file directly |
paths bare folder entry |
Knowledge scan finds 0 files | Expands to the subtree |
| Path scanning source of truth | Per-caller ad-hoc expansion | Single classifyModulePath / moduleScanPatterns |
| Passing tests | 2,096 | 2,112 |
⬆️ Upgrade notes
- Re-run your installer script (
install.shorinstall.ps1) to automatically pull the new compressed executable. - If your
module-map.yamllists individual files or bare folders underpaths,prospec checkand knowledge generation now handle them correctly — no config change required. - Run
prospec checkto confirm all 11 drift checks continue to pass.
0.5.1 — Compressed Standalone Binaries & Node-free Skill Resolution: Binary Size Optimization, Streamlined Installers & Offline Templates
Prospec 0.5.1
0.5.1 is an optimization and feature release that addresses the standalone binary size overhead by compressing them into .tar.gz and .zip archives, simplifies the downstream installation scripts to download and extract these packages, and introduces the prospec print-template command to retrieve embedded skills templates completely offline without Node.js dependency.
33 files changed · +448 / −129 · 2 merged PRs (#83, #84)
✨ Headline features
Compressed Standalone Release Binaries & Installer Upgrades (PR #84)
To reduce network bandwidth and load times, the GitHub Release pipeline now packages multi-platform binaries into .tar.gz (for Linux/macOS) and .zip (for Windows) archives. This reduces target download size by over 60% (from ~67-90MB to ~26MB). The installation scripts install.sh and install.ps1 have been modernized to download, stream-extract, and install these compressed assets directly into the users' binary directory.
Offline Template Printing & Node-free AI Skills (PR #83)
Resolves an issue where packaged standalone binaries couldn't find template files on systems lacking Node.js due to internal require.resolve and node -e calls in generated skills (e.g. prospec-upgrade). A new prospec print-template <path> CLI command and backend service print the pre-bundled template contents directly. Skills templates are updated to call prospec print-template instead of spawning Node processes, enabling 100% offline, Node-free tool upgrades.
🔁 Dogfood
The compressed packaging pipeline and offline template print features were successfully validated using prospec's own verification gates. The installation scripts were thoroughly tested across Windows PowerShell and Unix bash environments to guarantee a seamless onboarding experience.
🧪 Quality & tests
- 2,096 tests passing (87 files) — up from 2,092 in v0.5.0, covering E2E CLI commands and the template print services.
- Code coverage is maintained at ~96.6% line coverage, with all 11 drift checks and
verify:skillstests passing green, and zero typechecking or linting warnings. - Added 100% test coverage for the new
prospec print-templatecommand, print service, and compressed installer scripts.
📊 Compared to 0.5.0
| Comparison | 0.5.0 | 0.5.1 |
|---|---|---|
| Release Asset Format | Raw executables (60-90 MB) | Compressed .tar.gz and .zip archives (26-34 MB) |
| Downstream Installers | Raw binary downloads via curl/wget | Automatic archive downloading & extracting (install.sh/install.ps1) |
| Skill Upgrades / Run | Requires Node.js (via node -e/require.resolve) |
100% Node-free offline upgrades (prospec print-template) |
| Passing Tests | 2,092 | 2,096 |
⬆️ Upgrade notes
To upgrade downstream projects:
- Re-run your installer script (
install.shorinstall.ps1) to automatically pull the new compressed executable. - Run
prospec checkto verify all 11 drift checks continue to pass successfully.
0.5.0 — Standalone Binaries, Honest Knowledge Budgets & Gated Review Provenance: Multi-Platform Executables, Machine-Enforced Budgets, Gated Verification & Lightweight Quick Scale
Prospec 0.5.0
0.5.0 is a milestone release that enables running prospec as standalone multi-platform binaries without Node.js, enforces honest token budgets on the AI-Knowledge base with the new knowledge-size drift check, gates the SDD pipeline verification on machine-checked review-provenance, and drastically reduces pipeline ceremony for small changes by introducing the lightweight quick scale.
257 files changed · +8,935 / −2,204 · 16 merged PRs (#55, #68, #69, #70, #71, #72, #73, #74, #75, #76, #77, #78, #79, #80, #81, #82) · closes #61, #62, #63, #64, #65, #66, #67
✨ Headline features
Multi-Platform Standalone Binary Compilation & Publish Workflow (PR #82)
Downstream project developers can now directly download standalone executables for macOS, Linux, and Windows and run prospec for Spec-Driven Development without having Node.js installed on their machines. This capability bundles Handlebars templates directly inside the executable via bundled-templates.ts and provides a Windows one-click installation script (install.ps1). It also resolves the static version resolution issue of process.env.PROSPEC_VERSION, significantly lowering the barrier to adoption.
Slim L1/L2 Knowledge Layers & Honest Budget Enforcement (PR #78, PR #79, PR #80)
To establish the L0-L3 progressive loading architecture, this release slims the AI-Knowledge base: the Description column in index.md is now routing-only, single-sourcing from the description field in module-map.yaml to eliminate L2 duplication. Additionally, a new knowledge-size check is introduced as the 11th drift check in prospec check: when knowledge files exceed their token budget (L1 per-file budget is calibrated to 1,800 tokens, L2 per-module budget to 1,000 tokens, and the 100-line limit remains unchanged), it triggers a machine-queryable WARN (warning only, never a build breaker), aligning declared budgets with actual checks. The leak of the internal budget symbol (Symbol(resolved_budget)) into generated skills is also fixed.
Gated Review Provenance & Verify Hard Gate (PR #68, PR #70)
A new review-provenance check is added as the 9th drift check. During code reviews, a review_provenance metadata containing a whole-tree content fingerprint and timestamp is recorded in ChangeMetadata. /prospec-verify now enforces this as a hard gate: verification is blocked for non-backfill changes if the review record is missing or stale (i.e., files were modified after the review was completed). Furthermore, the auto knowledge sync is folded into the verify S/A commit prompt, eliminating the chore of post-commit knowledge-health drift.
Lightweight Quick Scale & Ceremony Pruning (PR #71)
A lightweight quick scale is introduced for minor changes, significantly reducing steps and the report output for both verify and archive phases. Optional ceremonial fields (such as [P]/~lines and INVEST checklist items) are downgraded to advisory checkpoints to align pipeline ceremony with change complexity. Additionally, a 10th metadata-completeness check is added to the /prospec-archive phase as an entry gate to prevent incomplete metadata from being committed to the permanent log.
Factual Doc Count Automation (PR #69)
Introduced the deterministic pnpm counts and pnpm counts:check scripts to re-derive all factual document counts (such as total tests and file counts) in README.md, README.zh-TW.md, index.md, and tests/README.md from a single source of truth. This structurally fixes the recurring docs/duplicated-count-drift issue and integrates count verification as a CI gate.
Skill Contract Porting & Agent-Sync Hygiene (PR #55, PR #73, PR #74, PR #75, PR #81)
Under the hood, the legacy verify-skills.sh test script is ported to the Vitest framework (running in skill-format.test.ts), which greatly accelerates test execution. We enabled tsconfig.typecheck.json to extend pnpm typecheck coverage to tests/ and scripts/, catching type breaks early in CI. agent-sync is optimized with a sweep command to remove orphan skill directories and trigger collision protection. Finally, curated index columns in module-map.yaml (Keywords, Aliases, Rationale, and Depends On) are preserved verbatim on index updates (no-clobber), preventing automated updates from overwriting custom metadata.
🔁 Dogfood
All 24 archived changes in this release successfully navigated prospec's own SDD lifecycle. Key capabilities underwent rigorous adversarial reviews and achieved Grade S verification before merging. Notably, the new verify-commit sync prevented any post-commit knowledge-health drift, proving the effectiveness of the updated pipeline.
🧪 Quality & tests
- 2,092 tests passing (86 files) — up from 1,840 in v0.4.3, spanning unit, contract, integration, and E2E test suites.
- Code coverage is maintained at ~96.6% line coverage, with all 11 drift checks and
verify:skillstests passing green, and zerotscoreslintwarnings. - Added 100% test coverage for the new
pnpm countsscript,knowledge-sizecollector/evaluator, andreview-provenancefingerprinting logic.
📊 Compared to v0.4.3
| Comparison | v0.4.3 | 0.5.0 |
|---|---|---|
| Distribution | Requires Node.js environment | Native macOS, Linux, and Windows binaries (install.ps1) |
| Review Enforcement | Manual check of review status | review-provenance fingerprint gate blocks verify if review is stale |
| Knowledge Budget Check | Manual tracking of declared budget | knowledge-size check (automatically warns if budget exceeded) |
| Minor Changes | Same standard pipeline ceremony | quick scale with pruned steps; INVEST and [P] lines optional |
| Factual Doc Counts | Manual updates; prone to drift | pnpm counts auto-rewriting and verification CI gate |
| Skill Contract Tests | Legacy verify-skills.sh bash script |
Ported to Vitest (faster, integrated with type-checking) |
| Typecheck Scope | Covered only src/ directory |
Extended to tests/ and scripts/ to prevent test-file breaks |
| Module Index Curation | Index regeneration clobbered custom columns | Keywords, Aliases, Rationale single-sourced from module-map.yaml |
| Passing Tests | 1,840 | 2,092 |
⬆️ Upgrade notes
To upgrade downstream projects:
- Download and replace your local binary with the latest standalone executable.
- Run
prospec upgradein the root of your project directory. This version renames and recalibrates config fields, and the upgrade CLI will guide you to update the YAML configuration. - Run
prospec checkto verify all 11 drift checks pass, and ensure that your rootindex.mdis synced successfully with the curated columns preserved.
v0.4.3 — Root L0-L3 Index & Docs That Catch Themselves Up: Hierarchical Knowledge Index, Single-Source Doc Inventory, Upgrade Back-Fill & Conditional Plan Diagrams
Prospec v0.4.3
0.4.2 turned prospec upgrade into a command that catches a project up on config. v0.4.3
does the same for the knowledge and docs layer. Two pillars: the AI-Knowledge entry point
graduates from a buried ai-knowledge/_index.md to the project root <base_dir>/index.md,
making the L0-L3 layered loading model real; and every init-created doc becomes traceable
through a single source of truth that prospec upgrade now back-fills — so an
already-initialized project can finally obtain a doc a newer version introduced, with no CLI
path to it before. Rounding it out: an in-project Prospec README scaffolded at init, and a
conditional User Story Flow diagram in /prospec-plan.
157 files changed · +3,159 / −1,078 · 5 merged PRs (#49, #51, #52, #53, #54) · closes #46, #47, #48, #50
✨ Headline features
The AI-Knowledge index moves to the project root — L0-L3 layered loading (PR #49)
The entry point graduates from ai-knowledge/_index.md to <base_dir>/index.md, establishing
the L0-L3 architecture (L0 = entry configs, L1 = root index + core conventions, L2 = module
READMEs + on-demand conventions + feature specs, L3 = source). A centralized CORE_CONVENTIONS
registry in src/types/conventions.ts (superseding canonical-docs.ts) splits core vs
load-on-demand conventions via filterConventions and always drops the legacy _index.md;
_diagram-conventions.md + _glossary.md join the core set and seed at prospec init. Every
index emitter (init / knowledge init / knowledge generate / knowledge update) now renders
through one shared _index-auto-block.hbs partial + buildIndexTemplateContext, so render
contexts cannot drift — fixing a fresh init that wrote a broken root index (unsubstituted
base_dir). readIndex takes the resolved baseDir so the read side reads exactly what the
writers emit. REQ-KNOW-034/035 + REQ-AGNT-029 graduated. (PR #49)
Every init-created doc is traceable — single-source INIT_DOC_REGISTRY + upgrade docs inventory (PR #51)
The upgrade flow used to drift: the skill's hardcoded scan list had already lost _glossary.md,
and nothing created docs a newer version introduced. A single-source INIT_DOC_REGISTRY
(root-discriminated base/knowledge) now drives both the canonical and user-managed
convention-doc lists via a shared asKnowledgeInitDoc projection — no doc declared twice.
prospec upgrade gains a read-only Docs inventory: section marking every init-created doc
present/MISSING at its actual location (honoring a relocated knowledge.base_path), and
/prospec-upgrade consumes that inventory as its ONLY scan scope. Bidirectional init⇄registry
set-equality + per-template renderability contracts turn a future parallel-list drift red
instead of silently reopening the bug. US-015/016, REQ-TYPES-038 / REQ-SETUP-022 /
REQ-TESTS-036 graduated. (PR #51)
prospec upgrade now back-fills missing init docs directly (PR #53)
Because prospec init refuses to run once .prospec.yaml exists, an already-initialized project
had no CLI path to obtain a newly-added init doc — upgrade only reported them MISSING.
Creating one is a pure deterministic template render, so routing it through an LLM skill was
unnecessary. A shared src/lib/init-docs.ts (buildInitDocContexts / renderInitDoc /
resolveInitDocLocation) now backs both init.service (greenfield output byte-identical) and
upgrade.service.createMissingDocs, which renders + writes each MISSING registry doc —
skip-if-exists, per-doc best-effort, interactive and --no-interactive/CI. It never
overwrites an existing doc; index.md is written as a baseline (its real module table / legacy
_index.md migration stays the skill's job). Verified live: upgrade back-filled this repo's own
previously-missing prospec/README.md. US-017, REQ-SETUP-024 / REQ-LIB-023 /
REQ-SERVICES-061 (+ more) graduated. (PR #53)
An in-project Prospec README, scaffolded at init (PR #52)
prospec init now scaffolds a short {base_dir}/README.md so other developers of an adopting
project can understand what the prospec/ directory (and Prospec) is without cloning this
repo. Content is condensed from the root README's three-piece model (Skills / AI Knowledge /
CLI) and ends with a pointer to the full docs. It's a standalone base entry in
INIT_DOC_REGISTRY, so both init-create and the upgrade docs inventory derive from it with no
new write/inventory logic; an existing README.md is preserved byte-for-byte.
REQ-SETUP-023 graduated. (PR #52)
/prospec-plan emits a conditional User Story Flow diagram (PR #54)
plan.md gains a new Section 5 Mermaid User Story Flow diagram, gated on an any-of structural
signal set (≥2 branching decision points / ≥3 state transitions or multiple terminal states /
cross-module·cross-actor ordering) and skipped for linear stories — complementary to the
existing technical Call Chain. Template-content only, no runtime logic: it reuses
_diagram-conventions.md, is excluded from the 120-line standard cap, and keeps the
_diagram-conventions.md read out of Startup Loading (cache stability, mirroring the Context7
pattern). 4 mutation-verified contract assertions guard it. REQ-TEMPLATES-125 graduated. (PR #54)
Smaller fixes
knowledge-loading-rulesextracted into a reusable partial shared by 10+ skill templates
with root-resolvable L2 paths; the upgrade skill's Index Migration step copies curatedModules
rows verbatim and forbids rebuilding viaknowledge update(which blanks curated columns).
_playbook.mddeliberately stays load-on-demand (never core) per feedback-promotion
governance. (PR #49)- Corrected a stale
INIT_DOC_REGISTRYcount (7 → 8) inREQ-TYPES-038/REQ-TESTS-036. (PR #53) - The
verify:skillsstatus-lifecycleskill-count assertion synced 10 → 9 after PR #51's
upgrade-skill rewrite intentionally dropped its enumerated reference — the assertion had been
left stale, turning the hygiene check red on the release commit. (9d3a8ff)
🔁 Dogfood
All five changes ran through prospec's own SDD lifecycle on this repo. The hierarchical-index
change (implement-hierarchical-index) went story → … → archive, then a three-reviewer
adversarial audit whose two criticals — a broken init root-index render and data-loss
migration advice — were fixed on-branch. The doc-coverage, upgrade-back-fill, and
plan-diagram changes each reached verify Grade S; the in-project-README change was
review-clean (0 critical / 0 major). REQs graduated into specs/features/project-setup.md and
sdd-workflow, with module Knowledge synced.
🧪 Quality & tests
- 1,840 tests passing (77 files) — up from 0.4.2's 1,779, climbing across the release:
1,791 (index) → 1,821 (doc-coverage) → 1,824 (README) → 1,836 (back-fill) → 1,840 (plan
diagram). (One e2e test,prospec --help, can hit a 5 s timeout under full-suite load but
passes in isolation (~260 ms) — flaky, not a regression.) - Coverage ~96.6% lines;
prospec checkdrift engine 8/8, 0 fail / 0 warn;
verify:skills28/28; typecheck + lint clean. - New coverage for
filterConventions+ dynamicbase_dir+ the legacy_index.mdno-touch
contract, the single-sourceINIT_DOC_REGISTRYset-equality guards, the sharedinit-docs.ts
renderer (100%), and the plan-diagram contract assertions.
📊 Compared to v0.4.2
| v0.4.2 | v0.4.3 | |
|---|---|---|
| AI-Knowledge entry point | ai-knowledge/_index.md |
root <base_dir>/index.md (L0-L3 layered) |
| Index rendering across emitters | per-emitter contexts (drift-prone) | single shared auto-block partial |
| Init-doc coverage | hardcoded skill list (drifted; _glossary missed) |
single-source INIT_DOC_REGISTRY inventory |
| Missing init doc on an initialized project | no CLI path (init refuses) |
prospec upgrade back-fills (skip-if-exists) |
| In-project onboarding doc | none | {base_dir}/README.md at init |
/prospec-plan output |
prose + Call Chain | + conditional User Story Flow diagram |
| Tests | 1,779 | 1,840 |
| Verify grade | S / A | S across changes |
⬆️ Upgrade notes
Re-install globally (pnpm add -g @benwu95/prospec, or your installer of choice) and run
prospec upgrade in each project. On top of 0.4.2's config-nudge fill + comment-safe writes,
upgrade now reports a Docs inventory and back-fills any MISSING init-created doc directly —
including the new <base_dir>/README.md and the root index.md baseline — skip-if-exists
and non-destructive to the curated trust zone (CONSTITUTION.md / _conventions.md and your
index.md content stay yours). The AI-Knowledge entry point is now the root
<base_dir>/index.md; if you referenced ai-knowledge/_index.md, switch to it.
/prospec-upgrade then enriches the created docs and migrates drifted formats with per-file
consent.
Merged PRs
- #49 Promote the AI-Knowledge index to root
<base_dir>/index.md(hierarchical L0-L3 index) - #51 Cover every init-created doc via a single-source docs inventory
- #52 Scaffold an in-project Prospec README at init
- #53 Back-fill missing init docs on
prospec upgrade - #54 Conditional User Story Flow diagram for
/prospec-plan
v0.4.2 — Upgrade That Catches You Up: Config Nudges, Comment-Safe Writes & Git-Tracked Scans
Prospec v0.4.2
0.4.0 and 0.4.1 built the version-upgrade path and made re-running commands no-clobber —
but prospec upgrade on a project that predates a feature still just bumped the version
number. It didn't help the project actually catch up: optional config fields a newer init would
have offered stayed missing, writeConfig silently destroyed your .prospec.yaml comments
while its own docs claimed otherwise, and the deterministic raw-scan.md was left stale against
the new scanner. v0.4.2 turns upgrade into a command that catches a project up — it detects
and interactively fills missing curated config fields, preserves your comments, and refreshes the
scan — then retires the long-dead prospec steering command and ships a public landing
page.
96 files changed · +2,786 / −1,698 · 2 merged PRs (#44, #45) · new GitHub Pages landing page (EN + 繁體中文)
✨ Headline features
prospec upgrade now catches a project up — config-field nudges + interactive fill (PR #45)
A curated UPGRADE_NUDGE_RULES registry detects optional .prospec.yaml fields a pre-feature
project never set (first rule: artifact_language) and reports them. It is deliberately
curated, not "every absent field" — fields with sensible defaults (base_dir, knowledge) or
that hard-error when missing (agents) are excluded. On an interactive TTY, upgrade prompts to
fill each nudge just like prospec init; --no-interactive (and any non-TTY stdin) forces
report-only, so the /prospec-upgrade Skill and CI never block. (PR #45)
Config writes preserve your comments and formatting (PR #45)
writeConfig used to rebuild the YAML tree (doc.createNode), silently destroying user
comments while its JSDoc claimed it preserved them. A new mergeIntoDocument reconciles in
place — mutating only changed scalars, recursing into maps, deleting removed keys — so
prospec upgrade (which only bumps version) keeps every comment and formatting choice intact.
(PR #45)
Generated artifacts stay aligned to the new version (PR #45)
After agent sync, upgrade best-effort regenerates the deterministic raw-scan.md (the only
ai-knowledge/ write — never a curated doc) so the project snapshot matches the new scanner; it
is non-fatal if it can't. And raw-scan now scans git-tracked files only: scanDir
intersects its glob with git ls-files, so gitignored directories the static ignore list misses
no longer leak into the scan — falling back to the full glob when there is no git work tree. Used
by knowledge init --raw-scan-only, the archive refresh, and upgrade. (9652e53, 79f0611)
The deprecated prospec steering command is gone (PR #44)
steering was superseded by prospec knowledge init and had become dead code — a staler
parallel scan (manifest-only tech detection, unconditional module-map.yaml overwrite) that no
live code imported. v0.4.2 deletes the command, its formatter, service, and the
architecture.md.hbs template, moves module-readme.hbs under templates/knowledge/, and
repoints every module-map prerequisite hint to prospec knowledge init. REQ-SETUP-008/009/010
US-004are retired;architecture.mdgeneration and the self-referential per-modulepaths
writeback are intentionally dropped — their content is already covered byraw-scan.md/
_index.md/ module READMEs (+module-map.yamlfor the layers). (PR #44)
A public landing page — benwu95.github.io/prospec (EN + 繁體中文)
A GitHub Pages landing page (served from docs/) now introduces Prospec as "spec-driven
development that audits itself", with a client-side i18n layer (i18n.js) offering English
(default on first visit) and Traditional Chinese. The README's Project Structure tree was folded
into Quickstart and corrected to reflect the full quickstart bootstrap (synced
.claude/skills/*, raw-scan.md, module READMEs, a filled _index.md) — not just init.
(6957239, eca71b8, 75912f1, 634f546)
Smaller fixes
- 8 skill templates ended with a trailing blank line that propagated into every generated
SKILL.md— normalized to one trailing newline, with a contract test guarding it. (e4bfba7) - Canonical agent order unified to
claude, codex, copilot, antigravityacross the zod enum
error,AGENT_CONFIGS, andAGENT_DIRS(zero drift — generated files depend on the agent set,
not its order). (0959efc) - Corrected a stale
prospec archivehint in the feature-map / product MCP resources.
(a2c835e)
🔁 Dogfood
Both core changes ran through prospec's own SDD lifecycle
(story → plan → tasks → implement → review → verify → archive) on this repo. The
upgrade-config-nudges change reached 0-critical adversarial review and verify Grade S —
REQ-SETUP-019/020/021 + REQ-LIB-022 graduated into specs/features/project-setup.md and
REQ-AGNT-028 into agent-integration.md, with module Knowledge synced. The steering removal
reached verify Grade A, retiring REQ-SETUP-008/009/010 + US-004 and reconciling a
pre-existing services-count inconsistency (module-map 13 / README 14 / _index 15) to the true
execute()-services count of 14.
🧪 Quality & tests
- The suite is 1,779 tests passing (74 files) — a net dip from 0.4.1's 1,786 because removing
steeringdeleted its test files (1,786 → 1,748), which the upgrade work then brought back up
(1,748 → 1,779). - Coverage ~97% lines;
prospec checkdrift engine 8/8 checks, 0 fail; typecheck + lint
clean. - New coverage for the config-nudge registry, interactive fill, the comment-preserving
mergeIntoDocument, the git-tracked scan intersection, and the skill-template
trailing-newline contract.
📊 Compared to v0.4.1
| v0.4.1 | v0.4.2 | |
|---|---|---|
prospec upgrade on a pre-feature project |
bumps version only |
detects + interactively fills missing curated .prospec.yaml fields |
writeConfig user comments |
destroyed on rewrite | preserved (in-place merge) |
upgrade & raw-scan.md |
left stale | refreshed to the new scanner |
| raw-scan file set | full glob (gitignored leaks) | git-tracked files only (glob fallback) |
prospec steering |
deprecated dead command | removed |
| Landing page | none | GitHub Pages site (EN + 繁中) |
| Tests | 1,786 | 1,779 (−steering tests) |
| Verify grade | S | S (upgrade) / A (steering removal) |
⬆️ Upgrade notes
Re-install globally (pnpm add -g @benwu95/prospec, or your installer of choice) and run
prospec upgrade in each project: on an interactive terminal it now offers to fill any
missing curated config field (e.g. artifact_language), preserves your .prospec.yaml
comments, re-syncs agents, and refreshes raw-scan.md — all non-destructive to the curated
trust zone (CONSTITUTION.md / _conventions.md / _index.md stay skip-if-exists). In CI or
with --no-interactive it stays report-only. If you scripted around prospec steering,
switch to prospec knowledge init (or knowledge init --raw-scan-only for just the scan).
Merged PRs
v0.4.1 — No-Clobber, Completed: Agent-Config User Blocks & `/prospec-upgrade` Path Fixes
Prospec v0.4.1
v0.4.0 made re-running init safe — but the no-clobber promise stopped at the agent config
files. prospec agent sync still overwrote CLAUDE.md / AGENTS.md unconditionally, and
prospec init skipped an existing AGENTS.md entirely — so any hand-written agent
instructions were destroyed or ignored. And the brand-new /prospec-upgrade Skill that 0.4.0
shipped had two path/resolution bugs that made it fail on first real use. v0.4.1 finishes
the no-clobber guarantee (extending the prospec:auto / prospec:user block contract to the
agent config files) and repairs the upgrade path, then brings the deployed skills and config
under version control.
31 source files changed · +745 / −116 · 1 merged PR (#43) · plus prospec-* skills,
AGENTS.md&CLAUDE.mdnow version-controlled
✨ Headline features
User edits in CLAUDE.md / AGENTS.md now survive every command (PR #43)
Agent config files now use the same prospec:auto / prospec:user block contract that
_index.md already relies on. A new mergeManagedDoc(generated, existing) does an in-place
auto-block swap that preserves the user block; a marker-less hand-written file is migrated
into the user block instead of discarded, and the merge is idempotent (two syncs in a row
are byte-identical). agent sync and init both route through it — init now merges the
managed AGENTS.md instead of skipping it, while the curated trust zone (CONSTITUTION.md /
_conventions.md / _index.md) keeps its skip-if-exists guard. So your custom instructions now
survive init / agent sync / quickstart / upgrade. (PR #43)
/prospec-upgrade actually works now — two resolution fixes
The 0.4.0 upgrade Skill couldn't find the latest templates. Step 2 pointed at a root-level
templates/init/ that never exists — the package ships and loads templates from
src/templates/ (because tsc doesn't copy .hbs into dist/); that path is now corrected.
A package-root fallback was added for pnpm link / global installs where
require.resolve can't see the package: derive the root by following $(which prospec) back up
from the bin shim. And a source-repo short-circuit handles dogfooding — when the project's
own package.json name is @benwu95/prospec, use . as the root and skip require.resolve
(which fails on a self-reference with no exports field). (bb0bf25, 8446a8b)
Deployed prospec skills & agent config are now version-controlled
.gitignore now tracks the deployed prospec-* skills under .claude/ and .agents/,
plus AGENTS.md and CLAUDE.md — so changes to generated config are reviewable in git instead
of invisible. (698437d)
🔁 Dogfood
The whole change ran through prospec's own SDD lifecycle
(story → plan → tasks → implement → review → verify → archive → learn) on this repo, reaching
0-critical adversarial review and verify grade S. The DRY follow-up that resolved both
review majors — a shared single-source auto-block helper (hasAutoBlock / replaceAutoBlock)
plus readFileIfExists adopted across the knowledge services — was then promoted to the team
playbook as PB-006 (single-source helper for parallel modules).
🧪 Quality & tests
- The suite grew 1,760 → 1,786 tests — new coverage for the block-merge primitive,
marker-less migration, idempotent re-sync, and theinit/agent syncmerge routes. prospec checkdrift engine 8/8 PASS (0 warn), coverage 96%, typecheck + lint clean.- Real-CLI e2e confirmed: a brownfield
CLAUDE.md/AGENTS.mdis migrated into the user block
and preserved acrossinit → agent sync, idempotent on re-sync.
📊 Compared to v0.4.0
| v0.4.0 | v0.4.1 | |
|---|---|---|
| Tests | 1,760 | 1,786 |
agent sync on CLAUDE.md / AGENTS.md |
unconditional overwrite (loses edits) | auto/user block merge (edits preserved) |
init with an existing AGENTS.md |
skipped entirely | migrated into the user block |
/prospec-upgrade template lookup |
broken (templates/init/, pnpm-link) |
fixed (src/templates/init/ + CLI-shim / self-ref fallbacks) |
| Deployed skills + agent config | gitignored | version-controlled |
| Verify grade | A | S |
⬆️ Upgrade notes
Run prospec agent sync (or any of init / quickstart / upgrade): a marker-less
hand-written CLAUDE.md / AGENTS.md is migrated into the prospec:user block on first
sync, then preserved byte-for-byte on every later sync — keep your custom instructions inside
that user block. If you adopted 0.4.0's /prospec-upgrade, re-sync to pick up the fixed
Skill (prospec agent sync). The trust zone is unchanged — still skip-if-exists.
Merged PRs
- #43 feat: preserve user edits in
CLAUDE.md/AGENTS.mdvia auto/user blocks
v0.4.0 — Safe Re-Init & the Version-Upgrade Path: No-Clobber Init, `prospec upgrade` & Consent-Gated Migration
Prospec v0.4.0
v0.3.x kept hardening the spec flywheel — but two setup-layer gaps could quietly cost you
work. prospec init's idempotency gate only checked .prospec.yaml, then unconditionally
overwrote 7+ files including the curated trust zone (CONSTITUTION.md / _conventions.md /
_index.md). The common move of deleting .prospec.yaml to re-localize triggers therefore
wiped curated content. And once prospec shipped a new version, there was no upgrade
path — nothing to bring an existing project up to date. v0.4.0 closes the data-loss hole
and adds a real, two-stage upgrade path (deterministic CLI + consent-gated Skill), then
dogfoods it on this very repo.
44 files changed · +1,488 / −270 · 1 merged PR (#42)
✨ Headline features
No-clobber init — re-running init never overwrites curated files (P0, BL-044)
prospec init now uses a per-file skip-if-exists guard (matching knowledge-init.service):
it rebuilds only the files that are actually missing and leaves everything you've authored
untouched. The .prospec.yaml-last completion marker is preserved, so re-running init to
recover a missing file is now safe — deleting .prospec.yaml to re-localize triggers can no
longer take the trust zone with it. (PR #42)
prospec upgrade — a deterministic, zero-LLM version-bump command (P1, BL-044)
A new prospec upgrade CLI command records the prospec version in .prospec.yaml
(canonical re-serialize), re-runs agent sync, and prints a migration report. It writes no
docs and is deliberately not in INIT_COMMANDS, so an uninitialized project gets a clean
ConfigNotFound instead of a half-built tree. .prospec.yaml version now means the prospec
version the project uses (a legacy "1.0" is treated as stale and bumped on first upgrade) —
there is no separate prospec_version field. (PR #42)
/prospec-upgrade — the consent-gated migration finisher (P1, BL-044)
The judgment work the CLI can't do safely now lives in a new /prospec-upgrade Skill: it scans
the files prospec init created, compares them to the latest templates, and offers to migrate
any whose format has drifted — asking per file, format-only, never touching your authored
content. It then localizes triggers for any newly-added skills (fill-missing only) and re-runs
agent sync. Like /prospec-quickstart, it's deployed on disk but kept out of the entry
config, so it adds no recurring token cost. (PR #42)
Trigger re-localization without nuking config (P2, BL-044)
agent sync now names the skills missing a skill_triggers entry (partial localization),
and /prospec-quickstart fills only the missing triggers — so you never need to delete
.prospec.yaml to re-localize. /prospec-knowledge-update also gained a Phase 2.5 step that
asks for consent before migrating drifted AI-knowledge format. (PR #42)
🔁 Dogfood: the upgrade path upgraded this repo
After merge, this repo ran the new flow end-to-end: prospec upgrade + /prospec-upgrade
bumped .prospec.yaml version 1.0 → 0.3.2, localized the new /prospec-upgrade
skill's triggers, and left every init-created doc untouched — exactly the no-clobber
guarantee the P0 fix promises.
🧪 Quality & tests
- The suite grew 1,726 → 1,760 tests — new coverage for init recovery, the upgrade
orchestrator, missing-trigger detection,versionsemantics, and the entry-exclusion
contract ({quickstart, upgrade}); new contract assertions are mutation-verified. prospec checkdrift engine is 8/8 PASS (0 warn),verify:skills28/28, coverage 96%.- The change ran dogfood-style through prospec's own SDD workflow
(story → plan → tasks → implement → review → verify → archive), reaching 0-critical
adversarial review and verify grade A.
📊 Compared to v0.3.2
| v0.3.2 | v0.4.0 | |
|---|---|---|
| Tests | 1,726 | 1,760 |
Re-running init |
overwrites 7+ files incl. trust zone | per-file skip-if-exists (no clobber) |
| Version-upgrade path | — | prospec upgrade (CLI) + /prospec-upgrade (Skill) |
.prospec.yaml version |
bootstrap marker ("1.0") |
the prospec version the project uses |
| Re-localizing triggers | delete .prospec.yaml (risked clobber) |
agent sync names gaps · fill-missing only |
| Skills | 16 | 17 (+ /prospec-upgrade) |
⬆️ Upgrade notes
On a version bump, run prospec upgrade then /prospec-upgrade in your AI agent: the
CLI records the new version + re-syncs agents (writing no docs), and the Skill handles
init-doc format migration + new-skill trigger localization with per-file confirmation.
If you only want the new skill wired up, prospec agent sync is enough to pick up
/prospec-upgrade. The init fix is automatic — re-running init is now safe by construction.
Merged PRs
- #42 fix init clobber + add
prospec upgradepath (BL-044)
v0.3.2 — Knowledge-Sync Hardening: Feature-Prefix Archive Fix, README Count Drift & MCP Spec Entry
Prospec v0.3.2
v0.3.1 shipped feature-map.yaml and the feature→module governance checks — but two gaps
remained. A standard/full change whose delta-spec used a feature-prefixed REQ (e.g.
REQ-MCP-*) would silently mis-route at archive: the auto knowledge-update read the prefix
as a module name, missing the real modules and risking a phantom modules/<prefix>/. And the
README's factual counts (e.g. "registers N resources") drifted from the code with nothing to
catch them. v0.3.2 hardens the knowledge-sync flow and mechanizes the count check —
then dogfoods both by archiving the very MCP change that surfaced them.
✨ Headline features
Feature-prefixed REQ knowledge-sync hardening (BL-043)
standard/full changes whose delta-spec uses a feature-prefixed REQ (REQ-MCP-* and
the 10 other non-module prefixes) now resolve affected modules from metadata.related_modules
feature-map.yamlinstead of mistaking the prefix for a module — consistently in both the
archive Entry Gate (skill) and the auto knowledge-update (service). A surgical mint
guard skips a feature-prefix that resolves to no known module (with a warning) rather than
minting a phantommodules/<prefix>/. Module-prefix REQs are unchanged. (PR #40)
readme-counts drift check (BL-043)
A new readme-counts drift check (DRIFT_CHECK_IDS 7 → 8) mechanizes what was a manual
review concern: a count declared in a module README (e.g. "src/x.ts … registers N resources")
is verified against the actual code it names — warn-class, string/template/fenced-block-aware
so it never false-positives. (PR #40)
MCP spec-system entry/index resources (BL-042)
prospec mcp serve now exposes the spec system's entry layer, not just feature details:
knowledge://feature-map (the feature→module routing index) and spec://product (the PRD
entry / 2-minute overview). An external or cold-start agent can grasp the project in one read,
then drill into spec://feature/{name}. buildMcpServer registers 6 → 8 resources; both
are read-only, per-request, realpath-contained. (PR #41)
🔁 Dogfood: the fix validated itself
BL-042's archive was paused at the Entry Gate when its feature-prefixed REQ-MCP-*
mis-routed — which is exactly what surfaced BL-043. After BL-043 merged, BL-042 archived
cleanly through the new feature-prefix fallback (modules derived from related_modules, no
phantom minted), and the new readme-counts check caught and then confirmed the 6 → 8
resource-count sync.
🧪 Quality & tests
- The suite grew 1,696 → 1,726 tests (unit 1,127 / contract 542 / integration 17 / e2e 40);
new contract assertions are mutation-verified. prospec checkis 8/8 PASS on prospec itself (including the newreadme-counts).- Both changes ran dogfood-style through the full SDD workflow
(story → plan → tasks → implement → review → verify → archive), reaching review-clean +
verify grade S / A.
📊 Compared to v0.3.1
| v0.3.1 | v0.3.2 | |
|---|---|---|
| Tests | 1,696 | 1,726 |
| Drift checks | 7 | 8 (+ readme-counts) |
| Feature-prefix REQ at archive | mis-routes (stale / phantom risk) | resolves via related_modules / feature-map |
| README count accuracy | manual review only | deterministic readme-counts check |
| MCP resources | 6 | 8 (+ knowledge://feature-map, spec://product) |
⬆️ Upgrade notes
Run prospec agent sync to pick up the updated /prospec-archive template (standard/full
feature-prefix fallback). The new readme-counts drift check runs automatically in
prospec check; it is warn-class and degrades to skipped without a module-map.yaml,
so existing projects keep working unchanged.
Merged PRs
v0.3.1 — Backfill End-to-End: Feature-First Scoping, Feature-Map Governance & Trust-Zone Graduation
Prospec v0.3.1
v0.3.0 opened the door to brownfield backfill — /prospec-backfill-spec could
extract a behavioral draft from existing code. But the draft hit a wall: the forward-path
verify gates new-code quality, so a backfill spec recording existing behavior could
never reach verified, and archive only accepts verified. v0.3.1 completes the
loop. Backfill now scopes by feature vertical-slice instead of by module, a new
feature-map.yaml index governs the feature→module edge deterministically, and a 4th
scale: backfill mode plus /prospec-promote-backfill lets brownfield specs graduate
end-to-end into the trust zone through an honest, lightweight path.
111 files changed · +2,447 / −4,330 · 2 merged PRs (#38–#39)
The net-negative diff is a legacy spec-folder consolidation, not a feature removal.
✨ Headline features
scale: backfill — brownfield specs graduate end-to-end (new)
A 4th scale value (a light scale, symmetric to quick) plus a /prospec-promote-backfill
skill closes the backfill journey: extract → promote → verify → archive. Promote
produces only proposal + delta-spec + metadata — no hollow plan.md / tasks.md,
since backfill records existing code with no forward work to schedule. verify re-points
its primary graded dimension to spec-fidelity (every REQ's AC must resolve to its cited
file:line); pre-existing code-quality [MUST] violations are recorded as informational
tech debt rather than failing the grade. Provenance binding gates the relaxation on a
backfill-draft.md being present, so new code can't masquerade as backfill to skip the
tested-functions gate. (PR #39)
Feature-first backfill scoping (BL-039)
/prospec-backfill-spec now extracts and scans by feature vertical-slice (WHAT) across
contributing modules, not by module (WHERE). A two-pass gather-by-module → cluster-by-feature
flow cites file:line per traced edge; cross-module event/outbound edges become acceptance
criteria only when both ends are traced (otherwise [NEEDS CLARIFICATION] / Deferred);
infrastructure modules are never feature targets. (PR #38)
feature-map.yaml + deterministic coverage governance (BL-040)
A new feature-map.yaml index records the feature→module edge that module-map.yaml
can't answer, written automatically by archive (bootstrap-once, no-clobber). Two new drift
checks ship with it (DRIFT_CHECK_IDS 5 → 7): dangling-prefix (REQ-prefix legality,
warn) and feature-modules (self-validating feature→module edge, fail), both gated
on the index existing. Backfill Phase 4 coverage becomes a deterministic set-difference once
the index is present. (PR #38)
🗂️ Knowledge & spec-history cleanup
- Archive-summary convergence (BL-041) — spec-history summaries now land in a
date-prefixedspecs/_archived-history/{YYYY-MM-DD}-{change-name}.md, name-aligned with
the.prospec/archive/folder and drift-excluded. An explicit copy step was added to
prospec-archivePhase 3 (previously buried only in the reference). (PR #38) - Legacy spec-folder consolidation — the
001-prospec-mvp-cli/spec-kit folder and five
_archived-capabilities/specs were collapsed into date-prefixed summaries and removed
(full content preserved in git history).specs/root is now justproduct.md+
MIGRATION.md;_archived-history/is uniformly date-prefixed, with no stray folders. (PR #38)
🧪 Quality & tests
- The suite grew 1,622 → 1,696 tests (unit 1,100 / contract 539 / integration 17 / e2e 40);
all new contract assertions are mutation-verified. prospec checkis 7/7 PASS — the two new feature-map checks pass on prospec itself.- Each change was built dogfood-style through prospec's own SDD workflow
(story → plan → tasks → implement → review → verify → archive), reaching review-clean +
verify grade S / A.
📊 Compared to v0.3.0
| v0.3.0 | v0.3.1 | |
|---|---|---|
| Tests | 1,622 | 1,696 |
| Backfill flow | extract draft only | extract → promote → verify → archive (end-to-end) |
scale values |
quick · standard · full | + backfill (4) |
| Backfill scoping | by module (WHERE) | by feature vertical-slice (WHAT) |
| Feature→module index | — | feature-map.yaml + 2 deterministic checks |
| Drift checks | 5 | 7 |
| Spec history | flat root + legacy folders | date-prefixed _archived-history/ |
⬆️ Upgrade notes
Run prospec agent sync to pick up the new /prospec-promote-backfill skill and the
updated /prospec-backfill-spec, /prospec-verify, and /prospec-archive templates.
feature-map.yaml is optional and additive — the two new drift checks stay skipped
until you bootstrap an index (via archive), so existing projects keep working unchanged.