# Reproduce the two turns Every live number in *The engine, on the record* came from one of these reads. They need no key and no account. Capture date: **2026-10-18, 20:11–20:13 MDT** (2026-10-19, 02:11–02:13 UTC). The engine restarts. During the capture window the origin returned **502** twice, and a read taken 30 seconds later was 200 with the same store counts (the status `uptimeMs` was 74 s). The store numbers are stable across a restart; the uptime is not. Retry a 502 before treating it as a finding. ## 0. When you ran it Write down the wall-clock time and the `date` header of the first response. A live read without a time is not a receipt. ```bash date -u +%Y-%m-%dT%H:%M:%SZ ``` ## 1. The status read ```bash curl -s https://metatronmind.com/api/system/status | tee public-status.json | jq '{ genesisAt, storeAgeMs, learningMs, uptimeMs, reading, dictionarySize, specialistCount, totalForwardPasses, activity, capabilities, calibration }' ``` Expected at capture: ```json { "genesisAt": "2026-09-28T22:11:53.889Z", "storeAgeMs": 1742359117, "learningMs": 1742359117, "uptimeMs": 78858, "reading": "at-rest", "dictionarySize": 145565, "specialistCount": 21, "totalForwardPasses": 145750, "activity": { "trainer": "stopped", "concern": null, "tick": 0 }, "capabilities": { "ingest": false }, "calibration": { "at": "2026-10-13T04:44:54.859Z", "dictSize": 145179, "suggestedDecline": 0.74, "currentDecline": 0.76, "youdenJ": 0.85, "falseDecline": { "n": 0, "of": 27 }, "ungroundedCatch": { "n": 51, "of": 60 }, "smearCatch": { "n": 11, "of": 12 } } } ``` What to check: - `learningMs == storeAgeMs`. That is the legacy alias. The status handler's comment says *"Nothing in the engine 'learns'; do not build on it."* - `dictionarySize` is the roster total (generalist + specialists), **not** including off-roster cubes. - `capabilities.ingest` is `false` for an anonymous remote caller: the public box will not take a document from you. - The `about` block is the set of facts a public page may use. It includes `writer`, `decline`, `ladder`, `rereads`, `memory`, `xPosts`, `screening`. Read it directly with `jq '.about' public-status.json`. ## 2. The store's shape ```bash curl -s https://metatronmind.com/api/cubes/topology | tee cubes-topology.json | jq '{ totalDictionary, generalistDictionary, totalCubes, specialistCount: ([.nodes[].specialists[]] | length) }' ``` Expected at capture: `totalDictionary: 145565`, `generalistDictionary: 760`, `totalCubes: 22`, `specialistCount: 21`. The check the article makes: ```bash jq '[.nodes[].specialists[].dictionarySize] | add' cubes-topology.json # 144805 jq '.generalistDictionary' cubes-topology.json # 760 # 144805 + 760 = 145565, the public dictionarySize ``` Off-roster cubes are not in that sum. The registry read shows them: ```bash curl -s https://metatronmind.com/api/cubes/registry | jq '[.offRoster[] | {id, role, dictionarySize}]' # archaeology-docs 10938, resident-memory 107 ``` 145,565 + 10,938 + 107 = **156,610** — the number the public count deliberately is not, because chat cannot reach those two cubes. ## 3. The answered turn ```bash curl -s -X POST https://metatronmind.com/api/chat \ -H 'content-type: application/json' \ -H 'origin: https://metatronmind.com' \ -d '{"message":"What causes sodium channels to open during a nerve impulse?"}' \ | tee /tmp/chat-covered.full.json \ | jq '{mode, finalCubeId, routedCubeIds, cascadeDepth, attribution, "writerAsked": .ladder.writer.asked, "top5": [.blendedCascade[:5][] | {cubeId, sourceId, querySim}], "cascadeRange": ([.blendedCascade[].querySim] | {min: min, max: max})}' ``` Expected at capture: `mode: "specialist:llm"`, `finalCubeId: "specialist-medicalphysiology-musrga3w"`, `attribution.verdict: "covered"`, `attribution.top: 0.828`, `attribution.threshold: 0.76`, `writerAsked: true`, every `blendedCascade` entry from one document, range **0.7833–0.8278**. Wall-clock: **10.3 s**. ## 4. The refused turn ```bash curl -s -X POST https://metatronmind.com/api/chat \ -H 'content-type: application/json' \ -H 'origin: https://metatronmind.com' \ -d '{"message":"What did the Zorblat-9 mission find on Europa in 2031?"}' \ | tee /tmp/chat-declined.full.json \ | jq '{mode, finalCubeId, routedCubeIds, response, ladder: {verdict: .ladder.verdict, rung: .ladder.rung, top: .ladder.top, threshold: .ladder.threshold, search: .ladder.search, writerAsked: .ladder.writer.asked}}' ``` Expected at capture: `mode: "decline"`, `finalCubeId: "generalist"`, `routedCubeIds: []`, `ladder.verdict: "not-covered"`, `ladder.rung: "none"`, `ladder.top: 0.717`, `ladder.threshold: 0.76`, `ladder.search: {ran: true, returned: 8, floor: 0.8, best: 0.748, offTopic: true}`, `ladder.writer.asked: false`. Wall-clock: **1.7 s**. The refusal sentence is `response`; the same sentence is `attribution.sentence`. The engine wrote it; the writer was not asked. ## 5. The two rules the audit depends on **What the shipped copies are.** `chat-covered.json` and `chat-declined.json` in this pack are the decision fields of the two responses — mode, route, scores, threshold, verdict, rung, attribution and the ranked ids — with the retrieved passage text removed. The commands above return the full response live, passages included. The store's documents are third-party sources, so the pack records the decision and the numbers, not a copy of what was read; the live call is one command away for anyone who needs to see the passages themselves. The trim changed no score, id or verdict. **`writer.asked` is the line between a computed refusal and a styled one.** If it is `true`, the model had the turn and could have said "I don't know" in its own words. The engine's claim is stronger: under the ladder, when nothing clears and the web does not, no model is called. **A web search is not a web answer.** `returned` is how many results came back; `best` is the highest similarity of any of them to the question; `floor` is what one had to reach to count. At capture, eight results came back and the best scored 0.748 against a floor of 0.800, so the search counted as nothing. If a system reports only "searched the web", it has reported nothing. ## 6. The code, not the prose The pack ships `grounding-ladder.ts`. The rest of the map is in `architecture-2026-10-18.md` §7. The three constants to read for yourself: - `GROUNDING_DECLINE_THRESHOLD` — 0.750 default, 0.760 in production (`server/chat/retrieve.ts`). - `GROUNDING_RELATED_MARGIN` — 0.010 default; capped at 0.05 so a wide band cannot become a lower threshold by another name. - `GROUNDING_LADDER_WEB_FLOOR` — 0.800 default. ## 7. What is not reproducible from here - The ingestion path (the validator, the work ledger) is operator-only and not exposed to an anonymous caller. The article says so; it does not claim a visitor can add a document. - The **75–160 ms** retrieval measurement was taken on the production box and published with *A Forward Pass on the Graph*; it is not in this pack. - The **Epoch 1** ablation numbers (0 of 33 edges lockable, state erased in ~5 passes, 13.94 min/h of engine-write) are published with *Eight subsystems, deleted*, which ships the boundary document and the constraints ledger. - The store is live. The counts in this file are a snapshot at the timestamp above; the durable facts are the genesis date, the architecture, and the two response shapes.