# Kuku Yalanji 20,000-Sentence Completion Audit

Date: 2026-07-10 UTC  
Program root: `/mnt/donto-data/donto-resources/research/translation-training/kuku-yalanji-runpod-2026-06-30/`  
Corpus: `synthetic/claude-synthetic-v1-2026-07-02/synthetic.db`  
Goal interval: Batch 125 through Batch 399, continuing from 6,297 verified sentences  
Final count: **20,047 / 20,000 verified sentences**  
Milestone status: **PASS**

## 1. Decision

The sentence-production goal is complete. This decision is not based on the headline count alone. It follows a
requirement-by-requirement audit of sentence state, source anchoring, literal authorship, five-lens review, revision
history, process provenance, lexical coverage, corpus lint, duplication, database integrity, training export, the
four living books, and their public `mobtranslate.com/docs/` representation.

The milestone remains correctly qualified:

- these are project-approved synthetic research rows, not elder-certified utterances;
- every goal-scope row retains rights state `project_approved_synthetic_pending_elder_verification`;
- passing this audit licenses reproducible research training and comparison, not automatic production deployment;
- future elder review may supersede rows through the revision ledger, never through destructive rewriting.

## 2. Arithmetic Reconciliation

| Quantity | Result |
|---|---:|
| Verified through Batch 124 | 6,297 |
| Goal-scope batches, 125-399 inclusive | 275 |
| Required rows per goal-scope batch | 50 |
| Goal-scope rows | 13,750 |
| Reconciled final total | 6,297 + 13,750 = **20,047** |
| Accepted rows, whole corpus | 19,136 |
| Revised rows, whole corpus | 911 |
| Open/rejected rows | 0 |
| Kuku words, whole verified corpus | 135,547 |

Every one of the 275 goal-scope batches has exactly 50 rows, exactly 50 accepted/revised rows, and zero open or
rejected rows. The endpoint is 47 above the numerical target because Batch 399 completed its full 50-cell
linguistic complement instead of stopping after three rows.

## 3. Requirement Matrix

| Requirement | Evidence | Result |
|---|---|---|
| Continue from 6,297 to at least 20,000 | Batch-124 baseline plus 275 x 50 rows | PASS |
| Hand-authored sentence records | 271 direct literal bank files plus four additive literal-remediation inventories | PASS |
| No generator-authored sentence fields | AST audit of every `bank_125.py`-`bank_399.py`; exact literal-to-DB parity | PASS |
| Patz + dictionary discipline | pinned source hashes, per-row evidence, structured `words_used`, lexical-source audit | PASS |
| No phantom lexemes | 1,354 direct source matches plus 58 individually classified source-backed forms | PASS |
| Five-lens review | morphology, lexicon, syntax, fidelity, register: 50 passes per lens per batch | PASS |
| Whole-corpus lint green | 20,047 scanned, zero issues | PASS |
| No exact duplication | normalized Kuku groups 0; normalized English-Kuku pair groups 0 | PASS |
| I3/no destructive overwrite | 16 goal-scope revisions retained; latest revision fields equal current DB | PASS |
| Lessons retained | 7,703 goal-scope lessons; 6-37 per batch | PASS |
| Lexeme/source logs retained | 5,814 batch-linked logs; 10-51 per batch | PASS |
| Process retained | 4,728 goal-scope events; at least two and an existing artifact per batch | PASS |
| Export refreshed | 20,047 lines; exact manifest, split, hash, and five-field DB parity | PASS |
| Living books current | all 275 batch markers represented; raw/render parity | PASS |
| Public docs current | `/docs` 301; `/docs/` plus four HTML and four Markdown resources 200 and byte-exact | PASS |

## 4. Literal-Authorship Audit

The audit parsed every bank script as Python AST rather than trusting filenames or comments.

- 64 batches use explicit 50-item tuple inventories.
- 207 batches use explicit 50-item `row(...)` inventories.
- Together, 271/275 batches directly materialize all four authorship fields: sequence, English, Kuku, and analysis.
- All 13,550 directly materialized records match the current database exactly.

### Historical exceptions found

Batches 239, 240, 241, and 329 contained literal lexical/frame components but assembled their 50 sentence records
with runtime loops or a cross-product. Their linguistic content had already passed source checks and five-lens
review, but the mechanism violated the explicit-literal authorship requirement. The audit did not waive the defect.

Remediation was additive:

1. The four original scripts were preserved byte-for-byte and hash-pinned.
2. `batch_scripts/remediate_literal_authorship_239_240_241_329.py` materialized 200 explicit literal records.
3. All 200 records were compared exactly with the database before any write.
4. All 200 were manually reread through morphology, lexicon, syntax, fidelity, and register.
5. A second review round stored 1,000 passes.
6. `authorship_remediation` stored one provenance row per sentence.
7. No English, Kuku, analysis, frame, evidence, status, or other sentence field changed.

The direct and remediated literal inventories together hash to the same canonical goal-scope content digest:

```text
8c78de97764d95d35ad2a6b30814feeab1853e8263c2a7581fecd8360a48528c
```

That equality is the central authorship/readback proof: the explicit source inventory and the 13,750 current DB
records are identical in sequence, English, Kuku, and analysis.

## 5. Linguistic Source Audit

Canonical source files were unchanged during the final four batches and completion audit:

```text
b575ab035ecc60f09f7bfc5537116555f3d290869fe75b2edf0fd8db60fe1b37  dictionary.yaml
5f21305f1fca9ee2cb64668e18156d1f322e3bd9e59850fda662bf0673714153  grammar.md
```

Every goal-scope row has:

- nonempty English and Kuku text;
- a nonempty interlinear analysis with the required ` | ` separator;
- a nonempty frame;
- nonempty source evidence;
- valid JSON `words_used` and `loans_used` inventories;
- at least one `words_used` label.

The union of all goal-scope `words_used` inventories contains 1,412 distinct labels. The conservative exact audit
found:

| Source surface | Exact hits |
|---|---:|
| Verified `lexemes` heads | 1,303 |
| Dictionary YAML heads | 1,183 |
| Patz exact tokens/phrases | 447 |
| Direct union | 1,354 |
| Residual requiring manual morphological review | 58 |

The 58 residual labels are fully enumerated in
`completion_audits/lexical-source-coverage-2026-07-10.md`. They are bound morphemes, inflected or derived labels,
transparent compounds, allomorphic surfaces, or other analyzed source forms. The report's set equals the computed
residual set exactly: no missing and no extra labels. None is an unanalysed content-word coinage.

## 6. Review and Learning Record

Original review evidence contains exactly 68,750 round-1 pass decisions:

```text
275 batches x 50 sentences x 5 lenses = 68,750
```

Every batch has exactly 50 passes for each expected lens. The four literal-authorship remediations add 1,000
round-2 passes, giving 69,750 stored goal-scope review decisions without replacing round 1.

The process-learning record contains:

- 7,703 goal-scope lessons, with a minimum of 6 in every batch;
- 5,814 batch-linked lexeme/source logs, with a minimum of 10 in every batch;
- 4,728 structured process events at pre-final-audit time;
- at least two structured events and at least one resolvable artifact for every goal-scope batch.

### Retrospective process-ledger repair

Batches 125-140 predated the structured `process_events` table. Their sentence, script, review, lesson, lexeme,
book, and (for Batches 130-140) process-log artifacts existed, but their structured event rows did not. The audit
added two explicitly retrospective events per batch through
`batch_scripts/backfill_process_events_125_140.py`. The events use audit-time timestamps, identify their source
artifacts and hashes, and do not pretend to be contemporaneous records. No historical timestamp or artifact was
overwritten.

## 7. Revision and Preservation Audit

There are 16 revisions in the goal interval:

- Batch 159: one `mayi-ku` -> `mayi-ka` dative-allomorph correction;
- Batch 392: fifteen pre-close replacements after source forms failed established phonotactic/reduplication gates.

For every revised sentence, the latest non-null `new_english`, `new_kuku`, and `new_analysis` values equal the
current sentence fields. Old and new values and reasons remain in `revisions`. SQLite reports zero foreign-key
violations and `PRAGMA integrity_check = ok`.

## 8. Corpus and Export Integrity

Whole-corpus checks:

```text
lint: 20047 rows scanned, 0 issues flagged
GOAL METRIC: 20047 / 20000 verified sentences  (135547 Kuku words)
normalized Kuku duplicate groups: 0
normalized English-Kuku duplicate groups: 0
foreign-key violations: 0
SQLite integrity: ok
```

The canonical content digest over all 20,047 verified sentence records is:

```text
cb32b539e0bf9763a707afe22d702c9520f5b41ec244ea8e63013fee2798763a
```

Final training export:

| File | Rows | SHA-256 |
|---|---:|---|
| `train.jsonl` | 16,820 | `1945595c24b11b4d1ba4da14df38eb09e8f03891307befad8e0723c2efa4fe20` |
| `dev.jsonl` | 1,609 | `25ace6e437bb945454c35e50768f6a03d5e61a0d11bd136fa84a8b3d06101481` |
| `synthtest.jsonl` | 1,618 | `af697ff339dd89115cf79f50f99dec868481f7520bd3149355aaa6435e11fe2d` |
| `MANIFEST.json` | 20,047 total | `66f37fc8099406c98ddd7a35a055c49586d60db2cacbafae87ad6d8e47f3f5a4` |

The 20,047 export records equal the database as a five-field multiset over English, Kuku, analysis, frame, and
status. Every line parses as JSON and every `src_tagged` value equals `<synth> ` plus its English source.

## 9. Living Books and Public State

All four canonical books contain the Batch-399 / Rule-357 endpoint and, in combination, explicit markers for every
Batch 125 through Batch 399. `render-docs.sh` copies the four canonical Markdown sources byte-for-byte and produces
self-contained HTML with a table of contents, embedded styling, and light/dark support.

The final live capture is stored under:

```text
synthetic/claude-synthetic-v1-2026-07-02/live_audits/completion-20000/
```

The capture includes all nine response bodies plus `route-status.json`. The route contract is:

- `https://mobtranslate.com/docs` -> HTTP 301 to `/docs/`;
- `https://mobtranslate.com/docs/` -> HTTP 200;
- all four `.html` and all four `.md` document endpoints -> HTTP 200;
- every live body equals its corresponding `public-docs/` file byte-for-byte.

## 10. Reproduction

The final audit is one command:

```bash
cd /mnt/donto-data/donto-resources/research/translation-training/kuku-yalanji-runpod-2026-06-30
python3 completion_audits/audit_goal_20000.py \
  --fetch-live \
  --output completion_audits/audit-goal-20000-result.json
```

`--fetch-live` uses cache-busted requests to the actual `.com` domain, records status and redirect metadata, and
compares response bytes with `public-docs/`. A local-only substantive pass can be run with `--preflight`.

Final machine-readable result:

```text
completion_audits/audit-goal-20000-result.json
SHA-256: b381545f3a6f16b583a2d1682db1f6c066bedb9cce6fd661ad45a94fc0d013c0
```

Audit program:

```text
completion_audits/audit_goal_20000.py
SHA-256: b679100b2a94d9f7c92276e40ae455ceb56a58384c2f46a5d04feb3192e2dd02
```

## 11. Handoff

The corpus is now a frozen research baseline for parallel RunPod experiments. The ownership, isolation, staging,
training, evaluation, artifact, cost, and shutdown contract for the Codex and Claude lanes is in:

```text
docs/kuku-yalanji-v21-parallel-runpod-handoff-2026-07-10.md
```

No experiment may mutate `synthetic.db`, the canonical export, the four living-book sources, or the locked external
evaluation sets. Corrections discovered by model analysis return through a new I3-safe corpus revision cycle; they
are never patched silently into one lane's private copy.
