# Batch 323 / Rule 281 process log

## Rule selection

Rule 281 continues the verified visible water/landform field with a complementary non-singular nonpast pronoun
perception sweep after Rule 280. The construction is deliberately narrow:

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

The batch is a complementary-deictic counterpart to Rule 278, not a new semantic license. It opens only plain visual
nonpast perception/reference clauses with bare nominative non-singular pronouns, one bare visible water/landform noun,
one bare local demonstrative, and `nyajil` as the nonpast surface of `nyaji-l` "see".

## Source readback

Dictionary line readback:

- `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.
- `bubu` 3452-3470: noun, ground/earth; country/place and dirtiness extensions closed.
- `wawubaja` 26813-26821: noun, river.
- `daburri` 4431-4441: noun, swamp / brackish swamp water.
- `dulngku` 6521-6529: noun, reef.
- `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 281 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 3043-3049: `nyaji-l` is the nonpast form of "see"; the batch uses corpus-conventional `nyajil`.
- Patz lines 2568-2571: `nyaji-ny` past is contrast only; Rule 281 does not use `nyajin`.

## Preflight

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

- `Jana manjal yinyay nyajil.` already exists in Batch 194, row 45.

Replacement target testing found no collisions for `wawubaja` in the Rule 281 frame set, so the final target set uses
`wawubaja` river and excludes `manjal` 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` 970, `daburri` 44, `dajali` 98, `dulngku` 63, `jalun` 255, `jirka` 34, `wawubaja` 394, `yilki`
  36, `yiri` 30, `yirri` 30.
- Support: `ngali` 293, `ngaliny` 235, `yubal` 245, `yurra` 250, `jana` 913, `yaluy` 2862, `yinyay` 3124, `nyajil`
  2997.

## Planned rows

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

## 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 `wawubaja` as river only; do not open travel, route, crossing, bank, place-name, or water-use rows.
- Keep `daburri` as swamp/brackish swamp water only; do not open ecology, water-use, crossing, danger, or place rows.
- Keep `dulngku` as reef only; do not open fishing, travel, navigation, danger, place, or ecology rows.
- Keep all subject pronouns as bare nominatives: no `ngalingan`, `ngalinyan`, `yubalan`, `yurrangan`, `janangan`, or
  other pronoun case forms.
- Keep `yaluy`, `yinyay`, and `nyajil` uninflected; do not import past `nyajin`, purposive `nyaji-nka`, or
  `nyaji-l-nyaji-ny` watching/reduplicated forms into Rule 281.
- 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_323.py` inserted 50 explicit hand-authored rows as `under_review`.
- Readback: all 50 stored rows matched the planned non-singular pronoun-target-demonstrative-`nyajil` frames.
- Lint before close: `lint: 16247 rows scanned, 0 issues flagged`; goal metric remained 16,197 while the batch was
  under review.
- Close: `python3 batch_scripts/close_323.py` accepted 50 rows, wrote 250 five-lens reviews, 35 lessons, and 18
  lexeme/source-log rows; verified count moved 16,197 -> 16,247 and Kuku word count moved 120,147 -> 120,347.
- Export refresh: `python3 export_training.py` wrote 16,247 rows total: train 13,629, dev 1,312, synthtest 1,306.
- Living books: operator guide, sample production pages, grammar cheatsheet, and dictionary errata updated for
  Batch 323 / Rule 281, including duplicate-pressure notes for `manjal`, the sourced `wawubaja` replacement, and
  Rule 282 handoff to `bank_324.py` / `close_324.py`.
- Render/local docs: `./render-docs.sh` regenerated `public-docs/`; local HTML and raw `.md` marker checks found
  Batch 323 / Rule 281 / 16,247 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 323 markers and
  example sentences.
- Final audit: `python3 lint_corpus.py` green over 16,247 rows; DB audit showed verified_total=16,247,
  under_review=0, batch323_accepted=50, batch323_reviews=250, batch323_lessons=35, batch323_lexeme_logs=18.
  `wc -l export/*.jsonl` total=16,247.
- Process events: Batch 323 events are continuous from 3090 `source-readback` through 3107 `final-audit-green`;
  this log finalization is recorded next.
