core/docs/handoff/phase-3b-4-skeleton
Shay 36cf14c436 docs(handoff): phase 3b+4 skeleton pack — tests + en_core_names_v1 starter
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.
2026-05-28 10:01:05 -07:00
..
en_core_names_v1 docs(handoff): phase 3b+4 skeleton pack — tests + en_core_names_v1 starter 2026-05-28 10:01:05 -07:00
README.md docs(handoff): phase 3b+4 skeleton pack — tests + en_core_names_v1 starter 2026-05-28 10:01:05 -07:00
test_adr_0174_phase3b_compound_clause.py docs(handoff): phase 3b+4 skeleton pack — tests + en_core_names_v1 starter 2026-05-28 10:01:05 -07:00
test_adr_0174_phase4_contemplate.py docs(handoff): phase 3b+4 skeleton pack — tests + en_core_names_v1 starter 2026-05-28 10:01:05 -07:00

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

  1. Read the combined scope: docs/handoff/ADR-0174-PHASE-3B-4-COMBINED-SCOPE.md
  2. Branch off main (or off the merged ADR-0174 Phase 3a base if it lands first)
  3. Move the test files into tests/ — they will run RED until you implement
  4. Move the pack into language_packs/data/
  5. Implement Phase 3b extractor → tests turn GREEN one at a time
  6. Implement Phase 4 contemplate + pack loader → remaining tests turn GREEN
  7. 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.