Date: 2026-09-02 (America/Chicago) Input: fable51-r10pre-execution-v2.zip Disposition: PACKAGE-v2.4 SEMANTICS: ACCEPT. R0.8.4: PARTIAL CLOSURE UNDER EXPLICIT TRUST PROFILES. L1?: KEEP AS CANDIDATE, BUT WITNESS PROVES RESOLVABILITY, NOT LIVENESS WITHOUT FAIRNESS. GO TO CODEBASE EXECUTION / R0.8.5; NO FABLE THEORY ROUND.
The top-level SHA256SUMS verifies successfully:
top_rc=0
and correctly excludes itself.
Independent run:
python3 package-v2.4/tools/drift_gate.py package-v2.4
Result:
drift_gate: scanned 10 current-facing files; 51 crosswalk records
DRIFT GATE PASS
The same v2.4 gate rejects v2.3 with 33 failures, including stale S6 vocabulary, stale PX13 status, wrong crosswalk count, missing single-witness scope, missing L1 axis, missing E-13/E-46 splits, and stale E-42 classification.
That is a meaningful negative control for the gate.
Across PYTHONHASHSEED=0,1,42,123:
19 expectations, 0 failed
stdout sha256:
ad23cf4b178c2880da78abe22712c500674a80de5d3b1133b0b80453b6c4bcfc
Across PYTHONHASHSEED=0,1,42,123:
6 expectations, 0 failed
stdout sha256:
8afb64e6562d1e7b7db6e995e1d6ae2bc843710e63e35b2daf24e16a60c0b082
COMPUTEDRIVEN_R084_FOR_GPT.tar.gz contains:
falsification receipts committed before repair;
NC24 / NC25 source;
preserved F22 / F25 falsifiers;
source tree with .git;
gitbundle;
exact R0.8.4 diff/commit list;
21 battery receipts;
per-run logs;
first/final transcripts;
runner provenance;
internal SHA-256 manifest.
The internal R0.8.4 manifest verifies cleanly.
px13/SHIPPED-SHA256SUMS.txt verifies every listed PX13 file except:
./README.md
Recorded hash:
91c9549fd73ba6818559ca27bf3848448340e5634ad8e205e4ead984b7144355
Actual:
f1587db6dabf059e08abb520ce523d376f12311ca5c3f0813f44bbd50d148895
All substantive PX13 evidence files and the R0.8.4 internal manifest are good. Treat this as a packaging blemish, but regenerate the PX13 shipped manifest before the next canonical return.
I accept package-v2.4/ as the current semantic/evidence package.
The important v1-adjudication changes are now represented consistently:
S1–S5 = current working safety/integrity obligations
S6? = retired as a separate obligation
resolved to:
S1(domain = World locus-birth/currentness)
L1? = separate liveness-axis candidate
E-13 = split into a/b/c
E-42 = S4 / representation, S3 cross-reference only
E-46 = split into representation / S2 / S1 meanings
distributed S3 = explicitly scoped to:
two-controller / two-filesystem-namespace copied-world topology
one correct, available witness
The gate now tests post-execution status, not merely vocabulary.
No further broad Fable theory round is justified before more execution.
R0.8.4 changes the incarnation lock from:
<caller-chosen-root>.lock
to:
<deployment-anchor>/<LocusId>/incarnation.lock
The root path no longer chooses the currentness namespace.
NC24 copies:
store
root
byte-for-byte to different pathnames while both controllers share one deployment anchor. Exactly one controller becomes current; the loser does not advance and its mutation is refused.
The control also correctly avoids assuming whether A or B wins the OS-lock race.
The specific F31 defect is CLOSED under this profile:
single host
one protected deployment-owned anchor namespace
one LocusId -> one incarnation lock
Recommended evidence classification:
E-13a same-anchor exclusivity:
TESTED
E-13b canonical host-local Locus currentness:
TESTED-CONDITIONAL / CLOSED-F31
condition:
deployment anchor namespace is trusted, canonical, and not
attacker-selectable / attacker-replaceable
E-13c external witnessed multi-namespace currentness:
TESTED under ARM-B single-witness profile
Do not promote E-13b to an unqualified universal theorem.
The repaired code itself correctly admits the boundary:
an attacker who can choose another anchor namespace has another deployment; cross-machine uniqueness is not claimed.
That is good epistemic discipline.
F22 is still open and is related.
Currentness now depends on a deployment filesystem namespace. Therefore the deployment-owned directory/anchor identity itself belongs in the trusted-substrate profile.
The next layer question is not “is the lock keyed by root path?” — that is fixed.
It is:
can an attacker who is not authorized to replace the canonical deployment anchor nevertheless redirect/replace one of the filesystem objects that the trusted anchor depends on?
That should be handled by the R0.8.5 / F22 work, not by reopening F31.
Canonical material now includes ordered rows from:
SELECT type, name, tbl_name, sql
FROM sqlite_schema
ORDER BY type, name
and the canonical encoding tag moves to v3.
Additionally, on each open R0.8.4:
WAL mode is requested and its returned value is asserted;
SQLITE_DBCONFIG_DEFENSIVE = true;
SQLITE_DBCONFIG_TRUSTED_SCHEMA = false;
schema is part of the canonical material;
CanonicalMutation carries the same schema contract rather than re-reading a potentially changed interpretation during projection;
genesis adopts the store's schema-bound canonical head exactly once under strict preconditions.
This directly addresses the reproduced F23 attacks:
schema-only collation edit invisible to digest
schema-induced binding destruction
trigger mutating canonical state inside the honest writer transaction
The specific F23/F24 defects are CLOSED under a trusted/fixed SQLite interpreter profile.
Recommended E-14 classification:
TESTED-CONDITIONAL
condition:
the SQLite engine / collation implementations / database configuration
that interpret sqlite_schema are part of the trusted execution profile
committed:
schema objects represented in sqlite_schema
canonical row values
canonical ordering contract
not claimed:
adversarial replacement of the SQLite engine binary itself
arbitrary hostile custom collation/function implementation outside the
declared runtime trust profile
I would remove FALSIFIED-OPEN for the specific F23/F24 attacks once the R0.8.4 receipt is admitted, but retain CONDITIONAL rather than calling E-14 universally closed.
The deeper principle remains:
committing interpreter-produced values is insufficient unless the interpretation contract is either committed or explicitly trusted.
R0.8.4 now does both in a reasonable way for this profile: schema is committed; the SQLite engine is trusted.
F23's trigger case previously showed that a transaction could be serialized correctly while attacker-installed schema semantics changed canonical state from within the same transaction.
R0.8.4:
commits the schema interpretation contract;
uses defensive SQLite mode;
disables trusted-schema behavior for unsafe schema execution;
carries the canonical schema through mutation projection.
Recommended:
E-15:
TESTED under fixed/trusted SQLite engine
+ committed schema contract
+ defensive configuration
This is stronger than the v2.4 pre-adjudication status.
Do not drop the profile qualifier.
Closing F31 and F23/F24 does not freeze R0.8.
The R0.8.4 handback itself correctly leaves:
F22 root-path / trusted-directory integrity OPEN
F30 module privacy / defence-in-depth OPEN
power-loss / fsync UNCLAIMED
directory-fsync error handling design question
and R0.8.5 is reported as in flight.
So the correct state is:
R0.8.3:
historical executed evidence
R0.8.4:
closes specific F31 + F23/F24 defects under stated profiles
materially improves control sensitivity
does not freeze R0.8
R0.8:
OPEN
R0.8.4 produced multiple examples of controls / runners that could print PASS while not measuring what their receipt claimed:
wrong semantic gate;
assuming which process wins a race;
demanding root motion when the correct behavior is refusal;
a value compared to itself;
jq // erasing false;
PIPESTATUS captured incorrectly;
shell quoting causing a leg to execute nothing while returning success.
This deserves a first-class rule.
Put it in the factory / evidence-admissibility lane, not in S1–S5.
Suggested form:
FAC-CONTROL-SENSITIVITY
A control may promote an evidence class only if its sensitivity to the
claimed forbidden state is itself evidenced.
At least one of:
A. pre-fix or injected-fault execution demonstrates FAIL;
B. an independent witness demonstrates that the control reaches the
intended subject and discriminates the forbidden state;
C. a mutation/negative-control pair proves that removing the target
mechanism flips the verdict.
A green-only control with no demonstrated failure sensitivity cannot
support promotion.
Also add an instrument-self-check corollary:
the runner/receipt machinery that records a control must itself have a
negative control capable of making the aggregate fail
R0.8.4's falsify-before-repair sequence is an excellent first witness family.
I would classify this as:
factory epistemic invariant / evidence-admission rule
not a runtime semantic invariant.
The candidate itself is worthwhile:
L1? Recoverable succession / explicit terminalization
and it should remain on a separate liveness axis.
However, the current finite witness does not prove the statement as written if the statement uses temporal language such as:
eventually resolves
For every modeled evidenced-loss state, it checks:
there EXISTS a path
to:
successor at a later generation
OR explicit terminal state
That is:
resolution reachability
resolvability
absence of a dead-end evidenced state
It is not:
all fair executions eventually resolve
because the model contains no scheduler/fairness semantics. An enabled finalize or terminalize action can simply be postponed forever in an unconstrained execution.
Either:
Call the current result:
L1-PRE / resolution availability
From every admissibly evidenced permanent-loss state,
a safety-preserving resolution path exists.
This is exactly what the script proves.
Then later add temporal liveness.
For example:
Under weak fairness for continuously enabled finality actions,
every admissibly evidenced permanent-loss state eventually reaches
exactly one later-generation successor or an explicit terminal state.
Then model-check the temporal property with an actual transition-system / Büchi / TLA+ / TLC-style fairness semantics rather than existential BFS.
Use Option A now.
Keep L1? as the semantic liveness candidate, but label the Python witness:
EXHAUSTIVE-IN-FINITE-MODEL:
resolution is reachable from every evidenced state
NOT YET PROVEN:
temporal eventuality under a scheduler/fairness model
Then build the smallest possible TLA+/explicit-state temporal model for L1 before production finality changes.
This avoids smuggling fairness into the word "eventually."
The separate handoff is appropriate.
Keep both red until the TRVM law lane chooses the contract.
Primary classification remains:
S4 / representation adequacy
because the current warrant footprint cannot distinguish equal-version states across divergent lineages.
Cross-reference S3 only when the two branches are meant to remain the same semantic identity/current lineage.
Straight S4 contract question:
either:
scope-registry mutation advances world semantic version
or:
scope-registry identity is an explicit separate observable coordinate
Do not register either law before the TRVM lane resolves which observable contract it means to promise.
The gate is now doing real work.
The strongest evidence is:
PASS on v2.4
FAIL with 33 findings on v2.3
That demonstrates sensitivity to the semantic transition.
It is now reasonable to call v2.4 the current canonical semantic package.
The next gate should ingest evidence-state facts rather than only parse prose/JSON consistency.
For example:
if crosswalk[E-13b].evidence_class == TESTED-CONDITIONAL:
require trust_profile contains canonical deployment anchor
if S6 is resolved:
require no current semantic_obligation == S6?
if R0.8 == OPEN:
require open_findings is nonempty
if a control promotes an evidence class:
require sensitivity_witness != null
That would begin turning the gate from doctrine lint into evidence-type checking.
The top-level package integrity is good.
The remaining PX13 blemish is:
px13/SHIPPED-SHA256SUMS.txt
README.md mismatch only
Regenerate that manifest after all README edits.
Do not change any historical internal R0.8.4 receipt/manifests; only fix the outer shipped-evidence manifest.
S1 Admission singularity
includes World Locus-birth uniqueness as an S1 scope/corollary
S2 Authority non-amplification
S3 Continuity / anti-resurrection
currentness/exclusivity
+
canonical-history continuity
mechanism count substrate-dependent
S4 Semantic observability
adequacy + equivariance
observation-as-write supported/tested in current TRVM path
E-42/E-43 still red
S5 External-effect honesty
still lacks a real adapter witness
L1? Recoverable succession / explicit terminalization
current witness:
resolution path exists from every evidenced-loss state
not yet established:
temporal eventuality under explicit fairness assumptions
FAC-CONTROL-SENSITIVITY
candidate for promotion in the factory lane
first witness family: R0.8.4 falsify-then-repair controls
Focus on:
F22 trusted root/directory identity and safe replacement
directory fsync / post-rename failure semantics
F30 deliberate module privacy refactor if it remains worth the risk
Preserve failure-sensitive controls.
After this adjudication:
E-13b:
F31 CLOSED under protected single-host deployment-anchor profile
E-14:
F23/F24 CLOSED under trusted/fixed SQLite interpreter profile
evidence remains TESTED-CONDITIONAL
E-15:
TESTED under committed schema + trusted/fixed interpreter profile
R0.8:
OPEN
No need for another Fable pass.
Keep red until exact contracts are chosen and witnessed.
Do a tiny explicit temporal model with a declared fairness policy.
Do not build more finality machinery first.
Still high-information, still orthogonal, still not authorized merely because credentials exist.
After the current R0.8/TRVM work settles, this remains the largest unwitnessed S-row.
v2.4: ACCEPT as the current canonical R10-pre semantic/evidence package.
R0.8.4: real progress.
It closes the specific F31 currentness-copy attack and the specific F23/F24 SQLite-schema attacks under explicit trust profiles, while correctly leaving R0.8 open.
L1?: keep.
But the current Python witness establishes resolvability, not temporal liveness. Add fairness explicitly before claiming “eventually” as an exhaustive model result.
FAC-CONTROL-SENSITIVITY: promote into the factory evidence lane as a candidate rule.
The next useful work is still codebase execution:
R0.8.5 + TRVM red-law adjudication + temporal L1 model + eventually S5/EMB-E1.
Do not return to a broad invariant-search round yet.