# Batch 169 process log - Rule 127 environmental lexical expansion after Rule 126

Program: Kuku Yalanji synthetic parallel corpus for MobTranslate.
Batch label: `batch-169`.
Date opened: 2026-07-07.
Starting verified corpus: 8,497 / 20,000 verified sentences, 93,569 Kuku words, lint green, no under-review rows.
Target after close: 8,547 / 20,000 verified sentences.

## Operator intent

Batch 169 follows the lexical cadence after the Rule 126 construction pass. It foregrounds a small source-backed
environmental set inside already controlled frames. The batch admits no new morphology.

Foregrounded heads:

- water/fire/wood-paperbark-grass-shelter: `bana`, `baya`, `juku`, `buyku`, `jikan`, `wurun`;
- weather/sky: `ngurrban`, `muyar`, `jiri`, `wungar`;
- animals: `buyi`, `jarba`, `bilngkumu`, `yirku-yirku`.

No row is generator-authored. The 50 sentence pairs are hand-authored in the main loop after source readback.

## Source inventory checked before authoring

Primary grammar file: `/mnt/donto-data/workspace/mobtranslate.com/dictionaries/kuku_yalanji/grammar.md`.
Primary dictionary file: `/mnt/donto-data/workspace/mobtranslate.com/dictionaries/kuku_yalanji/dictionary.yaml`.
Corpus lexeme table: `synthetic.db.lexemes`.

Exact dictionary readback confirmed:

- `bana`: water.
- `baya`: fire/flame/firewood; Patz notes possible English etymology but says it is not otherwise substantiated.
- `juku`: tree/wood/stick/splinter.
- `buyku`: paperbark.
- `jikan`: grass.
- `wurun`: humpy/shelter.
- `ngurrban`: cloud.
- `muyar`: wind.
- `jiri`: sky/heaven.
- `wungar`: sun.
- `buyi`: bird.
- `jarba`: generic snake.
- `bilngkumu`: salt-water crocodile.
- `yirku-yirku`: frog.

Grammar readback confirmed or reinforced:

- classifier table: `jarba`, `juku`, `bana`, `muyar`, `baya`;
- `juku-ji` with a stick, `juku-ngu` tree LOC, `juku-muny` tree ABL;
- `bana-nga` water LOC, `bana-ka` water DAT topic, and `bana` as a `wundi-l` object;
- `jikan-ba` grass LOC;
- `baya-nga` fire LOC and `baya` fire/firewood object;
- `wungar-a` sun LOC and `wungar` sun/day;
- `ngurrban` clouds and `muyar` wind in weather examples;
- `buyku` paperbark as ABS;
- `jarba`, `bilngkumu`, and `yirku-yirku` in animal examples.

## Pre-bank duplicate scan

The first planned-surface scan found one exact duplicate:

- `Ngamu karrkay-anka yajarrin.` already occurred in `batch-166`.

It was repaired before banking by changing only the sourced target:

- `Ngamu nganjan-anda yajarrin.`

The final planned-surface duplicate scan was clean.

## Static guard design

`bank_169.py` includes guards for:

- exactly 50 rows, sequence order, English punctuation, analysis separator, JSON fields, evidence, and confidence;
- frame names starting with `r127_`;
- no temporal-clitic construction markers in this lexical batch;
- no denied/out-of-scope tokens: `yah`, `ngawuya`, `walnga`, `maja-nga`, `yunga`, `bada-bada`,
  `wangkar-wangkar`, `biyul`;
- lexical sense guards for water/firewood/stick-paperbark/grass/shelter/cloud/wind/sky/sun/bird/snake/crocodile/frog;
- `mayngku` and `wulman` loan/contact forms must be loan-logged when present;
- `babaji-y` askers must not be ERG-marked in the first token;
- `nyaji-l` common-noun perceivers must be ERG-marked; pronoun A rows are exempt;
- `yajarri-l` laugh rows must contain a sourced DAT:pt target suffix;
- `COMIT` analyses must use one of the closed sourced comitative forms;
- exact duplicate Kuku surfaces are checked against all non-rejected rows before insertion.

## Planned row groups

- Rows 1-10: rest rows with environmental and animal heads.
- Rows 11-20: object location/source/goal rows and a humpy perception row.
- Rows 21-30: perception/hearing rows for cloud, wind, sky, sun, bird, snake, crocodile.
- Rows 31-35: ask-about rows with retained DAT topics.
- Rows 36-40: laugh-target rows with sourced DAT:pt targets.
- Rows 41-46: closed comitative rows with environmental places.
- Rows 47-50: additional animal/object rows.

## Pre-bank state

- `sqlite3 synthetic.db`: accepted 7,586; revised 911; under_review 0; verified total 8,497.
- `lint_corpus.py`: `lint: 8497 rows scanned, 0 issues flagged`.

## Banking, review, close, export, and docs

`python3 -m py_compile batch_scripts/bank_169.py` passed.

Pre-bank lint:

- `lint: 8497 rows scanned, 0 issues flagged`
- `GOAL METRIC: 8497 / 20000 verified sentences (93569 Kuku words)`

Bank command:

- `python3 batch_scripts/bank_169.py`
- Result: `banked batch-169: 50 rows under_review, avg_words=3.58, process_events=8`

Under-review lint:

- `lint: 8547 rows scanned, 0 issues flagged`
- `GOAL METRIC: 8497 / 20000 verified sentences (93569 Kuku words)`

Manual five-lens review:

- morphology: passed all 50 rows; checked retained LOC, ABL, DAT, LOC:pt/DAT:pt, COMIT, ERG, past, and nonpast forms;
- lexicon: passed all 50 rows; checked `bana`, `baya`, `juku`, `buyku`, `jikan`, `wurun`, `ngurrban`, `muyar`,
  `jiri`, `wungar`, `buyi`, `jarba`, `bilngkumu`, and `yirku-yirku`; retained the `baya` possible-loan caution
  without over-marking it as a loan;
- syntax: passed all 50 rows; checked rest, placement, transfer, perception/hearing, ask-about, laugh targets, and
  closed-comitative rows;
- fidelity: passed all 50 rows after duplicate repair; checked no new instruments/comitatives/possessives from `juku`
  or animal heads, and honest LOC glossing for `bana-nga`, `juku-ngu`, and `jikan-ba`;
- register: passed all 50 rows; ordinary environmental, weather/sky, animal, perception/hearing, ask/laugh, and
  companion-motion rows pending elder verification.

`python3 -m py_compile batch_scripts/close_169.py` passed.

Close command:

- `python3 batch_scripts/close_169.py`
- Result: `closed batch-169: 50 accepted rows, 250 review passes, 20 lessons, 49 lexeme/source-log rows, 14 process events, under_review=0, verified corpus=8547`

Post-close lint:

- `lint: 8547 rows scanned, 0 issues flagged`
- `GOAL METRIC: 8547 / 20000 verified sentences (93748 Kuku words)`

DB readback after close:

- accepted: 7,636
- revised: 911
- under_review: 0
- verified total: 8,547 / 20,000
- Batch 169 reviews: 250
- Batch 169 lessons: 20
- Batch 169 lexeme/source-log rows: 49
- Batch 169 process events after export/docs/live logging: 19

Training export refreshed:

- total rows: 8,547
- train/dev/synthtest: 7,154 / 697 / 696
- manifest: `export/MANIFEST.json`

## Living books and live docs

Canonical report sources updated:

- `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`: 8,547 count, Rule 127 close, Rule 128 handoff.
- `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`: new Rule 127 section with examples and traps.
- `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`: new Batch-169 errata/source section.
- `reports/SAMPLE-PRODUCTION-PAGES.md`: refreshed build-state note.

Rendered with:

- `./render-docs.sh`
- Rendered: `operator-guide.html`, `sample-pages.html`, `grammar-cheatsheet.html`, `dictionary-errata.html`,
  raw `.md` copies, and `index.html`.

Local rendered markers present:

- operator guide: `8,547`, `Rule 127`, `Rule 128`, `bank_170.py`,
  `batch-169-environmental-lexical-expansion-after-rule126-process.md`;
- grammar cheatsheet: `Rule 127`, `Baya ngalkal-ba wunan`, `Ngamu nganjan-anda yajarrin`, `7154/697/696`;
- dictionary errata: `Batch-169`, `baya`, `49 lexeme/source-log`, process-log path;
- sample pages: `8,547`, `Batch 169`, `Rule 127`.

Live checks:

- `/docs` returned 301 to `/docs/`.
- `/docs/` resolved 200.
- All four `.html` docs returned 200.
- All four raw `.md` docs returned 200.
- Live markers present:
  - operator guide: `8,547`, `Rule 127`, `Rule 128`, process-log path;
  - grammar cheatsheet: `Rule 127`, `Baya ngalkal-ba wunan`, `Ngamu nganjan-anda yajarrin`, `7154/697/696`;
  - dictionary errata: `Batch-169`, `baya`, `49 lexeme/source-log`, process-log path;
  - sample pages: `8,547`, `Batch 169`, with `Rule 127` present in raw Markdown and wrapped across a line break in HTML.

## Next handoff

Next batch should be `batch-170`, proposed Rule 128: case-frame consolidation after Rule 127. Drill the new
environmental heads through old frames without adding morphology. Keep active the Rule 127 traps: no new instruments,
comitatives, or possessives from `juku` or animal heads; `baya` fire/firewood only, with possible-loan note but no
automatic loan marking; `bana` water; `ngurrban` cloud; `muyar` wind; `jiri` sky; `wungar` sun/day; `buyi` bird;
`jarba` snake; `bilngkumu` crocodile; `yirku-yirku` frog; loan logging for `wulman`/`mayngku`; common-noun
`nyaji-l` perceivers ERG-marked; `babaji-y` askers not ERG-marked; `yajarri-l` targets DAT:pt; closed comitatives
only.
