# Batch 280 - Rule 238 Process Log

Theme: dwelling and household reference expansion after Rule 237.

Starting state:
- Verified sentences before batch: 14,047 / 20,000.
- Under review before batch: 0.
- Latest completed rule before this batch: Rule 237 / batch-279, fire-reference construction consolidation.
- Process ledger before banking: events complete through 2248.

Field audit:
- A pure shelter-dwelling audit found only seven direct `semantic_domain: shelter-dwelling` heads suitable for
  reference work: `bakarr`, `bayan`, `bira`, `jiji`, `kilili`, `wurun`, and `yamba`.
- `Yamba` was rejected for this batch because the same surface is also a particle and occurs heavily in
  `yamba-kari`; the noun entry also includes the opium sense. The batch does not need that risk.
- To reach a ten-head lexical batch without forcing homographs, Rule 238 uses a bounded dwelling-and-household
  reference set: six shelter/dwelling heads plus four adjacent household/structural artefacts.
- Rejected adjacent candidates: `jakal` because mouse/full/door-front homography is avoidable; `warrbi` because
  axe and beehive-house senses compete; `dubal` because coolamon/coffin/dead-in-cave prose is culturally and
  semantically heavy; `kakarr` because grass/blanket/year polysemy is too broad; `karrngka` because hole/crack is
  a property noun rather than a dwelling object; `dimbi`, `walal`, `ngaral`, `yuru-dudal`, `wanjakan`, and `wadil`
  because they would import locative, motion, build/spread, joining/nailing, roofing-material, or weather-event
  grammar.

Source basis:
- Patz section 3.1.2 supports nouns as terms for artifacts and objects of human habitat, and explicitly lists
  `bayan` as "camp, house, shelter".
- Patz section 3.7 gives Yalanji `yinya` "that/those", `yaluy` "here", and `yinyay` "there"; it also states that
  with one noun the demonstrative may precede or follow the noun.
- Patz section 3.5 sources bare nominative `nyulu`; Patz section 3.8.3.2 sources `nyaji-l` "see".
- Dictionary entries checked directly:
  `bakarr` ridge pole, `bayan` house/camp/shelter, `bira` windbreak, `jiji` roof/top, `kilili` windbreak,
  `wurun` humpy, `jakway` door/front, `yulal` board/plank, `kararr` blanket/sheet/grass bedding, and
  `bilangkurr` blanket.

Selected target heads:
- `bakarr` - ridge pole; no pole material, construction, or source claim.
- `bayan` - house; no camping, setting up, building, possession, locative house, or opium/particle/none homograph.
- `bira` - windbreak; no making, setting, rain, cold, or material-source claim.
- `jiji` - roof; no top-of-anything extension and no roofing-material prose.
- `kilili` - windbreak; no making, setting, weather, or material-source claim.
- `wurun` - humpy; no halfway translation, building, sleeping, rain shelter, or locative humpy row.
- `jakway` - door; no front sense and no opening, closing, or shutting predicate.
- `yulal` - board; no plank wording, round-stick contrast, nailing, or building predicate.
- `kararr` - blanket; no sheet, grass bedding, spreading, sleeping, covering, warming, or year-counting extension.
- `bilangkurr` - blanket; no clothing use, sleeping, covering, warming, or ownership row.

Planned frame grid:
- Rows 1-10: `Yinya TARGET yaluy`.
- Rows 11-20: `Yinya TARGET yinyay`.
- Rows 21-30: `TARGET yinya yaluy`.
- Rows 31-40: `TARGET yinya yinyay`.
- Rows 41-50: `Nyulu TARGET yinyay nyajil`.

Preflight:
- Exact planned-surface collision scan is enforced inside `bank_280.py` before insert.
- External preflight over the 50 planned surfaces returned 0 accepted, revised, or under-review collisions.
- Token-boundary corpus coverage before banking: `bakarr` 0, `bayan` 437, `bira` 1, `jiji` 0, `kilili` 0,
  `wurun` 23, `jakway` 10, `yulal` 10, `kararr` 17, and `bilangkurr` 17 accepted/revised token hits.
- Static guards in `bank_280.py`: 50 explicit hand-authored rows; exactly one Rule 238 target noun per row; no
  loans; no target morphology; no excluded homograph/action/source-prose target drift; no recent fire/body drift;
  no pronoun case; no perception compound; five sourced frame bands only.

Closeout requirements:
- Run `python3 -m py_compile batch_scripts/bank_280.py batch_scripts/close_280.py`.
- Run `python3 batch_scripts/bank_280.py`.
- Run whole-corpus lint while rows are under review.
- Run `python3 batch_scripts/close_280.py` after five-lens review.
- Run whole-corpus lint again.
- Run `python3 export_training.py`.
- Update all living books with Rule 238 and rerender docs with `./render-docs.sh`.
- Verify `/docs`, `/docs/`, all four rendered HTML docs, and all four raw Markdown docs from `mobtranslate.com`.

Execution closeout:
- `python3 -m py_compile batch_scripts/bank_280.py batch_scripts/close_280.py` completed cleanly.
- `bank_280.py` static guard check returned 0 issues before banking.
- Exact duplicate preflight over the 50 planned Kuku surfaces returned 0 accepted, revised, or under-review
  collisions.
- `python3 batch_scripts/bank_280.py` banked 50 Rule 238 rows as `under_review`.
- Under-review lint scanned 14,097 total rows and found 0 issues; the closed verified count was still 14,047 before
  `close_280.py`.
- Manual five-lens review passed all 50 rows: source, morphology, syntax, semantics/fidelity, and register all stayed
  inside the planned dwelling/household reference scope.
- `python3 batch_scripts/close_280.py` accepted all 50 rows and moved the corpus from 14,047 to 14,097 verified
  sentences; Kuku words moved from 111,587 to 111,747.
- Close stored 250 review rows, 29 lessons, and 15 lexeme/source-log rows.
- Post-close lint scanned 14,097 rows and found 0 issues; final closed corpus state is 14,097 / 20,000, with 5,903
  remaining and 0 rows under review.
- `python3 export_training.py` refreshed 14,097 exported rows: train 11,816, dev 1,143, synthtest 1,138.
- Source books updated:
  `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`,
  `reports/SAMPLE-PRODUCTION-PAGES.md`,
  `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`, and
  `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`.
- `./render-docs.sh` regenerated `public-docs/index.html`, all four rendered HTML documents, and all four raw
  Markdown documents.
- Local rendered docs contain Batch 280 / Rule 238 / 14,097 markers in the appropriate source and rendered files.
- Live verification with `curl -A 'Mozilla/5.0'` confirmed `/docs` returns 301 to `/docs/`, `/docs/` returns 200,
  all four rendered HTML docs return 200, all four raw Markdown docs return 200, and the new Batch 280 markers are
  live. The sample-pages HTML wraps `Rule 238` across a line break, but its current build note and raw Markdown carry
  the plain marker.
- Process ledger is complete for Batch 280: source, planning, preflight, bank, lint, review, close, export,
  source-book update, render, live-doc verification, and process-log finalization are all recorded.
