# Batch 324 / Rule 282 process log

## Rule selection

Rule 282 continues the visible water/landform field with a complementary non-singular past pronoun perception sweep
after Rule 281. It fills the opposite `yaluy`/`yinyay` bands from Rule 277, while keeping the clause type narrow:

- `Ngali TARGET yinyay nyajin.`
- `Ngaliny TARGET yaluy nyajin.`
- `Yubal TARGET yinyay nyajin.`
- `Yurra TARGET yaluy nyajin.`
- `Jana TARGET yinyay nyajin.`

The batch opens only plain visual past perception/reference clauses with bare nominative non-singular pronouns, one
bare visible water/landform noun, one bare local demonstrative, and `nyajin` as the corpus-conventional past surface
from Patz `nyaji-ny`.

## Source readback

Dictionary line readback:

- `bubu` 3452-3470: noun, ground/earth; country/place and dirtiness extensions closed.
- `dajali` 4510-4518: noun, deep water.
- `jalun` 7612-7620: noun, sea / large body of water.
- `jirka` 9803-9813: noun, spring, read as water source rather than season.
- `jukar` 10254-10262: noun, sand.
- `manjal` 17832-17840: noun, mountain.
- `wawubaja` 26813-26821: noun, river.
- `yilki` 30031-30039: noun, creek.
- `yiri` 30410-30418: noun, waterfall.
- `yirri` 30507-30515: noun, running water.

Grammar line readback:

- Patz lines 2577-2586 and 2592-2603: personal pronoun paradigm and base forms. Rule 282 uses bare nominative
  `ngali`, `ngaliny`, `yubal`, `yurra`, and `jana`.
- Patz lines 2674-2686: non-singular source notes; `ngali` is first dual exclusive, `ngaliny` is first dual
  inclusive by increment, `yubal` is second dual, `yurra` is second plural, and `jana` is third plural.
- Patz lines 2838-2845: local demonstratives `yaluy` "here" and `yinyay` "there".
- Patz lines 2568-2571: `nyaji-ny` "see-PAST"; Rule 282 uses corpus-conventional `nyajin`.
- Patz lines 3043-3049: `nyaji-l` "see" is contrast only here; Rule 282 does not use nonpast `nyajil`.

## Preflight

Initial target set with `bana` produced one exact accepted collision:

- `Jana bana yinyay nyajin.` already exists in Batch 193, row 33.

Replacement testing showed `bubu` had no collisions in the Rule 282 frame set. A parallel set with `daburri` was
rejected because `Jana daburri yinyay nyajin.` already exists in Batch 194, row 33. The final target set therefore
uses `bubu` and excludes `bana` and `daburri` for this batch. The final planned 50 surfaces are 50 unique strings and
have 0 accepted/revised/under-review collisions.

Token-aware accepted/revised coverage before banking:

- Targets: `bubu` 975, `dajali` 103, `jalun` 260, `jirka` 39, `jukar` 192, `manjal` 108, `wawubaja` 399, `yilki`
  41, `yiri` 35, `yirri` 35.
- Support: `ngali` 303, `ngaliny` 245, `yubal` 255, `yurra` 260, `jana` 923, `yaluy` 2882, `yinyay` 3154,
  `nyajin` 300.

## Planned rows

1. `Ngali bubu yinyay nyajin.`
2. `Ngali dajali yinyay nyajin.`
3. `Ngali jalun yinyay nyajin.`
4. `Ngali jirka yinyay nyajin.`
5. `Ngali jukar yinyay nyajin.`
6. `Ngali manjal yinyay nyajin.`
7. `Ngali wawubaja yinyay nyajin.`
8. `Ngali yilki yinyay nyajin.`
9. `Ngali yiri yinyay nyajin.`
10. `Ngali yirri yinyay nyajin.`
11. `Ngaliny bubu yaluy nyajin.`
12. `Ngaliny dajali yaluy nyajin.`
13. `Ngaliny jalun yaluy nyajin.`
14. `Ngaliny jirka yaluy nyajin.`
15. `Ngaliny jukar yaluy nyajin.`
16. `Ngaliny manjal yaluy nyajin.`
17. `Ngaliny wawubaja yaluy nyajin.`
18. `Ngaliny yilki yaluy nyajin.`
19. `Ngaliny yiri yaluy nyajin.`
20. `Ngaliny yirri yaluy nyajin.`
21. `Yubal bubu yinyay nyajin.`
22. `Yubal dajali yinyay nyajin.`
23. `Yubal jalun yinyay nyajin.`
24. `Yubal jirka yinyay nyajin.`
25. `Yubal jukar yinyay nyajin.`
26. `Yubal manjal yinyay nyajin.`
27. `Yubal wawubaja yinyay nyajin.`
28. `Yubal yilki yinyay nyajin.`
29. `Yubal yiri yinyay nyajin.`
30. `Yubal yirri yinyay nyajin.`
31. `Yurra bubu yaluy nyajin.`
32. `Yurra dajali yaluy nyajin.`
33. `Yurra jalun yaluy nyajin.`
34. `Yurra jirka yaluy nyajin.`
35. `Yurra jukar yaluy nyajin.`
36. `Yurra manjal yaluy nyajin.`
37. `Yurra wawubaja yaluy nyajin.`
38. `Yurra yilki yaluy nyajin.`
39. `Yurra yiri yaluy nyajin.`
40. `Yurra yirri yaluy nyajin.`
41. `Jana bubu yinyay nyajin.`
42. `Jana dajali yinyay nyajin.`
43. `Jana jalun yinyay nyajin.`
44. `Jana jirka yinyay nyajin.`
45. `Jana jukar yinyay nyajin.`
46. `Jana manjal yinyay nyajin.`
47. `Jana wawubaja yinyay nyajin.`
48. `Jana yilki yinyay nyajin.`
49. `Jana yiri yinyay nyajin.`
50. `Jana yirri yinyay nyajin.`

## Guardrails

- Keep all target labels as bare visible water/landform nouns with the selected literal target senses only.
- Keep `bubu` as ground/earth only; do not open country, belonging, place, dirtiness, or place-name rows.
- Keep `jukar` as sand only; do not open sandfly, sand goanna, sand whiting, beach-use, or material rows.
- Keep `wawubaja` as river only; do not open travel, route, crossing, bank, place-name, or water-use rows.
- Keep all subject pronouns as bare nominatives: no `ngalingan`, `ngalinyan`, `yubalan`, `yurrangan`, `janangan`, or
  other pronoun case forms.
- Keep `yaluy`, `yinyay`, and `nyajin` uninflected; do not import nonpast `nyajil`, purposive `nyaji-nka`, or
  `nyaji-l-nyaji-ny` watching/reduplicated forms into Rule 282.
- Do not import drinking, getting, filling, washing, swimming, crossing, travelling, route, road, flood, tide,
  salt-pan, whale-oil, spring-season, creek/place names, mountain story, water source use, water spirit, fish,
  shellfish, reptile, plant, ecology, danger, ownership, target case, pronoun case, demonstrative case, target
  compounds, perception compounds, productive reduplication, or support inflection.

## Execution checklist

- Bank 50 explicit hand-authored rows as `under_review`.
- Run corpus lint before close.
- Read back all 50 rows from SQLite.
- Close only after morphology, lexicon, syntax, fidelity, and register lenses pass.
- Record lessons and lexeme/source logs.
- Refresh export.
- Update the four living books.
- Render docs.
- Verify local rendered docs and live `https://mobtranslate.com/docs/`.
- Final lint and count audit.

## Closeout

- Banked: `python3 batch_scripts/bank_324.py` inserted 50 explicit hand-authored rows as `under_review`.
- Readback: all 50 stored rows matched the planned non-singular pronoun-target-demonstrative-`nyajin` frames.
- Lint before close: `lint: 16297 rows scanned, 0 issues flagged`; goal metric remained 16,247 while the batch was under review.
- Close: `python3 batch_scripts/close_324.py` accepted 50 rows, wrote 250 five-lens reviews, 35 lessons, and 18 lexeme/source-log rows; verified count moved 16,247 -> 16,297 and Kuku word count moved 120,347 -> 120,547.
- Export refresh: `python3 export_training.py` wrote 16,297 rows total: train 13,670, dev 1,316, synthtest 1,311.
- Living books: operator guide, sample production pages, grammar cheatsheet, and dictionary errata updated for Batch 324 / Rule 282, including duplicate-pressure notes for `bana`/`daburri`, the sourced `bubu` replacement, and Rule 283 handoff to `bank_325.py` / `close_325.py`.
- Render/local docs: `./render-docs.sh` regenerated `public-docs/`; local HTML and raw `.md` marker checks found Batch 324 / Rule 282 / 16,297 markers and no stale operator/sample handoff markers.
- Live docs: `https://mobtranslate.com/docs` returned 301 to `/docs/`; `/docs/`, all four HTML pages, and all four raw `.md` files returned 200. Live operator, sample, grammar, and errata pages contained the Batch 324 markers and example sentences.
- Final audit: `python3 lint_corpus.py` green over 16,297 rows; DB audit showed verified_total=16,297, under_review=0, batch324_accepted=50, batch324_reviews=250, batch324_lessons=35, batch324_lexeme_logs=18. `wc -l export/*.jsonl` total=16,297.
- Process events: Batch 324 events are continuous from 3109 `source-readback` through 3126 `final-audit-green`; this log finalization is recorded next.
