core/docs/handoff
Shay ce6b2f5173
docs(ADR-0170): injector contract widening + DCS-S1 schema-gap finding (#372)
DCS-S1 (proper-noun possession sub-shape expansion) investigation
revealed that the recognizer-injector path's `CandidateInitial`-only
return type is a substrate-level constraint blocking four Wave-Next
sub-shape categories — not just one.

## Two artifacts

1. **`docs/handoff/DCS-S1-FINDING.md`** — investigation result. Of
   the 21 DCS-refused GSM8K cases, zero are pure S1-only blockers.
   Acquisition-verb expansion (`collected`, etc.) conflicts with
   ADR-0131.G.1's branch-disagreement discipline. The right fix is
   the DCS injector emitting `CandidateOperation(add)`, but the
   `inject_from_match` return type doesn't allow that.

2. **`docs/decisions/ADR-0170-injector-contract-widening.md`** —
   scoping ADR. Names the contract change, the four categories it
   unblocks (DCS-S1 acquisition, A1 currency, A3 multiplicative,
   A4 temporal), the three load-bearing rules it must preserve
   (ADR-0131.G.1, SentenceChoice union, admissibility gates), and
   a 5-step implementation outline.

## Pattern recognised

Wave-Next surfaced four schema gaps. All four trace to the same
constraint: per-category injectors can only emit `CandidateInitial`.
The right next-capability work is ADR-0170 ratification, then a
small no-behavior-change PR widening the contract, then per-injector
follow-up PRs against the widened contract.

That is the actual lift-per-risk path for GSM8K Round-1 closure.

## Test plan

Docs-only. No code, no test, no eval, no pack change.

## Cross-references

- ADR-0163.D.2 — original parsed_anchors → solver-state ADR
- ADR-0131.G.1 — branch-disagreement discipline ADR-0170 preserves
- ADR-0167 — parallel teaching-corridor mechanism (independent)
- ADR-0167-FOLLOWUPS §7 — Wave-Next findings backlog
- WAVE-NEXT-REVISED — parent plan; ADR-0170 is the upstream blocker
- PR #369 — A2's schema-refusal artifact (first observation of gap)
2026-05-27 10:51:46 -07:00
..
ADR-0084-pack-content-brief.md feat(adr-0084): definitional layer — proposal + substrate (schema/loader/closure) (#64) 2026-05-20 15:25:25 -07:00
ADR-0085-content-style-pass-brief.md docs(adr-0085): content style pass brief for the cheaper dev agent (#71) 2026-05-20 15:58:44 -07:00
ADR-0085-content-style-pass-v2-brief.md docs(adr-0085): content style pass v2 brief — 3sg + plural agreement (#75) 2026-05-20 16:23:14 -07:00
ADR-0167-FOLLOWUPS.md docs(wave-next): revised plan after A1-A4 findings + schema-gap backlog (#371) 2026-05-27 10:28:15 -07:00
ADR-0167-PARALLEL-WORK-PLAN.md docs(ADR-0167): audit-as-teaching-evidence (math reader → contemplation wire) (#349) 2026-05-27 06:21:43 -07:00
ADR-0167-W2C-cross-domain-audit.md feat(ADR-0167/W2-C): domain discriminator + cross-domain audit (#351) 2026-05-27 06:44:29 -07:00
BRIEF-11-phase-2-reader-closure-and-capability-snapshot.md docs: Brief 11 EOD status footer + 2026-05-27 session narrative (#356) 2026-05-27 07:21:01 -07:00
CODEX-domain-pack-closure-cleanup-brief.md docs(handoff): two Codex briefs — domain-pack closure cleanup + grc/he content phase II (#98) 2026-05-20 23:12:15 -07:00
CODEX-greek-hebrew-content-phase-ii-brief.md docs(handoff): two Codex briefs — domain-pack closure cleanup + grc/he content phase II (#98) 2026-05-20 23:12:15 -07:00
DCS-S1-FINDING.md docs(ADR-0170): injector contract widening + DCS-S1 schema-gap finding (#372) 2026-05-27 10:51:46 -07:00
discrete_count_statement-injector-spec.md docs(handoff): reconcile discrete_count_statement injector spec (#366) 2026-05-27 09:51:30 -07:00
GPT55-MOBILE-DISPATCH.md docs(handoff): GPT-5.5 mobile/connector dispatch — 5 in-flight spec tasks (#361) 2026-05-27 09:12:13 -07:00
WAVE-NEXT-INJECTORS.md docs(handoff): Wave-Next injector briefs — A1-A4 + B1 + D1 + optional audit (#367) 2026-05-27 09:51:40 -07:00
WAVE-NEXT-REVISED.md docs(wave-next): revised plan after A1-A4 findings + schema-gap backlog (#371) 2026-05-27 10:28:15 -07:00