invariant-r10 invariant-r10/inputs-gpt-execution-adjudication-v3.md
Date: 2026-09-02 (America/Chicago) Input: fable51-r10pre-execution-v3.zip + sidecar SHA-256 Disposition: SCIENTIFIC RESULTS GO. `package-v2.5` ACCEPT WITH AN ADJUDICATION PATCH,…

GPT-5.6 Adjudication — R10-pre Execution v3

Date: 2026-09-02 (America/Chicago) Input: fable51-r10pre-execution-v3.zip + sidecar SHA-256 Disposition: SCIENTIFIC RESULTS GO. `package-v2.5` ACCEPT WITH AN ADJUDICATION PATCH, NOT AS-IS FINAL CANONICAL. CONTINUE WITH THE CODEBASE/TRVM/SUPER LANES; NO BROAD FABLE THEORY ROUND.

0. Independent verification

Outer archive

The supplied sidecar verifies exactly.

sha256
30c108e64079ed9459eec3b974e57b65202d917c79dbc7d8908556b402c0d50c

Top-level manifest

SHA256SUMS verifies successfully and correctly excludes itself.

PX13 shipped manifest

The v2 packaging defect is closed: the regenerated px13/SHIPPED-SHA256SUMS.txt verifies the shipped PX13 evidence, including the README.

v2.5 drift gate

Independent run:

drift_gate v2.5: scanned 11 current-facing files;
54 crosswalk records;
4 promotions
DRIFT GATE PASS

The v2.5 gate rejects v2.4 with 40 findings.

Its six explicit evidence-state mutations also all flip the gate to FAIL:

no-conditions
empty-open-findings
promotion-without-witness
silent-promotion
falsified-open-back
none-claims-eventually

This is a useful sensitivity witness for the gate.

L1-PRE / resolvability witness

Across:

PYTHONHASHSEED=0
1
42
123

every run:

6 expectations, 0 failed

byte-identical SHA-256:

60722f414e56c6497d59783c8cb2806c20d4090099e3642d19a3167015b1eafa

L1 temporal / fairness witness

Across the same four seeds:

15 expectations, 0 failed

byte-identical SHA-256:

8f117aa19a5523f97f8c9a6897f57f8471a95e4d6e98c73708d61082556bf9ec

The two exhaustive algorithms agree in every executed case, and all three checker mutations flip a verdict as required.

The TLA+ version is included but explicitly NOT RUN; no claim should be derived from TLC until TLC is actually executed.

TRVM adapter contract probe

Independent execution:

22 expectations, 0 failed

The raw E-42 and E-43 witnesses remain red; all candidate adapter contracts close their stated witness and expose their cost.

R0.8.5 handback

The complete COMPUTEDRIVEN_R085_FOR_GPT.tar.gz internal manifest verifies.

The handback preserves:

  • falsification before repair;

  • R0.8.5 source with git history;

  • gitbundle;

  • NC26 / NC27;

  • 21-run final series;

  • per-leg logs;

  • per-run battery verifier outputs;

  • the standalone battery verifier;

  • runner provenance.

Retained final series says:

21 PASS / 0 FAIL of 21
every run:
    exit=0
    verify=0
    dirty=0
    guards=0
    nc15=0
    nc25=0
    nc26=0
    nc27=0
    run_r08=0

I can verify the retained logs, hashes, manifests and saved verifier outputs. I cannot independently re-execute the original Docker/PX13 runner in this sandbox because Docker and the original runner image are not present. That is an environment limitation, not a failed receipt.

S5 EXP-6

The experiment package, vendored ampd source and all receipts are hash-bound by the top-level manifest.

The retained run demonstrates:

  • live external effect;

  • process death after far-side mutation;

  • ATTEMPTED -> UNKNOWN on recovery;

  • same-id re-claim refused by name;

  • keyed far side deduplicates a re-authorized replay;

  • naive far side duplicates it;

  • attempt-aware reconciliation;

  • BEAM SIGKILL followed by boot-time UNKNOWN.

Elixir is not installed in this review sandbox, so I cannot independently re-run the eight BEAM boots. The shipped source + raw receipts are sufficient to adjudicate the result as EXECUTED evidence, but not as independently re-executed evidence by this reviewer.

1. R0.8.5 — adjudication

F32 — ACCEPT the exact closure, but do not confuse it with full lineage provenance

F32 was a real defect:

unique lock holder
!=
unique durable lineage

R0.8.4's lock prevented concurrent current controllers but did not remember which durable history had already become current.

R0.8.5 correctly reproduced the sequential stale-root resurrection:

H0
├─ B -> revision 4 / HB
└─ stale A later reopens H0 and -> revision 4 / HA

and moved the durable lineage fact into the deployment anchor:

anchor:
    revision
    head

A root behind the anchor is refused; equal revision/different head is refused.

Ruling

F32 exact rollback-resurrection defect: CLOSED under the stated single-host deployment-anchor profile.

However, the R0.8.5 repair allows:

root.revision == anchor.revision + 1

as the crash window between root install and anchor update.

The reported R0.8.6 F35 shows why this matters:

one revision ahead proves ordering, not provenance.

A foreign but valid successor can occupy that tolerated one-ahead shape.

Therefore:

F32:
    CLOSED for stale / rollback resurrection

broader successor provenance:
    STILL OPEN as F35

Do not let "F32 closed" promote the broader S3 claim past the evidence.

2. R0.8.6 / F35 — DO NOT adjudicate closure from prose

The v3 return reports:

479e007  F35 falsifier
afcb374  anchor authorizes successor
747f025  three-way fsync outcome recorded

but explicitly says the R0.8.6 handback is not shipped and the live tree was not consumed.

That is good epistemic discipline.

Ruling

F35 is OPEN FOR GPT ADJUDICATION.

The reported mechanism shape is plausible and directionally right:

pending-successor is established in the anchor
before the root successor is installed

which changes the trusted fact from:

"revision N+1 exists"

to:

"THIS successor is the one the anchor authorized"

But no evidence-class promotion should occur until the full R0.8.6 source, falsifier, receipts, verifier and retained logs are shipped.

Required next return

Include the complete R0.8.6 handback.

3. F33 — ACCEPT closure

The R0.8.4 repair committed the observed SQLite schema.

F33 correctly identified the remaining hole:

observed interpreter
!=
intended interpreter

At genesis, CREATE TABLE IF NOT EXISTS is initialization, not validation.

R0.8.5 now derives expected_schema() by:

  1. executing the compiled SCHEMA into a pristine in-memory SQLite database;

  2. reading back SQLite's own normalized schema representation;

  3. requiring exact equality against the live store;

  4. doing so before any semantic read or genesis adoption.

This avoids a hand-transcribed schema contract drifting from the compiled schema.

Ruling

F33: CLOSED under the declared trusted/fixed SQLite-engine profile.

This strengthens E-14 beyond R0.8.4.

The remaining trust profile is legitimate:

trusted:
    SQLite engine / built-in interpretation implementation

committed / verified:
    intended schema contract
    canonical semantic rows
    canonical ordering contract

Do not claim resistance to adversarial replacement of the SQLite engine binary itself.

4. F34 — ACCEPT closure under profile

PRAGMA integrity_check must return exactly:

ok

before the store is admitted.

This addresses a different layer than a digest over values: the digest asks SQLite to interpret the structures, while integrity_check checks those structures for internal consistency.

Ruling

F34: CLOSED for the declared correctness profile.

Availability / DoS from a hostile store remains outside this claim.

5. F24 — ACCEPT the proper closure

R0.8.5 no longer delegates canonical ordering to SQLite ORDER BY semantics.

It:

  • reads logical rows;

  • sorts lifecycle / authority by numeric seq;

  • sorts workers by name bytes;

  • sorts ledger by (family, request_id) bytes;

  • refuses duplicate logical keys.

This is materially cleaner than relying on a collation or index traversal.

Ruling

F24: CLOSED for the represented canonical collections.

Keep the negative-control lesson:

a control that changes a connection-local pragma in some other process is not evidence about the controller's own connection.

6. F22 — ACCEPT closure, but reclassify the residue as a trust-profile assumption

The exact F22 defect was:

predictable <root>.tmp
+
File::create / O_TRUNC
+
symlink following

R0.8.5 uses a private temporary beside the target:

.<base>.<pid>.<time>.tmp

opened with:

O_CREAT | O_EXCL

and states the trust boundary explicitly:

the directory holding the canonical root and anchor is deployment-controlled and not writable by the store adversary.

Under that profile, the old symlink attack is closed.

Ruling

F22: CLOSED UNDER THE DECLARED TRUST PROFILE.

Do not keep "F22 closure pending" as an open finding.

Instead record:

trust assumption:
    canonical root + anchor parent directory is deployment-controlled and
    not writable / redirectable by the store adversary

If a later threat model grants the attacker authority over parent-directory components, that is a new profile and needs a new falsifier.

7. F30 — ACCEPT closure

Root and its mutable fields are now behind a Rust module boundary, with external field mutation rejected by rustc (E0616).

This is defence in depth for the existing transition rules rather than a new semantic obligation.

Ruling

F30: CLOSED as a representation / implementation constraint.

Remove "F30 adjudication pending" from R0.8 open findings.

8. Correct R0.8 residue after this adjudication

The current package's r0_8.open_findings should be patched.

Remove / rewrite

Remove:

F30 closure pending

Replace:

F22 layer is open

with:

F22 exact attack CLOSED;
deployment-controlled root/anchor directory remains an explicit trust-profile
assumption

Add explicitly

Add:

F35 successor provenance:
    R0.8.5 tolerates one-ahead as a crash window;
    a valid foreign successor can fit that shape;
    R0.8.6 reports a repair but full evidence is not shipped / adjudicated.

Keep

power-loss / fsync consistency:
    UNCLAIMED

post-rename / directory-fsync ambiguous durability:
    OPEN design question

single-host only:
    no partition- / failure-tolerant consensus claim

trusted deployment anchor / filesystem namespace:
    explicit profile assumption

So:

R0.8 remains OPEN.

9. L1 two-witness structure — ACCEPT, with one terminology correction

The v2 adjudication asked for exactly this split:

L1-PRE:
    resolvability / a path exists

L1 temporal:
    eventuality only under a declared fairness policy

v3 now implements that split.

This is the right structure.

What the temporal witness establishes

For the finite model:

NO fairness:
    a stuttering / postponement counterexample exists

WF(finality):
    L1-closed holds
    -> evidenced generation eventually closes or terminalizes

WF(finality) only:
    L1-strict can fail
    -> a closed generation can remain vacant forever

WF(finality) + WF(attach):
    L1-strict holds

NO-FINALITY:
    fairness does not invent a missing finality mechanism

REACH-AS-LOSS:
    progress is possible but violates the safety premise by closing while
    holder is alive

This is a useful separation of safety from liveness.

Terminology defect to fix

The temporal witness repeatedly calls a state:

UNRESOLVABLE

when there is a fair/non-fair infinite counterexample.

That word conflicts with L1-PRE, which already proves the same state has a resolution path.

Without fairness the state is not "unresolvable".

Correct wording:

resolvable:
    YES, a resolution path exists

eventual resolution guaranteed:
    NO, because a non-resolving infinite execution remains admissible

Rename the temporal table column / prose from:

unresolvable

to something like:

bad-fair-path states
nonresolving-counterexample states
eventuality-failing states

and change:

every evidenced state is UNRESOLVABLE

to:

every evidenced state admits a non-resolving stuttering execution when no
fairness assumption excludes postponement

This is a semantic correction, not cosmetic wording.

10. "Clause A is an environment-liveness assumption" — ACCEPT WITH NUANCE

The core finding is right:

the Locus mechanism cannot manufacture a willing successor.

So the existence / availability of a future successor is environmental.

But WF(attach) in the finite model mixes two things:

ENVIRONMENT:
    a valid successor is offered / remains available

SYSTEM / SCHEDULER:
    a continuously enabled valid attach is eventually serviced

Do not classify all of WF(attach) as external.

Recommended split:

ENV-SUCCESSOR:
    eventually a valid willing successor exists / is offered

SYS-ATTACH-FAIRNESS:
    if a valid attach remains continuously enabled, the system does not
    postpone processing it forever

Then:

L1-closed:
    system guarantee under WF(finality)

L1-service-succession:
    system guarantee conditional on ENV-SUCCESSOR + SYS-ATTACH-FAIRNESS

This is a cleaner contract for a real operating environment.

11. L1 promotion status

Keep:

L1?

as a candidate.

Do not promote it to an irreducible law yet.

The Python temporal witness is now strong finite-model evidence:

EXHAUSTIVE-IN-FINITE-MODEL
under declared fairness assumptions

The TLA+ artifact is useful but remains:

NOT EXECUTED

Run TLC later as an independent engine, but the absence of TLC is not a blocker to continuing implementation research.

12. S5 / EXP-6 — ACCEPT the first real adapter witness

This is a real advancement.

The experiment crosses an actual process boundary to a separately durable far side and reaches the exact ambiguity S5 is about:

far side changed
journal did not yet record COMMITTED
effecting process dies

Recovery correctly produces:

UNKNOWN

rather than:

FAILED
or
safe-to-retry

The keyed far side then demonstrates the safe replay shape:

same stable intent key
-> no second external effect
-> stored far-side result returned

The naive far side supplies the falsifier:

same intent replayed
-> second external effect
-> journal alone cannot tell

The node-level SIGKILL also reaches UNKNOWN after restart.

Ruling

Move S5 to TESTED under the exact stated profile.

That means:

TESTED:
    real adapter
    same-machine separate durable far-side process/store
    process crash after side effect
    BEAM SIGKILL after side effect
    keyed dedup
    far-side reconciliation evidence

NOT TESTED:
    network partition
    third-party far side
    remote service outage
    kill during DETS mutation
    exactly-once across an unreliable boundary

Do not paraphrase the status as universal "S5 proven".

13. E-50 — the two red findings are correct, but split them

E-50 currently combines two distinct gaps.

They should be separated.

E-50a — unresolved same-intent replay policy

Current behavior:

ef_0001:
    UNKNOWN
    effect_key = K

fresh approval:
    ef_0002
    effect_key = K

journal:
    allows ef_0002 to CLAIM / ATTEMPT
    without consulting unresolved ef_0001 by key

Safety therefore depends entirely on the far side.

This violates the stronger S5 discipline unless duplicate risk is explicitly acknowledged.

Important modeling correction

DUPLICATED_ACKNOWLEDGED should probably not be modeled as a terminal state merely because earlier prose called it one.

Risk acknowledgment occurs before the replay's outcome is known.

Prefer an explicit authorization/evidence fact such as:

DUPLICATE_RISK_ACKNOWLEDGED
or
REPLAY_RISK_AUTHORIZED

which permits the new attempt.

That attempt can still later become:

COMMITTED
FAILED
UNKNOWN

If an actual duplicate is later proven, that can have its own outcome/receipt.

E-50b — intent identity vs attempt identity

The first reconciliation run correctly exposed:

same idempotency key
!=
same attempt

A far-side record saying:

ef_0002-a1 completed intent K

must not make the journal claim:

ef_0001-a1 itself COMMITTED

The original attempt needs a distinct terminal relation such as:

SUPERSEDED

while the higher-level intent may be:

SATISFIED / COMMITTED by another attempt

Ruling

Keep both findings red for the Super/ampd lane, but split them in the cross-registry map:

E-50a replay-risk authorization by stable intent identity
E-50b attempt supersession / reconciliation attribution

That will keep two different semantics from sharing one repair.

14. EXP-7 — ACCEPT the adapter measurements

The R10-pre execution lane did not overstep.

It:

  • kept raw E-42/E-43 red;

  • did not edit TRVM;

  • implemented candidate contracts as adapters;

  • measured whether they close the witness;

  • measured their costs.

That is exactly useful pre-governance work.

The TRVM lane still owns the decision.

15. E-43 — measured alternatives expose a better refinement

The adapter results are useful:

A

Scope registration is a world transition.

Pros:

world version again identifies the observable

Cost:

even re-registering the same source currently advances version

B

Scope registry is a separate observable coordinate.

Pros:

resource version semantics stay narrow

Cost:

coarse invalidation;
even unrelated warrants can be refused

Recommendation to TRVM lane

Consider A-idempotent:

if existing scope source digest == new source digest:
    true no-op
    version does not advance

if digest changes:
    scope redefinition is a semantic world transition
    version advances
    log records it

That preserves A's adequacy without charging a semantic transition for an identical registration.

Do not make that change from this lane; hand it to TRVM governance.

16. E-42 — the experiment suggests two orthogonal coordinates, not merely two competing repairs

The adapter results show:

L-PREFIX:
    answers "is this state a descendant of the state the warrant came from?"
    but cannot distinguish an independent byte-identical twin

L-ID:
    answers "is this the same world lineage/birth identity?"
    but refuses a pre-fork warrant even on a legitimate descendant

Those are different questions.

The shipped BOTH adapter already demonstrates:

world/birth identity
+
history/state-prefix identity

can distinguish:

  • an independent twin;

  • a divergent fork;

  • the own lineage.

Recommendation to TRVM lane

Do not force an artificial either/or between L-PREFIX and L-ID.

Adjudicate whether a warrant needs both coordinates:

world_id / lineage_id
+
state-prefix or history digest at issuance

Then define deliberately whether a fork():

A. creates a new world identity
or
B. creates a descendant identity with explicit ancestry

That semantic choice should determine warrant portability.

17. FAC-CONTROL-SENSITIVITY — ACCEPT the v3 handoff shape

This rule has now accumulated enough independent witness families to deserve a factory round.

Still do not mint it from this execution lane.

The factory should own promotion finality.

Generic rules I would carry into factory-station.mjs

A. No silent evidence-class promotion

If:

old.evidence_class != new.evidence_class

require a promotion record.

B. Every promotion needs a sensitivity witness

Not merely a prose string.

Require a typed receipt reference:

type:
    pre-fix-fail
    injected-fault-fail
    subject-reach witness
    mutation-verdict-flip

plus hash / source identity.

C. Conditional claims require conditions and a trust profile

For:

TESTED-CONDITIONAL
SUPPORTED-CONDITIONAL
...

require nonempty:

conditions
scope_profile / trust_profile

D. Executed evidence must be distinguishable from unexecuted artifacts

For example:

TLA file present != TLC executed
commit prose present != R0.8.6 closure tested

Require:

executed: true|false
receipt path
tool/runtime identity

before TESTED promotion.

E. OPEN status requires enumerated open findings

No:

status = OPEN
open_findings = []

F. Historical falsifiers are append-only evidence

A FALSIFIED -> TESTED transition must preserve:

the pre-fix failing witness
+
the repair witness

Do not rewrite the old receipt away.

G. Derived counts are computed, never typed

Crosswalk counts, PASS totals, registry sizes, etc. should be derived by the factory.

H. The factory station must have its own mutation tests

Carry the R10-pre gate pattern:

valid package -> PASS

mutated evidence state ->
    each mutation makes station FAIL

This is FAC-CONTROL-SENSITIVITY applied recursively to the evidence factory.

Do NOT put project-specific assertions in the generic factory

Do not hardcode:

E-14
R0.8
L1
S5

into factory-station.mjs.

Instead support typed validators / schemas for:

safety claim
liveness claim
conditional mechanism claim
factory epistemic claim

and let project-specific gates compose those generic rules.

18. One anti-drift patch required in package-v2.5

Before calling v2.5 final canonical, make package-v2.6 with the adjudication state.

Required changes:

  1. R0.8.5:

  • F32 CLOSED for stale/rollback resurrection;

  • F33 CLOSED under trusted/fixed SQLite engine profile;

  • F34 CLOSED;

  • F24 CLOSED;

  • F22 CLOSED under declared deployment-directory profile;

  • F30 CLOSED.

  1. R0.8:

  • remains OPEN;

  • explicitly add F35 successor provenance as open/unadjudicated;

  • remove F22/F30 "closure pending";

  • retain filesystem namespace as a trust-profile assumption;

  • retain power-loss / fsync and distributed-fault-tolerance scope limits.

  1. L1:

  • replace temporal use of UNRESOLVABLE with

non-resolving counterexample / eventuality not guaranteed;

  • split ENV-SUCCESSOR from SYS-ATTACH-FAIRNESS in the doctrine.

  1. E-50:

  • split into E-50a replay-risk authorization and E-50b attempt supersession.

  1. R0.8.6:

  • do not mark F35 closed until a complete handback is present.

  1. Gate:

  • add a negative assertion that an L1 state known resolvable=true may not

be called unresolvable merely because temporal eventuality fails.

No new theory search is required for this patch.

19. EMB-E1

Still correctly untouched.

No issue.

It remains explicitly operator-gated by the frozen protocol.

Its scientific value remains high because it is orthogonal to the safety / durability work:

can capability survive replacement of transient intelligence because the environment has become a causally sufficient support structure?

Execute only with explicit spend authorization.

20. Current frontier after v3

Safety / semantic integrity

S1  Admission singularity
    World Locus-birth uniqueness remains an S1 scoped corollary

S2  Authority non-amplification

S3  Continuity / anti-resurrection
    currentness/exclusivity
    canonical-history continuity
    successor provenance now explicitly visible as F35 in R0.8

S4  Semantic observability
    E-42/E-43 remain red
    adapter contract costs now measured

S5  External-effect honesty
    TESTED under first real-adapter profile
    journal-level same-intent replay and attempt attribution remain red

Liveness

L1? Recoverable resolution / succession

L1-PRE:
    resolution path exists

L1-closed:
    temporal closure under WF(finality)

L1-service-succession:
    additionally conditional on successor availability
    + fair processing of enabled attach

Factory epistemics

FAC-CONTROL-SENSITIVITY
    ready for a factory promotion round
    but not minted by this lane

21. What should happen next

1. Build package-v2.6 from this adjudication

This is an evidence-state patch, not a research round.

2. Ship the full R0.8.6 handback

This is now the highest-priority ComputeDriven adjudication item.

The key question is:

does the anchor authorize a specific successor before the root can become the tolerated one-ahead state, and do crash/recovery receipts preserve that authorization without creating a new F36?

3. TRVM governance decides E-42/E-43

Use the measured adapter costs.

I would explicitly evaluate:

E-43 A-idempotent

E-42:
    world/birth id + state/history prefix

rather than assuming the originally presented pairs are exclusive choices.

4. Super/ampd lane takes E-50a/E-50b

Do not simply add a string terminal.

Model:

intent
attempt
risk authorization
attempt terminal
intent satisfaction

as distinct concepts.

5. Factory lane adjudicates FAC-CONTROL-SENSITIVITY

Carry the generic evidence-transition checks listed above.

6. Run TLC when convenient

Useful independent temporal engine, but not the highest priority.

7. EMB-E1 remains operator decision

8. After R0.8.6 / TRVM / Super stabilization

A genuinely remote/networked S5 adapter would be a useful next profile expansion, but the current local far-side run is already a valid first witness.

22. Final ruling

This execution round is a net success.

It does not merely make more tests green.

It changes what is known:

  1. R0.8.5 closes the exact stale-lineage rollback defect F32, while exposing

successor provenance as a distinct remaining issue F35.

  1. The intended SQLite interpretation is now verified, not merely hashed.

  2. F22's exact symlink attack and F30's privacy gap close under explicit

profiles.

  1. L1 now has both an existential resolvability witness and an explicit

temporal fairness witness.

  1. The successor half of L1 is shown to depend on environmental availability

as well as fair system processing.

  1. S5 finally has a real external-effect adapter witness and a live UNKNOWN

state after an actual far-side mutation.

  1. The S5 run finds two real ampd journal gaps rather than hiding behind the

keyed far side.

  1. TRVM's candidate repair costs are now measured without pre-empting the

governance lane.

  1. FAC-CONTROL-SENSITIVITY has matured from a good sentence into a plausible

factory evidence-admission rule with multiple independent witness families.

GO to the codebase/governance lanes.

Do not return to a broad Fable invariant-search round yet.

The next loop should be:

v2.6 evidence-state patch
-> full R0.8.6 handback
-> TRVM/Super/factory lane decisions
-> GPT adjudication

Open in the interactive atlas

content id · CIDv1
bagaaierako3r6gxx6do46ath3ajvit7p2onxpdcisyy554632hqqmhotxgga