# Batch 290 - Rule 248 Process Log

Theme: landform/geography complementary perception pronoun expansion after Rule 247.

Starting state:
- Verified sentences before batch: 14,547 / 20,000.
- Under review before batch: 0.
- Latest completed rule before this batch: Rule 247 / batch-289, dwelling/household complementary perception pronoun
  expansion.
- Process ledger before banking: events complete through 2452.

Field audit:
- Rule 248 returns to the Rule 232-233/244 landform/geography field because those ten target heads are already
  dictionary-backed, already reviewed through reference and perception frames, and already trapped against
  place-name, route/travel/crossing, river/water-use, lime/source-material, reef/sea/collecting, ecology/habitat,
  climbing/falling/danger, ownership/dispute/legal/social, finding/peeping/causative, rubbish/debris/
  leaf-mould/growing-use, smooth-property, steep-property, mountain-pass route, cheek/body-part, beach-collecting,
  turtle/food/warning, burrow/nest/digging/ground-oven, root/under-tree, burning, social-metaphor, target case,
  pronoun case, perception compounds, target compounds, productive reduplication, and support inflection.
- This is a construction consolidation, not a new lexical field. It keeps the Rule 232 target inventory and fills the
  opposite here/there half of the Rule 244 pronoun/location grid.
- The final planned grid uses five sourced, zero-collision bare nominative-pronoun bands: `Ngali TARGET yinyay
  nyajil`, `Ngaliny TARGET yaluy nyajil`, `Yubal TARGET yinyay nyajil`, `Nganjin TARGET yaluy nyajil`, and
  `Yurra TARGET yinyay nyajil`.

Source basis:
- Dictionary entries source `mabil` swamp, `karrirrangkal` coral, `jalngarr` flat rock, `jinali` smooth rock,
  `kangku` valley, `yalmba` seashore, `kambal-kambal` mud, `jalkar` high bank, `janku` hole, and `jamba` hillside.
- Direct dictionary readback used lines 17030-17038 for `mabil`, 13615-13624 for `karrirrangkal`, 7498-7506 for
  `jalngarr`, 9391-9399 for `jinali`, 13266-13275 for `kangku`, 29078-29087 for `yalmba`, 12962-12975 for
  `kambal-kambal`, 7429-7439 for `jalkar`, 8119-8127 for `janku`, and 7690-7703 for `jamba`.
- Patz section 3.5 Table 3.6 sources bare nominative `ngali`, `ngaliny`, `yubal`, `nganjin`, and `yurra`.
- Patz section 3.7 Table 3.12 and Table 3.14 source Yalanji local demonstratives `yaluy` "here" and `yinyay`
  "there".
- Patz section 3.8.3.2 sources `nyaji-l` "see"; Rule 248 uses only nonpast `nyajil`.

Selected target heads:
- `mabil` - swamp; no crossing, route, water-use, habitat, ecology, or event row.
- `karrirrangkal` - coral; no lime/source-material, reef, sea, collecting, habitat, or material-use row.
- `jalngarr` - flat rock; no sitting, creek, water, route, or event row.
- `jinali` - smooth rock; no smooth-property predicate and no smoothing-use row.
- `kangku` - valley; no mountain-pass route/travel and no `kangkul` cheek/body-part drift.
- `yalmba` - seashore; no beach-collecting, sea/tide event, turtle, food, or warning row.
- `kambal-kambal` - mud; whole lexical reduplicated head only, not a productive reduplication model from `kambal`.
- `jalkar` - high bank; no `jalkar-jalkar` steep-property row, river-route row, or danger row.
- `janku` - hole; no waterhole, burrow, nest, digging, ground-oven, or event row.
- `jamba` - hillside; no locative example import, root/under-tree drift, burning, social metaphor, or event row.

Planned frame grid:
- Rows 1-10: `Ngali TARGET yinyay nyajil`.
- Rows 11-20: `Ngaliny TARGET yaluy nyajil`.
- Rows 21-30: `Yubal TARGET yinyay nyajil`.
- Rows 31-40: `Nganjin TARGET yaluy nyajil`.
- Rows 41-50: `Yurra TARGET yinyay nyajil`.

Preflight:
- Exact planned-surface collision scan over the final 50 Rule 248 surfaces returned 0 accepted, revised, or
  under-review collisions.
- Token-aware coverage before banking after Rule 247 was: `mabil` 16, `karrirrangkal` 16, `jalngarr` 18,
  `jinali` 18, `kangku` 17, `yalmba` 16, `kambal-kambal` 21, `jalkar` 28, `janku` 50, and `jamba` 37.
- Pronoun coverage before banking was `ngali` 131, `ngaliny` 65, `yubal` 79, `nganjin` 81, and `yurra` 124.
- Static guards in `bank_290.py`: 50 explicit hand-authored rows; exactly one Rule 248 landform/geography target
  noun per row; exactly one selected bare nominative pronoun per row; no loans; no target morphology; no rejected
  landform candidate; no place-name, route/travel/crossing, river/water-use, lime/source-material, reef/sea/
  collecting, ecology/habitat, climbing/falling/danger, ownership/dispute/legal/social, finding/peeping/causative,
  rubbish/debris/leaf-mould/growing-use, smooth-property, steep-property, mountain-pass route, cheek/body-part,
  beach-collecting, turtle/food/warning, burrow/nest/digging/ground-oven, root/under-tree, burning,
  social-metaphor, target-case, pronoun-case, perception-compound, support-inflection, target-compound, or
  productive-reduplication drift; five sourced pronoun-perception bands only.

Closeout requirements:
- Run `python3 -m py_compile batch_scripts/bank_290.py batch_scripts/close_290.py`.
- Run `python3 batch_scripts/bank_290.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_290.py`.
- Run whole-corpus lint again.
- Run `python3 export_training.py`.
- Update all living books with Rule 248 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_290.py batch_scripts/close_290.py` passed.
- Static guard import for `bank_290.py` returned `static_issues 0`.
- `python3 batch_scripts/bank_290.py` banked 50 rows as `under_review`.
- Under-review lint passed: `lint: 14597 rows scanned, 0 issues flagged`; verified count remained 14,547 before
  close.
- SQLite row readback confirmed all 50 planned rows in five bands:
  `Ngali TARGET yinyay nyajil`, `Ngaliny TARGET yaluy nyajil`, `Yubal TARGET yinyay nyajil`,
  `Nganjin TARGET yaluy nyajil`, and `Yurra TARGET yinyay nyajil`.
- `python3 batch_scripts/close_290.py` closed the batch:
  `accepted=50, reviews=250, lessons=33, lexeme_logs=18, verified 14547->14597, kuku_words 113547->113747`.
- Post-close lint passed: `lint: 14597 rows scanned, 0 issues flagged`; status counts were accepted 13,686,
  revised 911, under_review 0.
- `python3 export_training.py` refreshed the export to 14,597 rows:
  train 12,245, dev 1,180, synthtest 1,172.
- Living books updated:
  - operator guide current state now says 14,597 / 20,000, Rules 1-248, with handoff to Rule 249 and
    `bank_291.py` / `close_291.py`;
  - sample pages build note now cites Batch 290 / Rule 248 and the examples `Ngali mabil yinyay nyajil.`,
    `Ngaliny karrirrangkal yaluy nyajil.`, `Yubal jalngarr yinyay nyajil.`,
    `Nganjin jalkar yaluy nyajil.`, and `Yurra jamba yinyay nyajil.`;
  - grammar cheatsheet has a new Rule 248 section;
  - dictionary errata has a new Batch-290 section.
- `./render-docs.sh` regenerated `public-docs/operator-guide.html`, `sample-pages.html`,
  `grammar-cheatsheet.html`, `dictionary-errata.html`, and raw `.md` copies.
- Local render verification found markers in `public-docs/`: `14,597`, `Batch 290 / Rule 248`,
  `Rule 248 - landform/geography`, `Batch-290`, `Ngali mabil yinyay nyajil`, and
  `Yurra jamba yinyay nyajil`.
- Live docs verification passed with a browser-like user agent:
  `/docs` -> 301 `/docs/`; `/docs/` -> 200; `/docs/operator-guide.html` and `.md` -> 200 with `14,597`;
  `/docs/sample-pages.html` and `.md` -> 200 with `Ngali mabil yinyay nyajil`; `/docs/grammar-cheatsheet.html`
  and `.md` -> 200 with `Rule 248`; `/docs/dictionary-errata.html` and `.md` -> 200 with `Batch-290`.

Final audit:
- `python3 lint_corpus.py` -> `lint: 14597 rows scanned, 0 issues flagged`.
- DB audit: verified 14,597; accepted 13,686; revised 911; under_review 0; Batch 290 accepted rows 50; reviews
  250; lessons 33; `batch-290-verify` lexeme logs 18.
- Export line audit: train 12,245; dev 1,180; synthtest 1,172; total 14,597.
- Rendered-doc marker audit passed for operator guide, sample pages, grammar cheatsheet, and dictionary errata.
- Process ledger final-audit-green event recorded as process_event 2471.
