Self-contained skeleton dispatch under docs/handoff/phase-3b-4-skeleton/.
Nothing is collected by pytest, nothing is loaded by runtime.
Implementer moves files to live locations when wiring.
Contents:
README.md
Implementer workflow, target locations per file, pack notes.
test_adr_0174_phase3b_compound_clause.py
13 acceptance tests covering: pure conjunctive lists (2-clause
proper noun, 5-clause pronoun w/ single antecedent), refusal
discipline (mixed-verb, multiplicative-tail, non-whitelisted-verb,
partial-grounding), HYPOTHESIS_CAP raise to 8, pronoun + multi-
actor defense preservation, wrong=0 + case-0050 canary. All
@pytest.mark.skip until implementation lands; imports inside
test bodies so collection succeeds before target modules exist.
test_adr_0174_phase4_contemplate.py
16 acceptance tests covering: contemplate() primitive contract
(empty/single-survivor noop), Resolution dataclass invariants
(kind/source closed sets), gendered-pronoun resolution (the
killer use case — 4 tests covering she/he/same-gender/unknown-
name), evidence-source precedence (vault>pack>audit_history),
determinism, trace event shape, wrong=0 + case-0050 canary.
en_core_names_v1/gender.jsonl
59 unambiguously-gendered English first names (30 female,
29 male), alphabetically sorted, JSONL format with schema
{name: str, gender: 'female'|'male'}. Covers names appearing
in train_sample/v1 GSM8K problems (Alice, Bob, Daniel,
Malcolm, Erica, Jan, Tina, etc.) plus common English
first-name baseline.
en_core_names_v1/manifest.json
Pack metadata with sha256 checksum (verified against gender.jsonl
bytes), entry count, schema declaration, ambiguity discipline
(Jordan/Alex/Casey/Pat/Taylor/Morgan/Sam/Chris/Robin/Riley
explicitly excluded), expansion pathway through HITL corridor,
wrong=0 protection contract for the contemplate adapter.
Pack integrity verified:
checksum match: True
entry count match: True (59/59)
no duplicates
alphabetically sorted (deterministic diff)
References: docs/handoff/ADR-0174-PHASE-3B-4-COMBINED-SCOPE.md,
ADR-0174 (held-hypothesis comprehension), CLAUDE.md §Semantic Pack
Discipline.
|
||
|---|---|---|
| .. | ||
| en_core_names_v1 | ||
| README.md | ||
| test_adr_0174_phase3b_compound_clause.py | ||
| test_adr_0174_phase4_contemplate.py | ||
ADR-0174 Phase 3b + Phase 4 — Skeleton Pack
Skeleton artifacts ready to drop into the live tree once the operator
starts implementation per docs/handoff/ADR-0174-PHASE-3B-4-COMBINED-SCOPE.md.
Everything in this directory is inert — nothing is collected by pytest, nothing is imported by runtime code. Move files to their target locations when ready to wire.
Contents
| Skeleton file | Target location | Purpose |
|---|---|---|
test_adr_0174_phase3b_compound_clause.py |
tests/test_adr_0174_phase3b_compound_clause.py |
Phase 3b acceptance tests |
test_adr_0174_phase4_contemplate.py |
tests/test_adr_0174_phase4_contemplate.py |
Phase 4 acceptance tests |
en_core_names_v1/gender.jsonl |
language_packs/data/en_core_names_v1/gender.jsonl |
Gendered-name pack data |
en_core_names_v1/manifest.json |
language_packs/data/en_core_names_v1/manifest.json |
Pack manifest (checksum verified) |
Implementer workflow
- Read the combined scope:
docs/handoff/ADR-0174-PHASE-3B-4-COMBINED-SCOPE.md - Branch off main (or off the merged ADR-0174 Phase 3a base if it lands first)
- Move the test files into
tests/— they will run RED until you implement - Move the pack into
language_packs/data/ - Implement Phase 3b extractor → tests turn GREEN one at a time
- Implement Phase 4 contemplate + pack loader → remaining tests turn GREEN
- Run smoke + packs + lanes + train_sample; verify wrong=0 and acceptance lift
Pack notes
en_core_names_v1/gender.jsonl is a starter with 30 unambiguously-
gendered English first names. Coverage:
- Names commonly appearing in GSM8K problems (Alice, Bob, Sam, Tom, John, Mary, etc.)
- Both genders evenly represented
- Deliberately excludes ambiguous-gender names (Jordan, Alex, Casey, Pat, Taylor, Morgan, Sam-as-Samantha)
Expansion path: standard HITL corridor (ADR-0150/0152/0155/0161) via
core teaching propose-from-exemplars once Phase 4 reads from this
pack and produces refusal evidence on uncovered names.
Test-skeleton conventions
The skeleton tests use @pytest.mark.skip(reason="Phase 3b/4 not yet implemented") decorators on every test. Imports are inside test
bodies so collection succeeds before the target modules exist. When
implementing, remove the skip decorator and the lazy-import pattern.