pipelines/gate30_BEFORE.txt
# Gate 30: factory_contract (the chapter axis)
**Gate: PASS** (0 FAIL, 7 WARN; fixtures 73/73)
- contract: `C:/Users/joshu/AppData/Local/Temp/claude/C--dev-humanity-forgotten/53da83d2-a0db-4f0b-acdd-0f2f19bf6760/scratchpad/wave3/sandbox/docs/factory_contract.json` v1.0.1 — 67 riders {'SEED': 34, 'PARTIAL': 13, 'BUILT': 20}
- declared doc set: 4 docs — 23 OWNER: lines, 4 promise-phrase hits
- data homes resolving: 55/67
- ruling_src pointers: 51 on a unit head, 16 on a cited line, 0 unresolved
## DECLARED NOT-ARMED (4)
- 34 SEED riders are ADVISORY by design: they surface in every checklist and never fail this gate. The contract records the whole obligation set; only the proven part binds.
- R4 is WARN-SCOPED at v1 and 16 ruling_src anchors resolve to a real cited LINE rather than to a unit head, so they sit outside the declared owner_anchor_rule and rot on a rewording rather than on a retitle: FR-030, FR-031, FR-032, FR-033, FR-034, FR-035, FR-036, FR-037, FR-038, FR-039, FR-040, FR-041 .... 51/67 resolve as unit heads.
- promise phrase(s) P3 match ZERO occurrences in the declared doc set. That is by design -- an unmatched phrase is a trap set for a future phrasing -- but it means those phrases are UNEXERCISED, and the vacuity guard only catches TOTAL phrase-net rot, never one dead phrase among live ones.
- 29 riders declare tooth NONE(reason) -- named, never silent: FR-001, FR-002, FR-004, FR-005, FR-007, FR-014, FR-016, FR-017, FR-018, FR-019 ...
## FAIL (0)
- none
## WARN (7)
- (R2) FR-024: critic lens 'does a person say this' appears on NO declared critic surface -- a lens that lives only in a doctrine file is run by whichever agent happens to know it
- (R2) FR-025: critic lens 'does this carry the culture' appears on NO declared critic surface -- a lens that lives only in a doctrine file is run by whichever agent happens to know it
- (R2) FR-028: critic lens 'does this carry the culture' appears on NO declared critic surface -- a lens that lives only in a doctrine file is run by whichever agent happens to know it
- (R2) FR-029: critic lens 'does a person say this' appears on NO declared critic surface -- a lens that lives only in a doctrine file is run by whichever agent happens to know it
- (R3) FR-024: .claude/skills/normalize-doc/SKILL.md does not cite 'does a person say this' -- the consumption point exists but does not pick this rider up
- (R3) FR-025: .claude/skills/normalize-doc/SKILL.md does not cite 'does this carry the culture' -- the consumption point exists but does not pick this rider up
- (R3) FR-057: harness/enrich.py does not cite 'docs/proposals/SIGNIFICANCE_LENSES.md' -- the consumption point exists but does not pick this rider up