# Batch 340 process log

## Scope

- Batch: `batch-340`
- Rule: **Rule 298**
- Planned count: 50 rows
- Starting verified count: 17,047 / 20,000
- Remaining before batch: 2,953
- Frame family: visible water-fauna non-singular **past** perception after Rules 295-297.
- Construction: `PRONOUN TARGET DEMONSTRATIVE nyajin`.
- Purpose: add the sourced non-singular past counterpart to the Rule 297 water-fauna non-singular nonpast field while keeping semantic scope to visible object reference/perception only.

## Source readback

- Core dictionary-derived lexicon line 744: `ngawiya` "sea turtle", neutral, hunted-food note; Rule 298 selects visible sea-turtle reference only, not hunting, turtle-spearing, cooking, or eating.
- Core dictionary-derived lexicon line 745: `ngujay` "freshwater turtle", neutral; visible freshwater-turtle reference only.
- Core dictionary-derived lexicon line 751: `kuyu` "fish", neutral as food/object; visible generic-fish reference only, not catching, spearing, bait, net, cooking, or eating.
- Core dictionary-derived lexicon line 753: `yawu` "stingray", ambiguous; visible stingray reference only, not danger, hunting, spearing, or catch rows.
- Core dictionary-derived lexicon line 754: `judi` "barramundi"; visible Yalanji-form barramundi reference only, not Nyungkul replacement forms or fishing/cooking rows.
- Core dictionary-derived lexicon line 755: `ngalkun` "mullet", neutral; visible mullet reference only.
- Core dictionary-derived lexicon line 756: `kubarr` "big black freshwater eel", neutral; visible freshwater-eel reference only, not colour/blackness rows.
- Core dictionary-derived lexicon line 757: `kiju` "mudcrab", neutral; visible mudcrab reference only, not biting, catching, cooking, or warning rows.
- Core dictionary-derived lexicon line 758: `wakal` "prawn, lobster", neutral; visible prawn reference only, not lobster alternation, catching, cooking, or eating.
- Core dictionary-derived lexicon line 759: `julul` "oyster", neutral; visible oyster reference only, not gathering, eating, shore, reef, or ecology rows.
- Patz pronoun tables: bare nominative `ngali`, `ngaliny`, `yubal`, `yurra`, and `ngana`.
- Patz local-demonstrative material: bare `yaluy` "here" and `yinyay` "there".
- Patz verbal support: `nyaji-ny` "see-PAST" plus past `-ny`; Rule 298 uses only corpus-conventional `nyajin`.

## Preflight

- Final target set inherited from Rules 295-297: `ngawiya`, `ngujay`, `kuyu`, `yawu`, `judi`, `ngalkun`, `kubarr`, `kiju`, `wakal`, `julul`.
- Support set: `ngali`, `ngaliny`, `yubal`, `yurra`, `ngana`, `yaluy`, `yinyay`, `nyajin`.
- Coverage before banking:
  - targets: `ngawiya` 100, `ngujay` 32, `kuyu` 446, `yawu` 41, `judi` 21, `ngalkun` 27, `kubarr` 51, `kiju` 52, `wakal` 23, `julul` 31.
  - support: `ngali` 413, `ngaliny` 355, `yubal` 365, `yurra` 350, `ngana` 935, `yaluy` 3282, `yinyay` 3554, `nyajin` 700.
- Exact duplicate preflight over the final 50 Kuku surfaces returned no accepted/revised/under-review collisions.
- Static guard target: exactly 50 hand-authored rows; sequence 1..50; one target per row; four words per Kuku sentence; bare non-singular nominative pronoun in slot 1; target noun in slot 2; bare `yaluy` or `yinyay` in slot 3; final `nyajin`; no loans; no denied Kuku forms; no denied English action/source-prose drift.

## Planned rows

1. `Ngali ngawiya yaluy nyajin.`
2. `Ngali ngujay yaluy nyajin.`
3. `Ngali kuyu yaluy nyajin.`
4. `Ngali yawu yaluy nyajin.`
5. `Ngali judi yaluy nyajin.`
6. `Ngali ngalkun yaluy nyajin.`
7. `Ngali kubarr yaluy nyajin.`
8. `Ngali kiju yaluy nyajin.`
9. `Ngali wakal yaluy nyajin.`
10. `Ngali julul yaluy nyajin.`
11. `Ngaliny ngawiya yinyay nyajin.`
12. `Ngaliny ngujay yinyay nyajin.`
13. `Ngaliny kuyu yinyay nyajin.`
14. `Ngaliny yawu yinyay nyajin.`
15. `Ngaliny judi yinyay nyajin.`
16. `Ngaliny ngalkun yinyay nyajin.`
17. `Ngaliny kubarr yinyay nyajin.`
18. `Ngaliny kiju yinyay nyajin.`
19. `Ngaliny wakal yinyay nyajin.`
20. `Ngaliny julul yinyay nyajin.`
21. `Yubal ngawiya yaluy nyajin.`
22. `Yubal ngujay yaluy nyajin.`
23. `Yubal kuyu yaluy nyajin.`
24. `Yubal yawu yaluy nyajin.`
25. `Yubal judi yaluy nyajin.`
26. `Yubal ngalkun yaluy nyajin.`
27. `Yubal kubarr yaluy nyajin.`
28. `Yubal kiju yaluy nyajin.`
29. `Yubal wakal yaluy nyajin.`
30. `Yubal julul yaluy nyajin.`
31. `Yurra ngawiya yinyay nyajin.`
32. `Yurra ngujay yinyay nyajin.`
33. `Yurra kuyu yinyay nyajin.`
34. `Yurra yawu yinyay nyajin.`
35. `Yurra judi yinyay nyajin.`
36. `Yurra ngalkun yinyay nyajin.`
37. `Yurra kubarr yinyay nyajin.`
38. `Yurra kiju yinyay nyajin.`
39. `Yurra wakal yinyay nyajin.`
40. `Yurra julul yinyay nyajin.`
41. `Ngana ngawiya yaluy nyajin.`
42. `Ngana ngujay yaluy nyajin.`
43. `Ngana kuyu yaluy nyajin.`
44. `Ngana yawu yaluy nyajin.`
45. `Ngana judi yaluy nyajin.`
46. `Ngana ngalkun yaluy nyajin.`
47. `Ngana kubarr yaluy nyajin.`
48. `Ngana kiju yaluy nyajin.`
49. `Ngana wakal yaluy nyajin.`
50. `Ngana julul yaluy nyajin.`

## Guardrails

- Keep all target labels as bare visible water-fauna nouns with the selected literal target senses only.
- Do not reopen collided `yuday`, `kulil`, or `nuwi` surfaces in this batch.
- Do not use shark/danger target `yaburr`, ray-alternate `badibu`, or any unsourced replacement label.
- Keep all subject pronouns as bare nominatives: no `ngalingan`, `ngalinka`, `ngalinda`, `ngalinyan`, `ngalinyanka`, `ngalinyanda`, `yubalan`, `yubalanka`, `yubalanda`, `yurrangan`, `yurranka`, `yurranda`, `nganangan`, `ngananka`, or `ngananda`.
- Keep `yaluy`, `yinyay`, and `nyajin` uninflected; do not import nonpast `nyajil`, purposive `nyaji-nka`, reduplicated watching forms, hearing compounds, or perception compounds.
- Do not import catching, spearing, hunting, cooking, eating, bait, net, hook, danger, ecology, shore, reef, place, story, colour-property, target case, demonstrative case, compounds, productive reduplication, support inflection, source prose, or object-use predicates.
- English must remain literal: selected subject value, target label, here/there, and "saw" only.

## Execution checklist

- Compile `bank_340.py` and `close_340.py`; verify `bank_340.scan_static() == []`.
- Bank 50 explicit hand-authored rows as `under_review`.
- Run corpus lint before close.
- Read back all 50 rows from SQLite.
- Run exact duplicate scan.
- Close only after morphology, lexicon, syntax, fidelity, and register lenses pass.
- Record lessons and lexeme/source logs.
- Run post-close lint.
- 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

Closed 2026-07-09.

- Banked exactly 50 explicit hand-authored rows as `under_review`, then accepted all 50 after five-lens review.
- Pre-close lint scanned 17,097 non-rejected rows with 0 issues; verified total remained 17,047 before close.
- Row readback checked all 50 Batch 340 rows in SQLite; exact surface duplicate scan over `lower(trim(kuku))` returned 0 duplicate groups.
- Five-lens review passed morphology, lexicon, syntax, fidelity, and register for all rows.
- Inserted 250 review passes, 35 lessons, and 18 lexeme/source-log rows.
- Close moved the corpus from 17,047 to 17,097 verified sentences and from 123,547 to 123,747 Kuku words.
- Post-close lint scanned 17,097 rows with 0 issues; no rows remained under review.
- Export refreshed to train/dev/synthtest `14,335 / 1,391 / 1,371`.
- Operator guide, sample pages, grammar cheatsheet, and dictionary errata were updated, rendered to `public-docs/`, and live-verified at `https://mobtranslate.com/docs/`.
- Live verification: `/docs` 301s to `/docs/`; `/docs/` is 200 with all HTML/MD links; four rendered HTML pages and four raw Markdown pages return 200 and carry Batch 340 / Rule 298 / 17,097 markers where expected.

## Handoff

Continue from **17,097 / 20,000** verified sentences, with **2,903** remaining. Rule 299 must begin with a fresh source pass and must not infer fish action, turtle spearing, hunting, catching, cooking, eating, danger, ecology, target/pronoun/demonstrative case, target compounds, productive reduplication, perception compounds, nonpast/purposive/reduplicated perception, support inflection, or any carried weapon/tool/water/landform/sky/fire/fauna/body/dwelling trap from this batch. If the next batch continues the visible-object perception consolidation, write `bank_341.py` and `close_341.py`, run a new exact duplicate preflight, and record the source readback before banking.
