# Batch 282 - Rule 240 Process Log

Theme: fish-reference perception debt sweep after Rule 239.

Starting state:
- Verified sentences before batch: 14,147 / 20,000.
- Under review before batch: 0.
- Latest completed rule before this batch: Rule 239 / batch-281, dwelling and household construction consolidation.
- Process ledger before banking: events complete through 2286.

Field audit:
- The Rule 240 handoff permits a targeted debt sweep or fresh lexical-field audit.
- Fish-reference material has a large already-audited candidate pool, but earlier rules deliberately left many heads
  closed for those passes. This batch selects a narrow debt-sweep subset and keeps it strictly in reference/perception
  frames.
- Hard exclusions retained: `bayilbayil` remains excluded after the unhyphenated-reduplication lint rejection;
  `kijukum` remains excluded after the illegal-final-coda lint decision; `ngiwa` remains excluded because of moray eel,
  sea-snake, place, and story-site senses; `yidilnyul` remains excluded because it is marked Nyungkul with Yalanji
  `yalnganji`.
- Selected target heads were checked against the current corpus with token-boundary counts and exact planned-surface
  collision scans. The first under-review bank selected `walarrji` catfish, but whole-corpus lint rejected all five
  `walarrji` rows for the established rhotic+palatal `rrj` guard. Because the batch was still under review, the rows
  were replaced before close with source-checked `barrbal` black bream; the failed lint is recorded in
  `process_events`.

Source basis:
- Patz section 3.1.2 supports nouns as references to fauna and other corporeal objects, including the generic `kuyu`
  "fish" classifier, but Rule 240 does not use the generic classifier as a target.
- Patz section 3.5 Table 3.6 sources the bare nominative pronouns `ngayu`, `nyulu`, `yurra`, `bula`, and `jana`.
- Patz section 3.7 sources `yaluy` "here" and `yinyay` "there"; the batch uses them bare.
- Patz section 3.8.3.2 sources `nyaji-l` "see" as an l-conjugation verb; the batch uses nonpast `nyajil` only.
- Dictionary entries source the fish labels: `kubija` barracuda, `mujarrka` archerfish, `barrbal` black bream,
  `wuyumbu` toadfish, `bayil` perch, `dalmbal` flathead, `balarri` queenfish, `bilmbin` black-tip shark, `jalkay`
  salmon, and `jijirr` red bream.

Selected target heads:
- `kubija` - barracuda; garfish alternate closed.
- `mujarrka` - archerfish; Yalanji form; spotted-Jewfish, Nyungkul `dalku`, and habitat prose closed.
- `barrbal` - black bream; catching, eating, water, reef/habitat, colour, and event prose closed.
- `wuyumbu` - toadfish; striped-toby alternate closed.
- `bayil` - perch; jungle/freshwater expansion closed.
- `dalmbal` - flathead; `dukul-barangka` synonym closed.
- `balarri` - queenfish.
- `bilmbin` - black-tip shark; black-tip ray and river/mangrove habitat prose closed.
- `jalkay` - salmon.
- `jijirr` - red bream; colour-predicate and reef/habitat prose closed.
- `walarrji` - rejected after under-review lint because `rrj` violates the corpus rhotic+palatal guard.

Planned frame grid:
- Rows 1-10: `Ngayu TARGET yinyay nyajil`.
- Rows 11-20: `Nyulu TARGET yaluy nyajil`.
- Rows 21-30: `Yurra TARGET yinyay nyajil`.
- Rows 31-40: `Bula TARGET yaluy nyajil`.
- Rows 41-50: `Jana TARGET yinyay nyajil`.

Preflight:
- Exact planned-surface collision scan is enforced inside `bank_282.py` before insert.
- External preflight over the 50 planned surfaces returned 0 accepted, revised, or under-review collisions.
- Token-boundary corpus coverage before final banking: `kubija` 0, `mujarrka` 0, `barrbal` 6, `wuyumbu` 0, `bayil` 1,
  `dalmbal` 1, `balarri` 3, `bilmbin` 3, `jalkay` 6, and `jijirr` 6 accepted/revised token hits.
- Static guards in `bank_282.py`: 50 explicit hand-authored rows; exactly one Rule 240 target fish noun per row;
  exactly one bare nominative pronoun per row; no loans; no target morphology; no excluded fish candidate; no
  catching/eating/habitat/story/body-part/source-prose target drift; no pronoun case; no perception compound; five
  sourced perception frame bands only.

Closeout requirements:
- Run `python3 -m py_compile batch_scripts/bank_282.py batch_scripts/close_282.py`.
- Run `python3 batch_scripts/bank_282.py`.
- Run whole-corpus lint while rows are under review.
- Read back all 50 rows and run five-lens review.
- Run `python3 batch_scripts/close_282.py`.
- Run whole-corpus lint again.
- Run `python3 export_training.py`.
- Update all living books with Rule 240 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_282.py batch_scripts/close_282.py` passed.
- Initial `python3 batch_scripts/bank_282.py` banked 50 under-review rows with `walarrji` as one of the target fish
  nouns. Whole-corpus under-review lint then failed all five `walarrji` rows for the established rhotic+palatal
  `rrj` guard. This was recorded as `process_event` 2293 and treated as a source/orthography correction, not as a
  whitelist candidate.
- `bank_282.py` was corrected to replace `walarrji` with source-checked `barrbal` black bream, then rerun. The
  corrected under-review lint passed with `lint: 14197 rows scanned, 0 issues flagged; GOAL METRIC: 14147 / 20000
  verified sentences (111947 Kuku words)`.
- Row readback confirmed the final 50-row grid: `kubija`, `mujarrka`, `barrbal`, `wuyumbu`, `bayil`, `dalmbal`,
  `balarri`, `bilmbin`, `jalkay`, and `jijirr` across the five planned bare-nominative perception bands, with no
  `walarrji` surfaces remaining.
- `python3 batch_scripts/close_282.py` closed the batch with `accepted=50`, `reviews=250`, `lessons=32`,
  `lexeme_logs=18`, verified count `14147->14197`, and Kuku-word count `111947->112147`.
- Post-close `python3 lint_corpus.py` passed: `lint: 14197 rows scanned, 0 issues flagged; GOAL METRIC:
  14197 / 20000 verified sentences (112147 Kuku words)`. This was recorded as `process_event` 2306.
- `python3 export_training.py` exported 14,197 rows with split counts `train=11905`, `dev=1149`,
  `synthtest=1143`. This was recorded as `process_event` 2307.
- The operator guide, sample production pages, mega grammar cheatsheet, and dictionary errata were updated with
  Batch 282 / Rule 240 scope, examples, traps, counts, and the Rule 241 handoff. This was recorded as
  `process_event` 2308.
- `./render-docs.sh` regenerated `public-docs/` HTML and raw Markdown copies. This was recorded as
  `process_event` 2309.
- Local rendered-doc marker checks found Batch 282 / Rule 240 markers in the generated public docs. Live verification
  then confirmed `/docs` returns 301 to `/docs/`, `/docs/` returns 200, and all four rendered HTML docs plus all four
  raw Markdown docs return 200 with Batch 282 markers. This was recorded as `process_event` 2310.
- Final corpus state after docs verification: 14,197 verified sentences, 112,147 Kuku words, 13,286 accepted rows,
  911 revised rows, and 0 Batch 282 under-review rows.
