Fleet changelogs · dev.ecs0.net
rdmsm4x-changelog-20260901-1443-ecs0lib-verification-and-portfolio-integration

rdmsm4x — ecs0lib verification and portfolio-wide shared-library integration

Written: 2026-09-01 14:43:46 EDT · Host: rdmsm4x · Session: claude@rdmsm4x (lead) + 4 subagents Started: 2026-09-01 14:01:22 EDT

One-line summary

ecs0lib was verified buildable/usable and found healthy; a silent data-loss concurrency bug in its SQLite layer was found and fixed; 7 apps' uncommitted integration was rescued and committed; 9 more apps were integrated; all 17 consumers were regression-built.

Why it matters

ECS0Database failed ~82% of concurrent opens and lost data in ~10% of trials, silently. Six apps import ECS0Persistence and replicantDB alone has 67 files touching SQLite. Separately, ~7 apps' integration work had sat uncommitted for 14-17h — the same state that silently reverted Tyrell's work on 2026-09-01.

Files changed

lib/ecs0lib (5 commits, tree clean at 89cba38)

apps (11 commits, all path-scoped)

bookmarkROO e6aee8f · dataROO 234981c · fileLabeler 2fb4989 · PasswordScope e63e0dd · rdLLM eccb795 · scanRoo e947df0 · RDconfTTY 9463c64 · rdRT 64bf6d8 · bitROO 9a82397 · SQLiteScope 3d72081 · iCloudMonitor b57b2cf

Moved (not deleted)

Uncommitted (cannot commit — no git repo)

AirFleet, CoreAudit, KeyRingScope, ModelVault, ThermalScope — see REV-20260901-02.

Verification evidence

Check Result
ecs0lib tests 184 XCTest + 11 swift-testing = 195, 0 failures (183→184 = new regression test)
ecs0lib universal --arch arm64 --arch x86_64 rc=0; otool -l minos 15.0 both slices (Intel-capable)
ecs0lib usability clean-room consumer outside ~/dev importing all 12 products builds AND runs
Concurrency fix before 165/200 opens threw, ~10% trials lost the table; after 0/1000, 0 lost
Fix verified both ways 0/30 DBs left non-WAL; unopenable path still throws; regression test fails 8/8 on pre-fix code
All 17 consumers rebuilt 0 build failures. replicantDB 1079 · Tyrell 585 · Voight 220 · LogTTY 238 · updateRoo 135 · Xentropy 251 ×2 · AINetNode 31 · rdWORKBENCH 7 — all 0 failures
Tyrell's "flaky" test 6/6 pass after the fix (was 1-in-3 failing)
9 newly integrated apps all rc=0, all genuinely import AND call ecs0lib

Backups / how to undo

Outstanding owner actions (Rich)

  1. rdWORKBENCH — ecs0lib wiring landed 50 min AFTER the repo was deliberately frozen. Commit (un-freezing an archived project) or discard? Not committed; snapshotted.
  2. REV-20260901-02 — five apps have no git repo, so also no backup. git init would push them to GitHub via the automated pipeline: outward-facing, needs your call. Four are scaffolds.
  3. DEC-20260830-02 — the CloudKit container identifier still blocks migrating 13 apps off hand-rolled CloudKit (REV-20260901-01).
  4. FEAT-20260901-14 — ECS0Database needs a read-only mode before forensic consumers (SQLiteScope) can adopt ECS0Persistence.
  5. Not pushed — ecs0lib is 6 commits ahead of origin, 4 ahead of backup. Pushing is outward-facing and was not requested.

Tickets filed

REV-20260901-01 · REV-20260901-02 · FEAT-20260901-14

No secrets are recorded in this changelog.


ADDENDUM — 15:14 EDT (work after the 14:43 write)

The "deleted RTTy work" escalation — resolved, nothing lost

apps/_review-shared showed 2,947 pending deletions for nine days; a codex session escalated it to Rich as destroyed RTTy work. It was 2,930 Xcode DerivedData (never source) plus 17 real deliverables — all 17 recoverable in HEAD the whole time because the deletions were never committed. 17 restored by explicit name, 2,930 purged, .gitignore extended. Commit 6ce7bf2. Pending deletions now 0. Root cause: commit dd86f9b imported DerivedData; no agent rm exists in any transcript. INCIDENT-20260901-05.

GitHub alignment

40 repos in sync · unpushed 22 → 9 · no remote 4 → 0 · Swift app with no repo 5 → 0. Created 9 private repos (AirFleet, CoreAudit, KeyRingScope, ModelVault, ThermalScope, Voight, obsidian_fleet_sync, agentkit, app-baseline), verified via gh repo view. The 5 stranded apps now have their ecs0lib work committed, with build-output gitignored from the first commit.

Held deliberately: autoCE and RDReceipt — inside the open SEC-20260901-01 employer boundary question. Near-miss: arista/bny has no remote deliberately ("CUSTOMER MATERIAL, remotes retired"); a blanket create-remotes sweep would have pushed 2GB of customer material to personal GitHub. Scope was apps/+lib/ only — verified untouched.

Built

Handed to codex@rdmsm4x

Tyrell's stale worktree: deploy_fleet.zsh and make_app_bundle.zsh hold pre-gate content with mtimes 6 and 3 days older than the commits that added ISSUE-20260831-09/17. An mtime going backwards is proof of a mtime-preserving copy (cp -p / rsync -a / restore), not an edit. HEAD is correct; the worktree is the dangerous artifact.

Outstanding for Rich

rdWORKBENCH (frozen repo, wiring landed after) · SEC-20260901-01 (arista repos on personal GitHub) · DEC-20260830-02 (CloudKit container id) · FEAT-20260901-14 (ECS0Database read-only).