This is the technical companion to The Draper Protocol post. A model wrote a speculative physics framework and a story that encodes it; this note is what happened when we took the framework’s most tractable programme seriously — definitions, a toy model computed to the digit, two survived adversarial review passes, one killed bound recorded honestly. Section references like “framework §12” point at the unpublished source document; everything needed to check the claims is inline. It reads as a research note because it is one.
Date: 2026-07-11 Programme: D of the Dynamical Quantum Scaffolding framework (“the thermodynamic price of objectivity”), executed per the framework’s Phase-1 deliverables (§12) and proof discipline (§13). Method: development by Claude; two adversarial review passes by Grok; all toy-model numbers verified by direct computation (script in the appendix below). Honest headline up front: objectivity turned out to be free; what costs work is forging the archive to agree with it — and the contextuality obstruction sets the minimum amount of forgery. The framework’s Theorem-1 target survives in amended form.
Status conventions
[DEFINITION] fixed by us; judge usefulness, not truth
[PROVED] complete argument included, checked
[COMPUTED] verified numerically (companion script)
[SKETCH] argument outline with named gaps
[GAP] known hole; the honest attack surface
[CONJECTURE] believed, unproven
[PRIOR ART] exists in the literature; no novelty claimed
[KILLED-v1] claimed in draft v1, refuted under adversarial review
Review trail: pass A killed v1’s work bound and supplied the completion protocol (now Result 2). Pass B found two definitional holes in v2’s Task F (blindness self-contradiction; transcript steganography) and three unpinned interface knobs (context labels, run count, post-selection); all are repaired below and recorded in §9.
1. The operational model
The coexistence trap. If N observers’ records all exist classically side by side, the family trivially admits a joint distribution — read them all, tabulate. Non-gluable record families cannot mean “N classical registers in a drawer”. [PROVED, one line]
Per-run instantiation. [DEFINITION] Each run instantiates one context: a subset of records that actually coexist in that run (the rest belong to other runs, or to a friend’s memory that cannot be jointly read). A run draws context C ~ mu; records in C are sampled from p_C. This is the standard operational reading of contextual empirical models — time-separated settings and agent-relative archives are classical instances of the same structure.
Interface pins. [DEFINITION — added after pass B] The following are part of the experimental design, not resources the reconciler may edit:
(P1) Context labels C are public, design-fixed metadata; rebinning a
run's context is not an allowed operation.
(P2) The run count N is fixed; every run's archive survives to the
audit; discarding or post-selecting runs is forbidden (or, in a
weaker variant, discards are visible and scored).
(P3) mu is design-fixed and known to the auditor.
The reconciliation task, split by audit level. [DEFINITION] A reconciler must publish an official history: global assignments z with ensemble law q_Z, and deliver the surviving archives. Two demands, and the entire Phase-1 story is the gap between them:
Audit E (ensemble): the surviving archive family, as statistics per
context, must be delta-consistent with the official law:
sum_C mu(C) TV(archive law |_C , q_Z|_C) <= delta.
Blindness (edit-conditional; repaired in pass B): for every run, the
pre-reconciliation record value R_pre must be thermodynamically
unrecoverable FROM EVERYTHING THAT SURVIVES, in excess of what the
post-edit state legitimately reveals:
I( R_pre ; Z, R_post, E_surv | C, R_post ) <= epsilon
on the edited coordinates. Z COUNTS as a surviving system (this
closes the steganography channel: no packing pre-edit values into
the counterfactual coordinates of the published z). Unedited runs
are exempt — an archive that was never touched is not a seam.
Work is counted on an explicit battery; register operations are stochastic maps implemented thermally at temperature T; erasure pays conditional Landauer against ALL retained side information (including Z). [GAP 1, open: the full free-operations class — thermal operations + classical communication, catalysts returned epsilon-close, no run-correlated pre-shared ancillas — must be stated formally before §4.3 is a theorem.]
2. Definitions
Scenario. [DEFINITION] Finite record variables X over {0,1}, contexts M covering X, weights mu, empirical model p = {p_C} with agreeing overlaps.
Gluable polytope. G = { p : exists global q with q|_C = p_C for all C }. [PRIOR ART: Fine; Abramsky–Brandenburger, arXiv:1102.0264]
Transcript error floor.
t*(p) = min over q in Delta({0,1}^X) of sum_C mu(C) TV(p_C, q|_C)
[DEFINITION] A linear programme; zero iff p in G.
Inconsistency monotone.
O(p) = min over q of sum_C mu(C) KL(p_C || q|_C)
[DEFINITION] Faithful (zero iff gluable) [PROVED]; convex in p (partial minimisation of a jointly convex function) [PROVED]; monotone under per-variable stochastic post-processing, the same map applied in every context containing the variable [PROVED via DPI].
[PRIOR ART, partial] Relative-entropy contextuality measures exist (Grudka et al.); LP measures with monotone structure exist (contextual fraction: Abramsky–Barbosa–Mansfield, arXiv:1705.07918). The monotone is not claimed as new; §4.4 proposes an operational role.
3. Toy model: the Specker triangle, in numbers
Records A, B, C; contexts AB, BC, CA; mu uniform.
p_anti: every context anticorrelated: p_C(01) = p_C(10) = 1/2
p_corr: every context correlated: p_C(00) = p_C(11) = 1/2 (gluable twin)
Computed table (analytics below; numerics agree to 6 decimals):
p_anti p_corr
per-context entropy 1.0 bit each 1.0 bit each <- identical profiles
t* 1/3 0
O log2(3/2) 0
= 0.585 bits
contextual fraction 1 (strong) 0
*t\ = 1/3.* [PROVED] Lower bound: every global assignment has an equal pair around the odd cycle, so sum_C q|_C(equal) >= 1 for any global q; p_anti puts zero mass on equal outcomes, and TV to a distribution with mass s on a p-null set is at least s; averaging gives 1/3. Achieved by q = uniform on the six non-constant assignments (each context marginal (1/6, 1/3, 1/3, 1/6)).
O = log2(3/2). [PROVED] KL(p_C || q|_C) = -1 – (1/2) log2(q|_C(01) q|_C(10)). The objective is convex in q; the scenario’s symmetry group permutes coordinates, so averaging an optimiser’s orbit preserves optimality and a symmetric optimum exists. In the symmetric family, O = -log2(4 alpha), minimised at beta = 0, alpha = 1/6: O = log2(3/2) = 0.585 bits.
CF = 1. [PROVED, this model] Any noncontextual part under p_anti needs all context marginals to vanish on equal outcomes; every global assignment hits an equal outcome somewhere; so the noncontextual weight is zero. (The script’s per-assignment cap argument is exact here; it is not a general CF algorithm.)
4. Results
4.1 Result 1 — the error floor (impossibility, no thermodynamics)
[PROVED for the triangle; general case is the LP by definition]
Any official-history law q_Z has average per-context error
sum_C mu(C) TV(q_Z|_C, p_C) >= t*(p),
strictly positive iff p is contextual. Triangle: 1/3.
One clean history cannot reproduce contextual records, at any energy budget. The price of objectivity begins as an error, not a cost.
4.2 Result 2 — the completion theorem (objectivity is free)
Found as an attack in adversarial pass A; verified, promoted to a result.
[PROVED for the triangle + COMPUTED]
There exist reconciliation protocols that never edit a record, erase
nothing, pay zero work, and achieve the OPTIMAL ensemble audit error
t*(p): per run, publish a completion z of the run's actual records r
(fill in the counterfactual variables by a fixed rule). Cyclic
completion on the triangle gives mixture law q_bar with
(1/3) sum_C TV(q_bar|_C, p_C) = 1/3 = t* exactly,
zero edits (computed: per-context errors 0, 2/3, 1/3; average 1/3).
Consequences, stated bluntly:
(i) There is NO thermodynamic floor for objectivity per se.
v1's bound (W >= kT ln2 H_b(t*)) is [KILLED-v1]: the step
Pr[edit] >= t* => H(seam) >= H_b(t*) is false (H_b is not
monotone; an always-edit protocol makes the seam deterministic).
(ii) The completion protocol never contradicts anything that exists.
Non-gluability is a property of the FAMILY of mutually exclusive
runs, not of any single run. Within one run the world is
classical and completable.
(iii) Whatever thermodynamic content Programme D has, it must live in
a stronger demand than "publish a history and keep the archive".
4.3 Result 3 — the forgery bound (candidate theorem, conjecture-grade)
The stronger demand: the archive itself must pass the statistical audit against the official history, below the error floor a truthful archive can ever meet, with the pre-edit truth made unrecoverable.
Task F (forge-and-burn), pinned per §1: publish q_Z; deliver
surviving archives whose family law is delta-consistent with q_Z
(Audit E) for a target delta < t*(p); satisfy edit-conditional
Blindness with Z counted as surviving; respect pins P1-P3.
Target theorem (single-inequality form, per pass-B recommendation):
W_per_run >= kT ln2 . E[ H( R_pre | R_post, Z, C ) ]
>= kT ln2 . ( f( t*(p) - delta ) - eta(epsilon) )
with f identified (conjectured f(x) = c.x with c = 1 for the
triangle) via one coupling/data-processing argument from Audit-E
distance to residual pre-image entropy.
Supporting lemmas, both standard in shape, neither yet written out:
L1 (law-movement coupling): any procedure whose output archive law
in context C differs from p_C by TV = d must alter/replace the
run's context records with probability >= d (optimal coupling).
Phrased over laws, it covers bit-edits, resampling, and fresh
synthesis alike. Together with Result 1 and Audit E:
sum_C mu(C) e_C >= t*(p) - delta.
L2 (blind erasure): under edit-conditional Blindness with Z counted,
each altered coordinate's pre-value must end thermodynamically
unrecoverable given ALL retained side information; conditional
Landauer then charges kT ln2 . H(R_pre | R_post, Z, C) — for the
triangle's uniform, per-context 1-bit records this tends to
kT ln2 per forced alteration as epsilon -> 0.
[GAP 2': write L1. GAP 3': epsilon-continuity of L2.
GAP 1: the operation class both lemmas live in.]
Triangle, delta and epsilon -> 0: W >= (1/3) kT ln2 ~= 0.231 kT.
Loophole ledger (each raised adversarially, each addressed):
completion-only archive law = truth; fails Audit E at delta < t*;
off-task, as it must be. [PROVED]
always-edit passes audit; pays ~1 bit/run >= the bound; no
contradiction. [PROVED]
fresh synthesis covered once L1 is stated over laws, not
bit-flips; overpays (~1 bit/run). [REPAIRED]
context relabeling excluded by pin P1. [REPAIRED]
post-selection excluded by pin P2 (triangle was safe anyway:
discards cannot create equal-outcome mass).
[REPAIRED]
Z steganography closed by counting Z as a surviving system in
Blindness. [REPAIRED]
completion-on-
unedited-runs exempt by edit-conditional Blindness, stated out
loud: only forged pre-images must die. Without
this exemption the floor may inflate to ~1 bit
for BOTH models and the separation weakens.
[SCOPED]
Reading, with the pass-B copy correction: *objectivity-as-publication is free (Result 2); what has a candidate thermodynamic price is forged agreement — making the archive testify to the official history. The gluing obstruction t\ sets the minimum quantity of falsification, and Landauer charges for falsification-without-witnesses.** Task F is a natural forensic task, not the unique meaning of objectivity.
The kill-condition test, re-run
Framework kill condition: the programme dies if minimal work depends
only on ordinary Shannon entropy, with no dependence on the gluing
obstruction.
p_anti and p_corr have identical entropy profiles. [COMPUTED]
Under Task F: p_corr has t* = 0 — completion already passes the
audit; no forced alterations; floor 0. p_anti forces alteration rate
>= 1/3 - delta; candidate floor ~ 0.231 kT. The floor tracks the
obstruction, not the entropies: the kill condition does not fire —
for Task F.
Boundary of the claim [PROVED, important]: in a retro-fit variant
(official history pre-committed independently of the run; archive
must conform regardless), the work charges ~1 bit for BOTH models:
the kill condition FIRES there. The thermodynamic signature of
contextuality is task-relative. Claiming otherwise would be the
metaphor inflation the framework warns against.
4.4 The monotone O, given a job
[CONJECTURE] O(p) is the auditor’s exponent: for a KNOWN official law q and i.i.d. per-context sampling, Chernoff–Stein gives detection of a forgery-free (completion-style) reconciliation at error exponent sum_C mu(C) KL(p_C || q|_C) >= O(p); positive O then means truthful archives expose the best official history exponentially fast, and Task F’s forgery is what buys indefinite concealment — closing the loop with Result 3. Qualitative claim only. [GAP 4, high for anything quantitative: the auditor’s hypothesis is composite (all gluable laws), Stein does not apply off the shelf; adaptive sampling and TV-vs-KL bookkeeping (Pinsker direction) are open.]
5. What survives, plainly
Established (this note):
E1. Error floor t* > 0 for any official history of contextual
records; exactly 1/3 for the triangle. [PROVED]
E2. Zero-work optimal-error objectivity exists (completion);
no work floor without archive conformity demands. [PROVED]
E3. Obstruction-vs-entropy separation: twins with identical
Shannon profiles, different floors. [COMPUTED]
Conjecture-grade, repaired twice, still standing:
S1. Forgery bound W >= kT ln2 (f(t* - delta) - eta(eps)),
target single-inequality form stated. [SKETCH]
S2. O as (qualitative) audit-detection exponent. [CONJECTURE]
Dead:
D1. W >= kT ln2 H_b(t*) via seam-bit entropy. [KILLED-v1]
D2. "The universe pays 0.637 kT per run for objectivity."
Objectivity is free (E2); forging agreement is not (S1).
D3. Any transfer of thermodynamic prices across the Programme-C
bridge before a reduction map exists (§7).
6. Relation to prior art (honesty section)
[PRIOR ART] Sheaf/gluing contextuality: Abramsky–Brandenburger,
arXiv:1102.0264.
[PRIOR ART] Contextual fraction (LP + monotones): Abramsky–Barbosa–
Mansfield, PRL 119 050504, arXiv:1705.07918.
[PRIOR ART] Relative-entropy contextuality measures: Grudka et al.
[PRIOR ART] Memory cost of simulating contextuality: Kleinmann,
Guehne, Portillo, Larsson, Cabello, arXiv:1007.3650.
[PRIOR ART] Thermodynamic-cost-of-interpretations claims, contested:
Cabello et al. and replies — a standing caution for this
genre.
[ADJACENT] Operational objectivity measures in quantum Darwinism,
e.g. functional information, arXiv:2509.17775 (2025).
[ADJACENT] Landauer cost tied to record STABILISATION (irreversible
reset/coarse-graining), not record creation — consonant
with the Result 2 / Result 3 split (publication free,
conformity paid), e.g. arXiv:2512.23751.
[ADJACENT] Extended Wigner's-friend x contextuality no-gos, 2024-26:
arXiv:2502.02461, arXiv:2409.07537.
Web sweeps (three angles: forgery/falsification cost of records; cost of agreement; Darwinism thermodynamics) found no statement of the forgery bound or the audit-level split at current search resolution. [GAP 5, load-bearing: a dedicated literature dive — including resource-theoretic contextuality task papers and Aumann-style agreement results — is required before any publication-grade novelty claim.]
Claimed delta, stated narrowly: the audit-level split (Result 2 vs Result 3), the identification of the candidate work floor with forced-falsification rate times blind-erasure cost, and the explicit task-relativity boundary of the kill condition.
7. The Programme-C bridge, thinned (per pass B)
[CONJECTURE, structural] In the triangle, t* > 0 iff the record
sheaf has no global section; the odd cycle of pairwise constraints
is the obstruction cocycle. A causal-holonomy loop A < B < C < A
(Programme C), if defined as composition of conditional kernels
failing to return the identity, is a dynamical lift of the same
cocycle shape: non-trivial holonomy <=> no global section of a
path-ordered assignment bundle.
Licensed: the structural analogy above, as a conjecture.
Not licensed: any transfer of thermodynamic prices, or equating t*
with a causal action.
Bridge kill condition: if Programme C's holonomy lives in temporal
composition with interventions while Phase-1 contexts are mutually
exclusive runs, the objects live in different categories and the
bridge dies as a programme coupling (survives only as a diagram).
Bridge success condition: a reduction map Phi from causal-loop
models to empirical models with t*(Phi(M)) >= c . Hol(M).
8. A falsifiable consequence (in principle, and cheaply)
From pass B, adopted as the programme’s sharpest empirical hook:
Prediction (obstruction-governed delete volume). In any multi-agent
record platform where (i) agents write context-limited archives (no
joint readout across all variables), (ii) a reconciler must publish
one official global log and ship archives passing Audit E at
delta < t* against it, and (iii) retention of pre-reconciliation
values is instrumented (sealed and audited), the minimal accounted
deletion per run is bounded below by c (t* - delta) bits — and
vanishes for a gluable control with matched per-context Shannon
profiles.
Falsification: a Blindness-satisfying, Audit-E-passing protocol on
the anti-triangle whose accounted erasure is o(t* - delta) per run
in the large-N limit, inside the pinned operation class.
Note the platform need not be quantum. A classical database or
version-control system with pairwise-only field visibility (Specker
access control) can stress-test the operational claim: the
obstruction predicts DELETE VOLUME, not mystery. If the delete
accounting can be beaten classically, Task F is wrong before any
quantum experiment is worth designing.
9. Adversarial review changelog
Pass A (Grok): [FATAL] H_b non-monotonicity broke v1's work bound;
zero-work completion protocol found. Absorbed: bound killed (D1),
protocol promoted (Result 2), work floor rebuilt as Task F (v2).
Pass B (Grok): [FATAL] Blindness self-contradictory on unedited runs
-> repaired to edit-conditional form. [FATAL-if-unpinned] Z
steganography -> Z counted as surviving system. [SERIOUS] context
relabeling, post-selection, run count -> pins P1-P3. [SERIOUS] L2
per-register double-count risk -> conditional-entropy form.
[SERIOUS] "2 runs per bit" numerology -> removed; S2 qualitative.
[COPY] "the natural task" -> "a natural forensic task"; title
reframed from price-of-objectivity to price-of-forged-agreement.
Extensions adopted: single-inequality target theorem (§4.3),
thinned Programme-C bridge (§7), delete-volume prediction (§8).
10. Next steps
1. State the operation class (GAP 1); write L1 as the law-movement
coupling lemma (GAP 2'); prove the epsilon-continuity of L2
(GAP 3'). Then Result 3 graduates from conjecture-grade sketch to
theorem candidate.
2. Prove the single-inequality form: Audit-E distance -> residual
pre-image entropy, one DPI argument, f identified.
3. Peres–Mermin and KCBS: recompute t*, O; check quantum-realisable
models give strictly smaller floors than the PR-like triangle.
4. S2 with composite hypotheses (Sanov over the gluable set).
5. Dedicated prior-art dive (GAP 5) before any novelty claim.
6. Programme-C reduction map Phi, or kill the bridge (§7).
7. The classical testbed of §8: a Specker-access-control database
with instrumented delete accounting — buildable with no physics
beyond a power meter and honest bookkeeping.
Appendixthe numerics script
Runs on stock Python 3 with numpy. Reproduces every number in §3.
"""Phase-1 numerics: objectivity work on the Specker triangle.
Scenario: records A,B,C in {0,1}; contexts AB, BC, CA (cyclic).
Model p_anti: each context perfectly ANTIcorrelated, uniform marginals (non-gluable).
Model p_corr: each context perfectly correlated (gluable twin, same entropy profile).
Computes, for each model:
t* = min over global q in Delta(8) of (1/3) sum_C TV(p_C, q|_C) [transcript error floor]
O_KL = min over global q of (1/3) sum_C KL(p_C || q|_C) (bits) [inconsistency monotone]
NCF = max noncontextual weight (analytic support argument + check) [CF = 1 - NCF]
Cross-checks analytic values: t*=1/3, O_KL=log2(3/2), CF=1 for p_anti; all 0 for p_corr.
"""
import numpy as np
rng = np.random.default_rng(7)
# global assignments g = (a,b,c), index = 4a+2b+c
G = [(a, b, c) for a in (0, 1) for b in (0, 1) for c in (0, 1)]
CONTEXTS = [(0, 1), (1, 2), (2, 0)] # AB, BC, CA
OUTS = [(0, 0), (0, 1), (1, 0), (1, 1)]
def marginal(q, ctx):
m = np.zeros(4)
for gi, g in enumerate(G):
o = (g[ctx[0]], g[ctx[1]])
m[OUTS.index(o)] += q[gi]
return m
def model_anti():
# P(01)=P(10)=1/2 in every context
return {c: np.array([0.0, 0.5, 0.5, 0.0]) for c in range(3)}
def model_corr():
return {c: np.array([0.5, 0.0, 0.0, 0.5]) for c in range(3)}
def tv_objective(q, p):
return sum(0.5 * np.abs(p[i] - marginal(q, CONTEXTS[i])).sum() for i in range(3)) / 3.0
def kl_objective(q, p, eps=1e-300):
tot = 0.0
for i in range(3):
m = marginal(q, CONTEXTS[i])
pi = p[i]
mask = pi > 0
tot += np.sum(pi[mask] * (np.log2(pi[mask]) - np.log2(np.maximum(m[mask], eps))))
return tot / 3.0
def project_simplex(v):
u = np.sort(v)[::-1]
css = np.cumsum(u)
rho = np.nonzero(u * np.arange(1, len(v) + 1) > (css - 1))[0][-1]
theta = (css[rho] - 1) / (rho + 1.0)
return np.maximum(v - theta, 0)
def minimize(obj, p, iters=60000, restarts=24, lr0=0.05):
best, best_q = np.inf, None
for r in range(restarts):
q = rng.dirichlet(np.ones(8))
for t in range(iters):
# numerical gradient (tiny dim; robust for both smooth and piecewise-linear objectives)
g = np.zeros(8)
f0 = obj(q, p)
h = 1e-7
for j in range(8):
qq = q.copy(); qq[j] += h
g[j] = (obj(qq / qq.sum(), p) - f0) / h
q = project_simplex(q - lr0 / np.sqrt(1 + t) * g)
q = np.maximum(q, 1e-12); q /= q.sum()
v = obj(q, p)
if v < best:
best, best_q = v, q
return best, best_q
def ncf_max_weight(p):
"""max total weight sum(r) with r>=0 over assignments, marginals(r) <= p componentwise.
Analytic: any assignment with an equal pair in context C hits an outcome with p_C=0 (anti model).
Numeric confirmation via greedy cap: r_g <= min over contexts of p_C(g|_C)."""
caps = []
for g in G:
cap = min(p[i][OUTS.index((g[CONTEXTS[i][0]], g[CONTEXTS[i][1]]))] for i in range(3))
caps.append(cap)
# upper bound on sum(r): sum of individual caps (loose but zero iff all caps zero);
# exact LP not needed when all caps are 0.
return np.array(caps)
def entropies(p):
ctx_H = []
for i in range(3):
pi = p[i][p[i] > 0]
ctx_H.append(float(-(pi * np.log2(pi)).sum()))
return ctx_H
for name, p in (("ANTI (contextual)", model_anti()), ("CORR (gluable twin)", model_corr())):
print("=" * 60)
print("model:", name)
print("per-context entropies (bits):", entropies(p))
t_star, q_t = minimize(tv_objective, p, iters=4000, restarts=12)
print(f"t* numeric = {t_star:.6f} (analytic anti: 1/3 = {1/3:.6f}; corr: 0)")
o_kl, q_k = minimize(kl_objective, p, iters=4000, restarts=12)
print(f"O_KL numeric = {o_kl:.6f} bits (analytic anti: log2(3/2) = {np.log2(1.5):.6f}; corr: 0)")
caps = ncf_max_weight(p)
print("per-assignment NC caps:", np.round(caps, 3), "=> max NC weight <=", caps.sum())
if name.startswith("ANTI"):
print("=> CF = 1 (all caps 0: every global assignment hits a p=0 outcome)")
else:
print("=> CF = 0 (model glues: q = 1/2[000] + 1/2[111])")
Hb = lambda x: -x*np.log2(x) - (1-x)*np.log2(1-x)
print("=" * 60)
print(f"bound numbers: H_b(1/3) = {Hb(1/3):.6f} bits -> W >= {Hb(1/3):.4f} * kT ln2 = {Hb(1/3)*np.log(2):.4f} kT")
print(f"O_KL(anti) = {np.log2(1.5):.6f} bits = {np.log(1.5):.6f} nats -> kT * ln(3/2) = {np.log(1.5):.4f} kT")
Comments & Reactions
Got a thought, a war story, or a “well, actually”? Sign in with GitHub and jump in.
Loading comments…