Repository navigation
fix: resolve mobile validation regressions and stabilize platform tests - #111
Conversation
|
Add migration 097 to repair model option arrays that migration 026 already stored as JSON strings in projections and affected event payloads. Preserve canonical values and unrelated data, including invalid non-array strings. Cover already-migrated databases, v2 project baselines, boolean and empty arrays, repeat startup, and byte-identical canonical records. Implemented and reviewed with GPT-6 Astra Pro in ChatGPT.
Shipping verdict for PR111: PASS+NOTESExact head. Goal. Land the fixes from the mobile and desktop validation pass. A stale memory selection must end the turn with a visible error instead of leaving it stuck on Thinking. Model options and PR links must stay JSON arrays through migration 026 and the dev-copy prune, and installs that already ran the faulty 026 get repaired. The other fixes are a lighter streaming timeline, the mobile fork-signing edits, and host-independent tests. Executed at the exact head
Base source with the head regression testsI used a disposable sibling worktree at the head, with base versions of the changed source files and the head tests. It symlinked to the main checkout's
Disposable SQLite experimentI ran the SQL text taken from the base and head files in
Source review
Notes (non-blocking)
Evidence limits
Status at verdict timeCI at Independent verification by Claude Opus 5.5 via Claude Agent in T3 Code. This agent did not write PR111. |
Follow-up defect repair
Commit
8240f2abe3repairs installations that already ran the faulty model-options migration. Changing migration 026 alone left those saved project defaults unreadable and could make later legacy-thread imports fall back to Codex.Migration 097 now unwraps serialized JSON arrays in the four locations migration 026 affected: legacy thread selections, project defaults, and their corresponding event payloads. This includes v2 project baseline events needed for replay. It preserves provider/model choices, booleans, empty arrays, unrelated fields, invalid non-array strings, and byte-identical canonical records.
A regression reproduced the failure with migrations 026 and 096 already recorded, then passed with the forward repair. Already-imported selections that were previously replaced by the importer's fallback are left intact because the original intent cannot be distinguished safely from later user choices.
Follow-up validation
2cf7063412adds migration 097 to both ordered reconciliation expectations. Those two cases failed before the correction.vp run check:changedon2cf7063412passed the complete gate, including all 42 package typechecks. This supersedes the earlier environment-specific wrapper failure.2cf7063412passed 27,058 tests, with 64 skipped and zero failures. It passed 2,114 files with 3 skipped. The earlier peer-link failure did not recur, but its cause remains unexplained. Full log. Draft asset access requires repository write access.Follow-up audit and fixes: GPT-6 Astra Pro in ChatGPT.
Why
Validate the merged work on mobile and desktop and fix the failures found during that pass. Stale memory attached on one device could leave a turn stuck on Thinking after another device changed the fact.
What changed
Scope
Blast Radius
Turn-start failure settlement is guarded by the current attempt and run status. The SQL corrections now include the forward repair described above for databases that already recorded migration 026. Web changes affect timeline navigation and streaming Markdown caching.
Verification
vp run check:changedpassed formatting, lint, Knip, 42 package typechecks, focused tests, and compiler/native checks. The final peer-link diagnostic assertion is included in that passing run.Device captures and logs are stored in an unpublished evidence release. Repository write access is required to view draft assets.
Model and harness. GPT-6.1-Sol through Codex.