# Batch 167 process log - Rule 125 source-backed lexical expansion after Rule 124

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

## Operator intent

Batch 167 follows the lexical cadence after Rule 124. It adds or foregrounds a small set of source-backed content heads
inside the already controlled Rule 124 frames. No new morphology is introduced. The batch keeps the same case-frame
discipline:

- new heads enter as ABS rest subjects, moved objects, perceived objects, or sourced DAT topics only;
- locations/sources/goals remain the already checked `bubu-ngu`, `wabarr-ba`, `ngalkal-ba`, `balji-nga`,
  `bayan-ba`, `bayan-ka`, `bayan-muny`, `jalun-bu`, `jalun-muny`, `baral-ba`, and `wawubaja-nga`;
- `nyaji-l` perception rows keep ERG common-noun A and bare pronoun A;
- `babaji-y` ask-about rows keep ABS/S asker, LOC:pt person asked, and sourced DAT topic;
- `yajarri-l` laugh-target rows keep DAT:pt targets;
- comitative rows keep the closed sourced set only.

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`.

### New or foregrounded heads

Exact dictionary and grammar readback confirmed:

- `kuyu`: fish; grammar has frequent `kuyu mani-ny`, `kuyu waju-l`, `kuyu jalun-muny`, and river/sea examples.
- `minya`: meat/flesh food/animal; grammar sources `minya-ka`, meat object rows, and classifier uses.
- `kaba`: rain; grammar sources `kaba kada-y`, `kaba dara-nyjiku`, and no-rain/weather rows.
- `dawar`: star; retained as the safe star lexeme.
- `kija`: moon/month only; dictionary has a place-name entry too, but this batch uses only the grammar/dictionary moon sense.
- `warrbi`: axe; dictionary also gives a grass-house sense, but this batch uses axe only.
- `naybu`: knife, an English loan; grammar sources `naybu-bu` as instrument, but this batch uses the ABS object only.
- `kalka`: fishing spear / generic spear; grammar sources `kalka-ji` as spear-comitative/equipment.
- `mirru`: club/nullanulla.
- `kunjuri`: shield; grammar sources `kunjuri-mun-du` as shield-INST.
- `wangal`: boomerang; errata warns it is a noun, not a dance verb.
- `marrkin`: gun/rifle, from musket; grammar sources `marrkin-ji`, `marrkin-da`, and `marrkin` as object.

`biyul` was checked and deliberately excluded from this batch: the dictionary entry says spear-head but carries a
Nyungkal/Yalanji caution. `Kalka` is the cleaner spear head for this batch.

## Pre-bank duplicate scan

The first planned surface scan found four exact duplicates in frame-maintenance rows:

- `Jalbu nganjan-anda mayi-ka babajin.` already occurred in `batch-165`.
- `Ngamu kami-nda yajarrin.` already occurred in `batch-165`.
- `Jawun warru-ndu yajarrin.` already occurred in `batch-164`.
- `Ngamu kambi-ji bayan-muny kadan.` already occurred in `batch-164`.

Each was repaired before banking by changing only a sourced topic, target, or location:

- `Jalbu nganjan-anda minya-ka babajin.`
- `Ngamu maral-anda yajarrin.`
- `Jawun kami-nda yajarrin.`
- `Ngamu kambi-ji baral-ba dungan.`

The final planned-surface duplicate scan was clean.

During under-review manual syntax/fidelity checking, row 46 was repaired before close:

- Draft: `Wulman ngawa-nji bayan-ba bundanday.` / "The old man is staying at camp with the baby."
- Repair: `Wulman wabarr-ba bundanday ngawa-nji.` / "The old man is staying in the shade with the baby."
- Reason: the repaired row restores the source-like place-before-comitative order from the `bundanda-y ngawa-nji`
  model while avoiding exact duplicates such as `Wulman bayan-ba bundanday ngawa-nji` and
  `Babi bayan-ba bundanday ngawa-nji`.

## Static guard design

`bank_167.py` includes guards for:

- exactly 50 rows, sequence order, English punctuation, analysis separator, JSON fields, evidence, and confidence;
- 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`;
- no `biyul` in this batch;
- no unsourced `baral-muny`, no unsourced `kadar-anji`, no newly imported `ngunyin-ji`;
- `kija` rows must gloss moon/month;
- English star rows must use `dawar`;
- `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;
- possessive object forms must have explicit `POSS` analysis;
- exact duplicate Kuku surfaces are checked against all non-rejected rows before insertion.

## Planned row groups

- Rows 1-10: rest/source rows with new or foregrounded heads.
- Rows 11-20: object location/source/goal rows.
- Rows 21-30: perception rows with common-noun/pronoun A contrasts and sky nouns.
- Rows 31-35: ask-about rows with `minya-ka`, `kuku-ku`, and `mayngku-ku`.
- Rows 36-40: laugh-target rows with duplicate-repaired targets.
- Rows 41-46: closed comitative rows.
- Rows 47-50: additional object rows for shield, boomerang, gun, and club.

## Pre-bank state

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

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

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

Pre-bank lint:

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

Initial bank command:

- `python3 batch_scripts/bank_167.py`
- Result: `banked batch-167: 50 rows under_review, avg_words=3.68, process_events=8`

Under-review lint after first bank:

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

Manual review caught row 46 order, repaired the bank script, and rebanked:

- `python3 -m py_compile batch_scripts/bank_167.py`
- `python3 batch_scripts/bank_167.py`
- Result: `banked batch-167: 50 rows under_review, avg_words=3.68, process_events=16`

Rebank lint:

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

Manual five-lens review:

- morphology: passed all 50 rows; checked retained LOC, ABL, DAT, DAT:pt, LOC:pt, COMIT, ERG, past, and nonpast forms;
- lexicon: passed all 50 rows; checked `kuyu`, `minya`, `kaba`, `dawar`, `kija`, `warrbi`, `naybu`, `kalka`, `mirru`, `kunjuri`, `wangal`, `marrkin`, and all retained forms against source evidence;
- syntax: passed all 50 rows; checked object visibility, common-noun `nyaji-l` ERG, unmarked pronoun A, `babaji-y` ask-about, `yajarri-l` targets, transfer source/goal, and closed comitative frames;
- fidelity: passed all 50 rows after the row-46 order repair; checked `biyul` exclusion, `kija` moon-only, `dawar` star, `wangal` noun, `warrbi` axe, and loan transparency;
- register: passed all 50 rows; food, weather/sky, implements, and ordinary participant interaction, pending elder verification.

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

Close command:

- `python3 batch_scripts/close_167.py`
- Result: `closed batch-167: 50 accepted rows, 250 review passes, 20 lessons, 41 lexeme/source-log rows, 22 process events, under_review=0, verified corpus=8447`

Post-close lint:

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

DB readback after close:

- accepted: 7,536
- revised: 911
- under_review: 0
- verified total: 8,447 / 20,000
- Batch 167 reviews: 250
- Batch 167 lessons: 20
- Batch 167 lexeme/source-log rows: 41
- Batch 167 process events after export/docs/live logging: 26

Training export refreshed:

- total rows: 8,447
- train/dev/synthtest: 7,072 / 687 / 688
- manifest: `export/MANIFEST.json`

## Living books and live docs

Canonical report sources updated:

- `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`: 8,447 count, Rule 125 close, Rule 126 handoff.
- `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`: new Rule 125 section with examples and traps.
- `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`: new Batch-167 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,447`, `Rule 125`, `Rule 126`, `batch-167-source-backed-lexical-expansion-after-rule124-process.md`;
- grammar cheatsheet: `Rule 125`, `Kuyu balji-nga wunan`, `Wulman wabarr-ba bundanday ngawa-nji`, `7072/687/688`;
- dictionary errata: `Batch-167`, `biyul`, `kija`, `41 lexeme/source-log`, process-log path;
- sample pages: `Current build note`, `8,447`, `Batch 167`, `Rule 125`.

Live checks:

- `/docs` returned 301 to `/docs/`.
- `/docs/` returned 200.
- All four `.html` docs returned 200.
- All four raw `.md` docs returned 200.
- Live markers present:
  - operator guide: `8,447`, `Rule 125`, `Rule 126`, `batch-167-source-backed-lexical-expansion-after-rule124-process.md`;
  - grammar cheatsheet: `Rule 125`, `Kuyu balji-nga wunan`, `Wulman wabarr-ba bundanday ngawa-nji`, `7072/687/688`;
  - dictionary errata: `Batch-167`, `biyul`, `kija`, `41 lexeme/source-log`, process-log path;
  - sample pages: `Current build note`, `8,447`, `Batch 167`, `Rule 125`.

## Next handoff

Next batch should be `batch-168`, proposed Rule 126: case-frame consolidation after Rule 125. Drill the Rule 125
heads across object, place/source/goal, perception, and ask-about functions without introducing morphology. Keep the
new traps active: no `biyul`, `kija` moon/month only, `dawar` for star, `wangal` boomerang noun only, `warrbi` axe
only, logged loans for `naybu`/`marrkin`, no new instrument/comitative/possessive analogies, no `baral-muny`, no ERG
`babaji-y` askers, ERG common-noun `nyaji-l` perceivers, and explicit DAT:pt targets for `yajarri-l`.
