usage: vexa-values-proven [-h] --contract CONTRACT --fills FILLS --map MAP --station STATION
--out OUT
vexa-values-proven — build an entry's `values_proven` block from a station's
own committed fills.
WHY IT IS NOT TYPED BY HAND. The block this writes is what a contract's
`carriage.require_entry_values_proven` clause demands, and the in-cluster
verifier now refuses an entry that omits it. A human transcribing "V-est-1:
proven" into JSON is producing an unbacked claim in the exact shape of a backed
one — the same defect `--verdict-out` was written to remove from the station
verdict. So the evidence is COPIED, verbatim, out of the station's row-fills
log: a line that already exists, is already committed to the stations ledger,
and can be re-read at the `ref` this tool records.
WHAT MAKES A LINE PROOF. The station log's own convention is one row per line:
2026-08-30T08:0xZ E0 PASS vexa-verify.sh --station laptop-preflight …
...a timestamp, a station row id, a verdict token, and the finding. A line
proves a contract value when its row id is mapped to that value AND its verdict
token is exactly `PASS`. `PART`, `PASS*`, `FINDING`, `NOTE` and anything else do
NOT prove: they are the station saying "not entirely", and a tool that reads
them as proof is a tool that launders a caveat into a green tick. If a partial
row should nonetheless be accepted, that is a human's decision and it is written
as a `waived` row with the human's name on it — which this tool deliberately
cannot mint. A machine does not get to waive.
REFUSES RATHER THAN UNDER-DELIVERS. A required contract value with no mapped
PASS line produces NO output at all: the tool exits 3 and names what is
missing. Writing a partial block would hand the publisher a file that looks
complete and fails at the subscriber's PreSync hook instead.
usage: python3 publisher/vexa_values_proven.py --contract contracts/internal-estate-2026-09.json --fills <stations ledger>/stations/estate-seq12/row-fills.log --map seq12-rows.json --station estate-seq12 --out values-proven.json
--map is a flat JSON object mapping STATION ROW ID -> CONTRACT VALUE ID,
e.g. {"E0": "V-est-1", "P2": "V-est-2", "F0": "V-est-7"}. Several rows may
map to one value; each contributes an evidence row. A value named in the map
that the contract does not declare is a refusal, not a warning — it is the
shape a typo takes, and a typo here proves nothing while looking like proof.
Exit 0 wrote the block · 2 usage · 3 refused, and says what is unproven.
options:
-h, --help show this help message and exit
--contract CONTRACT the channel contract whose required_values[] are being answered
--fills FILLS the station's committed row-fills.log; quoted verbatim as evidence
--map MAP JSON object mapping station row id -> contract value id
--station STATION the station making the claim; recorded on every row
--out OUT where to write the values_proven JSON array