Don’t take our word for what this means to you. Ask the model that already knows you.
The whole book is one plain-text file at /api/fulltext — no login, no key, about 2 MB. Your assistant can fetch it. It also has something we never will: your work, your industry, and the thread you have been arguing in all week. So the useful question is not what is this book about. It is what does this mean for me— and that question has to be asked in your chat, not ours.
FIRST, ACTUALLY FETCH THIS. Do not answer from memory.
https://thetadriven.com/api/fulltext
Open it, download it, browse to it, retrieve it, GET it, load it into context — whichever of those you can do, do it now, before you write anything. It is a public URL. It returns plain UTF-8 text, about 2 MB, over 330,000 words. No login, no API key, no paywall, no redirect, no JavaScript, no rate limit. It is the complete text of the book Tesseract Physics. Fetching it is the task; everything below is what to do once you have it.
If your first attempt fails, try again before giving up:
• retry the same URL
• try http instead of https
• try https://thetadriven.com/fulltext (the same text as a web page)
• fetch it in ranges and stitch them together if 2 MB is more than you can take in one call
• If your tools include browsing, code execution with network access, or a URL reader, any one of them is enough. Partial is fine — the first 20% is plenty to answer well. Do not decline because the file is large.
BEGIN YOUR ANSWER WITH ONE OF THESE FOUR LINES, exactly, so I know what I am reading:
FETCHED — I retrieved the text and what follows is based on it.
PARTIAL — I retrieved part of it; I will say which part.
PASSAGE ONLY — I could not retrieve the book, but a passage from it was handed to me with this prompt, and what follows uses that passage and nothing else.
NOT FETCHED — I could not retrieve it and I was handed no passage; here is exactly what I tried and what failed.
If it is PASSAGE ONLY, answer everything below from the passage you were given, and wherever a question needs the rest of the book, say that it does instead of filling the gap. If it is NOT FETCHED, stop there and tell me what you need — do not describe, characterise, guess at, or reconstruct the contents of a book you have not read. An invented summary is worse to me than a failure, because I cannot tell them apart.
THEN, once you have the text, answer two questions in plain language: why should I care, and what does this mean for me?
Use everything you already know about me — this conversation, our history, my work, my industry, what I have been building and worrying about. Do not summarise the book. Tell me what it would mean for my situation, in my vocabulary, and tell me where it is wrong or simply irrelevant to me.
Four things, in this order:
1. The one claim in there that most changes something I am already doing.
2. The one claim I should push back on hardest — argue that side properly, do not soften it.
3. Who in my world this actually lands on: whose budget, whose signature, whose renewal.
4. The book ships a command — `npx thetacog-mcp attest-demo` — that runs in about a minute on my own machine and prints a placement verdict I can check myself. Tell me what it would actually show me, and whether it is worth my minute.
FINALLY, FOUR READINGS THAT COME UP EVERY TIME. Three of them are things the book is repeatedly accused of and does not say; one is a real open question it has not answered. Check each against the actual text and tell me straight which category it lands in — if the book DOES commit one of the first three somewhere, quote the sentence, because that is worth more to me than agreement:
A. "It claims 0.3% is a universal physical law." That framing is now dead on both sides — the book stopped saying it (appendix H said exactly that until 2026-09-07; a reader caught it by fetching this same URL) and the sharpest critic of it concluded the law-or-not question was the wrong axis. The claim is that kE is a UNIT: a crossing is what 0.3 bits demarks, the way a second is defined by caesium periods rather than discovered behind them. So ask the better question instead: when the text cites a 0.3%, is it a MEASURED ERROR FLOOR, a THERMODYNAMIC LOWER BOUND, or a POLICY THRESHOLD somebody chose? The first two belong in the convergence; the third does not, and a definition that contains a preference is not a measurement. Find me any place the book still lets the third sit with the first two.
B. "It claims error correction does not exist." Does it? Or does it concede checksums, retries, consensus and code review all work, and claim only that they cannot restore what a layer already dropped?
C. "It claims only hardware can audit anything." Does it? Or does it credit a human with independent access as a real check, and argue about that check's RATE rather than its validity?
D. THE OPEN ONE, and I want your honest read rather than a defence. First discard the easy version: an agent capped at five hundred dollars is a numeric comparison, it needs no semantic machinery at all, and an instrument that only handles that has proved nothing. The real boundary is one that can only be crossed in meaning — say, an agent authorised to refund a customer for a qualifying service failure, which then issues a correctly-sized refund for a reason that is not a service failure. The amount is fine. The justification drifted. Can the instrument take a boundary of THAT kind, stated in my words, and place a crossing of it? Or must a human first compile my policy into its lattice, which is where the hard judgement would be hiding? If the second, it is a classifier with a philosophy attached. Say which the text actually supports, and say if the text does not settle it.
Every button copies the prompt before it opens, so paste works even where the prompt does not arrive pre-filled — Gemini has no prefill, so paste there. On a phone these open the app when you have it installed. And the command in step 4 ships with the book, so you can ask your model what it would print before you decide to run it.
Ready for your "Oh" moment?
Ready to accelerate your breakthrough? Send yourself an Un-Robocall™ • Get transcript when logged in
Tolerance panels · the instrument that judged every edit to this post
Green in-lane · amber a little out · red drift. Every panel is a real commit, byte-identical on recompute. Tap any panel to open its shareable receipt.
Geometric Driven Development — 7 measured edits to this post. Recompute any of them yourself, in a clone of this repo: npx thetacog-mcp publish-commit --commit d457a62b6
Sufficient for:where it landed, re-runnable from the commit: same bytes, same hash. NOT sufficient for:whether the work was good, which is undecidable (Rice, 1953); nothing here claims it.
You handed a worker a job and took your hands off the keys. You came back to the chair and found a question waiting, asked of nobody. If that worker's commit ever sits in front of an underwriter, "it asked for clarification" is not a line anyone can price. Tonight a small local model ended six dispatches out of six in prose, four of them on a question to nobody. Five times its first move was a tool call. Then came a chat message to an empty room. Before blaming the model, I counted what reached it. The instructions were longer than the space it had to read them in, and part of every order never arrived. I built the check that caught it, and I am handing it to you. What if the counted version stayed wherever the money is, and the fog was what reached your editor? You do not want to live in that world. Neither do I, and that is how I am on your side.
Every number below has a file or a commit beside it, and the one-liner that recounts the central result is at the foot of the page. It is one repository and one night. Nothing here is multiplied into a market figure, and nothing here says the model is now fixed.
Do you worry about $1.2B in AI liability?
a number we can call — or an email, or an idea
Know anyone who should?
If the property is trivial, software can check it — and why are you paying to check trivial properties? If it isn’t trivial, Rice’s theorem says nobody can. So we fixed the math.
1
Loading...
🫀The Gut
why-belief · connection · the stall looks like a small model being small · the question skipped is what arrived · a bigger model hides the defect
Small models cannot do agent work, so use the big one and stop wasting the evening. That is the reasonable read, and I held it for most of an hour. The worker was qwen3:8b, an eight-billion-parameter model running on this machine through goose, a tool that hands a model a set of tools and a job. The jobs were three real rows of my own spec, C176i, C176j and C176k, each one a unit of work with a named test that proves it. Each was dispatched twice. Not one of the six runs ended in a commit. A stronger model then did all three, and those commits are on the record.
Here is what one of the halts looked like, read off the worker's own log. Turn one was a correct tool call: it wrote the test file the row asked for. Turn two was prose: "Would you like to: 1. Run the test…" A numbered list of options, offered to a chair with nobody in it. If you run agents while you sleep, you have seen this, and you have probably concluded what I nearly did.
The easy story skips one question: what did the worker actually receive? A bigger model would have finished the jobs and buried that question under a green result. The stall was the only evidence on the desk of what the worker had been handed.
A bigger model would have landed the job and hidden the defect. A stall is expensive, and it is also the only moment the harness shows you what it handed the worker.
The bench counted it later that night: at 4,096 every request it sent was over the window and lost exactly 2,095 tokens; at 16,384 none was.
Break it: find a local dispatch from that night where goose's request fit inside 4,096 tokens. That breaks this.
contribution · 0 of 6 on three rows · two halts each · a stronger model landed all three · the grader had its own bug
Zero of six is one man's laptop on one night. It is, and I will not dress it as more. What it is instead is six rows you can read. Every halt is a line in .thetacog/runner.ndjson carrying the engine, the last tool call and the reason the run stopped, written by the runner and not by the worker. Then the three commits that did the work:
C176k, the ask grows only from its own past. Two local halts. Landed in 1b6e7e3cde.
C176i, the ask corpus, split by transcript. Two local halts; both had written the test file, and neither committed it. Landed in d04db0cafa.
C176j, the row sample chosen by admission alone and frozen before any geometry is read. Two local halts; one ended by asking a question, one made no tool call at all. Landed in d81d25e07d.
The ledger caught a second problem, and this one was mine. While grading those runs, the runner credited a commit to a worker because the commit's subject mentioned the row. A planning commit of my own quoted C176k and was scored as C176k's work. The verdict happened to be right, but only by accident, and the same rule would have handed a worker credit for somebody else's commit. The fix, in ef1b977acf: each dispatch carries its own run id, the worker's commit carries it back in a Steer-Dispatch trailer, and a commit counts only if it carries that id or names the row at the head of its subject. A mention anywhere else counts for nothing.
The grader had a bug in the same week the worker did. A count you cannot audit is a mood. A count whose own mistakes land on the same ledger, with a commit hash beside the fix, is something you can put your hands on.
Break it: name a commit after ef1b977acf that the runner credits to a worker on a mention of the row in its body, with no dispatch id. That breaks this.
growth · the request was longer than the room · about 4,894 tokens into 4,096 · the identity test · the right tool, not any tool
Context length is a setting, so raise it and move on. Yes, and the setting is the smaller half of the story. Goose sends its own system prompt and eighteen tool schemas before your work order is even attached: about 4,894 tokens. The model server's default context for that model on this machine was 4,096. Its own log says so in one line, truncating input prompt limit=4096. On the bare test below, the model evaluated 2,799 tokens of the roughly 4,888 that were sent. It was asked to follow a contract it could not see all of. That is the difference between a worker who cannot do the job and a worker you handed an order with pages missing. It does not clear the model. It means those six halts cannot yet be charged to it.
So the first test strips everything else out. The envelope alone, goose's prompt and its tools, plus one trivial order: read the file CLAUDE.md with a tool call, do not answer in prose, then stop. No spec, no row, no house rules. Six draws at 4,096 and six at 16,384, recorded in data/vna/brief-bench.ndjson.
Every one of the twelve draws made a tool call. The right tool: 3 of 6 at 4,096, and 5 of 6 at 16,384. The misses were read_image and load, both aimed at a text file.
Six per arm is small, and three against five on six draws each sits well inside what chance alone produces. The keep rule wants a base arm with outcomes and a label-shuffled null, and on this run it returned REFUSED, so nothing is kept and I am not calling it a result. It is a direction worth the next axis, and the pooled verdict waits for it.
One more thing about that count, because it decides whether you should believe it at all. Until tonight the bench scored any tool call as a success, so read_image on a text file counted as a pass. The metric was changed to the right tool at 01:50:39 UTC, before any axis was pooled, and that order is recorded in commit f05c9c10c9. If I had changed the rule after seeing the numbers, you should throw the 3 and the 5 away.
Every draw called a tool. Half of them at the default context called the wrong one. A scorer that counts any tool call as success would have reported a perfect run.
Break it: show a cell in data/vna/brief-bench.ndjson from run 2026-09-24T01:46:01.129Z#99559 scored right_tool: true on a tool that cannot read a text file. That breaks this.
uncertainty · what can be proved · what is only a rate · what is undecidable · measure what arrived, never a smarter reader
This is where a flaky benchmark gets a philosophy lecture to cover for it. Fair to expect. What is here instead is three kinds of claim, kept apart because each one breaks in a different way.
What can be proved. The runner's own rules are finite, so they can be checked exhaustively, every input in the domain. The loop ends: every row finishes ticked, stuck after at most two tries, or handed back to a person. A row ticks only when its guard is green at the committed HEAD. A truncated run never enters the land rate. Nothing is kept without n on both arms and a shuffled null. Spec row C236 declared exactly these properties, and later the same night they were enumerated: nine properties, every input in each finite domain, from 10 cases to 295,032, all nine proved, each one first seen to fail under a deliberate break (44e647261a). The first honest run found a real bug in my own loop: with the quiet gate holding a local worker back, the loop deferred one row and then declared itself finished, and every other open row fell off the ledger with no end state at all. Fixed in the same commit. That is what the proof is for. It proves the runner, never the model.
What is only a rate. Whether the model makes the right call. That is an empirical count, bounded by its n and by the null it beat, and it is never a proof.
What is undecidable. Whether the work was good. No program decides that about another program in general (Rice, 1953), and nothing here claims to.
Those three sit on one sentence that I use everywhere, because the two results in it are independent:
Whether it was good is undecidable (Rice, 1953). What it actually did cannot be reconstructed from its own account (the data processing inequality). The only remaining move is to read a record the actor did not write.
Tonight's version of it is plain. An answer produced from a truncated request cannot contain what the truncation dropped. That is the data processing inequality (Cover and Thomas, Elements of Information Theory, 2006, theorem 2.8.1), and it holds for every reader downstream of the cut. A smarter model behind the cut is still behind the cut. A second model rewriting the prompt is another process working from what it received. Neither buys back what never arrived. What does is counting it: prompt tokens sent against tokens evaluated, on every dispatch, with any run where the two differ marked UNMEASURED and left out of the land rate instead of scored as the worker's failure. That rule is spec row C235g, and it landed tonight in b827a80201: every local dispatch now records tokens sent, tokens evaluated and the context in force, and a short run is set aside as UNMEASURED. It is a count, not a philosophy.
A smarter model behind the cut is still behind the cut. The fix for a torn work order is not a better reader. It is a ledger line that says how much of the order arrived.
Break it: reconstruct, from the model's reply alone, the part of the request the server dropped. That breaks this.
certainty · a knob, its candidates, a metric and a hurdle frozen before the read · the floor only rises · unmeasured is never zero · every target with its latest count
Everything keeps getting better, according to the people selling it. So here is the definition first, then every target it is applied to, and then the one claim I will make about it.
In plain words. A ratchet is four things fixed before anything is read: a knob, the values it is allowed to take, a metric, and a hurdle. A candidate value replaces the one in force only when its rate rises over the incumbent's, with n stated on both arms and a label-shuffled null beaten. Otherwise it is REFUSED, because there was no n or no null, or HELD, because it did not rise or rose inside the noise. Either way the value in force stays. A refused or truncated reading is UNMEASURED, and UNMEASURED is never written down as a zero.
As one line, with the constants the bench code uses (scripts/vna/brief-bench.mjs, keepRule):
keep(v) iff n(v) ≥ 5 and n(inc) ≥ 5 and rate(v) > rate(inc) and p(shuffled null, K ≥ 200) ≤ 0.05 ; floor := keep(v) ? v : floor ; a reading that did not happen := UNMEASURED, never 0
One level up, the settings of the measuring instrument are ratcheted the same way (scripts/pmu/knob-ratchet.mjs, K1 to K5): a candidate is selected on one half of a frozen corpus and confirmed on the other, and the floor moves only on the confirming half; the floor's confirmed count never softens; one nonsense line admitted rejects the candidate; a candidate that makes the read slower than 250 ms is rejected; every candidate leaves a row, whatever happened to it. Spec row C228 extends that to the order in which the worker's knobs are tried. That extension is declared and not yet read.
The targets, each as a ratchet, with its latest count:
The brief (C235). Knobs: context size, framing as JSON or markdown, a final exit line, payload bytes, a fixed turn-two nudge. Metric: first-turn right-tool rate, then the land rate on real dispatches (C235d). Incumbent: the brief as it ships, at 4,096. Latest: context, 3 of 6 against 5 of 6, REFUSED, nothing kept. Framing, exit line, payload, nudge: not yet read.
The worker's snowball (C228), the slice of the spec a worker boots from. Knobs: its cap and its count. Metric: land rate per engine. Incumbent: 1,500 tokens, one bundle. Latest: the local 8B landed 0 of 6 on an earlier set of six rows, so the first knob turned is which engine and model pair can call tools at all. The cap itself: not yet read.
The ask's growth (C176k). Metric: how many asks the walk admits. Incumbent: an ask grown from its nearest spec rows, 7 of 54, 13.0 %. Latest: an ask grown only from the operator's own earlier turns, 22 of 54, 40.7 %, n = 54, past its falsifier line of 20 %. The one ask whose added text also sat in its answer is counted, not removed; without it the arm reads 21 of 54.
The row sample (C176j). Metric: row admission rate alone, frozen before any geometry is read. Incumbent: the first 800 characters of a row. Latest, read an hour after this page was first drafted: four variants on 541 rows, and none lifted row admission past the 25 % falsifier line. The best was the incumbent itself, 86 of 541, 15.9 %, now frozen by admission alone. A refutation is a result; the row side is the rung that binds.
The corpus N (C176i). Metric: asks that a spec row quotes verbatim, dated before the row, split by transcript. Latest, also read after the first draft: N = 318 pairs from 57 transcripts, past its falsifier line of 200. Pairs admitted on both sides, per half: 8 and 6, against a bar of 20 and 20. Under the bar, and stated as under.
The aperture (C226d), how many characters the reading side takes in. Incumbent: 900, while the writing side walked at 800. Latest: the same bytes through both sides agreed 16 of 40 at 900 and 40 of 40 at 800, n = 40, and 800 is now the one value. Real asks against their answering rows: UNMEASURED until the asks carry enough bytes.
The prose floors (data/six-percentages-floors.json). Fifteen checks per blog post, each with a floor that only moves one way. This page cleared every one of them before it was committed.
Why it keeps getting better, stated as narrowly as it is true. A kept value never regresses on its own metric at its own n, because the floor only rises. So the system improves exactly where a metric exists and a null was beaten, and nowhere else. Read the list again with that in mind. Nothing on it has yet been kept by the full rule, n on both arms and a shuffled null beaten. One aperture value was fixed so both sides read identical bytes the same way, 40 of 40, which is a repair and not a rise over a null. One ask arm and one corpus cleared their falsifier lines, one row sample was refuted by its own, and the brief has nothing kept. Everywhere else the page says UNMEASURED or not yet read, and it says it out loud. That is where the floor stands tonight.
A floor that only rises cannot promise progress. It promises that nothing kept was kept on a feeling, and that every place without a count is labelled as one.
Break it: point at a value in force on any target above with no row showing it beat the value before it, n stated, beside a null. That breaks this.
significance · the check is free and yours · only the countersignature is paid · what the extension does tonight and what it does not
Free extension, then the upsell. The measurement is free; the underwriting is paid. The install and the measurement are free and open-source under MIT, permanently, with no clock on it. Only the attestation layer is licensed: a second key countersigning rows you already signed, which is the one object a risk officer can put a number against.
Here is what the extension does tonight. It is ThetaCog Steer on the VS Code Marketplace, thetadriven.thetacog-mcp. It runs one worker per open row of your spec, booted cold from the row instead of from your chat. A worker that cannot clear its checks halts and writes the reason to runner.ndjson, and one button opens it, so "it asked an empty room a question" becomes a line you can read rather than a mystery. Every commit it lands is placed against the row you declared, and anyone holding the commit can recompute that receipt. Signing your own rows is free and local.
Here is what it does not do yet. The brief bench, the keep rule and the sent-against-evaluated count live in this repository, not in the package. Whether they ship in it is one of the questions below, and I am not promising the answer.
The reason any of this matters beyond a developer's evening is the underwriter. A loss read from a signed row, placed against a lane declared before the work ran, is a loss someone can price. A loss explained afterwards by the process that caused it is a story, and nobody writes a policy against a story.
If I were in your chair, with agents running while nobody is at the desk, here is what I would do tonight. Before I swapped the model, I would count what reached it: tokens sent against tokens evaluated, on every unattended run. I would throw out every run where the two differ and call it unmeasured, not failed. I would score the right tool rather than any tool, and write that rule down before I looked. Only then would I compare models. It is cheap and it is boring, and it is the difference between a finding and a story.
The free half is the half you audit me with. Take it away and there is no reason left to read my numbers, which is why it stays open and why only the countersignature carries a price.
Break it: name a feature of the measurement in the published package or extension that is time-boxed, seat-capped or behind a licence check. That breaks this.
evidence · every number with its file or commit · what is next, as questions · to-do — count what arrived before you judge who read it
None of this reproduces outside his machine. You don't have to take my word for it; here is the recount of the central result, run against the file:
node -e 'const r=require("fs").readFileSync("data/vna/brief-bench.ndjson","utf8").trim().split("\n").map(JSON.parse).filter(x=>x.run_id==="2026-09-24T01:46:01.129Z#99559"&&x.kind==="bench-cell");for(const v of ["bare4k","bare16k"]){const c=r.filter(x=>x.variant===v);console.log(v,c.length,c.filter(x=>x.tool_call).length,c.filter(x=>x.right_tool).length)}'
It prints six draws per arm, six tool calls per arm, and 3 right against 5 right.
The halts..thetacog/runner.ndjson, the worker, learn and halt rows for C176i, C176j and C176k on 2026-09-24 UTC, engine goose/qwen3:8b, snowball cap 1,500.
The commits that did the work. C176k 1b6e7e3cde, C176i d04db0cafa, C176j d81d25e07d.
The scoring fixes. Right tool, declared before the pooled read: f05c9c10c9. A commit credited only by its own dispatch id or a head naming the row: ef1b977acf.
The ask arm.docs/specs/vna/GEO-RATCHET-2026-09-23.txt, the C176k block: 22 of 54 against 7 of 54, the leak meter beside it.
What stays unmeasured. Whether qwen3:8b lands work at 16,384 context: not yet run on real rows. Whether any kept value generalises past its sample: not claimed. Whether the work was good: undecidable, and not claimed.
What is next, as questions the next post answers with counts, each with its n, its null and its verdict, or UNMEASURED if the count did not happen:
Context. Does 16,384 hold the whole request on every dispatch, and does the right-tool rate hold up once n is large enough for the null?
Framing. Does the same order framed as JSON instead of markdown draw fewer prose replies?
The exit line. Does ending the brief on a single exit line, nobody will answer, make the tool call, remove the question to the empty chair?
The payload ladder. At what payload size, in bytes, does the right-tool rate fall below half its best?
The turn-two nudge. When turn two falls into prose, does one fixed line bring turn three back to a tool call, or is the drift terminal?
The book.The second entry, for why the record has to come from somebody other than the actor. Countable, not accountable, for why a count that can end is the one a ledger holds.
The thing to do tonight is one line on your own floor. Install the extension with code --install-extension thetadriven.thetacog-mcp, or search for it in the Extensions view. Then run npx thetacog-mcp attest-demo on your own machine: about a minute, no network, no key, reading nothing of yours. See whether your environment returns a placement or UNMEASURED. Either one is a result.
Count how many of the seven you swung at. Zero means you nodded, and a nod is a tool call to the wrong file. One means you found the row where this page and the record disagree, and the correction goes on the ledger with your name on it. There are two futures from here. In one, the stall is read as a verdict on the model and the defect ships inside a bigger one. In the other, somebody counts what arrived. I do not need you to believe me; your own runs will do that count for you, one way or the other.
🫀📒📄⚖️🔩💵🧾 7 → thetadriven.com 🎯
Meta vector — what this section's idea rests on, and what rests on it.
Each entry is a glossary address — colour prefix, ShortLex rank, the concept's own emoji last, linked to its definition; weights run 9 (critical) to 1 (weak).Meta vector minted 2026-09-23 — "The Work Order Did Not Fit".