MINDCHAIN

Molecular Quarantine Settlement: Per-Job Dispute Freezes over Globally Linear Typed Resources

Research corpus codename: NOOSPHERE.

Date: 2026-07-10 Provenance: Compiled from international-lab/invention-final.md (§S02, §4.2, §4.3) and the lab nel-quarantine-lab/ (README.md, nel_adapter.py, engine molecular_quarantine_test.py); every number below is copied from those artifacts — nothing here exists without an on-disk artifact behind it.

Abstract

A settlement layer that fail-stops globally on the first contradiction settles nothing. Molecular Quarantine Settlement (mechanism S02, [SURVIVOR-EXPERIMENT] grade N3 from the international-lab program) replaces global failure with two composed rules: per-job contradiction quarantine — conflicting evidence freezes only the membrane of the affected job — and globally linear typed resources — every settlement atomically consumes a set of globally unique typed IDs, so no resource can ever be paid twice, even across jobs. We wired the unmodified survivor engine onto MindChain's Neural Execution Lane (NEL) settlement vocabulary: jobs become PromptJobs, the consumed reactant triple becomes {EscrowNote, ExecutionRight, DisputeProof}, contradiction becomes conflicting ChunkClaims, and quarantine becomes the per-job DIVERGED dispute freeze of noosphere/05-neural-lane.md §3 rule 5. In the 4-job fixture, the monolithic baseline settles 0/4 jobs after one conflicting ChunkClaim; the mechanism settles the 1/4 independent valid job, quarantines the 1/4 contested job, refuses both cross-job resource-reuse attacks (2/2), rejects the one wrong-phase submission without consuming its proof (1/1), and produces one identical terminal projection across all 4,324,320/4,324,320 enumerated causal interleavings of the 14-event dependency graph — double_payouts=0 MEASURED 2026-07-10. The first implementation failed exactly where it should: job-scoped resource identity allowed 2 double payouts; the preserved failing run and the global-typed-ID revision are part of the record. This is a finite executable model, not a production settlement proof.

Claims

  1. MEASURED 2026-07-10 Per-job quarantine preserves independent progress: in the 4-job NEL fixture, a conflicting-ChunkClaim dispute on job-atlas freezes only that job (quarantined_jobs=1 of 4), while job-borealis settles (mechanism_settled=1 of 4). The rejected monolithic baseline — one conflicting ChunkClaim fail-stops the batch — settles baseline_settled=0 of 4. Source: nel-quarantine-lab/README.md.
  2. MEASURED 2026-07-10 Global linearity holds across membranes: double_payouts=0 over the entire explored state space. Both cross-job reuse adversaries — job-cinder replaying borealis's consumed ExecutionRight, job-dryad replaying its consumed DisputeProof — are refused (2/2 consumed_resource rejections), and exactly borealis's {EscrowNote, ExecutionRight, DisputeProof} triple is consumed (3/3 typed IDs, once each). Source: lab README gate table.
  3. MEASURED 2026-07-10 Session fidelity: a settlement submission delivered while job-borealis is still in its claim phase is rejected as wrong_phase:evidence without consuming the dispute proof (1/1), and the legal retry after session open still settles. Source: lab README gates early_settle_rejected_wrong_phase, mechanism_settled.
  4. MEASURED 2026-07-10 Bounded confluence: all 4,324,320/4,324,320 causal linear extensions of the 14-event fixture graph converge — one terminal projection, with equality asserted at every reachable causal prefix (invariant_gate=1). All 5/5 invalid local orders are classified as monitor rejections ({consumed_resource: 2, quarantined: 2, wrong_phase: 1}). Source: interleavings_enumerated=4324320, invalid_order_permutations=5 in the lab README.
  5. MEASURED 2026-07-10 The NEL adaptation is structure-preserving, not cosmetic: the adapter's event dependency graph is isomorphic to the engine's own fixture, proven by matching linear-extension counts — engine_fixture_interleavings=4324320 = interleavings_enumerated=4324320 (causal_structure_preserved=1). Source: nel_adapter.py + lab README.
  6. THEORY The protocol-scale claim — that per-job quarantine plus a globally-keyed typed-ID consumption ledger is the right settlement object for production NEL disputes (registered as M-QUARANTINE-SETTLE THEORY; fixture MEASURED 2026-07-10) — remains theory. Only the fixture is measured.

Non-claims. This is a finite executable model at 4-job fixture scale. It does not establish BFT consensus, cryptographic authorization, fair exchange, full MPST projection, Maude model checking, production P-system performance, or unbounded confluence (invention-final.md §S02 claims-not-made, §4.4). It makes no claim about real NEL wire objects, byte layouts, network timing, or committee incentives. It is not a production settlement proof.

Construction

State objects and rules

The engine (molecular_quarantine_test.py, an unmodified copy of the S02 survivor test) models settlement as chemistry under guard:

stateDiagram-v2
    [*] --> EVIDENCE
    EVIDENCE --> EVIDENCE: early settle rejected wrong_phase, consumes nothing
    EVIDENCE --> OPEN: session opens
    OPEN --> SETTLED: guarded reaction consumes EscrowNote + ExecutionRight + DisputeProof
    OPEN --> QUARANTINED: conflicting ChunkClaims coexist
    QUARANTINED --> QUARANTINED: absorbing while unrelated membranes settle
    SETTLED --> [*]

Figure 1 — Job-membrane state machine: a valid guarded reaction atomically consumes the job's typed triple {EscrowNote, ExecutionRight, DisputeProof} and settles; coexisting conflicting ChunkClaims quarantine only that membrane, which is absorbing while unrelated jobs settle; a wrong-phase submission is rejected without consuming state. MEASURED 2026-07-10.

NEL settlement mapping

nel_adapter.py re-expresses the fixture in the vocabulary of noosphere/05-neural-lane.md (N-TOKEN-STATE section map) and runs the engine's own enumeration and decision logic on it, unchanged:

Engine (S02)NEL (05-neural-lane.md)
job / membranePromptJob (§2.3) with per-job settlement membrane
reactant BUDGETEscrowNote — fee_escrow tranche note (§9.1)
reactant RIGHTExecutionRight — committee execution right
reactant PROOFDisputeProof — leaf receipt / dispute proof (§5)
favorable evidencematching ChunkClaim, 2-of-3 quorum (§2.5)
contrary evidenceconflicting ChunkClaim — replica mismatch (§3 rule 5)
quarantineper-job DIVERGED dispute freeze; unrelated jobs settle
settlementatomic consumption of the job's typed-ID triple

Fixture (14 events, 4 jobs): job-atlas receives one matching and one conflicting ChunkClaim → per-job DIVERGED freeze; job-borealis settles cleanly after a wrong-phase early submission is rejected without consumption; job-cinder and job-dryad attempt to settle by reusing borealis's already-consumed ExecutionRight and DisputeProof respectively.

flowchart TD
    ATLAS["job-atlas: matching + conflicting ChunkClaim"]
    BOR["job-borealis: valid submission"]
    CIN["job-cinder: replays borealis ExecutionRight"]
    DRY["job-dryad: replays borealis DisputeProof"]
    ATLAS --> QF["frozen DIVERGED<br/>quarantined_jobs = 1"]
    BOR --> TR["consumes its unique typed triple<br/>EscrowNote + ExecutionRight + DisputeProof"]
    TR --> ST["SETTLED<br/>mechanism_settled = 1"]
    CIN --> RC["refused: consumed_resource"]
    DRY --> RD["refused: consumed_resource"]
    RC --> DP["double_payouts = 0"]
    RD --> DP

Figure 2 — The four-job fixture: job-atlas is frozen by its contradiction, job-borealis settles by consuming its unique typed triple, and job-cinder/job-dryad are refused as consumed_resource when replaying borealis's already-consumed ExecutionRight and DisputeProof — double_payouts=0. MEASURED 2026-07-10.

The preserved first-run failure

The first implementation scoped consumed-resource identity by job. Adversarial jobs C and D reused job B's right and proof and received additional payouts — mechanism_settled=3, double_payouts=2, exit 1 (survivors/molecular_quarantine_first_run.log MEASURED, preserved run):

AssertionError: linearity invariant failed: right:right-b consumed by B and C; proof:proof-b consumed by B and D
EXIT_CODE=1

Revision: replace job-scoped consumption keys with one global set of typed, globally unique ReactantID values; a failed guard consumes nothing. Cross-job reuse now produces consumed_resource monitor rejections. The failure is evidence, not theater: it demonstrates that per-job quarantine without global resource identity is an exploitable design, which is precisely why the two rules ship as one mechanism.

Results

All values MEASURED 2026-07-10 by python nel_adapter.py, exit 0, gate_failures=0. Source: nel-quarantine-lab/README.md.

METRIC baseline_settled=0
METRIC mechanism_settled=1
METRIC quarantined_jobs=1
METRIC double_payouts=0
METRIC monitor_rejections=5
METRIC interleavings_enumerated=4324320
METRIC engine_fixture_interleavings=4324320
METRIC causal_structure_preserved=1
METRIC invalid_order_permutations=5
METRIC gate_failures=0
METRIC invariant_gate=1

Gate-by-gate (expected vs measured):

GateExpectedMeasured MEASURED 2026-07-10Verdict
baseline_settled00 (of 4 jobs)PASS
mechanism_settled11 (of 4 jobs; job-borealis)PASS
quarantined_jobs11 (of 4 jobs; job-atlas, frozen DIVERGED)PASS
double_payouts00 (across all 4,324,320 interleavings)PASS
early_settle_rejected_wrong_phasewrong_phase:evidencewrong_phase:evidence, proof not consumedPASS
cinder_execution_right_reuse_refusedTrueTrue (consumed_resource)PASS
dryad_dispute_proof_reuse_refusedTrueTrue (consumed_resource)PASS
rejection_classes{consumed_resource: 2, quarantined: 2, wrong_phase: 1}same (5/5 invalid orders classified)PASS
consumed_exactly_borealis_tripleTrueTrue (3/3 typed IDs, once each)PASS
causal_structure_preserved11 (4,324,320 = 4,324,320 extensions)PASS
interleavings_enumerated_nonzeroTrueTrue (4,324,320)PASS

Confluence is asserted at every reachable causal prefix of every one of the 4,324,320 linear extensions of the 14-event causal graph (engine logic, untouched by the adapter).

flowchart LR
    CC["conflicting ChunkClaim on job-atlas"]
    CC --> BL["baseline: global fail-stop"]
    CC --> MQ["mechanism: per-job quarantine"]
    BL --> BH["all 4 jobs halt<br/>baseline_settled = 0"]
    MQ --> MF["only job-atlas frozen"]
    MF --> MS["job-borealis settles<br/>mechanism_settled = 1"]

Figure 3 — Global fail-stop vs per-job quarantine on the same contradiction: the baseline halts all 4 jobs (baseline_settled=0); the mechanism freezes only job-atlas and lets job-borealis settle (mechanism_settled=1) — invariant across all 4,324,320/4,324,320 enumerated causal interleavings. MEASURED 2026-07-10.

For contrast, the preserved first run of the engine — before the global-typed-ID revision (molecular_quarantine_first_run.log MEASURED, preserved failing run):

MetricFirst run (job-scoped keys)Final (global typed IDs)
baseline_settled0 of 40 of 4
mechanism_settled3 of 4 (2 fraudulent)1 of 4
double_payouts20
monitor_rejections3 (no consumed_resource class)5 (2 consumed_resource)
interleavings_checked4,324,3204,324,320
exit code1 (linearity assertion failed)0

Falsifiers & kill thresholds

S02 / M-QUARANTINE-SETTLE is killed if any of the following is ever observed (invention-final.md §S02 falsifier; lab README kill threshold):

A production proposal is additionally killed if it substitutes the words "membrane," "molecule," or "paraconsistent" for an executable rule and explicit global resource identity — the words are not the mechanism.

Current status: 0 kill conditions triggered across 4,324,320/4,324,320 interleavings and 5/5 invalid orders MEASURED 2026-07-10.

Reproduction

cd nel-quarantine-lab
python nel_adapter.py

Exit 0 ⇔ all gates pass. Stdlib-only Python, deterministic (no seeds, no network). The engine it drives, molecular_quarantine_test.py, is an unmodified copy of international-lab/survivors/molecular_quarantine_test.py; the original survivor gate reproduces with python survivors/molecular_quarantine_test.py from international-lab. The preserved failing first run is international-lab/survivors/molecular_quarantine_first_run.log.

Related work

Program-internal.

Competitor dossiers (settlement and dispute posture surveyed in):

External anchors (named in the S02 genealogy, invention-final.md §S02; the mechanism is their composition, and removing them reduces S02 to a workflow engine — prior art at N1/N2):