# Batch 154 process log - Rule 112 clause-combining and discourse relations

Start state: 2026-07-07, corpus lint green at 7,747 / 20,000 verified sentences and 90,380 Kuku words.

## Scope

Rule 112 is a construction batch for clause-combining and discourse-relation frames. The batch is hand-authored,
50 rows, no generator-authored Kuku, with every content word checked against Patz and/or the local dictionary.

Coverage plan:

- Rows 1-8: `kari` as event hindrance and collateral contrast.
- Rows 9-15: `yamba` as state or qualification contrast.
- Rows 16-23: `kaki` non-past conditionals, first and second position.
- Rows 24-31: `kunka` and `nganganjirrka` in-case/hypothetical-reason frames, including `-nya-mun-ku`.
- Rows 32-37: `nguba` independent possibility clauses used as the less cumbersome reason strategy.
- Rows 38-43: `balu` wrong-assumption clauses with explicit `kari` corrections.
- Rows 44-50: answer/interjection words combined with the same discourse-relation frames.

## Sources checked

- Patz 4.3.2: coordination particles `kari`, `yamba`, `kaki`, `kunka`; particle-initial dependent sentences; event
  hindrance for `kari`; state qualification for `yamba`; non-past `kaki`; `kunka`/`nganganjirrka` in-case frames.
- Patz 4.4.4.4: hypothetical reason `X does Y just in case Z happens`; verb + `-nyV` + Dative, typically
  `-nya-mun-ku`; source examples 498-503.
- Patz 4.9.3: `nguba` as preposed possibility marker and preferred independent-clause alternative to cumbersome
  hypothetical-reason clauses.
- Patz 4.10: interjections and answer words used as preposed discourse moves.
- Patz 5.5.3: collateral `kari`, `yamba`, and `balu`; wrong-assumption semantics for `balu`.
- Dictionary checks: all function words plus the open-class support set used in the 50 rows.

## Risk controls

- No `yala` coordination. The only `yala` in this batch is inside Patz's comparison-plus-yamba source frame.
- No past-tense `kaki` conditionals. Patz says past temporal/conditional relations use juxtaposed clauses instead.
- No use of `kunka` or `nganganjirrka` as generic "maybe". Those are reserved for in-case/hypothetical reason.
- No flattening of `balu` into plain negation. In this batch it marks a wrong assumption, with corrections made explicit.
- `yamba` is kept to state/qualification contrast; `kari` carries event hindrance and collateral contrast.
- Source-shaped dependent forms are logged explicitly for elder review rather than silently normalized.

## Candidate revisions and duplicate controls

Preflight avoided exact surfaces already present in the corpus:

- `Ngayu buwun-ji dungan, kari muyar junkuji.` exists in batch-131.26, so row 1 uses `badur-iji`.
- `Kaki ngayu ngiki-ji, ngayu yangka dumbarril, nukal.` exists in batch-072.14, so row 17 uses `ngana`.
- `Nyulu warngku-wunay, kaki nyulu bangkarr bajaburray.` exists in batch-144.50, so row 18 varies the subject.
- `Balu yundu minya dinda-nka, kari yundu bana-nga wajul.` exists in batch-153.34, so row 38 uses `kuyu`.
- `Kaki kaba kaday wunkuny, ngana bayan-ba bundanday.` exists in batch-153.37, so row 44 changes the discourse frame.
- `Kalka wundi, nganganjirrka bikibiki kada-nyamunku.` exists in batch-153.40, so row 30 uses a subject plus `wundil`.

The bank script performs an exact cross-corpus surface check before inserting any under-review rows.

## Five-lens review targets

- Morphology: past surfaces use `-n`; non-past l/y surfaces are checked; case suffixes are checked; `-nya-mun-ku`
  source forms are retained and logged.
- Lexicon: all function words and all open-class support words are checked against Patz or dictionary entries.
- Syntax: clause-initial particles, non-past `kaki`, in-case semantics, and independent `nguba` clauses are enforced.
- Fidelity: English "but/if/maybe" is not allowed to collapse the Patz distinctions.
- Register: rows remain pedagogical synthetic examples and retain pending elder-verification rights status.

## Verification checklist

- Bank under review with `python3 batch_scripts/bank_154.py`.
- Run full corpus lint while under review.
- Close with `python3 batch_scripts/close_154.py` only after five-lens review.
- Run full corpus lint after close and record goal metric.
- Refresh export splits with `python3 export_training.py`.
- Update operator guide, grammar cheatsheet, dictionary errata, and this process log.
- Run `./render-docs.sh`.
- Verify local and public `/docs/` HTML and `.md` routes.

## Stored DB events

Batch 154 stores process events for source pass, lexeme checks, risk controls, candidate-risk notes, bank success,
row inventory, five-lens review, close success, lint, export, docs update, render, and live-doc verification.

## Final close/export snapshot

- Accepted/revised corpus after close: 7,797 / 20,000.
- Kuku word count after close: 90,701.
- Lint: GREEN, 0 issues over 7,797 non-rejected rows.
- Export split counts: train 6,538; dev 624; synthtest 635.
- Lessons added: 16.
- Lexeme/source-log rows added: 41.
- Process events after live-doc verification: 14.
- Public docs: local rendered files and public `https://mobtranslate.com/docs/` routes verified. `/docs/` returned 200;
  `/docs` returned 301 to `/docs/`; all four HTML pages and all four raw `.md` routes returned 200 with current
  Batch 154 / Rule 112 markers.
