Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260903-1222-task29-ecs0lib-loose-blob-supersession

rdmsm4x — TASK-20260903-29: eight recovered ECS0lib loose-only blobs reviewed and superseded

2026-09-03 12:15–12:23 EDT · host rdmsm4x · claude@rdmsm4x, Claude Code session d8cbb048-285f-4282-9b37-c0c8de964d11 (Opus 5).

Summary. Took owner-directed ownership of TASK-20260903-29 from codex@rdmpw3275m, verified every inherited claim independently, and closed the eight recovered ECS0lib blobs as superseded by canonical main 8805372 with zero salvageable content. The blobs are now permanently reachable and the decision is documented in-tree. Canonical main was never modified.

Scope

Single host rdmsm4x. Repository ~/dev/lib/ecs0lib, isolated worktree ~/dev/_worktrees/ecs0lib-task-20260903-29-recovery-review on branch recovery/task-20260903-29-rdmpw3275m-loose-blobs. No other host touched.

What changed

Path Change
docs/RECOVERY-TASK-20260903-29.md New, committed as fa57701 on the recovery branch — the evidence-backed supersession record.
ticket TASK-20260903-29 Disposition comment appended.
fleet bus Two acknowledgements + one checkpoint message sent.

Nothing else was written. Canonical main remained 8805372710261de772577fbe9a44f6eff445a9e3 throughout, carrying only its pre-existing untracked .swiftpm/. SESSION-STATE.md in the canonical tree was deliberately not edited, to honor the "canonical main untouched until review" constraint; the durable state lives in the ticket and in the committed doc instead.

Finding

The eight blobs were never a divergent lineage. They are automated snapshots of uncommitted working-tree state, found in dangling commits 5d19ea36 (backup snapshot 20260902-0330) and 0c6ff02e (backup snapshot 20260903-0330). Main's c702cef + b976255, merged as 8805372, are the reviewed and corrected successor of that same in-progress work.

Every delta is main replacing an unproven inference with a measured claim: source build implying optimized; any ARM64 bottle implying optimized; Homebrew used_options recorded as compiler-flag evidence; unknown Apple CPU labeled .appleSiliconM1; ARM64/NEON treated as proof of Apple vendor; AMX inferred from isAppleSilicon.

Two decisive reasons not to restore the draft:

  1. It deletes testGenericARMIsNotAssumedToBeAppleSilicon and testUnknownAppleSiliconIsNotMislabeledM1OrAMX (79 test functions on main vs 77) and adds none.
  2. It hard-codes physicalCores == 28 / logicalThreads == 56 (Xeon W-3275M) under a guard that also matches rdmpw3265m (Xeon W-3265M, 24C/48T), so it would fail on that host. b976255 relaxed exactly this "to support all fleet Cascade Lake core counts".

Commands run (evidence)

shasum -a 256 <recovery packet SHA256SUMS>          # 8a1773f0…d72f matched, 7797 lines
shasum -a 256 <prior worker recovered-eight-tsan.log> # 4c1d5021…0240 matched
git show HEAD:<each of 8 paths> | shasum -a 256      # all 8 byte-identical to packet
git diff 8805372 HEAD -- <8 paths>                   # semantic review
git fsck --no-progress | grep 'dangling commit'      # provenance: 5d19ea36, 0c6ff02e
git log --all --find-object=<blob>                   # only 0eb9206 -> loose-only before
swift build; swift test --sanitize=thread            # recovery branch
git worktree add --detach /tmp/… 8805372; swift test # main, disposable worktree
git worktree remove --force /tmp/…                   # cleaned up

Verification results

Method correction

The first gate run piped swift test through tail, which truncated the log and made the captured exit code belong to tail rather than to swift test — the exact trap the standing rules name. Re-run with direct capture and unpiped exit codes; all figures above come from the corrected run.

Observation for a separate ticket

On real Apple M4 Max hardware hw.optional.amx and hw.optional.arm.FEAT_Matrix are both absent (sysctl: unknown oid), so main reports AMX as not present on Apple Silicon that physically has it. isAppleSilicon still resolves correctly via the "Apple M4 Max" brand string, so there is no detection regression. Deliberate evidence-qualified conservatism; recorded, not "fixed".

Backups / how to undo

Nothing was destroyed, so no backup was required. The recovery packet at ~/dev/_migration/conflicts/rdmpw3275m-20260903-ecs0lib-loose-object-recovery/ is untouched and remains the byte-for-byte source of truth. To undo the only write: git revert fa57701 (or delete the branch, though that would return the eight blobs to loose-only, unreachable status — do not).

Outstanding owner actions

  1. Decide whether to push recovery/task-20260903-29-rdmpw3275m-loose-blobs to origin. Recommended, so off-machine durability stops depending on this Mac. Not done unilaterally because it is an outward-facing publish. It touches no existing ref and is not a merge.
  2. Do not merge the preservation branch into main.
  3. Optional: open a ticket for the AMX under-report observation above.