BOHICA-LABS / BOHICA-LABS/vsdd-factory
feat(skill): /vsdd-factory:check-bc-version-propagation — enforce the 9-site BC-version propagation checklist
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 6h 43m
- Merged PRs (30d)
- 29
Description
## Summary
After 3 sibling recurrences of "BC version bumped but referencing artifact X not updated" across a single story's adversarial passes, I codified a 9-site propagation checklist in my project's lessons.md (S-7.01 codification threshold reached at the 3rd recurrence per the partial-fix-regression discipline rule). The checklist documents the artifacts that must be updated whenever a BC version is bumped.
**The codification is documentation-only.** No skill or hook runs the checklist. The 4th recurrence is inevitable the next time someone bumps a BC.
## The 9 propagation sites
1. Story file frontmatter `Behavioral contract:` line
2. Story file AC body (if BC ACs changed — split/rename/reword)
3. Production code header comments (`# BC-X.YY.ZZZ vN.N`)
4. Test file header comments (if present)
5. Sibling BC references (e.g., BC-A referencing BC-B in its EC text)
6. ADR back-references
7. Holdout scenario files
8. BC-INDEX revision-tag columns
9. known-issues.md body text (if quoting BC wording)
## Proposed skill
`/vsdd-factory:check-bc-version-propagation `:
1. Read the BC frontmatter version (e.g., `v1.7`).
2. For each of the 9 sites, grep for references to that BC-ID and report version mismatches.
3. Output a structured report: site name → file path → cited version → current version → match? (yes/stale)
4. Exit non-zero if any site is stale.
## Repro / observed pattern
In one story I delivered:
- Pass 4 m-2 (orchestrator-side fix): bumped story frontmatter `Behavioral contract:` from v1.4 to v1.7. Story body unchanged.
- Pass 5 M-NEW-1 (adversary): caught that story AC body still described pre-amendment behavior (mismatch with current BC). Required spec-steward dispatch.
- Pass 6 m-NEW-2 (adversary): caught that production code header still said `# BC-X.YY.ZZZ v1.4`. Required another spec-steward dispatch.
3 sibling findings in 3 adversarial passes, all of the same pattern: a partial sweep. The S-7.01 rule says codify at 3+ recurrences. I codified the checklist. But codification ≠ enforcement.
## Why this should be a skill not a hook
- A skill is invokable by the orchestrator pre-emptively when dispatching a spec-amendment.
- A hook (e.g., on-commit) would catch drift after the fact — useful but less proactive.
- A skill can be embedded in the spec-steward agent's procedural workflow as the FINAL step of any BC amendment dispatch.
## Related
- #283 Gap 1 (`pending()` reason format) — similar codification-without-enforcement pattern
- #267 (state-manager source-of-truth validation) — sibling enforcement-gap concern
Contributor guide
Assessment
This issue has not been assessed yet.