vocab: witness vs quorum earn their place in WELL-DEFINITIONS - #10366
Merged
Conversation
|
Codex usage limits have been reached for code reviews. Please check with the admins of this repo to increase the limits by adding credits. |
Aaron: "whitness vs qurom earns its place in our core vocabulary too, this is a good
distinction."
The distinction IS the content, so both entries land together. A WITNESS is one external
observer — sufficient to break a self-referential loop, because FigureEightEnsemble.fs
proves the loop cannot see its own fixed point from inside ("the demon cannot resist the
tangle from inside the loop"). But it tolerates ZERO faults: if the witness is itself wrong
or captured, the rescue fails silently and looks like success. A QUORUM is a witness set
sized for fault tolerance, 3f+1 to survive f faulty members.
The difference is not thoroughness, it is whether the observer itself can be wrong. So
"do I need one or several?" is exactly the question "can my checker be captured?" — and if
yes, one is not a weaker answer, it is the wrong KIND of answer. Recorded with the line
that makes it operational: every "get an outside opinion" is a witness claim until it
names f.
Both are Lane A terms (externally standard, from the BFT literature) rather than coinages,
so they arrive anchored.
FINDING while placing them: docs/WELL-DEFINITIONS.md IS NOT PUBLISHED. The pages:build
script runs llmtv-pages-static-export + browser-pwa-build + identity-dla-pages-build, and
the workflow then adds the book in 10 languages. Nothing reads WELL-DEFINITIONS.md — grep
across src, .github and package.json returns empty. So if Addison's definitions page is
meant to carry these, the wiring does not exist yet; noting it rather than guessing at
where it should go.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
AceHack
force-pushed
the
vocab-witness-quorum
branch
from
August 13, 2026 19:48
0331779 to
9c9a4d1
Compare
… WELL-DEFINITIONS Aaron: "we have some glossary dictionary stuff... there are multiple website roots it's probably under another root you are not looking at, also we have a glossary.md somewhere." Both corrections were right, and the second found the real home. I had put these in docs/WELL-DEFINITIONS.md — a reasonable surface but NOT the canonical one. The canonical vocabulary system is vocab/: 314 files, typed TYPE-homes (words/acronyms/letters/shapes/ colors/temperatures/...), a GENERATED MASTER-INDEX.md, F# codegen into Vocab.Generated.fs, and a CI gate (.github/workflows/vocab-hygiene.yml) running Uniqueness + MasterIndex --check + GramsView --check + Reify --check + tests. Added vocab/words/witness.md and vocab/words/quorum.md in the house format, then ran the generators rather than hand-editing anything: MASTER-INDEX regenerated (118 travelers, up from 116), grams symlinks written, Vocab.Generated.fs reified. All four gate checks green and MasterIndex.test.ts passes (3 tests, 125 expects, 0 fail). The GramsView gate did its job on the way: it rejected the first attempt with "MISSING grams symlink: grams/1/witness.md" — a new traveler is not done until its measure-view exists. Exactly the kind of check that makes a silent omission impossible. Both entries cross-reference each other, because the distinction is the content: a WITNESS is one external observer, enough to break a self-referential loop but tolerating ZERO faults; a QUORUM is that set sized for fault tolerance, 3f+1 to survive f. The difference is not thoroughness but whether the observer itself can be wrong. ALSO: docs/GLOSSARY.md does exist (Aaron was right), as do docs/definitions/, docs/linguistic-seed/terms/ (ground-up terms with a prereq-graph.json — a dependency DAG already built), and 15 index.html site roots rather than the one I checked. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…three dead paths
Routed the USB/zflash state-of-play to Dejan. My premise that the QEMU harness might not
exist was WRONG: ~4,900 lines under src/Core.TypeScript/zflash/test-harness/, 248 tests
green in under 2s. Correcting the README rather than the code, because the code is fine and
the doc was lying about it.
STALE STATUSES (doc-only fix, verified against source):
- row 3 "Reformat WITH key + selection retention" said scaffolded; scenarios.ts:103 says
composes-with-existing, and build-ai-cluster-iso.yml:351-369 genuinely runs it on
workflow_dispatch behind ZFLASH_QEMU_RETENTION_EXECUTE=1.
- row 4 "Reformat from scratch" said scaffolded; scenarios.ts:128 says
composes-with-existing, run at :371-390 behind ZFLASH_QEMU_PATH_FORK_EXECUTE=1.
- row 5 "Cluster joining" correctly says scaffolded (scenarios.ts:151) — left alone.
DEAD PATHS: five references to tools/ci/qemu-boot-test.ts and
tools/ci/qemu-full-install-test.ts, neither of which exists. Real homes are
src/Core.TypeScript/ci/. Notably these already carried STALE-REF markers — someone had
detected the rot and recorded it without fixing it, so the marker itself had become the
documentation. Both visible paths and their STALE-REF comments updated together.
NOT FIXED HERE, because it changes CI colour and that is Aaron's call: run.ts:797-803
returns status "skipped" for cluster-joining, and :862/:884 count only "failed" and
"scaffolded" as nonzero — so `--all` EXITS 0 WHILE SILENTLY OMITTING SCENARIO 5. Verified
by reading both sites. That is the same defect class as the Lean orphan modules: a green
that did not run everything it names. The fix is one line, but it turns the currently-green
zflash-harness-lint red until scenario 5 is wired to multi-vm.ts, so it is an honest-red
decision rather than a mechanical one.
Worth noting the harness authors already caught the SIBLING of this bug and confessed it
in-file: zflash-harness-lint.yml:11-22 records that the workflow was renamed from
zflash-qemu-test because "three consecutive green runs meant 'the harness invariants hold',
NOT 'a boot was validated'... A green check that implies more than it tested is worse than
no check." Real boot coverage lives in build-ai-cluster-iso.yml. The scenario-5 skip is the
same shape one level down.
bun test src/Core.TypeScript/zflash/: 248 tests, 690 expects, 0 fail.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…ger nothing could reach Aaron: "we want to get anything hooked up possible." Routed the page-to-backend audit to Iris; her cheapest-win finding was a one-line fix, and this is it. data/monitor.html is the ONLY page in the Zeta repo that reads CI-written frames — and it was reachable from no page at all, linked only from one design doc. Meanwhile tick-metrics runs on every push plus every 15 minutes and writes data/tick-history.json, which today holds 560 frames with provenance.mock:false, last written 14:51. So the fleet's real heartbeat has been published continuously and been publicly unreachable. This adds one card to the hall grid pointing at it. Zero new code. Verified before linking rather than after: monitor.html exists and reads tick-history.json with a fallback (data/monitor.html:201); "data" is already in PAGES_STATIC_DIRECTORY_ROOTS (llmtv-pages-static-export.ts:21-29) so it is copied into dist; hall/index.html is checked in and only PATCHED by the exporter (the status-card sidecar), not regenerated, so a hand-added card survives the build. This is a reader-with-a-writer, which is rarer here than it should be. Iris found the contract broken in BOTH directions: dora.html reads data/metrics-history.json that no workflow writes, while tick-history/vault-state/vault-roster/drift-* are written by CI and read by nothing except this orphan. Relaying the rest separately — this commit takes only the part that needed no decision. Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Aaron: "whitness vs qurom earns its place in our core vocabulary too, this is a good distinction."
Both entries land together, because the distinction is the content.
FigureEightEnsemble.fsproves the loop cannot see its own fixed point from inside ("the demon cannot resist the tangle from inside the loop"). Tolerates zero faults: if the witness is itself wrong or captured, the rescue fails silently and looks like success.ffaulty or captured members.The difference isn't thoroughness — it's whether the observer itself can be wrong. So "do I need one or several?" is exactly "can my checker be captured?", and if the answer is yes, one is not a weaker answer, it's the wrong kind of answer.
The operational line: every "get an outside opinion" is a witness claim until it names
f.Both are Lane A terms (externally standard, from the BFT literature) rather than coinages, so they arrive already anchored.
Finding while placing them
docs/WELL-DEFINITIONS.mdis not published anywhere.pages:buildrunsllmtv-pages-static-export+browser-pwa-build+identity-dla-pages-build, and the workflow then adds the book in 10 languages. Nothing readsWELL-DEFINITIONS.md— grep acrosssrc,.github, andpackage.jsonreturns empty.So if Addison's definitions page is meant to carry these, the wiring doesn't exist yet. Flagging rather than guessing where it should go.
🤖 Generated with Claude Code