BOHICA-LABS / BOHICA-LABS/vsdd-factory
process-gap(story-writer): story template lacks AC↔BC PC-level trace table — wrong-PC anchors survive multiple version bumps
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 6h 43m
- Merged PRs (30d)
- 29
Description
## Summary
A story's frontmatter lists `bc_traces: [BC-X.YZ.NNN]` but does NOT tabulate which AC anchors to which specific PC/Precondition/Invariant of that BC. Consequently an AC can name the correct BC while referencing the wrong PC number, and the mis-anchor survives spec-reviewer, consistency-validator, and multiple story-writer version bumps until a fresh-context adversary reads both artifacts side-by-side.
## Concrete evidence (switchboard-blue Wave-6 Tranche B)
`S-7.01-xor-fec.md` v1.2 → v1.3 (via Ruling-W6TB-F/-K):
- AC-002 body cited `BC-2.10.001 PC-2` for single-loss recovery
- BC-2.10.001 PC-2 covers "encode parity"; single-loss recovery is PC-3
- Similarly AC-003 cited `Precondition-1` for `ErrTooManyLosses`, actual home is PC-4
- Both anchors mis-aligned across v1.0, v1.1, v1.2; corrected only at v1.3 during Pass-4 fresh L3
## Why existing gates miss it
- `bc_traces` frontmatter is BC-granularity, not PC-granularity → passes consistency-validator
- Spec-reviewer reads specs individually, doesn't compute the AC↔PC join
- Adversary Ln policy varies; only mis-anchor-as-IMPORTANT (per issue #391) surfaces it — and even then only once one adversary happens to open both files
## Proposed remediation
Extend the story template with a mandatory trace matrix:
```
| AC ID | BC ID (with PC) | Notes |
|-------|-----------------|-------|
| AC-001 | BC-2.10.001 PC-2 (encode) | ... |
| AC-002 | BC-2.10.001 PC-3 (single-loss decode) | ... |
```
Consistency-validator gains a rule: every AC MUST cite a PC that exists in the referenced BC's current version. Story-writer prompt gains an explicit step: "read each cited BC body and confirm the PC number resolves before writing the AC."
## Cross-references
- #150 — pre-Phase-3 self-containment (related but distinct: this is about intra-story PC-level trace-table absence, #150 is about broader self-containment)
- #391 — mis-anchoring severity policy
- #361 — BC EC narrowing propagation (adjacent: this is the anchor-precision variant)
## Severity
MEDIUM. Content defect not architectural; but recurred across three version bumps of the same story, so the current gate structure demonstrably cannot catch it in-cycle.
Contributor guide
Assessment
This issue has not been assessed yet.