# Batch 165 process log - Rule 123 source-backed lexical expansion inside Rule 122 frames

Program: Kuku Yalanji synthetic parallel corpus for MobTranslate.
Batch label: `batch-165`.
Date opened: 2026-07-07.
Starting verified corpus: 8,297 / 20,000 verified sentences, 92,822 Kuku words, lint green, no under-review rows.
Target after close: 8,347 / 20,000 verified sentences.

## Operator intent

Batch 165 follows the lexical cadence after the Rule 122 construction batch. The grammar frame is deliberately stable:

- the same place/source forms from Rule 122;
- the same object-plus-location/source/goal frames;
- the same `nyaji-l` perception A-marking contrast;
- the same `babaji-y` ask-about case frame;
- the same `yajarri-l` laugh-target case frame;
- the same closed comitative set;
- the same two Patz-backed possessive object NPs.

The lexical work is to add ordinary source-backed heads inside those frames without inventing roots, comitatives,
possessives, or source forms. No row is generator-authored. The 50 sentence pairs were hand-authored in the main loop
from the checked source inventory below.

## 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 lexical heads

Exact dictionary readback and/or grammar readback confirmed these Batch 165 lexical targets:

- `ngunyin`: dilly bag; also bark/web/placenta by polysemy, but this batch uses the dilly-bag sense only.
- `yinkar`: dilly bag for holding remains; this batch says "remains dilly bag" in English to avoid flattening the sense.
- `makarr`: fish net.
- `karra`: rope, cord, string.
- `kaku`: lawyer-cane top; not the grammar's "wait a minute" particle use.
- `dumbul`: bark/hard outer covering.
- `bikibiki`: pig, an attested loan form in Patz/dictionary.
- `mayngku`: mango, an attested loan form in Patz/dictionary.
- `kuku`: news, language, talk; this batch uses the news/language senses explicitly.
- `wungar`: sun.
- `wulman`: old man / old person from the grammar narrative examples; treated cautiously as a participant noun, not as a source for new case analogies.

### Grammar controls

Checked grammar support:

- `kuku-ku` as language/news-DAT in Patz ex.584.
- `mayngku-ku` as mango-DAT in Patz ex.602.
- `makarr` with `wundi-l` in Patz ex.162.
- `bikibiki` in Patz examples and dictionary loan discussion.
- `ngunyin-ji` is attested, but not used: Rule 123 keeps the comitative inventory closed rather than importing a new comitative form.
- `mara`, `milka`, and `wungar` have grammar support, but only `wungar` is used in a final sentence row.
- Existing Rule 122 controls: `jalun-bu`, `jalun-muny`, `bayan-ba`, `bayan-muny`, `bayan-ka`, `wawubaja-nga`, `madja-muny`, `baral-ba`, `ngalkal-ba`, `wabarr-ba`, `bubu-ngu`, `jikan-ba`, `balji-nga`, `wujurr-bu`, `ngawa-nji`, `nganjan-anji`, `jawun-unji`, `juku-ji`, `kambi-ji`, `mayi kaya-nga`, `kambi ngamu-ngu`, `babaji-y`, `yajarri-l`, and `nyaji-l`.

## Static guard design

`bank_165.py` includes guards for:

- exactly 50 rows, exact 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 unsourced `baral-muny`, no unsourced `kadar-anji`, no newly imported `ngunyin-ji`;
- `kija` rows, if any, 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: place/source/rest rows with new ordinary heads.
- Rows 11-20: object placement, source, goal, and transfer with new ordinary heads.
- Rows 21-30: perception rows with new ordinary heads and the Rule 122 A-marking contrast.
- Rows 31-35: ask-about rows including source-backed `kuku-ku` and `mayngku-ku`.
- Rows 36-40: laugh-target rows with known target case forms.
- Rows 41-46: closed comitative rows without adding `ngunyin-ji`.
- Rows 47-50: Patz-backed possessive object NPs in handling/transfer frames.

## Pre-bank state

- `sqlite3 synthetic.db`: accepted 7,386; revised 911; under_review 0; verified total 8,297.
- `lint_corpus.py`: `lint: 8297 rows scanned, 0 issues flagged`.
- Live books at `/docs/` reflect Batch 164 and Rule 122; they must be updated after Batch 165 is accepted and the export is refreshed.

## Banking and under-review repair

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

Pre-bank lint:

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

Initial banking command:

- `python3 batch_scripts/bank_165.py`
- Result: `banked batch-165: 50 rows under_review, avg_words=3.78, process_events=8`

Under-review lint after first bank:

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

Manual fidelity review then repaired row 12 before close:

- Old English/gloss: "special dilly bag" / `special.dilly.bag`.
- New English/gloss: "remains dilly bag" / `remains.dilly.bag`.
- Reason: dictionary `yinkar` is specifically a dilly bag for holding remains.

The under-review batch was rebanked after the repair:

- `python3 batch_scripts/bank_165.py`
- Result: `banked batch-165: 50 rows under_review, avg_words=3.78, process_events=17`
- Rebank lint: `lint: 8347 rows scanned, 0 issues flagged`.

## Five-lens review and close

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

Manual review result:

- morphology: passed all 50 rows; checked retained LOC, ABL, DAT, DAT:pt, LOC:pt, COMIT, POSS, ERG, past, and nonpast forms;
- lexicon: passed all 50 rows; checked new heads and sense restrictions against dictionary and Patz 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-12 `yinkar` repair; checked loans, news/language senses, `wungar` sun, and no vague bag translation;
- register: passed all 50 rows; ordinary camp/country material culture and participant talk, pending elder verification.

Close command:

- `python3 batch_scripts/close_165.py`
- Result: `closed batch-165: 50 accepted rows, 250 review passes, 20 lessons, 36 lexeme/source-log rows, 23 process events, under_review=0, verified corpus=8347`

## Post-close verification

Post-close lint:

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

DB readback after close:

- accepted: 7,436
- revised: 911
- under_review: 0
- verified total: 8,347 / 20,000
- Batch 165 reviews: 250
- Batch 165 lessons: 20
- Batch 165 lexeme/source-log rows: 36
- Batch 165 process events after export/docs/live/process-log logging: 28

Training export refreshed:

- total rows: 8,347
- train/dev/synthtest: 6,990 / 679 / 678
- manifest: `export/MANIFEST.json`

## Living books and live docs

Canonical report sources updated:

- `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`: 8,347 count, Rule 123 close, Rule 124 handoff.
- `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`: new Rule 123 section with examples and traps.
- `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`: new Batch-165 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`.

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,347`, `Rule 124`, `batch-165-source-backed-case-frame-lexicon-process.md`;
  - grammar cheatsheet: `Rule 123`, `Ngunyin wabarr-ba wunan`, `Babi-ngka yinkar ngalkal-ba bawan`;
  - dictionary errata: `Batch-165`, `yinkar`, `36 lexeme/source-log`;
  - sample pages: `Current build note`, `8,347`, `ngunyin`.

## Next handoff

Next batch should be `batch-166`, a construction cadence batch under proposed Rule 124: lexical-head case-frame consolidation. Use the Rule 123 heads to contrast object, location/source, and DAT-topic frames while keeping the traps active: no `ngunyin-ji`, no new comitatives, no free possessive templates, no `baral-muny`, no vague `yinkar`, no ERG `babaji-y` askers, ERG common-noun `nyaji-l` perceivers, and explicit DAT:pt targets for `yajarri-l`.
