Save the origin, project on demand. 一源万影 · «The sage establishes images to exhaust meaning.» — Book of Changes
The history of human information is a history of flattening the world.
a real building → CAD model → floor plan → PDF → screenshot → OCR text a real business → workflows → spreadsheet → summary figures → one paragraph a real argument → a web of relations → an outline → a line of prose
Every step travels better. Every step loses something. Among humans this trade was fine — we carry enough common sense to reconstruct the original from a damaged projection.
But what AI reads today is the shadow of a shadow, seven or eight compressions deep. Worse: we started treating that last shadow as the source file. Edit the PDF, edit the screenshot, edit the summary — every one of those edits lands on a projection, while the actual object never existed in any file at all.
This is not an argument against text. Text is a spectacularly high-compression, highly composable representation, and for a legal clause the text is the origin. The error is narrower than that — it is mistaking a projection for the object:
| Domain | What the origin actually is | What we edit instead |
|---|---|---|
| CAD | geometry, constraints, parameters, assemblies | the exported drawing |
| Spreadsheets | formulas and data dependencies | pixels on screen |
| Novels | character state, timeline, planted–payoff graph | paragraphs of prose |
| Software | code, state, runtime behaviour | screenshots |
Rendering a 2D image from a 3D model is easy. Recovering the 3D model from a 2D image is, in general, impossible — infinitely many objects cast the same shadow.
origin → projection ✅ deterministic, repeatable projection ⇏ the origin ❌ irreversible
That asymmetry sets the architecture: stop trying to infer the body from its shadow — keep the body. PDFs, images, Markdown, EPUB are not source files. They are projections — cached views generated on demand. Deleting one costs nothing, because it can always be cast again.
Today's AI emits whole artifacts: a forty-page deck, a novel, hundreds of lines of chart config. Content, formatting and references fail together, and the only remedy is to regenerate everything.
“The AI submits only a semantic transaction — what changed, what it depends on, what it asserts. A deterministic compiler validates it, applies it, and generates the final artifact.”
The model says “I handed the black key to Shen Yan, and I assert Zhao Qi is still alive.” The validator does not take its word for it. It checks. If the check fails, the transaction is bounced back with the evidence attached. This is not distrust of the model. It is keeping separate books for “claimed” and “verified”.
The claim has been narrowed by experiment to exactly one dimension: state tracking — across long-form narrative, who holds the key right now, who learned the secret, which planted threads are still open.
| W3 state accuracy | Benxiang | Bare model | Vector RAG |
|---|---|---|---|
| Score | 95.8% ± 5.9 | 52.1% ± 19.7 | 58.3% ± 11.8 |
| Permutation test | — | p = 0.0024 | p = 0.0024 |
This time the control arms got every character they had just written, no answer anywhere in the prompt, and all eight fields asked. Benxiang still leads by 43.8 and 37.5 points.
“The 75% wall was fake. What stood behind it is real.”
The unfavourable part first: Benxiang scores 4/6 on black-key.holder —
worse than either control arm — and that is exactly the field recoverable from the prose it just wrote.
Its whole advantage lives in the two fields where both controls collapse:
| Field | Bare | RAG | Benxiang |
|---|---|---|---|
black-key.holder (last handover written in its own prose) | 5/6 | 5/6 | 4/6 |
bai-yao.secret_betrayal (secret accumulated over dozens of chapters) | 1/6 | 0/6 | 6/6 |
hook:shen-yan-suspicion.status (never stated in any passage) | 0/6 | 0/6 | 6/6 |
“Has this thread been paid off” is not a fact in any passage. It is a ledger entry. Retrieval can fetch the passage that says so — except none exists.
The cross-model comparison holds only halfway. What holds is the within-arm comparison, A3 against itself on two models, which never touches the probe. After a uniform rescore, 11 runs against 11:
| qwen-plus (n=11) | deepseek-v4-flash (n=11) | Permutation test | |
|---|---|---|---|
| W3 state accuracy | 98.9% | 98.9% | diff 0.0000 · p = 1.0000 |
| W1 EPC (prose, lower is better) | 0.20 | 0.55 | diff −0.35 · p = 0.0392 |
“State-layer correctness is independent of the base model; prose-layer quality is not.”
One dialect working could be a coincidence. Two is a protocol. The shape is
generic shell + domain dialects: the shell defines lifecycle and minimal structure, each domain
brings its own schema, and they share one action surface —
inspect · render · query · act · diff · validate · commit · rollback.
The move that made it a protocol was turning constraints from code into data: three hard-coded types
whose names reeked of fiction now collapse into six general predicates —
equals · not_equals · contains · not_contains · range · unchanged.
“The protagonist must not learn this secret” and “revenue must never go negative”
are the same statement at the protocol layer.
Now — the narrative dialect, validated at 95k characters, target one million:
character state, timeline, planted-payoff graph and forbidden zones held without amnesia, written
transactionally. Next — the same shell over CAD/3D, Office, Chart/data, and project memory.
Further out — if this holds, a “file” in the age of AI should no longer be a .docx
or a .pdf, but an origin package that can be opened, seen, located, modified and re-verified.
Humans read projections. AI edits the origin. The system proves the edit was correct.
The credibility of this project rests on stating its limits precisely.