BOHICA-LABS / BOHICA-LABS/vsdd-factory
process-gap(story-writer+consistency-validator): inputDocuments frontmatter drifts from changed_by_rulings — silent under-listing
- Dominant language
- Rust
- Stars
- 2
- Forks
- 1
- Avg merge
- 6h 43m
- Merged PRs (30d)
- 29
Description
## Summary
A story's frontmatter has two related fields:
- `changed_by_rulings: [RULING-...]` (which rulings mandated the current body)
- `inputDocuments: [...]` (which artifacts the story consumes as normative input)
There is no cross-check that every ruling in `changed_by_rulings` also appears (transitively) in `inputDocuments`. Result: a ruling can rewrite AC text but be silently absent from the input-set, causing downstream re-reads (adversary Ln, subsequent story-writer bursts) to miss the normative source.
## Concrete evidence (switchboard-blue Wave-6 Tranche B)
S-7.02 story v1.3: `changed_by_rulings` listed RULING-W6TB-D (heartbeat oracle) as the driver for AC-001b's dual-test formulation, but `inputDocuments` did NOT list RULING-W6TB-D. A Pass-4 mechanical sweep (P4 adjudication commit bd4e5c6 in factory-artifacts) had to add it retroactively, plus insert a DRIFT-S702-INPUT-HASH-DEFERRED entry to cover the sibling input-hash pin.
## Why existing gates miss it
- consistency-validator scopes cross-DOC references (BC↔VP, story↔BC), not intra-frontmatter field coherence
- spec-reviewer reads body prose, not frontmatter cross-fields
- story-writer prompt mentions both fields but doesn't require the ⊆ relationship
## Proposed remediation
consistency-validator adds a rule:
> For every story, `set(changed_by_rulings) ⊆ set(inputDocuments)`. Warn on any ruling that mutated the story body but is absent from inputDocuments.
Story-writer prompt gains an explicit step: "When you cite a ruling in changed_by_rulings, add it to inputDocuments in the same edit."
## Cross-references
- #376 — sprint-state vp_traces owner (same family: frontmatter fields with no cross-check)
- #390 — atomic version cascade
## Severity
MEDIUM. Not a correctness defect on its own, but degrades adversary review by hiding the true normative source-set. Cheap to fix with a static check.
Contributor guide
Assessment
This issue has not been assessed yet.