ovm.sh / dev log

Codex rust-v0.155.0 changes the state schema

Migration 55 removes thread_artifacts. Every Codex at rust-v0.154.0 or older that shares the state DB loses it the first time this release runs. Classified automatically and flagged for review.

Published · written by the observatory pipeline · reviewed 2026-09-18

1What upstream shipped

Diff of codex-rs/state/migrations between rust-v0.154.0 and rust-v0.155.0:

migrationclassificationremoves
0055_thread_attachments.sqlbreakingthread_artifacts

2The SQL

0055_thread_attachments.sql

ALTER TABLE thread_artifacts RENAME TO thread_attachments;
ALTER TABLE thread_attachments RENAME COLUMN artifact_type TO attachment_type;

DROP INDEX idx_thread_artifacts_thread_created_id;
CREATE INDEX idx_thread_attachments_thread_created_id
    ON thread_attachments(thread_id, created_at, id);

3What it means for a shared state DB

Every installed Codex shares one forward-migrated SQLite store (~/.codex/state_<n>.sqlite). Running this release once applies its migrations; an older binary still opens the DB afterwards and fails soft at runtime (“no such table”) wherever a migration removed what it reads. ovm-codex-skew warns before launching an older version against a newer DB, and ovm doctor codex reports the same assessment on demand. The synced manifest is served in api/codex-skew.json, so installed OVMs learn this classification within one publish cycle.

4Review status

Classified automatically by scripts/codex_schema.py on 2026-09-18 and published without waiting. A human confirms the classification by extending the reviewed history in crates/ovm-codex-skew (LAST_REVIEWED in its tests), which pins it against a later regeneration.

Reviewed 2026-09-18. A rename is a removal for the old name: 0.154.0 and older query thread_artifacts, which no longer exists once 0.155.0 has run. Classification confirmed and pinned (LAST_REVIEWED = 55). This was also the migration that showed the previous hold-the-line policy could not restart itself; the pipeline now publishes and flags instead. Pipeline run.