# Batch 321 process log - Rule 279 visible water/landform nonpast pronoun perception after Rule 278

Date: 2026-07-09
Actor: claude-main
Corpus state before banking: 16,097 verified sentences, 119,747 Kuku words, 0 under-review rows.

## Rule selection

Rule 279 is the singular/third-dual/first-plural-inclusive nonpast counterpart to Rule 276, after the Rule 278
non-singular nonpast sweep. It keeps a tightly bounded visible water/landform field and uses bare nominative `ngayu`,
`yundu`, `nyulu`, `bula`, and `ngana` with `nyajil` as the sourced nonpast perception surface. The first candidate
with `jukar` was rejected because `Ngana jukar yinyay nyajil.` already exists in Batch 194; `bubu` ground/earth
replaces it after fresh source readback and a zero-duplicate preflight.

## Target inventory

Dictionary targets checked directly before authoring:

- `bana` lines 1264-1272: water.
- `dajali` lines 4510-4518: deep water.
- `jalun` lines 7612-7620: sea, large body of water. Flood rows stay closed.
- `jirka` lines 9803-9813: spring, read as a water source rather than season.
- `bubu` lines 3452-3470: ground/earth; country/place extension stays closed.
- `manjal` lines 17832-17840: mountain.
- `wawubaja` lines 26813-26821: river.
- `yilki` lines 30031-30039: creek.
- `yiri` lines 30410-30418: waterfall.
- `yirri` lines 30507-30515: running water. The `yirri-damal` leak compound stays closed.

Grammar support checked directly before authoring:

- Patz grammar lines 2577-2586 and 2592-2603: personal pronoun table and base forms; bare nominative `ngayu`,
  `yundu`, `nyulu`, `bula`, and `ngana`.
- Patz grammar lines 2678-2686: `bula` as third dual and `ngana` as first plural inclusive.
- Patz grammar lines 2838-2845: `yaluy` here and `yinyay` there.
- Patz grammar lines 3043-3049: `nyaji-l` see; Rule 279 uses the corpus surface `nyajil` as nonpast perception.
- Patz grammar lines 2568-2571: `nyaji-ny` see-PAST, used only as contrast; Rule 279 does not use `nyajin`.

## Preflight

- Exact duplicate preflight over the first candidate found one collision: `Ngana jukar yinyay nyajil.` from Batch
  194, row 44. `Jukar` was excluded from Rule 279 rather than special-cased.
- Exact duplicate preflight over the final 50 Rule 279 surfaces with `bubu` returned no accepted, revised, or
  under-review collisions.
- Token-aware target coverage after Rule 278: `bana` 623, `dajali` 63, `jalun` 108, `jirka` 23, `bubu` 682,
  `manjal` 50, `wawubaja` 216, `yilki` 22, `yiri` 20, and `yirri` 20 accepted/revised rows.
- Support coverage after Rule 278: `ngayu` 1371, `yundu` 1231, `nyulu` 1846, `bula` 274, `ngana` 1020, `yaluy`
  2824, `yinyay` 3078, and `nyajil` 3523 accepted/revised rows.

## Planned rows

1. `Ngayu bana yaluy nyajil.`
2. `Ngayu dajali yaluy nyajil.`
3. `Ngayu jalun yaluy nyajil.`
4. `Ngayu jirka yaluy nyajil.`
5. `Ngayu bubu yaluy nyajil.`
6. `Ngayu manjal yaluy nyajil.`
7. `Ngayu wawubaja yaluy nyajil.`
8. `Ngayu yilki yaluy nyajil.`
9. `Ngayu yiri yaluy nyajil.`
10. `Ngayu yirri yaluy nyajil.`
11. `Yundu bana yinyay nyajil.`
12. `Yundu dajali yinyay nyajil.`
13. `Yundu jalun yinyay nyajil.`
14. `Yundu jirka yinyay nyajil.`
15. `Yundu bubu yinyay nyajil.`
16. `Yundu manjal yinyay nyajil.`
17. `Yundu wawubaja yinyay nyajil.`
18. `Yundu yilki yinyay nyajil.`
19. `Yundu yiri yinyay nyajil.`
20. `Yundu yirri yinyay nyajil.`
21. `Nyulu bana yaluy nyajil.`
22. `Nyulu dajali yaluy nyajil.`
23. `Nyulu jalun yaluy nyajil.`
24. `Nyulu jirka yaluy nyajil.`
25. `Nyulu bubu yaluy nyajil.`
26. `Nyulu manjal yaluy nyajil.`
27. `Nyulu wawubaja yaluy nyajil.`
28. `Nyulu yilki yaluy nyajil.`
29. `Nyulu yiri yaluy nyajil.`
30. `Nyulu yirri yaluy nyajil.`
31. `Bula bana yinyay nyajil.`
32. `Bula dajali yinyay nyajil.`
33. `Bula jalun yinyay nyajil.`
34. `Bula jirka yinyay nyajil.`
35. `Bula bubu yinyay nyajil.`
36. `Bula manjal yinyay nyajil.`
37. `Bula wawubaja yinyay nyajil.`
38. `Bula yilki yinyay nyajil.`
39. `Bula yiri yinyay nyajil.`
40. `Bula yirri yinyay nyajil.`
41. `Ngana bana yinyay nyajil.`
42. `Ngana dajali yinyay nyajil.`
43. `Ngana jalun yinyay nyajil.`
44. `Ngana jirka yinyay nyajil.`
45. `Ngana bubu yinyay nyajil.`
46. `Ngana manjal yinyay nyajil.`
47. `Ngana wawubaja yinyay nyajil.`
48. `Ngana yilki yinyay nyajil.`
49. `Ngana yiri yinyay nyajil.`
50. `Ngana 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 all subject pronouns as bare nominatives: no `nganya`, `yununy`, `nyunguny`, `bulangan`, `nganangan`, 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 279.
- 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

Batch 321 closed on 2026-07-09 with 50 accepted rows, 250 five-lens review passes, 35 lessons, and 18
lexeme/source-log rows.

Measured corpus movement:

- Verified sentences: 16,097 -> 16,147.
- Kuku words: 119,747 -> 119,947.
- Remaining to 20,000: 3,853.
- Under-review rows after close: 0.

Post-close verification:

- `python3 lint_corpus.py` returned `lint: 16147 rows scanned, 0 issues flagged` and `GOAL METRIC: 16147 / 20000
  verified sentences  (119947 Kuku words)`.
- `python3 export_training.py` refreshed 16,147 rows: train 13,547, dev 1,303, synthtest 1,297.
- `wc -l export/*.jsonl` returned dev 1,303, synthtest 1,297, train 13,547, total 16,147.
- SQLite audit returned verified 16,147, under_review 0, Batch 321 accepted 50, reviews 250, lessons 35, and
  `batch-321-verify` lexeme logs 18.
- Process events are continuous from 3052 source-readback through 3069 final-audit-green before log finalization.
- Source books were updated for 16,147 / Rules 1-279 and handoff to `bank_322.py` / `close_322.py`.
- Rendered docs were regenerated with `./render-docs.sh`; local HTML and raw Markdown markers for 16,147, Batch 321,
  Rule 279, `batch-321`, sample examples, `bank_322.py`, and `close_322.py` were present.
- Live verification with browser-like `curl` confirmed `/docs` 301-redirects to `/docs/`; `/docs/`, all four HTML
  pages, and all four raw `.md` files returned 200; live HTML markers were present for operator guide, sample pages,
  grammar cheatsheet, and dictionary errata.
