Mova0.6 pre-release⌕
☰
home / docs / tools / The hard-cases list

The hard-cases list

Mova's animals and the Octopus, the large language model that develops Mova, are described in the sea animals of Mova.

mova-hard-case-list is the one list of sentences Mova reads badly, shared by every corpus reader, in one format. A Wikipedia corpus reader's hourly check (outside this repository) and the Whales' topic corpora (tools/topic-corpus) write to it; the Fish priority lane and the Eel's hard-case rounds (tools/hard-cases) read it. The deployment's list is hard-cases.jsonl.

cargo test --manifest-path tools/hard-case-list/Cargo.toml --offline

Format: mova-hard-case-v2

One append-only JSONL file, one event per line, written under an exclusive flock and synced. A case's key is the first 16 hex digits of the SHA-256 of its trimmed text, so a sentence met in two corpora is one case.

{"schema":"mova-hard-case-v2","event":"found","key":K,"parser":"en","text":…,"source":"wikipedia",
 "id":"wiki:Kim_Wilde:12","document":{"id":"wiki:Kim_Wilde","n":12},
 "where":{"article":"Kim Wilde","page_id":…,"rev_id":…,"dump":"enwiki-20260901","stream_offset":…,"sentence":12},
 "why":["grammar","witness"],"licence":"CC BY-SA 4.0","model":"en.bin:31a93401fe7135b1","reader":"run-1762290000",
 "draft_conllu":"# sent_id = …","witness_uas":0.45,"review_only":true,"training_authorized":false}
{"schema":"mova-hard-case-v2","event":"learned","key":K,"parser":"gparse","model":"gparse:6e9564693e9307b6","reader":"hard-cases-recheck"}
{"schema":"mova-hard-case-v2","event":"open","key":K,"parser":"gparse","model":"gparse:…","reader":"hard-cases-recheck","why":["witness"]}
fieldmeaning
sourcethe reader that found it: wikipedia, topic-corpus
idthe source's sentence id
documentthe context pointer: the document's id in its source and the sentence's place in it
wherethe source's locator (Wikipedia: article, page id, revision, dump, offset; topic corpora: corpus, doc, sentence index) — what the source's bundle command takes
whythe judges that flagged it: parse, tree, frames, grammar, nonprojective, witness (Wikipedia); roots, head_outside, no_words, no_frames, no_skeleton (topic corpora)
licencethe text's licence as the source states it (empty: unknown)
model, draft_conllu, witness_uaswhat read it badly, its tree, Stanza's agreement with it

Views per parser. parser says whose reading an event is about: en (the CPU model en.bin, which the corpora read with) or gparse (the GPU parser the Eel trains). Each case has one status per parser: open from a found or open event, learned after a learned event, unchecked when that parser never judged it. The corpora's own rechecks move the en view; the gparse recheck (mova-hard-cases recheck) moves the gparse view. A case found again after it was learned is open again.

Reading v1. The topic corpus's first lines (mova-hard-case-v1: no id, document, licence, model) are read as v2 found records with an unknown licence, id <doc>:<s> and document {doc, s}. A later report of the same open case that brings a licence is written again, so the case gets it.

Operations

Three unit tests cover v1 reading, per-parser views, deduplication, licence completion, source-scoped syncing and rechecks, regressions reopened, and unjudged cases left alone.

Limits

The whole file is read for every operation (O(list)); at tens of thousands of cases that is still a fraction of a second, but the list never shrinks: compacting it would be a separate, explicit step. A key collision of 64 bits merges two texts. flock coordinates cooperating writers on a local filesystem. Nothing here admits anything to training.

This page in Markdown → https://md.mova.elamur.ai/free/en/docs/tools/hard-case-list/