# Batch 146 Process Log - Adjective Syntax, Degree, Comparison, And Property Change

Corpus: `claude-synthetic-v1-2026-07-02`  
Batch: `batch-146`  
Rule: 104, construction batch  
Start checkpoint: 7,347 / 20,000 accepted or revised sentences, lint green.

## Goal

Add 50 hand-authored rows for adjective syntax after the Rule 103 physical-property lexicon. This batch is not trying to
discover new property words. It trains how already verified property words behave in noun phrases, predicates, degree
constructions, comparisons, and property-change frames.

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

## Process Storage Policy

This batch deliberately stores as much of the process as the final artifact:

- Human-readable narrative log: this file.
- Structured SQLite ledger: `process_events` in `synthetic.db`.
- Reproducible artifacts: `batch_scripts/bank_146.py` and `batch_scripts/close_146.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 duplicates, static degree guards, dative
allomorph choices, spelling normalizations, lint results, manual review, close, export, and live-doc verification.

## Source Pass

Primary source checks before banking:

- Grammar adjective inventory:
  - Adjectives cover nominal properties such as size, dimension, value, age, physical/mental state, texture, colour,
    and taste.
  - The minimal colour inventory remains `ngumbu`, `bingaji`, and `ngala-ngala`; no new colour roots are introduced.
- Grammar NP modifier section:
  - Adjectives follow the head noun.
  - Quantifier plus adjective NPs tend to place the quantifier before the head and the adjective after it.
  - Multiple descriptive adjectives are rare, so this batch avoids adjective stacking except where source-shaped.
  - Inalienable possession uses whole-part apposition; a modifier after the part modifies the part.
- Grammar nominal/adjectival predicates:
  - No copula is needed: `Yinya mayi ngulkurr` and `Nyungu kalka dudu`.
- Grammar degree section:
  - `jarra-` precedes adjectives for "rather/fairly".
  - `jarra-ADJ` also forms comparisons, with the compared standard in dative case.
  - `-baja-ku` marks high degree; if the adjective bears case, the case suffix appears between `-baja` and `-ku`.
- Grammar inanimate possessor section:
  - `Dumbul marra-nga dandi` is accepted for shell on/of zamia nut; ablative was rejected there.
  - `Mayi yinya-muny juku-muny ngulkurr nuka-ji-y` is accepted for fruit from that tree being good to eat.
- Grammar property-change section:
  - `Yinya mayi ngulkurr-ma-ny`, `Nyungu kalka dudu-ma-ny`, and `Dingkar-angka nyungu kalka dudu-bunga-ny`.
  - `Juma juku ngakun nganka-ji-maniji-y` for "the flame tree will get flowers".
  - `Bilngkumu-ngku yinya jalbu manyarr-bunga-ny` for nominal state causative.
  - `dayirr-bunga-l` appears in the house-cleaning frame.

## Construction Decisions

- Rows 1-12 train adjective modifier order, object NPs, quantifier plus adjective NPs, inalienable part modification,
  inanimate possessor locative/ablative, and the `ngulkurr nuka-ji-y` good-to-eat frame.
- Rows 13-22 train `jarra-` as "rather/fairly" with adjectives and source-shaped `kuli-ji`.
- Rows 23-32 train comparisons. Every standard is dative: `bulki-ka`, `karrkay-anka`, `kalka-ka`, `kambi-ka`,
  `kulji-ka`, `bana-ka`, `jikan-ka`, `minya-ka`, and `bubu-ku`.
- Rows 33-44 train high degree with `-baja-ku`, including the two case-slot examples `junkurr-ji-baja-ngka-ku` and
  `bambay-baja-nka-ku`.
- Rows 45-50 train inchoative and causative property or nominal state changes.

## Intended Row Inventory

1. Rows 1-12: adjective-after-head order, possessed NPs, object modifiers, quantifier-plus-adjective NPs, inalienable
   part modification, inanimate possessor locative/ablative, and `nuka-ji-y`.
2. Rows 13-22: `jarra-` rather/fairly degree rows.
3. Rows 23-32: `jarra-` comparisons plus dative standards and one sourced `yalbay-bajaku` comparative.
4. Rows 33-44: `-baja-ku` high-degree rows, including case insertion between `-baja` and `-ku`.
5. Rows 45-50: `-ma-l`, `-bunga-l`, and comitative inchoative property changes.

## Rejected Or Risk-Controlled Forms

- Rejected exact duplicate candidate `Maral yinilman.` because Batch 129 already accepted it.
- Rejected exact duplicate candidate `Dubu-ngku maral yinil-kangan.` because Batch 129 already accepted it.
- Replaced those duplicate candidates with direct Patz examples `Juma juku ngakun nganka-ji-maniji.` and
  `Bilngkumu-ngku yinya jalbu manyarr-bungan.` from the same state-change section.
- No bare `baja` or bare separate-word `bajaku` rows in this construction batch. The target is suffixal
  `ADJ-bajaku` or `ADJ-baja-CASE-ku`.
- No broad superlative claim. The source supports high degree and comparison, not an English-style superlative paradigm.
- No invented colour comparison beyond attested colour adjectives.
- No `niji` heavy, `kija` cold, `jinbal` sharp, `jindal` straight/right, or other old watchlist shortcuts.
- `ngawuya` in Patz is normalized to the corpus dictionary spelling `ngawiya` and logged as a source-spelling variation.
- `dakuy` in the grammar example is banked as dictionary/corpus `dakwuy`.
- `jiba-badi-y` is kept in analysis, but the Kuku surface is `jiba-badi` because final `-iy` drops in elder-practical
  spelling.

## Verification And Closeout

Planned commands from the corpus root:

```text
python3 -m py_compile batch_scripts/bank_146.py batch_scripts/close_146.py
python3 batch_scripts/bank_146.py
python3 lint_corpus.py
python3 batch_scripts/close_146.py
python3 lint_corpus.py
python3 export_training.py
```

Pre-bank duplicate scan found these exact duplicates in the initial inventory:

- `Maral yinilman.` duplicated Batch 129; replaced with `Juma juku ngakun nganka-ji-maniji.`
- `Dubu-ngku maral yinil-kangan.` duplicated Batch 129; replaced with `Bilngkumu-ngku yinya jalbu manyarr-bungan.`

Actual verification:

1. Compiled the bank and close scripts:
   - `python3 -m py_compile batch_scripts/bank_146.py batch_scripts/close_146.py`
2. Confirmed the pre-bank corpus checkpoint:
   - `7,347` accepted/revised rows.
   - `0` rows under review.
3. Banked with `python3 batch_scripts/bank_146.py`.
   - Output: `banked batch-146: 50 rows under_review; avg Kuku words/row=2.96`.
4. Full lint while under review:
   - Output: `lint: 7397 rows scanned, 0 issues flagged`.
   - Goal metric remained `7347 / 20000 verified sentences (88950 Kuku words)` because the batch was still
     `under_review`.
5. Manual five-lens review:
   - Morphology: checked `jarra-`, `-baja-ku`, `-baja-CASE-ku`, dative standards, final `-iy` surface dropping,
     property `-ma-l`, state `-bunga-l`, and the source-shaped `nganka-ji-maniji-y`.
   - Lexicon: rechecked `dakwuy`, `kingkin`, `ngawiya`, `ngujay`, `bulki`, `ngakun`, `manyarr`, `dayirr`, and the
     blocked heavy/cold/colour/edge-quality shortcuts.
   - Syntax: checked adjective-after-head NPs, quantifier-plus-adjective NPs, whole-part apposition, inanimate
     possessor locative/ablative, comparison dative, and zero-copula adjective predicates.
   - Fidelity: narrowed English where needed: `dayirr` as clean in the grass comparison; `ngulkurr nuka-ji-y` as
     good to eat; `yalbay-bajaku` as much bigger in the sourced turtle comparison.
   - Register: short construction rows are deliberate, but no row is a free fragment; each is a clause or source-shaped
     nominal predicate.
6. Closed with `python3 batch_scripts/close_146.py`.
   - Output: `closed batch-146: 50 accepted rows, 250 review passes, 14 lessons, 22 lexeme/source-log rows, 7 process events, verified corpus=7397`.
7. Post-close lint:
   - `python3 lint_corpus.py`
   - Output: `lint: 7397 rows scanned, 0 issues flagged`.
   - Goal metric: `7397 / 20000 verified sentences (89098 Kuku words)`.
8. Refreshed export with `python3 export_training.py`.
   - Total exported rows: 7,397.
   - Split: train 6,191; dev 600; synthtest 606.
   - Highest construction tags: ergative 1,712; negation 1,615; purposive 1,387; subordinate 1,096; ablative 966;
     comitative 724; causative 599; question 594; imperative 498; inchoative 386.
9. Process ledger before live-doc verification:
   - `process_events` rows for Batch 146: expected 9 after export refresh, with live-doc verification still pending.

## Live Book Update

Updated these source files:

- `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`
  - Current line now says `7,397 / 20,000 verified sentences (Rules 1-104)`.
  - Construction coverage now includes Rule 104 adjective syntax, degree, comparison, and property-change frames.
  - The next handoff now points to Rule 105, lexical: human qualities, ability, and character/state lexicon.
  - The next script names are `bank_147.py` and `close_147.py`.
- `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`
  - Added Rule 104 with adjective-after-head order, whole-part/inanimate possessor frames, `jarra-` degree and
    comparison, dative comparison standards, `-baja-ku`, `-baja-CASE-ku`, and property/nominal state changes.
- `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`
  - Added Batch-146 construction inventory and watchlist decisions.
  - Logged source-spelling normalizations (`ngawuya` -> `ngawiya`, `dakuy` -> `dakwuy`), `jiba-badi-y` surface
    discipline, dative standards, degree-token guards, and duplicate preflight replacements.

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,397 / 20,000`, Rule 104 complete, Rule 105 handoff, `bank_147.py`, `close_147.py`.
- Grammar HTML/MD: `Rule 104 - Adjective syntax`, `Dingkar-angka junkurr-ji-baja-ngka-ku bikibiki kulban`,
  `Ngayu jiba-badi karrkay-anka bambay-baja-nka-ku`, `Lint GREEN 7397`, and the Batch 146 process log path.
- Errata HTML/MD: `Batch-146`, `adjective-after-head`, `ngawuya`, `dakwuy`, `Lint GREEN 7397`, and the Batch 146
  process log path.

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 HTML/MD: `7,397 / 20,000`, `Rule 105 - human qualities`, `bank_147.py`, `close_147.py`.
- Grammar HTML/MD: `Rule 104 - Adjective syntax`, `Dingkar-angka junkurr-ji-baja-ngka-ku bikibiki kulban`,
  `Lint GREEN 7397`.
- Errata HTML/MD: `Batch-146`, `corpus uses dictionary/corpus`, `Lint GREEN 7397`.

Final process ledger after live-doc verification:

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