# Batch 145 Process Log - Physical Properties And Material Qualities

Corpus: `claude-synthetic-v1-2026-07-02`  
Batch: `batch-145`  
Rule: 103, lexical batch  
Start checkpoint: 7,297 / 20,000 accepted or revised sentences, lint green.

## Goal

Add 50 hand-authored rows for concrete physical properties and material qualities. The batch follows the Rule 102
construction batch, so the target here is lexical breadth: size, dimension, water depth, hard/soft, heavy, wet/dry,
slippery/smooth/rough, dirty/clean/clear, hot/cold, burnt/ripe, fat/skinny/strong, sharp/blunt, new, and bounded
good/bad quality contrasts.

No Kuku content is generated by script. `bank_145.py` stores hand-authored rows, runs static and cross-corpus duplicate
checks, and records source/process metadata in `process_events`.

## Process Storage Policy

This batch deliberately stores the process, not only the final sentences:

- Human-readable narrative log: this file.
- Structured SQLite ledger: `process_events` in `synthetic.db`.
- Reproducible artifacts: `batch_scripts/bank_145.py` and `batch_scripts/close_145.py`.
- Review artifacts: 250 five-lens review rows at close, plus lessons and lexeme/source logs.
- Live books: operator guide, grammar cheatsheet, and dictionary errata updated and rendered after close.

The ledger should let a later linguist audit source decisions, rejected near-forms, duplicate avoidance, lint results,
manual review, close, export, and live-doc verification.

## Source Pass

Primary source checks before banking:

- Grammar §3.2.2:
  - Adjectives denote nominal properties including size, dimension, value, age, physical state, texture, colour, and taste.
  - The grammar gives only three basic colour terms: `ngumbu` dark, `bingaji` light, and `ngala-ngala` red/reddish.
- Grammar nominal/adjectival predicates:
  - `Yinya mayi ngulkurr` = that food is good.
  - `Nyungu kalka dudu` = his spear is blunt.
  - `Yinya mayi ngulkurr-ma-ny` and `Nyungu kalka dudu-ma-ny` control inchoative property changes.
- Grammar state causatives:
  - `dandi-bunga-l` = make hard.
  - `kima-bunga-l` is source-listed as make soft.
  - `mumbu-bunga-l` applies to making clothes dirty.
  - `mumbu-kanga-l` applies to making water dirty by disturbing it.
  - `jirra-bunga-l` applies to overcooking/burning food.
- Grammar text examples:
  - `Baral-baral duna julbarr` and `bubu julbarr` control wet/slippery road or ground.
  - `Bubu marral-da` controls dry ground.
  - Deep/shallow water is source-shaped as `dajali` and `yalkan`, with examples `yinya dajali` and `yalkan-ba`.
  - `dubal murru-murru` controls rough/lumpy bark wording.
- Dictionary checks:
  - Size/dimension/location: `yalbay`, `buban`, `kalbay`, `yalmbar`, `darra`, `dubar`, `kambal`.
  - Water depth: `dajali`, `yalkan`.
  - Material/state texture: `dandi`, `kima`, `kulngkul`, `duna`, `marral`, `julbarr`, `dirka-dirka`, `murru-murru`,
    `mumbu`, `dayirr`, `wumbul`, `kiway`, `kiway-kiway`.
  - Colour/value/body condition: `ngumbu`, `bingaji`, `ngala-ngala`, `ngulkurr`, `ngulkurrijin`, `nganjay`,
    `nganja-burra`, `wandul`, `bala`, `yaykarr`.
  - Edge/age/food state: `jalngkun`, `dudu`, `jirra`, `kulbul`, `jirakal`, `duku`.

## Construction Decisions

- Rows 1-10 train size/dimension, water depth, flat/low/bent, and quantity-little. `buban` is not used as a generic
  adjective for a child; it is kept to a small-amount row.
- Rows 11-25 train material properties and bodily/food states: hard/soft/heavy/wet/dry/slippery/smooth/rough/dirty/
  clear/hot/cold/burnt/ripe/fat.
- Rows 26-40 train colour, value, body-shape, edge quality, age/newness, and too-small/blunt tool contrasts.
- Rows 41-50 train inchoative and causative property changes with `-ma-l`, `-bunga-l`, and the special
  `mumbu-kanga-l` dirty-water construction.

## Intended Row Inventory

1. Rows 1-10: `yalbay`, `buban`, `kalbay`, `yalmbar`, `darra`, `dubar`, `kambal`, `dajali`, `yalkan`, `duku`.
2. Rows 11-25: `dandi`, `kima`, `kulngkul`, `duna`, `marral`, `julbarr`, `dirka-dirka`, `murru-murru`, `mumbu`,
   `dayirr`, `wumbul`, `kiway-kiway`, `jirra`, `kulbul`, `wandul`.
3. Rows 26-40: `ngumbu`, `ngala-ngala`, `bingaji`, `ngulkurr`, `nganjay`, `nganja-burra`, `ngulkurrijin`, `bala`,
   `yaykarr`, `jalngkun`, `dudu`, `jirakal`, `darra bajaku`.
4. Rows 41-50: property changes and causatives: `marral-ma-l`, `wumbul-ma-l`, `kiway-ma-l`, `dandi-ma-l`,
   `kima-ma-l`, `mumbu-bunga-l`, `mumbu-kanga-l`, `kima-bunga-l`, `dandi-bunga-l`, `jirra-bunga-l`.

## Rejected Or Risk-Controlled Forms

- No `niji` for heavy; heavy is `kulngkul`.
- No `kija` for cold; cold is `kiway` or `kiway-kiway`.
- No invented green, blue, brown, or purple property rows. The only colour rows are `ngumbu`, `bingaji`, and
  `ngala-ngala`.
- No `warral` as green or generic curved; the earlier watchlist allows only source-backed forms in their own contexts.
- No `jinbal` as a general sharp adjective in this batch; edge sharpness is `jalngkun`, while `jinbal` is fast/quick.
- No `jindal` as straight/right; it is spear or puncture-bite.
- No `wungku dayirr` sun row, because the dictionary example conflicts with the dictionary's `wungku` turkey entries.
  Bright/clean/clear is trained with `dayirr` in water and clothes rows instead.
- No bare `buyun` as the general quality target; `nganjay` and `nganja-burra` carry bounded no-good/bad-taste senses.
- No generic "rough" coinage: the rough bark row follows the grammar's `dubal murru-murru`.
- No shallow/deep adjective overreach: `dajali` and `yalkan` are treated as deep/shallow water expressions.

## Verification And Closeout

Planned commands from the corpus root:

```text
python3 -m py_compile batch_scripts/bank_145.py batch_scripts/close_145.py
python3 batch_scripts/bank_145.py
python3 lint_corpus.py
python3 batch_scripts/close_145.py
python3 lint_corpus.py
python3 export_training.py
```

Pre-bank duplicate scan found exact duplicates in the initial inventory and they were corrected before writing
`bank_145.py`:

- `Kalka kalbay.` duplicated Batch 15; replaced with `Juku kalbay.`
- `Kulji dandi.` duplicated Batch 3; replaced with `Dumbul dandi.`
- `Bubu julbarr.` duplicated Batch 131; replaced with `Baral julbarr.`
- `Mayi nganja-burra.` duplicated Batch 139; replaced with `Yinya mayi nganja-burra.`

Actual verification:

1. Compiled the bank and close scripts:
   - `python3 -m py_compile batch_scripts/bank_145.py batch_scripts/close_145.py`
2. Banked with `python3 batch_scripts/bank_145.py`.
   - Output: `banked batch-145: 50 rows under_review; avg Kuku words/row=2.20`.
3. Full lint while under review:
   - Output: `lint: 7347 rows scanned, 0 issues flagged`.
   - Goal metric remained `7297 / 20000 verified sentences` because the batch was still `under_review`.
4. Manual five-lens review:
   - Morphology: checked bare adjective predicates, `-ma-l` inchoatives, `-bunga-l` causatives, `mumbu-kanga-l`,
     `jirra-bunga-l`, reduplicated adjectives, and elder-surface past `-n`.
   - Lexicon: rechecked property headwords and blocked near-misses (`niji`, `kija`, `jinbal`, `jindal`, `warral`,
     colour phantoms, bare `buyun`, and `wungku` as a sun shortcut).
   - Syntax: kept water-depth nouns, small-amount `buban`, property predicates, and causative property frames distinct.
   - Fidelity: narrowed English to what the Kuku says; especially `bala` skinny/weak and `duku` bent.
   - Register: short lexical rows are deliberate in this batch so each property word remains inspectable.
5. Closed with `python3 batch_scripts/close_145.py`.
   - Output: `closed batch-145: 50 accepted rows, 250 review passes, 14 lessons, 39 lexeme/source-log rows, 7 process events, verified corpus=7347`.
6. Post-close lint:
   - `python3 lint_corpus.py`
   - Output: `lint: 7347 rows scanned, 0 issues flagged`.
   - Goal metric: `7347 / 20000 verified sentences (88950 Kuku words)`.
7. Refreshed export with `python3 export_training.py`.
   - Total exported rows: 7,347.
   - Split: train 6,153; dev 595; synthtest 599.
   - Highest construction tags: ergative 1,707; negation 1,615; purposive 1,386; subordinate 1,096; ablative 965;
     comitative 720; causative 596; question 594; imperative 498; inchoative 383.
8. Process ledger before live-doc verification:
   - `process_events` rows for Batch 145: 9.
   - Event classes: source pass, risk controls, bank success, row inventory, under-review lint, five-lens pass,
     close success, post-close lint, and export refresh. The final live-doc verification event will bring this to 10.

## Live Book Update

Updated these source files:

- `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`
  - Current line now says `7,347 / 20,000 verified sentences (Rules 1-103)`.
  - Coverage now includes Rule 103 physical properties/material qualities.
  - The next handoff now points to Rule 104, construction: adjective syntax, degree, comparison, and property-change
    frames.
  - The next script names are `bank_146.py` and `close_146.py`.
- `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`
  - Added Rule 103 with source-bounded property predicates, colour minimalism, water-depth scope, edge-quality guards,
    no-good/taste split, and property inchoative/causative frames.
- `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`
  - Added Batch-145 verified inventory and watchlist decisions.
  - Logged `buban` small-amount scope, `kulngkul` heavy, `kiway` cold, no invented colour rows, `jalngkun`/`dudu`
    edge-quality split, `dayirr` source guard, `nganjay` versus `nganja-burra`, `bala` homonym discipline, and
    duplicate preflight corrections.

Rendered the public docs from the program root:

```text
./render-docs.sh
  rendered operator-guide.html      <- KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md
  rendered sample-pages.html        <- SAMPLE-PRODUCTION-PAGES.md
  rendered grammar-cheatsheet.html  <- kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md
  rendered dictionary-errata.html   <- kuku-yalanji-dictionary-errata-2026-07-02.md
  wrote index.html
```

Generated-file marker checks in `public-docs/` passed for:

- Operator HTML/MD: `7,347 / 20,000`, `Rule 104 - adjective syntax`, `bank_146.py`.
- Grammar HTML/MD: `Rule 103 - Physical properties`, `Ngayu mayi buban wunay`, `Lint GREEN 7347`, `mumbu-kanga-l`.
- Errata HTML/MD: `Batch-145`, `niji is not heavy`, `Yinya mayi nganja-burra`, `Lint GREEN 7347`, `kiway-kiway`.

Local Caddy route check using `--resolve mobtranslate.com:443:127.0.0.1` and `-k` for the local TLS chain:

```text
/docs 301 https://mobtranslate.com/docs/
/docs/ 200
/docs/operator-guide.html 200
/docs/operator-guide.md 200
/docs/sample-pages.html 200
/docs/sample-pages.md 200
/docs/grammar-cheatsheet.html 200
/docs/grammar-cheatsheet.md 200
/docs/dictionary-errata.html 200
/docs/dictionary-errata.md 200
```

Public edge check at `https://mobtranslate.com/docs/` with a browser user-agent:

```text
/docs 301 https://mobtranslate.com/docs/
/docs/ 200
/docs/operator-guide.html 200
/docs/operator-guide.md 200
/docs/sample-pages.html 200
/docs/sample-pages.md 200
/docs/grammar-cheatsheet.html 200
/docs/grammar-cheatsheet.md 200
/docs/dictionary-errata.html 200
/docs/dictionary-errata.md 200
```

Public body marker checks passed for:

- Operator MD/HTML: `7,347 / 20,000`, `Rule 104 - adjective syntax`, `bank_146.py`.
- Grammar MD/HTML: `Rule 103 - Physical properties`, `Ngayu mayi buban wunay`, `Lint GREEN 7347`, `mumbu-kanga-l`.
- Errata MD/HTML: `Batch-145`, `niji is not heavy`, `Yinya mayi nganja-burra`, `Lint GREEN 7347`, `kiway-kiway`.

Final process ledger after live-doc verification:

- `process_events` rows for Batch 145: 10 including live-doc verification.
