Vera-α

It refuses to guess

Pour documents in. Vera separates what the sources agree on, what changed, what they disagree about, and what nobody answered — and never blends the four.

The difference

Asked about something it has never read

> 避難所
UNKNOWN_NO_EVIDENCE
no_candidate_cross

A language model asked the same question writes a paragraph about shelters, because writing a paragraph is what it does. Vera has nothing stored, so it says which kind of nothing.

Measured

On real published documents

A planted test corpus is graded by whoever wrote it. These are two government report series about the same live disaster, read revision by revision, and every finding was checked against its source by a person.

Cabinet Office damage reports
4 revisions · 252,575 characters
8 / 8
recall
8
findings · 0 false
MLIT 第N報 series
blind
4 revisions · 61,083 characters
6 / 6
recall
6
findings · 0 false

Recall has a denominator here, which is the part usually missing from such a claim: the water table names every affected municipality on both dates, so it is an answer key. It was read by hand, then compared.

  • Kumamoto City · waterout → restored7/29 → 8/6
  • Kumamoto Prison · shelteropened → closed8/3 → 8/6
  • National highwaysclosed → cleared7/29 → 7/31
  • Toll roadsclear → new closure8/3 → 8/6

All four are reported as updates with dates, not as conflicts. The controls hold as well: municipalities still without water on the last revision are reported as still without water, never as restored.

Generalisation

The second corpus was the test

Every reading rule had been derived from one ministry’s format. Whether that generalises is not something you can reason about — so a second agency’s series, in its own format, was ingested with no code changes and read only afterwards.

Five of six landed on the first try. The sixth exposed two layout defects — a full-width table row read as wrapped prose, and a thousands separator typed as a period. Both were fixed structurally, neither fix mentions an agency, and both made the first corpus read slightly better too. That is what a blind run is for.

How it behaves

A refusal is a type

UNKNOWN_NO_EVIDENCE. UNKNOWN_LOW_COVERAGE. UNKNOWN_DOMINANT_SOURCE. Each names what is missing, so the next step is a procedure rather than a matter of taste.

An update is not a conflict

A road closed at 09:00 and open at 15:00 is one story told twice. Showing it as a disagreement is how an information officer stops trusting the board. An unreadable date leaves the dispute standing rather than inventing an update.

Every finding names its line

Not a summary of the sources — the sentence itself, with the file it came from. A person can disagree with the engine, which is the only way to find out that it is wrong.

No model in the answer path

The same documents always produce the same findings, on a laptop, offline. There is no matrix arithmetic anywhere in it, so there is nothing to be non-deterministic about.

Static dictionary

A model used as a dictionary, and only where it measured usable

Vera can grow its vocabulary from the documents themselves, and a person approves each word. To put the likely-real candidates in front of that person first, it can consult a jgen — a local model file converted with `--parts lexicon`, carrying its embedding table and nothing else. It has no layers that generate, so it physically cannot write. It is opened once and read a row at a time: pure standard library, no inference engine, no network.

Is this the kind of word that can carry a state?

Usable

Separated the real proposal queue completely: true candidates at +0.164 / +0.128 / +0.082, false ones at −0.143 / −0.239. Unseen state words (滞留, 孤立, 冠水) landed on the right side too.

Which known words sit nearest to it?

Usable as search

冠水 → 断水 (0.52), 停電 → 停止 (0.47). Shown to the operator as context beside a proposal, never as a decision.

Which pole is it — restored, or still out?

Refused. Absent from the API.

64.5% leave-one-out on the engine’s own 31 terms — a coin flip. Opposite poles live in identical contexts: an outage and its restoration share a paragraph, so a frozen table holds no information that separates them. A 4B model scored 54.8% on the same test. Neither is usable, and no function returns a pole.

The dictionary orders the queue. It never accepts a word — that stays with the person, and it stays there because of the third row, not out of caution. It is optional too: without one configured, the queue simply arrives unsorted, and nothing else changes.

Limits

Stated here, not left to be discovered

  • Recall is measured on two corpora, and both are Japanese government disaster reports. A third format may well expose a third layout defect — that is what the blind run is for, and it will be run again.

  • One false positive across 21.6 million characters of mixed English and Japanese prose. It is English, and it is honest: two documents using the word “channels” generically about different situations.

  • The vocabulary does not carry every state word a document might use. The most common one it omits is 障害 — deliberately, because 「障害のある方」 would otherwise read as a system failure, in the documents written for them.

  • It does not write. No free-form prose, no summarisation, no translation, no open-domain chat. That is not a weakness being worked on — it is the trade that buys everything above.