Tyrell shared runtime first migration
Implemented and verified a source-only first migration slice that makes Tyrell's SQLite compatibility layer use ecs0lib's canonical persistence values and rows at runtime, reducing duplicate persistence representation without changing the proven synchronous WAL/pool contract or any installed runtime.
Scope
- Host:
rdmsm4xonly. - Project: Tyrell, Production.
- Ticket:
FEAT-20260902-02, child ofEPIC-20260831-02. - Isolated worktree:
/Users/richh/dev/_worktrees/tyrell-shared-runtime-migration-20260902. - Branch:
codex/tyrell-shared-runtime-migration-20260902. - Base: integrated Build 8 commit
609ef4e391d24f180b74ca105b4ae5b78fd39c01. - Source commit:
982b951dcb723c67b73995e9fcc9e36d37d0f7ed. - Shared library inspected read-only:
/Users/richh/dev/lib/ecs0libat90c3c6d. - The separately owned active Build 8 worktree advanced to
835345eduring this work; it was not edited. The canonical dirty Tyrell checkout and ownerless ecs0lib files were also preserved.
Files changed
/Users/richh/dev/_worktrees/tyrell-shared-runtime-migration-20260902/Sources/TyrellCore/TyrellSQLite.swiftnow normalizes bound arguments throughECS0Persistence.DatabaseValue; query results storeECS0Persistence.DatabaseRowas their sole representation. The parallel[Any?]row payload, local case-folded index, and duplicate numeric/boolean/blob conversion branches were removed./Users/richh/dev/_worktrees/tyrell-shared-runtime-migration-20260902/Tests/TyrellCoreTests/TyrellSQLiteSharedPersistenceTests.swiftadds two tests proving real SQLite round trips and compatibility conversions use the shared types./Users/richh/dev/_worktrees/tyrell-shared-runtime-migration-20260902/SESSION-STATE.mdrecords exact provenance, status, evidence, deferrals, next action, and preserved state./Users/richh/dev/_handoff/tyrell-shared-runtime-migration.mdmaps adopted and deferred persistence, networking, and logging modules, including the gates for safe later migrations./Users/richh/.agent-coordination/checkins/codex-rdmsm4x-tyrell-shared-runtime-migration-20260902.jsonrecords ownership and completion state./Users/richh/dev/issues/resolved/FEAT-20260902-02-tyrell-shared-runtime-migration-first-pr.md,/Users/richh/Desktop/issues/tickets/FEAT-20260902-02.html, and/Users/richh/dev/sites/dev.ecs0.net/wiki/issues/FEAT-20260902-02.htmlare the resolved ticket and generated ticket views containing the same source and verification evidence.- This changelog file and its Apple Notes copy are the durable local-state record.
Commands and verification evidence
- Baseline
swift test: exit 0; 184 XCTest plus 384 Swift Testing equals 568 tests. - Focused
swift test --filter TyrellSQLiteSharedPersistence: exit 0; both new tests passed against real SQLite values for text, Int32, real, boolean, blob, and optional null. - Post-change
swift test: exit 0; 184 XCTest plus 386 Swift Testing equals 570 tests. /Users/richh/dev/lib/agentkit/lib/verify.zshcount gate:agentkit_assert_no_test_drop 568 570 tyrell-full-suitereturnedOK tyrell-full-suite: 568 -> 570.swift build: exit 0.swift build -c release --product tyrelld: exit 0, production build completed in 29.65 seconds.git diff --checkand committed-object whitespace check: exit 0.- Final isolated worktree status: clean.
- Existing compiler warnings and UniversalHID duplicate-class diagnostics were observed in both the baseline environment and verification runs; no test or build failed.
ticket resolve FEAT-20260902-02 ...: resolved the source-delivery ticket with commit, test, build, lifecycle-boundary, and handoff evidence.
Design decision and outstanding owner actions
Only the representation-level persistence slice was adopted.
ECS0Database/migrator replacement is deferred because its
actor/async model does not yet match Tyrell's synchronous state-store
and measured mixed-load WAL pool contract. The raw control-plane socket
remains because it deliberately survives cooperative-executor
saturation. Broader shared logging remains deferred because current
shared loggers mark messages public and retain or hardcode metadata in
ways that do not meet Tyrell privacy rules.
The source is not integrated, signed, installed, canaried, deployed,
or fleet-accepted. An integration owner must review/cherry-pick
982b951 onto the current Build 8 successor, account for the
active 835345e delta, and rerun at least the 570-test
suite. Normal signing/canary/fleet rollout remains a separate lifecycle.
The shared iCloud PROJECTS.md was not edited because older
unresolved check-ins still claim that registry; the milestone is instead
recorded in the ticket, session state, handoff, coordination bus,
changelog, and Notes.
Backup and undo
The Git commit and isolated branch are the recoverable source record;
no separate database backup was needed because no production database
was opened or migrated. Before integration, undo by deleting the
isolated worktree/branch only after preserving the commit if desired.
After integration, revert commit 982b951. There is no
runtime/data rollback because no installed source, daemon, schema, or
data changed.