Measured. P1 refuted: 1 of 400 H1 trials diverged from R0 (95% Wilson upper bound 1.40%). P2 supported: 0 silent-inert and 0 false-inactive kernel configurations of 120. All 5 validity gates passed, so the record is informative. The counted run was 40 window-held blocks from 2026-10-08T13:06:23.112Z to 2026-10-09T05:24:34.706Z, judged against the pre-registration with its frozen analysis, unchanged.

The kernel is our kernel implementing Cordis semantics: a small subset, written here, that uses Cordis (github.com/cordiverse/cordis) as the semantic reference only. It is not a dependency, and nothing here claims Cordis's guarantees. The kernel is pinned by sha256 in the file map.

The verdict per claim

ClaimAs pre-registeredVerdictRefuted by
P1H1 diverges from R0 in 0 of n = 400 trials.refutedAny single divergence.
P2On the blind-authored corpus of 120 configurations, the kernel's census shows 0 silent-inert components and 0 false-inactive components.supportedAny silent-inert or false-inactive kernel configuration among the 120.

If any gate fails, the result is published as uninformative, never as a pass. The verdict words are the frozen analysis's own (analysis/analyse.mjs): supported, refuted, underpowered or uninformative.

P1, equivalence in time

1 of 400 H1 trials had at least one divergence from R0; the 95% Wilson upper bound on the divergence rate is 1.40% (0.014023). The record's rule is "Any single divergence.", so P1 is refuted. Every divergent trial, as recorded:

Diagnosis of the one divergent trial (block 29, trial 291), not a re-classification: the pre-registered verdict stands. What the records show. Reconstructed from the seed, trial 291 enters with memo-cache (maxEntries 256), yesno-gate and mlx.model on pin B, in that load order; step 5 swaps mlx.model to pin A; steps 6, 7 and 8 evaluate c024, c058 and c021 on that unchanged set. H1 answered all three through yesno-gate. For c024, R0's fresh process (cache key 3f0dfcf0c8aa…, written 01:03:50.79Z) had every loaded component active and answered REJECT, p = 0.651355, matching H1. For c058 (e12c56e6e725…, 01:03:51.98Z) and c021 (b99d4a820b1f…, 01:03:52.24Z), on the same loaded set, R0's fresh process ended with mlx.model not active, memo-cache and yesno-gate inactive behind it (both inject mlx), no mlxPin and no decisions; that is the recorded R0 output of {}. H1 had passed its own activation of mlx.model at the step-5 swap. So the two arms judged activation at different instants and only R0's attempt failed: on these two steps R0 is not a valid reference, rather than H1 carrying a state a fresh process would not. Bounded. Over the whole run, 10 of the 13,627 cached R0 outputs with mlx.model in the loaded set have it not active, all inside block 29 between 01:03:18Z and 01:04:52Z. The other 8 had no yesno-gate loaded, so their decisions (lint and grep only) could not differ, and eval steps compare decisions only. None of the 10 keys fell in the seeded 10% R0 re-run or the restart pick (a fact of the draw, not a gate failure). Why it failed is inferred, not recorded: R0 prints the kernel projection, which reports a failed component as inactive and drops its reason, and exits 0, so the failure was cached as an answer. The failed outputs were written 0.13 to 0.25 s apart, against a median of 2.7 s (n = 8,008) before a fresh R0 output for an evaluation through yesno-gate and mlx.model, which puts the failure before the MLX child started. All 10 are on pin A (llama-3.2-3b, the larger model), and each of the three clusters (01:03:18Z, 01:03:51Z, 01:04:52Z) begins right after a fresh R0 process had loaded pin A successfully and exited. That is most consistent with the memory gate in mlx.model's apply refusing while the memory of the previous R0 process's child was not yet reclaimed, beside H1's own resident pin-A child. Block 29's lease sidecar (21 samples, 0 breaches) read 53%, 56% and 56% free at 01:01:59Z, 01:03:01Z and 01:04:03Z, near the gate's 50% floor. Undetermined from the records: the gate's reading and its refusal at those instants, which no record kept.

P2, soundness in space

P2 pre-computed before registration: a disclosure, not a prediction.

Kernel census on the 120 blind-authored configurations (60 faulty): 0 silent-inert, 0 false-inactive, 0 mislabelled; correct on 120 of 120. The unchanged baseline filter: correct on 60 of 120, with 44 silent-inert, 16 silent-dropped and 0 false-inactive. McNemar on kernel-correct against baseline-correct: b = 60, c = 0, exact two-sided p = 1.734723475976807e-18 (secondary; it decides nothing). P2 is supported.

P2 has no seed and is deterministic, so its outcome was computable before this record. It was computed once, before registration: while validating the pipeline on the real corpus, the instrument author ran it a single time, with output to the terminal only and nothing committed. P2 is registered for the record. Its evidential weight rests on the blind authorship of the 120 configurations (written by a history-free agent from the corpus spec alone, fence audit above) and on the real, unmodified filter baseline, not on any claim about an unseen outcome. Only P1 (seeded from the merge commit of this record) and the validity gates are predictive: they test outcomes that are unknown when this record is frozen.

Secondary, deciding nothing

Secondary results decide nothing; they are reported as they come out. P1 and P2 only; S1-S3 decide nothing.

Validity gates

GateResultDetail
k1-teethpassK1 detected 12/12 (needs >= 11/12)
r0-rerunpassseeded R0 re-run: 1907/1907 byte-identical
r0-restartpassR0 self-equivalent across a restart
pinspasspins verified and the kernel sha in the prereg file map
leasespass40/40 measured blocks held a window lease

Disclosures

What this does not establish

Provenance

This page is rendered from results.json, the committed results record at results/composable-harness/results.json, whose sha256 is 75f8ca56012e0765c33f50af9b72f5b0ead0b89a051ca28d20e88a47ae907951. That record is the output of the frozen experiments/composable-harness/analysis/analyse.mjs (sha256 436b434ff3ef59fa082ea1f991a1e52181a2e1480ec7e55c2e086354cea0394d) over the 50 committed raw files under runs/composable-harness/counted/, each listed in it with its sha256. A repository check recomputes it from those files and refuses any difference, and binds the raw files to the manifest taken after the last block (digest 5331ac78cd575a41d986b50642474d59477fe936746a449c099b1d39f0e09d81). The pre-registration it is judged against is experiments/composable-harness/preregistration.json (sha256 d25f7f3fe9f802b19ed5caa9a437126109b20f83fe993086854a20bb902e7e7e), published by merge 91de325de980493291d17237387aac6d2c656b7c; seed 32e343ca3a4e46c007abbdd09ee5e406a1cb4e7f452aad67587812f36b96a7c5.