# Batch 152 Process Log - Rule 110 Inanimate Possessor, Material-Source, And Comitative Case Alternations

Date: 2026-07-07  
Corpus start state: 7,647 / 20,000 verified sentences, 89,974 Kuku words, lint green.  
Batch target: 50 hand-authored rows.  
Rule target: Rule 110 - inanimate possessor, plant-part, material-source, and object-location case alternations.  
Scripts: `batch_scripts/bank_152.py`, `batch_scripts/close_152.py`.

## Source Pass

The operator handoff required a construction batch after Rule 109's plant/material lexicon. The main source passages
were:

- Patz §4.5.3 inanimate possessor:
  - ex.524 `Birra juku-ngu/juku-muny yalbay-bajaku`.
  - Locative = leaves actually on the tree; ablative = leaves plucked/fallen from the tree.
  - ex.525 `Mayi yinya-nga/-muny juku-ngu/-muny ngulkurr nuka-ji-y`.
  - ex.526 `Dumbul marra-nga/-mu/*-muny dandi`; ablative is explicitly not accepted for the zamia-shell frame.
- Patz §4.5.5 possessive/locative relationship:
  - inanimate possessor may involve locative or ablative because there is often real location/origin.
  - possessive is possible but is not the main productive strategy for these rows.
- Patz §3.2.3.2 possessive:
  - Yalanji zero-inflection possessive uses `-mu` after vowels and `-Vmu` after consonants.
  - Non-zero possessive stems are neutral and more complex; not expanded in this batch.
- Patz §3.2.3.3 comitative:
  - zero neutral comitative: `-iji` after rhotic, `-ji` elsewhere.
  - non-zero neutral comitative before stop/m suffixes: `-jirr-`/`-ijirr-`.
  - examples include `juku-ji`, `ngunyin-ji`, `walarr-iji`, `kalka-jirr-ka`, `juku-jirr-muny`.
- Patz §4.6.1 comitative attributes:
  - ex.531 `Yinya kaya kuli-ji`.
  - ex.535 `Yinya dingkar walarr-iji`.
  - ex.537-538 alienable possession as characteristic: `kambi-ji wubul-ji`, `kalka-ji kulur-ji`.
  - ex.542-546 case-stacked attributes: `kuli-ji`, `walarr-iji-ngka`, `juku-ku birra-jirr-ka`, `bayan-muny ... juku-jirr-muny`.

Dictionary pass checked every content word used in the batch, including plant/material terms from Rule 109 and the
control nouns/verbs needed for the case frames: `birra`, `juku`, `mayi`, `dumbul`, `marra`, `nganka`, `jurrbu`, `bindi`,
`dakil-dakil`, `dingal`, `wakumba`, `walmba`, `dimbirr`, `jakalkulu`, `kabal`, `dubal`, `diburr`, `balji`, `karra`,
`kurmun`, `bulin`, `naybu`, `duwar`, `kuralbi`, `bilanji`, `mawu`, `kakan`, `kanunjul`, `nganjirr`, `buyku`, `kaya`,
`kuli`, `dingkar`, `walarr`, `kalka`, `wawu`, `binal`, and `babaji`.

## Scope And Risk Controls

- `marra-muny` is blocked in this batch because Patz explicitly rejects it in the `dumbul marra-nga/-mu/*-muny` frame.
- `barka` remains excluded due the dictionary conflict between yellow water snake and Queensland nut.
- `wankarr` remains excluded because the previous lookup found it only in prose, not as a clean headword.
- `garden` is blocked; no new seed row uses the loan source example.
- `jinajina` is blocked; use hyphenated `jina-jina` if a water-gum row is needed.
- `bulin` and `naybu` are allowed only as attested object nouns in minimal LOC/ABL pairs, not as the start of a modern-object list.
- The batch teaches case alternation, not new botany; new lexical claims are avoided.

## Duplicate Preflight

Initial exact-surface candidate preflight rejected:

```text
12 DUP batch-151.12 Bindi balji-nga wunan.
38 DUP batch-129.21 Yinya kaya kuli-ji.
39 DUP batch-130.08 Yinya dingkar kalka-ji kulur-ji.
```

Replacements:

```text
Bindi yinya balji-nga wunan.
Yinya kaya kuli-ji-bajaku.
Yinya dingkar kalka-ji wubul-ji.
```

Final duplicate preflight was clean before writing `bank_152.py`.

## Final Row Inventory

- Rows 1-16: inanimate possessor LOC/ABL/POSS contrasts with plant parts and the `marra` exception.
- Rows 17-26: object/container LOC versus ABL source pairs.
- Rows 27-34: material-source `-muny`, including one row combining material origin and current object location.
- Rows 35-50: zero and non-zero attributive comitative, including DAT, ABL, and ERG case-stacked forms.

## Verification Plan

1. Compile `bank_152.py` and `close_152.py`.
2. Run `scan_static()`.
3. Bank 50 rows under review.
4. Run whole-corpus lint.
5. Close with 250 five-lens review passes.
6. Run whole-corpus lint again.
7. Refresh train/dev/synthtest export.
8. Update operator guide, grammar cheatsheet, and dictionary errata.
9. Run `./render-docs.sh`.
10. Verify local Caddy docs routes and public `https://mobtranslate.com/docs/` routes.

## Actual Verification

Compile and static scan:

```text
python3 -m py_compile batch_scripts/bank_152.py batch_scripts/close_152.py
PYTHONPATH=batch_scripts python3 -c "import bank_152; ... scan_static()"
```

Result:

```text
compile clean
static issues: 0
```

Bank and under-review lint:

```text
python3 batch_scripts/bank_152.py
python3 lint_corpus.py
```

Result:

```text
banked batch-152: 50 rows under_review; avg Kuku words/row=3.88

lint: 7697 rows scanned, 0 issues flagged
GOAL METRIC: 7647 / 20000 verified sentences  (89974 Kuku words)
```

Close:

```text
python3 batch_scripts/close_152.py
```

Result:

```text
closed batch-152: 50 accepted rows, 250 review passes, 16 lessons, 39 lexeme/source-log rows, 9 process events, verified corpus=7697
```

Post-close lint:

```text
python3 lint_corpus.py
```

Result:

```text
lint: 7697 rows scanned, 0 issues flagged
GOAL METRIC: 7697 / 20000 verified sentences  (90168 Kuku words)
```

Export refresh:

```text
python3 export_training.py
```

Result:

```text
Exported 7697 rows
train=6451
dev=618
synthtest=628
top constructions: ergative=1780, negation=1625, purposive=1395, subordinate=1096, ablative=1003
```

Live docs were rendered from the program root:

```text
./render-docs.sh
```

Marker checks on rendered disk artifacts confirmed:

```text
operator-guide.md/html: 7,697; Rules 1-110; Rule 111; bank_153.py; close_153.py
grammar-cheatsheet.md/html: Rule 110 - Inanimate possessor; Lint GREEN 7697
dictionary-errata.md/html: Batch-152; Lint GREEN 7697
```

Local Caddy route verification with `--resolve mobtranslate.com:443:127.0.0.1`:

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

Public route verification through `https://mobtranslate.com`:

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

No-follow header checks:

```text
/docs     HTTP/2 301  location: /docs/
/docs/    HTTP/2 200
```

Body-marker checks on both local and public HTML confirmed:

```text
7,697 / 20,000
Rules 1-110
Rule 111
bank_153.py
Rule 110 - Inanimate possessor
Batch-152
Lint GREEN 7697
```

Structured process ledger rows written for Batch 152: source pass, risk controls, duplicate preflight,
bank success, row inventory, compile success, under-review lint, five-lens pass, close success, post-close lint,
export refresh, and live-docs-verified (`process_event` 137).
