# Batch 337 process log

## Scope

- Batch: `batch-337`
- Rule: **Rule 295**
- Planned count: 50 rows
- Starting verified count: 16,897 / 20,000
- Remaining before batch: 3,103
- Frame family: visible water-fauna singular/third-person **nonpast** perception after Rule 294.
- Construction: `PRONOUN TARGET DEMONSTRATIVE nyajil`.
- Purpose: add a fresh zero-collision visible water-fauna lexical-field pass 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 295 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 `ngayu`, `yundu`, `nyulu`, `bula`, and `jana`.
- Patz local-demonstrative material: bare `yaluy` "here" and `yinyay` "there".
- Patz `nyaji-l` support: nonpast visual perception `nyajil` only; no past `nyajin`, purposive `nyaji-nka`, reduplicated watching form, or perception compound.

## Preflight

- First candidate set included `yuday`, `kulil`, and `nuwi`; exact-surface preflight found accepted collisions for those target/pronoun bands in earlier batches, so all three were dropped before banking.
- Final target set: `ngawiya`, `ngujay`, `kuyu`, `yawu`, `judi`, `ngalkun`, `kubarr`, `kiju`, `wakal`, `julul`.
- Support set: `ngayu`, `yundu`, `nyulu`, `bula`, `jana`, `yaluy`, `yinyay`, `nyajil`.
- Coverage before banking:
  - targets: `ngawiya` 85, `ngujay` 17, `kuyu` 431, `yawu` 26, `judi` 6, `ngalkun` 12, `kubarr` 36, `kiju` 37, `wakal` 8, `julul` 16.
  - support: `ngayu` 1241, `yundu` 837, `nyulu` 512, `bula` 308, `jana` 1013, `yaluy` 3192, `yinyay` 3494, `nyajil` 3347.
- 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 nominative singular/third pronoun in slot 1; target noun in slot 2; bare `yaluy` or `yinyay` in slot 3; final `nyajil`; no loans; no denied Kuku forms; no denied English action/source-prose drift.

## Planned rows

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

## 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 `nganya`, `yununy`, `nyunguny`, `bulangan`, `janangan`, or any dative/locative/possessive forms.
- Keep `yaluy`, `yinyay`, and `nyajil` uninflected; do not import past `nyajin`, 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 "see" only.

## Execution checklist

- Compile `bank_337.py` and `close_337.py`; verify `bank_337.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

- Static script check passed:
  - `python3 -m py_compile batch_scripts/bank_337.py batch_scripts/close_337.py`
  - `bank_337.scan_static()` returned 0 static issues over 50 rows.
- Banking succeeded:
  - `python3 batch_scripts/bank_337.py`
  - Output: `banked batch-337: 50 rows under_review`.
  - DB readback after banking: 50 `under_review` rows; verified total remained 16,897 and under-review total was 50.
- Pre-close lint and row checks passed:
  - `python3 lint_corpus.py`
  - Output: `lint: 16947 rows scanned, 0 issues flagged`; goal metric remained 16,897 / 20,000 because Batch 337 was still under review.
  - Read back all 50 Batch 337 rows as `under_review`, sequence 1..50, matching the planned Kuku surfaces.
  - Whole-corpus exact `lower(kuku)+lower(english)` duplicate scan returned 0 duplicate groups.
- Close succeeded:
  - `python3 batch_scripts/close_337.py`
  - Output: `closed batch-337: accepted=50, reviews=250, lessons=35, lexeme_logs=18, verified 16897->16947, kuku_words 122947->123147`.
- Post-close corpus checks passed:
  - `python3 lint_corpus.py`
  - Output: `lint: 16947 rows scanned, 0 issues flagged`; `GOAL METRIC: 16947 / 20000 verified sentences (123147 Kuku words)`.
  - DB audit: accepted/revised verified total 16,947; under_review 0; remaining to 20,000 = 3,053.
  - Batch 337 rows: 50 accepted rows, seq 1..50.
  - Review rows: 250; lessons: 35; `lexeme_log` rows with action `batch-337-verify`: 18.
  - Exact duplicate scan: 0 duplicate groups.
- Export was refreshed:
  - `python3 export_training.py`
  - Output: 16,947 exported rows with train/dev/synthtest split 14,209 / 1,380 / 1,358.
  - Export file readback: `wc -l export/train.jsonl export/dev.jsonl export/synthtest.jsonl` = 14,209 / 1,380 / 1,358, total 16,947.
- Living books were updated:
  - `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`
  - `reports/SAMPLE-PRODUCTION-PAGES.md`
  - `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`
  - `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`
- Render and live docs verification passed:
  - `./render-docs.sh` rendered all four HTML documents and wrote `public-docs/index.html`.
  - `https://mobtranslate.com/docs` returned HTTP 301 to `/docs/`.
  - `/docs/` and all four `.html` plus four `.md` document routes returned HTTP 200.
  - Live operator, sample, grammar, and errata docs contain Batch 337 / 16,947 markers and the representative `nyajil` examples.
  - Stale Batch 336 handoff markers were absent from live operator/sample docs.
- Process ledger state before this log-finalization edit:
  - Batch 337 process events are continuous from 3358 through 3376.
  - Event 3372 records export refresh.
  - Event 3373 records the source-book update.
  - Event 3374 records local render.
  - Event 3375 records live docs verification.
  - Event 3376 records final lint/DB/export/duplicate/process-event audit.

## Handoff

Continue from **16,947 / 20,000** verified sentences, with **3,053** remaining. Rule 296 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,
past/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_338.py` and `close_338.py`, run a new exact duplicate preflight, and record the source readback before banking.
