Elamur: **Mova** · [Parse](https://mova.elamur.ai/free/en/parse/) · [Dictionary](https://md.dictionary.elamur.ai/free/en/) · [Translate](https://md.translate.elamur.ai/free/en/) · [Research](https://md.research.elamur.ai/free/en/) · [MCP](https://mcp.elamur.ai/) · [Groupants](https://md.groupants.elamur.ai/free/en/)

[Mova](https://md.mova.elamur.ai/free/en/) · [this page in HTML](https://mova.elamur.ai/free/en/docs/tools/fish-wiki/)

[home](https://md.mova.elamur.ai/free/en/) / [docs](https://md.mova.elamur.ai/free/en/docs/) / [tools](https://md.mova.elamur.ai/free/en/docs/tools/) / English Wikipedia Fish

# English Wikipedia Fish

The Fish annotate English Wikipedia a little at a time with the Codex teacher (Terra `gpt-6.1-terra`, ChatGPT login), the English counterpart of the French Fish (`peta/fish/fr/README.md`). Mova's English parse and pragmatic labels are the draft the teacher corrects; the validated replies are review-only silver (not gold, no training grant).

- Contract and executor: `tools/fish/src/wiki.rs`, binary `fish-wiki` (`annotation-execute` like the English and French ones, run by the unchanged pager `fish-pages`). Gates: bound fields, exact targets with their `# sent_id` and `# text`, CoNLL-U tree, the UD English registry of `en::udreg` (UPOS, features per UPOS, relations, auxiliary lemmas, the copula `be`), word rows only (no multiword ranges, as in the English contract), source-character alignment, the closed labels of `prag::schema`. Witnesses (findings, never a rejection): Mova's parse against the reply (`parser_divergence` when under half the labelled attachments agree), Mova's pragmatic labels against the teacher's (`pragmatics_differs_from_draft`), SpaceAfter marks. `fish-wiki wiki-check CONLLU` runs the gate over a file (control: UD English EWT dev, 1696 of 2001 blocks pass; the others carry multiword ranges or empty nodes only). `wiki-prepare` and `wiki-render` show the native evaluation and the request without a model call.
- Pages and corpus: `fish-wiki-pages pages` reads a finished treestore pass (finished `rank-*.mts` parts only; the pass keeps articles in page-view order) and writes pager pages: one page = the first 16 sentences with a tree of one article, two tasks of 8 targets, 4 context sentences. Sentences whose text is in a held-out treebank are rejected and never sent (`--heldout`, required); titles starting `List of`, `Lists of`, `Deaths in`, `Index of`, `Outline of` are skipped. `--pagers w08,w09,…` deals the pages round-robin to one plan and pager configuration per name over a shared `ready/`. `fish-wiki-pages collect` gathers validated jobs into a corpus and a snapshot (one article in ten, by FNV-1a of the page id, is dev and never trains). `limit-guard.sh` stops all pagers of a build when one turns uncertain on anything but a transport error or a bare provider-capacity refusal.

Build: `cargo build --release` here and in `tools/fish`.

## Dry run (2026-11-06)

Pass `wiki-all-v5` (page-view order), the first 2 articles (`.xxx`, `2026 FIFA World Cup`), 32 targets in 4 tasks; held out: UD English EWT dev+test, GUM dev+test, PUD test (7784 texts). 4 Codex calls, all validated (32 of 32 targets); 124-180 s per call; tokens per call 18.1-20.9 k input (8.2 k cached), 6.5-9.7 k output; rendered requests 21-25 KB. Mova's parse agrees with the teacher on 685 of 990 words (69 %; 60-76 % per task). The teacher labels all 32 sentences expository: 30 `decl/assert/0/0/none/none`, 1 hedge, 1 `character` voice, where the draft said `narrate/narrator` for much of it. A held-out control (a text of the first article put into `--heldout`) is rejected and not sent.

- [← previous Fish virtual terminals](https://md.mova.elamur.ai/free/en/docs/tools/fish-terminal/)
- [next → gutenberg — Project Gutenberg books for the corpus](https://md.mova.elamur.ai/free/en/docs/tools/gutenberg/)
- [↑ back to tools](https://md.mova.elamur.ai/free/en/docs/tools/)
