# Batch 142 Process Log - Direct Speech And Reporting Frames

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

## Goal

Add 50 hand-authored rows for direct speech, reported speech punctuation, quotation-framing clauses, medial
reporting verbs, call-out frames, and small question-response pairings. This batch is about the construction, not
about adding another question batch. Batch 108/Rule 66 already made an interrogatives-heavy set, so questions here are
kept to the minimum needed to show how direct questions sit after `babaji-y` and how short quoted replies are framed.

No Kuku content is script-generated. `bank_142.py` stores hand-authored rows, performs static checks, checks exact
cross-corpus duplicate Kuku surfaces, and records process metadata in `process_events`.

## Process Storage Policy

This batch continues the Batch 141 process-preservation rule:

- Human-readable narrative log: this file.
- Structured SQLite ledger: `process_events` in `synthetic.db` via `batch_scripts/process_ledger.py`.

The ledger records source checks, scoping decisions, command outputs, correction decisions, review events, close
evidence, export evidence, and live-book verification markers with UTC timestamps.

## Source Pass

Primary local source checks before banking:

- Appendix-text extraction:
  - `yinduy-nju yalama-ny: "Ngali daka-l?"` controls `yalama-l` plus colon before direct quote.
  - `Wulbuman-angka balka-ny: "Yubal wanja-muny kada-ny?"` controls `balka-l` as a reporting verb before a direct
    quote. Corpus surface convention normalizes bare past `-ny` to surface `-n` in authored rows.
  - `"Bunda-y", yalama-ny, "yubal, yubal yalaymba bunda-y!"` controls medial reporting: quote, reporting verb,
    quote continuation.
  - `"Kari."` and `"Yuwu!"` control short quote-only reply material.
  - `yirrka-nya nganjan-anda ngamu-ndu:` controls a cry-out frame with addressees in locative form.
  - `Jana kunja-nya:` controls `kunja-l` call/summon before a direct quote.
  - `Ngayu Chris-anda balka-ny:` controls `balka-l` "say to" with LOC:pt addressee.
  - `Chris-anda babaji-ny: "Yundu kada-ny-baja?"` controls `babaji-y` followed by a direct quoted question with the
    person asked in LOC:pt.
- Living grammar and errata:
  - `balka-l` "tell/say to someone" takes the addressee in LOC:pt; a bare absolutive addressee risks the different
    "make" sense.
  - `babaji-y`, `kunjaji-y`, and related communication-like stems are treated as fixed intransitive stems in this
    corpus: actor as ABS/S, person addressed in LOC, topic in DAT where present.
  - Rule 66 already covers the interrogative paradigm. Rule 100 may include a few direct quoted questions, but it
    must not repeat the Rule 66 goal.
  - `yalama-l` is "say/do", not "answer", "wait", or "obey". Use it only as a reporting verb here.
  - Short replies use the attested discourse words `yuwu` "yes", `kari` "no", and `yalada` "alright/settled".

## Construction Decisions

- Direct speech is represented as punctuation and clause framing: `REPORTING_CLAUSE: "QUOTE"`.
- No English-style complementizer is inserted. Kuku rows do not add a word equivalent to English "that".
- `balka-l` plus an addressee uses LOC:pt (`karrkay-anda`, `ngamu-ndu`, `dingkar-anda`, etc.).
- `babaji-y` keeps actor ABS/S, not ERG. The person asked is LOC:pt. The direct question follows after a colon.
- `yirrka-y` "cry out/shout" keeps actor ABS/S and addressee LOC:pt.
- `kunja-l` "call/summon" is used as a transitive call frame with A in ERG and the person/animal called as object.
- Medial reporting rows are allowed to start with a quote; the batch script strips leading quotes before the
  capitalization check.
- Bare quoted `kari`, `yuwu`, and `yalada` are treated as quoted discourse material, not as new predicates.

## Intended Row Inventory

The intended rows are in `batch_scripts/bank_142.py`. They are grouped as follows:

1. Rows 1-10: `balka-l` with LOC:pt addressee before direct quote.
2. Rows 11-18: source-shaped `yalama-l` and unaddressed reporting frames.
3. Rows 19-26: `babaji-y` direct quoted questions with ABS/S actor and LOC:pt person asked.
4. Rows 27-34: short question-response pairings; the replies are framed with `balka-l`, not an invented answer verb.
5. Rows 35-40: `yirrka-y` cry-out frames with direct call-out quotes.
6. Rows 41-46: `kunja-l` call/summon frames before direct quotes.
7. Rows 47-50: medial reporting and quote-continuation frames.

## Rejected Or Risk-Controlled Forms

- No new free "answer" verb.
- No `yalama-l` as "answer", "obey", or "wait".
- No complementizer corresponding to English "that".
- No broad recycled Rule 66 interrogative inventory beyond the small quoted-question examples needed for report
  framing.
- No generated model/Bible output was used as an authority for authored Kuku content.
- No bare ABS addressee with `balka-l` in "say to" rows.
- No ERG actor with `babaji-y` in new rows.

## Verification And Closeout

All commands below were run from
`/mnt/donto-data/donto-resources/research/translation-training/kuku-yalanji-runpod-2026-06-30/synthetic/claude-synthetic-v1-2026-07-02`
unless otherwise stated.

1. Recorded process-ledger events for the source pass and the Rule 66/Rule 100 scope boundary.
   - Source authority was appendix-text extraction plus living books.
   - Generated model/Bible outputs found during a noisy search were explicitly excluded as authorities.
2. Compiled the bank script:
   - `python3 -m py_compile batch_scripts/bank_142.py`
3. Banked with `python3 batch_scripts/bank_142.py`.
   - Output: `banked batch-142: 50 rows under_review; avg Kuku words/row=5.46`.
   - Cross-corpus exact duplicate check passed before insertion.
4. Full lint while under review:
   - `python3 lint_corpus.py`
   - Output: `lint: 7197 rows scanned, 0 issues flagged`.
   - Goal metric remained `7147 / 20000 verified sentences` because the batch was still `under_review`.
5. Manual five-lens review:
   - Morphology: checked elder-surface past `-ny` -> `-n`, quote-internal imperatives, `wanyu-nguy`, `-karra-nda`,
     `juwal-da`, and `kada-ny-baja`.
   - Lexicon: retained only source-backed speech/discourse words: `balka-l`, `yalama-l`, `babaji-y`, `yirrka-y`,
     `kunja-l`, `yuwu`, `kari`, `yalada`, plus simple quoted content words.
   - Syntax: enforced LOC:pt addressees for `balka-l` "say to"; ABS/S actor for `babaji-y` and `yirrka-y`; ERG A for
     separate `balka-l` reply clauses and `kunja-l` call clauses.
   - Fidelity: English was kept literal to the Kuku quote construction, with no extra complementizer or invented
     answer verb.
   - Register: short direct-speech rows are source-shaped; the batch is intentionally shorter than narrative lexical
     batches because it trains punctuation/reporting grammar.
6. Closed with `python3 batch_scripts/close_142.py`.
   - Output: `closed batch-142: 50 accepted rows, 250 review passes, 15 lessons, 19 lexeme/source-log rows, 7 process events, verified corpus=7197`.
7. Post-close database audit:
   - Global statuses: `accepted=6287`, `revised=910`.
   - Batch 142 status: `accepted=50`.
   - Reviews: 250.
   - Lessons: 15.
   - Lexeme/source-log rows for `batch-142-verify`: 19.
8. Post-close lint:
   - `python3 lint_corpus.py`
   - Output: `lint: 7197 rows scanned, 0 issues flagged`.
   - Goal metric: `7197 / 20000 verified sentences (88478 Kuku words)`.
9. Refreshed export with `python3 export_training.py`.
   - Total exported rows: 7,197.
   - Split: train 6,026; dev 580; synthtest 591.
   - Highest construction tags: ergative 1,672; negation 1,609; purposive 1,384; subordinate 1,090; ablative 963;
     comitative 710; question 592; causative 586; imperative 498.
10. Process ledger after live-doc verification:
    - `process_events` rows for Batch 142: 10.
    - Event classes: source pass, scope decision, bank success, row inventory, under-review lint, five-lens pass,
      close success, post-close lint, export refresh, and live-doc verification.

## Live Book Update

Updated these source files:

- `reports/KUKU-YALANJI-CORPUS-OPERATOR-GUIDE.md`
  - Current line now says `7,197 / 20,000 verified sentences (Rules 1-100)`.
  - Coverage now includes direct speech/reporting/quotation frames as Rule 100.
  - The next handoff now points to Rule 101, lexical: health, sickness, injury, soreness, healing, and recovery.
  - The next script names are `bank_143.py` and `close_143.py`.
- `reports/kuku-yalanji-mega-grammar-cheatsheet-2026-07-02.md`
  - Added Rule 100 with direct quote frame, `balka-l` LOC:pt addressee rule, `yalama-l` reporting guard,
    `babaji-y` quoted-question frame, `yirrka-y` call-out frame, `kunja-l` call frame, and medial reporting.
- `reports/kuku-yalanji-dictionary-errata-2026-07-02.md`
  - Added Batch-142 verified inventory and watchlist decisions.
  - Logged no complementizer, no answer verb, no `yalama-l` as answer/obey/wait, no ERG actor for `babaji-y`, and no
    model-output authority.

Rendered the public docs from the program root
`/mnt/donto-data/donto-resources/research/translation-training/kuku-yalanji-runpod-2026-06-30`:

```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,197 / 20,000`, `Rule 100`, `Rule 101`, `bank_143.py`, `close_143.py`, `process_events`.
- Grammar HTML/MD: `Rule 100`, `batch-142`, `Lint GREEN 7197`, `balka-l`, `LOC:pt`.
- Errata HTML/MD: `Batch-142`, `Lint GREEN 7197`, `No model-output authority`.

Local Caddy route check using `--resolve mobtranslate.com:443:127.0.0.1`:

```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,197 / 20,000`, `Rule 100`, `Rule 101`, `bank_143.py`, `close_143.py`, `process_events`.
- Grammar MD/HTML: `Rule 100`, `batch-142`, `Lint GREEN 7197`, `LOC:pt`.
- Errata MD/HTML: `Batch-142`, `Lint GREEN 7197`, `No model-output authority`.
