The simplification convergence — 2026-09-04

Lane CONVERGE. Eleven branches off main@330bbfaba, merged onto main in the map's order (docs/design/SIMPLIFICATION_MAP_2026_09_04.md §3), one regeneration, one build-and-gate pass. Every number below was measured in the convergence worktree at the commit named beside it; the recipe for each count is stated where the count is. The public cut is tools/cut.sh after every merge that was green.

1. The merge order, with each merge's conflicts and their resolutions

The rule for every conflict: read both sides; a deletion a maker made stays deleted; a file a main-lane also touched keeps both facts; a generated file is regenerated, never hand-merged. Every merge ended with cargo check --workspace --offline green before its commit.

#branch (head)merge commitcutconflictsresolution
1simplify/generations (ed11ebbca)fe2071c7aca97a0c271: tools/frameguard/baseline.jsonmain's 3616e5e5 capture rows and commit; the branch's link count (11, direct-aot gone). Redone once on the orchestrator's goal commit that landed during the check.
2simplify/trading (11a962cf7)d01d6ef0679c51f7431: dealer/mod.rstrading's rename beside generations' deletion of v3_lifecycle.
3simplify/programs (c1a689692)3bee5f3f16618974d820band table = programs' emission (superset of generations' band-10 retirement); Cargo.toml members = both removals + the accelerator; Cargo.lock regenerated; baseline = main's rows for the seven links programs keeps, count 7 (the accelerator unbaselined until the recapture); blocked.json / substrates.json / census TARGETS / SHIPPED_LINKS / the release role tables = programs' eight-program rows over trading's and generations' deletions with main's ladder entries; the deleted checkpoint chain's program-test driver and the dealer-checkpoint tier stay deleted at the paths programs had renamed them to. One rename-merge gap: the new accelerator's selector still imported selector 9's magic from the old module names — re-pathed, the magic dropped from the family match.
—finding (c)6f2d1fc64293c09f4c—the strict release gate's five frame diagnostics in execute_authenticated_hot_v3 under hot-cu-profile: measured 3,840 plain / 3,904 profiled with -Zemit-stack-sizes; the projection keys boxed in an #[inline(never)] stage (plain 3,776, profiled 3,840, zero diagnostics), the profile's {:?} formatting moved out of the frame, the two loggers #[inline(never)], the ranges logged one per call.
4simplify/crates (2eed5ef31)73499583b0f382e9009756 modify/delete pairs where an earlier branch deleted a unit crates had moved: the deletion stands; twelve Rust files and four manifests crates had only re-pathed: main's side, then the crates tool's own sweep (merge_crates.py: rewrite_rust / rewrite_manifests / rewrite_path_strings per group — 83 Rust files, 16 manifests, 15 path strings); the root Cargo.toml = crates' members; every generated mirror and nested lock = crates', regenerated at the end; main's new submit_candidate_clause_v3.rs kept where directory-rename detection carried it.
5simplify/operators (5cc4a261d)bee9db34cad7fbf71010trading's and operators' deletions stand; four files operators rewrote and crates re-pathed: operators' side + the sweep; five references to Trading's Dealer modules by their old generation names re-pathed to trading's concept names.
6the parked merge (simplify/operators-merge-wip 32e9ed2cb), applied by its scriptef7e1c868a7fc68186—thirteen of the nineteen absorbed; six stay their own crates (below). Reds 1–4 the WIP named, discharged.
7simplify/formal (3e5b220c2)d60d625ddabb94695613trading's three DealerScenario emitters stay deleted; the root module list regenerated (135); the lakefile and README formal's; three moved guard tests and two check scripts take formal's normalising body at crates' paths; the seam baseline minus the qedsvm rows formal moved; the General V2 codec's promoted import re-pathed; the capability-manifest guard rewired to the unified emitter (formal had not).
8simplify/gates (8e9ebe280)73b99e911b0562e46713the shim, the moved baseline (7 links carried), the tier table carrying run.sh's earlier edits (the accelerator runners, the deleted release suites), EXPECTED_LINK_COUNT 8 (programs' change lived in the deleted frameguard.py).
9simplify/drivers (364ed9546)7080f404ee287f651d7five deletions stand; steps.tsv = drivers' eleven-column table with main's route-witness fact; the successor's lock regenerated.
—RECOVERY-4 (a), (b)ad4131b14a26d5686b—the founding boundary derives its headroom (the DCLTGMF3 census had refused every founding at HEAD); LocalMarketShapeV1.terminal_max_age_seconds (default None, byte-identical); blocked.json's AdvanceRecovery entry names the field as landed.
10simplify/clients (a2a883c61)bc5ef31bd4f31eb3df6862 deletions stand; package.json ×2 and the web capability surface clients' + the sweeps; the old genref driver's two edits carried into tools/gates/reference.py.
11simplify/docs (4060a387e)c9d01564b—2AGENTS.md = docs' 201 lines + four gate facts main/gates landed; GOAL.md = the 104-line index; main's 161 appended lines verbatim in docs/ledger/2026-09-04.md, three rows.
12simplify/architect (123faad77)c5fdf74db6398fc2980the map at the path the index cites.

Main moved once under the convergence (540ada0d9, the orchestrator's goal commit) and the first merge was redone on it; every later merge checked main's head before committing.

2. The six operator crates that stay, and why

crates/dclutch-svm-harness and programs/dclutch-claims-sbf/program-test/affine-batch are held on solana-program-test =4.2.1 (their manifests name the runtime panic the bump buys), and that cluster cannot resolve dclutch-operator's pins. With all nineteen absorbed, cargo metadata --offline refused the address-table interface at =3.2.0; with that dependency optional under a feature gating the twenty-two-module reach-closure of its users, it refused direct-ticket's solana-signature; with that optional too, compute-budget-interface's solana-instruction-error. A crate those workspaces link cannot live inside dclutch-operator, so the five planners they consume — market-open, market-retirement, resolution-core, product-runtime, provider-transport — stay out, and so does versioned-message, which provider-transport reaches under its own feature and which inside the operator would be a cycle. The script (tools/lane/merge-operator-crates.py) states this at its absorb list.

3. What the merge could not see, carried by hand

4. Restored

Nothing a maker deleted was restored. The one thing kept against a maker's intent is structural, not a restoration: the six operator crates above.

4.1 The live tree's uncommitted work

The live tree carried another lane's uncommitted work through the convergence (SERIES-5's two test files). Each fast-forward that would have overwritten a generated lock restored that lock to HEAD (every one is regenerated below); the two test files' hunks were re-applied with the crates branch's renamed paths (dclutch_capability_program_contract:: → dclutch_market::capability_program::, dclutch_release_set_contract:: → dclutch_registry::release_set::) and are dirty in the live tree again, for that lane. The untracked registered_terminal_artifacts_v4.rs moved, still untracked, from the direct-codec crate's directory to crates/dclutch-trading/src/ beside its tracked siblings; its use paths are the old crate names.

5. The line counts, before → after

One recipe on both sides, over git ls-files at the named commit: programs and crates count .rs; formal counts .lean; tools counts every tracked file minus Cargo.lock; apps and packages count .ts/.tsx/.mjs/.js; docs counts .md. The map's §0 figures (308k / 534k / 73k / 352k / 106k / 76k / 115k) are the same tree measured by hand a few hours earlier; the recipe is stated so the two columns below are one measurement.

domain330bbfabab41786d95delta
programs (.rs)305,806274,619−31,187
crates (.rs)529,894511,828−18,066
formal (.lean)72,14666,725−5,421
tools (tracked, no locks)386,896348,024−38,872
apps (.ts/.tsx/.mjs/.js)107,88361,326−46,557
packages (.ts/.tsx/.mjs/.js)75,72774,058−1,669
docs (.md)115,341130,074+14,733
every Cargo.lock272,509246,594−25,915
every tracked file1,993,4911,826,062−167,429

The same seven domains under the map's own recipe — every tracked .rs/.lean/.ts/.tsx/.mjs/.py/.sh/.md file under the domain, which is what the map's §0 figures were — at 330bbfaba and at 1ef14c5a1:

domain330bbfaba1ef14c5a1delta
programs308,362277,403−30,959
crates534,000515,896−18,104
formal73,28066,967−6,313
tools352,059315,551−36,508
apps105,67159,114−46,557
packages75,95874,287−1,671
docs115,341133,580+18,239
the seven together1,579,0291,445,994−133,035 (−8.4 %)

docs grows because 31,782 lines of root and top-level narrative now live verbatim under docs/ledger/ (the index that replaced them is 104 lines), and because the map and this document are new. The counts that are units, not lines: programs 12 → 8; crates under crates/ 94 → 33; root workspace members 108 → 45; lockfiles 71 → 61; Lean emitters 105 → 92, the lakefile 423 → 11 lines; GOAL.md 4,992 → 104; AGENTS.md 348 → 202; routes 164 → 148, refusal codes 357 → 344, registered bands 26 → 22; the web's files 547 → 348, its twins with the SDK 202 → 3. The crates line count moves only by the deletions (a merge moves bytes, it does not remove them); the map's 0.5–0.6 M target is the rewrites' — the successor as a caller of the operator above all — which no maker started (their reports say why).

6. The ELF table

Both sets built with the release recipe — cargo build-sbf --manifest-path programs/<pkg>/Cargo.toml -- --locked — on this host (cargo-build-sbf 4.0.0, platform-tools v1.53, rustc 1.89.0), the pre-swarm set in a detached worktree at 330bbfaba (twelve links, 0 frame diagnostics), the converged set at 018ea525f (eight links, 0 frame diagnostics). No link is byte-identical: the crates branch's renames alone would have moved .strtab, and every link's .text also moved — the band macro, the split, the folds, the feature lines and the crates' layout all reach every program through the shared crates. So every link owes rows, and cohort-16 carries every redeploy (cohort-16 has not deployed). The frame rows are the recapture in §7.

linkbase sha256 (330bbfaba)converged sha256 (018ea525f)bytesdisposition
dclutch_claims_sbf.so38633f4de349…3ffc2238196b22d71d…1,449,416 → 1,421,800moved (the Core-effect route gone, the band macro, the crate layout); cohort-16
dclutch_core_sbf.so64702fcf08cd…236e92ae9345…1,189,464 → 1,186,824moved (the band macro, the layout); cohort-16
dclutch_custody_sbf.so176f8007b002…fd3b123a938e…573,576 → 431,304moved (the Dealer reservation route gone); cohort-16
dclutch_registry_sbf.so83c9b0e89b21…98a1b45308d0…239,816 → 237,704moved (the band macro, the layout); cohort-16
dclutch_rent_sbf.so738d847981f6…2f145149ae57…143,736 → 143,152moved (the band macro, the layout); cohort-16
dclutch_resolution_proof_sbf.so7b1aab8f527a…f8bfca35ab8e…851,096 → 846,656moved (the alias collapse, the band macro, the layout); cohort-16
dclutch_trading_sbf.so654aeb599e69…46757cedce83…2,335,920 → 2,179,824moved (the checkpoint chain and selector 9 gone, the split, the boxed stage); cohort-16
dclutch_accelerator_sbf.so—a8cb8c8ab35f…— → newnew link (the three accelerators folded); cohort-16 seals its eight-entry Dealer set and its Registry pin
dclutch_dealer_accelerator_sbf.soe343889667c7…—deleted linknever on a chain
dclutch_direct_aot_sbf.so5ad10944924a…—deleted linknever shipped
dclutch_general_accelerator_sbf.sod36ed8b4f838…—foldedits band and codes byte-identical inside the accelerator
dclutch_product_runtime_v2_sbf.so345cf85e4fc5…—deleted linknever shipped
dclutch_series_shadow_sbf.so548dae10fb82…—foldednever on a chain

The eight converged links' full digests: accelerator a8cb8c8ab35fecd70615ba7bc0451bac95d6e7d4d61547154194d9b092be8f82, claims 38196b22d71d2814452ee751cb9263ac97c75a8f7be90b695541f2e64438a7c2, core 236e92ae9345af56476509b3b89c9442fb7980c36d672aca788d4c3d1f298986, custody fd3b123a938ec376bf612025b753133b3ec97fcc52110d7dd2f889d79afc1ded, registry 98a1b45308d050378769a6d56eb1913bfe434452788d6b318c5db93e5c076d98, rent 2f145149ae575ba2180a0fa8d118dd098597620e333597bd5509cb4afe4fbcfc, resolution-proof f8bfca35ab8efaebfbce148368a1bb98ae9a58e378abadd671e5a8754b08b38f, trading 46757cedce83691cfd3fd85b1f551ca8d7d8dc7dcaab008b1ac64fa888ed4a01. The base set's full digests lived in the convergence scratchpad, which the host's fault of 2026-09-05 cleared with the rest of /private/tmp; the twelve-hex prefixes above stand, and the set is rebuilt from 330bbfaba by the same recipe. The eight converged ELFs are the release recipe's output and the cohort-16 candidate builds them again from the cut. hbox's build of the same tree (Linux x86_64, the same cargo-build-sbf 4.0.0 / platform-tools v1.53 / rustc 1.89.0) links a Trading ELF of 2753e3bf08a5…, not the laptop's 46757cedce83…: the host reaches the ELF, which is why the release builder is one named artifact and these digests are this host's.

7. The gates, with their seconds

Measured in the convergence worktree; the tree is 9f5e0aa70 (the frames baseline at 018ea525f, after which no Rust moved).

gateverdictsecondsnote
cargo check --workspace --offline after each mergegreen ×12128 (cold) … 2–1738 warnings, the pre-existing never-used items the makers named
cargo metadata --locked --offline, every workspacegreen, 61 of 6174 (the locks tier)regenerated once
lake buildgreen51 cold, 3 incrementalthe band-population theorem corrected first
tools/gate emissionPASS291 generated / 91 guarded / 71 guards, 0 drift; pins settled
tools/gate guards (every guard for real)62 of 71 ok in the one full run; the 9 reds repaired and each re-run green alone230§3 names them; the full tier was not re-run after
tools/gate fmtPASS6367 swept files formatted with the pinned rustfmt; 8 baseline lines dropped
tools/gate seamPASS5330 rows carried, 68 retired
tools/gate census (--check-unique)PASS8 warm / 44 cold148 routes, 344 codes, 22 bands, 0 unclassified
tools/gate budgets, selftestPASS0, 21
tools/gate releasered in the tier's last run (one fixture path), the suite green alone after12test_successor_campaign_pack.py
tools/gate commandsFAILED118 rows: dclutch-terminal --help names none of its verbs in a fresh checkout (its dist/ unbuilt — the gates report found the same at main); the four rows naming the deleted runner were repaired
tools/gate reference --check --convergefixpoint on the first pass54at b41786d95
tools/gate framesPASS318against the recaptured baseline (captures 212 s and 244 s, identical)
SDK: tsc, eslint, vitestclean, clean, 892 passed / 20 skipped / 0 failed6687 files
web: tsc, eslint, vitestclean, clean, 1,037 passed / 29 skipped / 4 failed in 4 files301§8 names them
the gauntlet tiersnot run—§8

The cuts, one per green merge: ca97a0c27, 79c51f743, 6618974d8, 293c09f4c, 0f382e900, ad7fbf710, a7fc68186, abb946956, b0562e467, e287f651d, a26d5686b, 4f31eb3df, 6398fc298; the wrapper's workflow commit c21451344; then 05af32c39 and f7a834022 for the evidence and the ledger, and the wrapper's 170d913ff (the six run.sh mentions its prose kept name tools/gate). The final cut follows CONVERGE-2's commits.

7.2 The gates again at 1ef14c5a1, and what each red was

Measured by CONVERGE-2 on 2026-09-05 in a clean detached worktree at 1ef14c5a1 (the tree after the evidence and the ledger landed; no Rust moved between 9f5e0aa70 and it), warm target, one gate at a time.

gateverdictsecondswhat the red was, and what followed
tools/gate cheap8 of 9 green72selftest 9, census 4, emission 0, budgets 0, fmt 3, locks 20, seam 28, release 4 (green inside the tier since 9f5e0aa70); commands FAILED in 0 — the dclutch-terminal --help row, as at main
reference --check --convergefixpoint on the first pass401ef14c5a1 is the fixpoint
sbomPASS17no drift after 67b13378a's lock line
guardsPASS323the full tier; the nine §3 repaired hold
twinsFAILED0"no test files found": the tier ran lib/twinIdentity.test.ts against tools/twins/classification.mjs, both deleted by the clients maker with the twin arrangement (dcaba4770, replacement none). The tier goes — 15c2f20b6
clippyFAILED112dclutch-product red outside the debt table: four indexing_slicing sites in the merged svm reader's bump pairs, and three more in its tests behind the lib errors. The record index is typed and the tests follow — c666a9976; the package green under the gate's flags; the tier again: PASS in 8 s at 5e7276b2b — 43 members: 29 clean, 4 red on their debt rows (claims-sbf, custody-sbf, trading, resolution-proof-sbf), 10 never reached behind those four. Reaching the tree took four never-reached packages in a chain (product → source → the resolution operator → claims: c666a9976, b2d6660a0, 67750c22a, 5e7276b2b), and the ratchet's own rule deleted three debt rows for packages it cannot reach (chain-bundle-builder, operator, trading-sbf) — a measured row is written when each is reached
webFAILED40the web vitest: 3 failed in 4 files, 1,028 passed, 29 skipped (capabilitySelectedGate at load, one capabilityPhaseGate expectation, explorerCoverage's record survey, tradeFlowRefusals' wall wording — the two explorer route rows 9f5e0aa70 repaired are green); the SDK vitest 859 passed / 20 skipped / 0 failed; the liveness check 2 of 2
abiPASS117
journeyFAILED184two workspaces. The journey campaign's test target: three 9-argument calls made with 8 and ProviderExecuteSnapshotV3 without recovery_ladder — the ladder's own commits (6a3079454, 61706bc9a, 8875255a5; RECOVERY-4, on main after the base), the journey's #[path] mirror of the successor untouched since. tools/fractional-exterior: the one regeneration resolved solana-keypair 3.1.2 and solana-signature 3.5.2 beside 2.1.0 where the base's stale lock had neither, and five8's DecodeError has no std::error::Error under the features that graph enables — not a feature: the workspace pins solana-sdk =2.1.0 beside the operator's 3.0 line, the two lines share five8 1.0.0, and the lock binds it to the 2.1 line's five8_core 0.1.2 (no Error impl) while solana-keypair 3.1.2 needs 1.0.0's; the resolver refuses to rebind it under the 2.1 pin. At the base its lock did not resolve under --locked at all (the SBOM census of 2026-09-04 lists it), so no gate has compiled it since. Fractional-exterior on the 3.0 line is the fix — the drivers column
root-targetsFAILED0three orphaned rows — trading's dealer_scenario_profile_vector and dealer_v3_composer, the operator's series_projected_outer_packet_v2, all deleted units — and two unwired ladder tests (funded_rent_recovery_v1 5 passed, funding_ledger_rent_parameter_v1 4 passed; 0.00 s each). The rows follow — 52b84b369. The tier then found three targets that did not compile or did not pass: the claims program's test module had lost the crate-root identity helper 2418e6173 deleted with the Core-effect route (92905bd34: the helper is the test module's own); the bundle-builder's span test compared against a Vec::new() whose element type serde_json made ambiguous once the regeneration put it in that graph, and the two browser wire vectors read the web fixtures the clients maker deleted as twins (e907315ae: Vec::<u32>, and the SDK fixtures the emission gate pins). PASS in 396 s at e907315ae — build 121 s, 73 targets executed in 237 s inside the 280 s backstop
framesPASS318at 679484ea1; nothing the links read moved after

7.3 The gauntlet, on hbox

Each tier at the named commit under swarm-build (MemoryMax 32 G) on hbox — Linux x86_64, cargo-build-sbf 4.0.0, platform-tools v1.53, rustc 1.89.0 — the host the Token-2022 fixture is canonical on.

tierverdictsecondsnote
tools/gate suites at 1ef14c5a111 of 15 green1,929green: custody, claims, claims-position, claims-fractional, sparse-chain, affine-batch, signed-delta, userposition, registry, fee2tx, postjoin. The four reds are below.
tier 1, tools/gauntlet/run.sh --mode full at 1ef14c5a1NOT green97924 witnesses checked, 0 failed; 36 routes executed, 1 refused-only, 7 of 344 refusal codes observed; the census refused to record coverage over two binding problems that are one fact: the founding's pre-fund transaction has been labelled "pre-fund the founding's program-allocated accounts" since 266c1d687 added the escrow, and tier1/bindings.json still said "…five…". The binding follows its producer — cccf4d721. Again at cccf4d721: green at cccf4d721 (1,075 s): 24 witnesses checked, 0 failed; 36 routes executed, 1 refused-only, 7 of 344 refusal codes observed; the census records its coverage with no binding problem
General hot, run-general-hot.sh --atred at 1ef14c5a1, green at cccf4d721154, then 216every test read dclutch_general_accelerator_sbf.so from SBF_OUT_DIR, the link the fold renamed, though the runner has built dclutch_accelerator_sbf since. The five names follow the link (cccf4d721): 5 of 5 — open-batch 662,882 CU, close-batch-seal 602,147, close-batch 641,231, second-open-batch 658,382, submit-candidate-assembled 691,110, submit-candidate-seal 711,026; the foreign entry refused 0x4015 at 116,988, the out-of-sequence close 0x4002 at 40,727
hot-cu, run-hot-cu.sh --probe (a diagnostic by the runner's own banner, not release evidence)0 of 20 at 1ef14c5a1168the continuation floor: twenty seeds at 91,039 / 94,039 / 97,039 / 100,039 / 106,039, every residual exactly 554 below the pinned 91,593 on the clean 3,000 grid, zero jitter — the outer got cheaper with the split and the boxed stage. The floor moves — 44e0cf880. Again at 44e0cf880: PASS 20 of 20, probe MEAN 1,201,700 CU (292 s) — a probe, with no checked all-13 provenance, so not an M-61 quote

The four suite reds at 1ef14c5a1, with their controls (the same runner at 330bbfaba, and at 3bee5f3f1 — after the programs merge, before the crates merge):

7.1 The frames, function by function

The recaptured baseline against the pre-swarm one (330bbfaba's tools/frameguard/baseline.json: twelve links, 1,888 functions, 1,973 frames; 018ea525f's tools/gates/frames-baseline.json: eight links, 1,661 functions, 1,743 frames), every function keyed by its demangled symbol (rustfilt, the capture's <hash> placeholders substituted; no two symbols demangled alike). Of the 1,888:

The deepest frame is unchanged: authenticate_strategy_from_sealed_boxed_v3 at 3,968 under the 4,096 bound. The diff's recipe: demangle both baselines, match exact names, then names modulo crate root, then Type::method, then a bare method name only where it is unique on both sides.

8. What is owed

Each item names its column. Nothing here is hidden behind a green.

---

ADDENDUM, 2026-09-05, lane SUITES-2: §7.3's "11 of 15" was fifteen coin tosses

§7.3's suites row reads 11 of 15 green and §8 hangs four reds off it. That row is not a measurement of fifteen suites. It is one draw of each, and tools/gate suites at the time ran each row exactly once, so every verdict in it — green and red alike — was a single toss of whatever distribution that row has.

For at least one row the distribution was near-even. claims-lifecycle's real_token_2022_lifecycle_refuses_ata_substitution_and_rolls_back_every_late_failure passed about half its draws from d6c4dea63 (2026-08-27) onward, against one binary and one ELF: the honest RetireCoordinate is byte-identical to the nonzero-supply hostile that precedes it, so on the same recent blockhash it signed to the same signature and the bank refused it as AlreadyProcessed without running the program, and ProgramTest registers blockhashes on a wall-clock timer. Which side of that race the row landed on decided this table's cell. docs/evidence/CLAIMS_LIFECYCLE_LAYOUT_WALL_2026_09_05.md, second addendum, carries the draws.

So: the count stands as a count of one draw each, and stands for nothing more. No cell of it distinguishes "green" from "green about half the time", and §8's four reds were each also one toss — three of them were nonetheless convicted at their authors by fb36992d7 with controls at two commits, so those survive; the claims-lifecycle cell does not.

The instrument is fixed rather than the number restated. tools/gate suites now draws each row DCLUTCH_GATE_SUITE_DRAWS times (3 by default), calls a row green only if every draw is, and reports a row whose draws disagree as NONDETERMINISTIC by name — never folded into green, never into red.

Re-measured on the same host, three draws per row: 15 of 15 green, 45 runs, every one of them a pass — 16m59s for the thirteen rows that need no extra fixture, plus 72s for claims-position and claims-fractional with TOKEN_2022_SO supplied. Nothing is NONDETERMINISTIC and nothing is red.

The measured tree is a git archive export of 9fe4506f2 carrying this lane's own changes and nothing else — 5c534b016, b03b1c26e and cda85ef47's files copied in — not a clean export of cda85ef47, whose ancestry includes three other lanes' commits from the same afternoon. It is exactly the tree the row under repair was measured on before and after, and no file another lane committed that day is on any of these fifteen runners' paths; a clean export of cda85ef47 is what a cut would measure, and this is not that.