# Batch 360 process log - Rule 318 low-coverage fish non-singular nonpast perception after Rule 317

## Scope

Rule 318 adds 50 explicit visible-fish non-singular nonpast-perception rows over five zero-use, three one-use, one
two-use, and one three-use direct-dictionary fish nouns: `kundurr-kundurr`, `kurruba`, `mangkurr-mangkurr`,
`murrabal`, `ngiwa`, `dijarr`, `dukul-barangkal`, `jalil-jalil`, `kalu`, and `mawul`. It opens only bare fish
reference with nominative non-singular pronouns, Yalanji local demonstratives, and nonpast `nyajil`. Dialect
alternatives, homographs, place/story material, habitat, capture/fishing, food/taboo, behavior, prior-row
propositions, case, newly produced compounds/reduplication, past, purposive, reduplicated perception, and support
inflection remain closed.

Frames: `Ngali TARGET yaluy nyajil`, `Ngaliny TARGET yinyay nyajil`, `Yubal TARGET yaluy nyajil`,
`Yurra TARGET yinyay nyajil`, and `Ngana TARGET yaluy nyajil`.

## Source readback

- Pronouns: Patz lines 2577-2582 and person-number discussion 2674-2684. Demonstratives: lines 2834-2847.
  Nonpast `nyaji-l`: lines 3043-3049; nonpast function: lines 3149-3151; perception A/O syntax: lines 4256-4265.
  Dictionary running-form `nyajil`: lines 24282-24296.
- `kundurr-kundurr` lines 15722-15735: full reduplicated noun, crescent perch. Whole lexical head admitted;
  productive reduplication and inferred fish behavior/ecology/use closed.
- `kurruba` lines 16537-16545: species of freshwater fish. Direct fish reference admitted; habitat, capture, food,
  and event content closed.
- `mangkurr-mangkurr` lines 17775-17807: two concordant full-reduplicated garfish entries. Whole lexical head
  admitted; productive reduplication, shape, swimming, habitat, capture, food, and event content closed.
- `murrabal` lines 20970-20980: Yalanji barramundi, with Nyungkul `kudi` given as dialect counterpart. Yalanji form
  admitted; dialect substitution, ecology, capture, food, and event content closed.
- `ngiwa` lines 23200-23237: separate place/snake-story entry and moray-eel entries, one noting a sea-snake
  extension. Patz line 1722 independently gives inflected `ngiwa-nda` 'salt-water eel'. Bare moray-eel noun
  admitted; place, stones, story site, sea-snake alternative, location/case, and event content closed.
- `dijarr` lines 5552-5577: freshwater fish / freshwater perch, with `bayi` comparison and Rossville/Shipton's
  Flats distribution prose. Freshwater-perch reference admitted; comparison, distribution, place, habitat, capture,
  food, and event content closed.
- `dukul-barangkal` lines 6312-6323: lexicalized flathead-fish noun, synonym `dalmbal`. Exact dictionary compound
  admitted as one head; decomposition, synonym substitution, anatomy/shape, camouflage, habitat, capture, food, and
  event content closed.
- `jalil-jalil` lines 7406-7419: full reduplicated mudskipper noun. Whole lexical head admitted; productive
  reduplication and earlier-row climbing, water, mangrove-root, tide, feeding, habitat, and behavior closed.
- `kalu` lines 12886-12905: separate garfish and saltwater-catfish senses. Established corpus garfish reading
  admitted; catfish ambiguity and earlier roasting/eating, food quality, habitat, capture, and event content closed.
- `mawul` lines 18775-18796: eel / small freshwater eel, with an old-people food restriction. Visible eel reference
  admitted; size, habitat, age group, permission, eating/taboo, feeding, body properties, capture, and event closed.
- Patz lexical search found only `ngiwa`; absence of the other bare heads in Patz was recorded rather than treated as
  contradictory evidence. Their lexical attestations come from the dictionary, while Patz licenses the forms and
  clause construction.

## Candidate exclusions

- `yidi`, `yidilnyul`, `dalku`, and `kanyaji` are explicitly Nyungkul forms in their definitions. They were not
  mixed with Yalanji `yaluy`; their Yalanji counterparts were not substituted because this is a low-coverage-head
  pass, not a dialect-normalization pass.
- `bayilbayil` failed the corpus linter as unsupported unhyphenated reduplication; `kijukum` failed native coda
  constraints; `walarrji` triggered the rhotic-palatal guard. All three were excluded rather than whitelisted.
- `kalu` was retained despite sense ambiguity because the direct garfish entry and two earlier accepted garfish rows
  establish that reading. The saltwater-catfish sense is explicitly closed in every row's evidence.

## Preflight

- Verified before banking: 18,047 / 20,000; 127,547 Kuku words; 1,953 remaining.
- Target coverage: `kundurr-kundurr` 0, `kurruba` 0, `mangkurr-mangkurr` 0, `murrabal` 0, `ngiwa` 0,
  `dijarr` 1, `dukul-barangkal` 1, `jalil-jalil` 1, `kalu` 2, `mawul` 3.
- Support coverage: `ngali` 513, `ngaliny` 455, `yubal` 465, `yurra` 450, `ngana` 1035, `yaluy` 3792,
  `yinyay` 4044, `nyajil` 3897.
- All selected forms pass the intended frame lint. All 50 exact surfaces are unique internally and have zero corpus
  collisions.

## Planned rows

1. `Ngali kundurr-kundurr yaluy nyajil.`
2. `Ngali kurruba yaluy nyajil.`
3. `Ngali mangkurr-mangkurr yaluy nyajil.`
4. `Ngali murrabal yaluy nyajil.`
5. `Ngali ngiwa yaluy nyajil.`
6. `Ngali dijarr yaluy nyajil.`
7. `Ngali dukul-barangkal yaluy nyajil.`
8. `Ngali jalil-jalil yaluy nyajil.`
9. `Ngali kalu yaluy nyajil.`
10. `Ngali mawul yaluy nyajil.`
11. `Ngaliny kundurr-kundurr yinyay nyajil.`
12. `Ngaliny kurruba yinyay nyajil.`
13. `Ngaliny mangkurr-mangkurr yinyay nyajil.`
14. `Ngaliny murrabal yinyay nyajil.`
15. `Ngaliny ngiwa yinyay nyajil.`
16. `Ngaliny dijarr yinyay nyajil.`
17. `Ngaliny dukul-barangkal yinyay nyajil.`
18. `Ngaliny jalil-jalil yinyay nyajil.`
19. `Ngaliny kalu yinyay nyajil.`
20. `Ngaliny mawul yinyay nyajil.`
21. `Yubal kundurr-kundurr yaluy nyajil.`
22. `Yubal kurruba yaluy nyajil.`
23. `Yubal mangkurr-mangkurr yaluy nyajil.`
24. `Yubal murrabal yaluy nyajil.`
25. `Yubal ngiwa yaluy nyajil.`
26. `Yubal dijarr yaluy nyajil.`
27. `Yubal dukul-barangkal yaluy nyajil.`
28. `Yubal jalil-jalil yaluy nyajil.`
29. `Yubal kalu yaluy nyajil.`
30. `Yubal mawul yaluy nyajil.`
31. `Yurra kundurr-kundurr yinyay nyajil.`
32. `Yurra kurruba yinyay nyajil.`
33. `Yurra mangkurr-mangkurr yinyay nyajil.`
34. `Yurra murrabal yinyay nyajil.`
35. `Yurra ngiwa yinyay nyajil.`
36. `Yurra dijarr yinyay nyajil.`
37. `Yurra dukul-barangkal yinyay nyajil.`
38. `Yurra jalil-jalil yinyay nyajil.`
39. `Yurra kalu yinyay nyajil.`
40. `Yurra mawul yinyay nyajil.`
41. `Ngana kundurr-kundurr yaluy nyajil.`
42. `Ngana kurruba yaluy nyajil.`
43. `Ngana mangkurr-mangkurr yaluy nyajil.`
44. `Ngana murrabal yaluy nyajil.`
45. `Ngana ngiwa yaluy nyajil.`
46. `Ngana dijarr yaluy nyajil.`
47. `Ngana dukul-barangkal yaluy nyajil.`
48. `Ngana jalil-jalil yaluy nyajil.`
49. `Ngana kalu yaluy nyajil.`
50. `Ngana mawul yaluy nyajil.`

## Guardrails

- Exact selected fish labels only; no source prose, alternate sense, or prior-row behavior.
- Bare nominative pronoun A and bare absolutive target O; fixed Yalanji `yaluy`/`yinyay` and dictionary-form
  `nyajil`.
- Direct dictionary hyphenation is retained for the three full-reduplicated nouns and the lexical compound. No new
  compound, productive reduplication, case, derivation, past, purposive, reduplicated perception, or support
  inflection is admitted.
- Exact English contract: subject, selected lexical fish label, here/there, and present/nonpast "see" only.

## Execution checklist

- Compile/static inventory; bank under review; whole-corpus lint; exact field readback; duplicate scan; five lenses;
  close.
- Lessons/lexemes; post-close lint; export; all four books; render; live docs; final integrity and coverage audit.

## Closeout

- Structured dictionary-domain and token-aware SQLite coverage audits identified the fish field. The first candidate
  set was revised before authorship after dialect inspection: Nyungkul `yidi`, `yidilnyul`, `dalku`, and `kanyaji`
  were removed rather than mixed with Yalanji `yaluy`; `bayilbayil`, `kijukum`, and `walarrji` were removed rather
  than weakening phonotactic/reduplication guards. `Kalu` remained because direct dictionary and earlier accepted
  rows establish the selected garfish sense. No database mutation occurred during selection.
- `bank_360.py` and `close_360.py` compiled. AST inventory found exactly 50 literal `row(...)` calls, 35 lessons,
  18 lexemes, and five review lenses. `scan_static()` returned no issues, and all 50 proposed rows independently
  passed `lint_row`. This proves explicit-row authorship and verifies that no runtime loop authored sentence content.
- Banking created 50 `under_review` rows and left the verified metric at 18,047. Process events 3813-3818 preserve
  direct dictionary/Patz readback, bounded scope, target/support coverage, duplicate preflight, static guard output,
  and bank result.
- Pre-close whole-corpus lint scanned 18,097 banked rows with zero issues; verified remained 18,047. Exact database
  readback compared `seq`, English, Kuku, analysis, frame, tier, `words_used`, `loans_used`, evidence, confidence,
  status, rights status, and author against `bank_360.ROWS`: 50/50 rows, zero differences. The normalized exact Kuku
  duplicate scan returned zero groups. Events 3819-3821 preserve these results.
- Manual morphology, lexicon, syntax, fidelity, and register review passed every row. The review treated
  `kundurr-kundurr`, `mangkurr-mangkurr`, and `jalil-jalil` as indivisible dictionary-reduplicated heads and
  `dukul-barangkal` as an indivisible dictionary compound; none licensed productive morphology or semantic
  decomposition. `Ngiwa` remained moray eel, `kalu` garfish, and all dialect, homograph, place/story, ecology,
  capture/fishing, cooking/eating, food/taboo, tide, behavior, body-property, case, tense, and support-inflection
  fields remained closed. Closure wrote 250 review passes, 35 lessons, and 18 lexeme/source-log rows. Events
  3822-3826 preserve review detail and closure.
- `close_360.py` accepted all 50 rows: verified 18,047 -> 18,097 and Kuku words 127,547 -> 127,747. Final statuses
  are 17,186 accepted and 911 revised, with no under-review or rejected rows.
- Export refresh produced 15,183 train, 1,467 dev, and 1,447 synthtest JSONL rows, totaling 18,097. Event 3827
  preserves the export result.
- All four canonical Markdown books were updated to Batch 360 / Rule 318 / 18,097, including direct source lines,
  target/support coverage, dialect/linter exclusions, lexicalized-word boundaries, semantic closures, event
  evidence, cumulative trap `(do)`, and Rule 319 handoff to `bank_361.py` / `close_361.py`. Event 3828 preserves
  the source-book update.
- `render-docs.sh` rebuilt the index, four standalone HTML books, and four raw Markdown books. Each public Markdown
  copy is byte-identical to its canonical source; local current-marker checks passed and stale current Batch 359
  checks returned no rows. Event 3829 preserves the render audit.
- Live browser-UA verification found `/docs` -> `/docs/` as 301; the index, four HTML files, and four Markdown files
  all returned 200. Normal HTML URLs show Batch 360 / Rule 318 / 18,097 and no stale current Batch 359 marker. The
  index links both forms, and all four live Markdown SHA-256 values equal local. Event 3830 preserves the live result.
- Final audit: lint 18,097/0; 127,747 Kuku words; 1,903 remaining; zero normalized exact duplicates; batch inventory
  50 accepted / 250 reviews / 35 lessons / 18 lexeme logs; target coverage after close `kundurr-kundurr` 5,
  `kurruba` 5, `mangkurr-mangkurr` 5, `murrabal` 5, `ngiwa` 5, `dijarr` 6, `dukul-barangkal` 6,
  `jalil-jalil` 6, `kalu` 7, `mawul` 8; JSONL total 18,097; four source/public Markdown pairs identical; SQLite
  `integrity_check=ok`; foreign-key check empty. Event 3831 preserves the final audit.

## Handoff

If accepted, continue from **18,097 / 20,000**, with **1,903** remaining. Rule 319 requires a fresh source pass.
