diff --git a/packages/core/src/database/migration.gen.ts b/packages/core/src/database/migration.gen.ts
index 2e584a7873..80cb22fb94 100644
--- a/packages/core/src/database/migration.gen.ts
+++ b/packages/core/src/database/migration.gen.ts
@@ -44,7 +44,6 @@ export const migrations = (
import("./migration/20260703090000_reset_v2_event_rename_sweep"),
import("./migration/20260703181610_event_created_column"),
import("./migration/20260703190000_reset_v2_shell_event_payloads"),
- import("./migration/20260703200000_reset_v2_event_fragments"),
- import("./migration/20260703210000_reset_v2_execution_errors"),
+ import("./migration/20260703200000_reset_v2_session_events"),
])
).map((module) => module.default) satisfies DatabaseMigration.Migration[]
diff --git a/packages/core/src/database/migration/20260703200000_reset_v2_event_fragments.ts b/packages/core/src/database/migration/20260703200000_reset_v2_session_events.ts
similarity index 89%
rename from packages/core/src/database/migration/20260703200000_reset_v2_event_fragments.ts
rename to packages/core/src/database/migration/20260703200000_reset_v2_session_events.ts
index 0541e19b3c..75108b3f11 100644
--- a/packages/core/src/database/migration/20260703200000_reset_v2_event_fragments.ts
+++ b/packages/core/src/database/migration/20260703200000_reset_v2_session_events.ts
@@ -2,7 +2,7 @@ import { Effect } from "effect"
import type { DatabaseMigration } from "../migration"
export default {
- id: "20260703200000_reset_v2_event_fragments",
+ id: "20260703200000_reset_v2_session_events",
up(tx) {
return Effect.gen(function* () {
yield* tx.run(`DELETE FROM \`session_input\`;`)
diff --git a/packages/core/src/database/migration/20260703210000_reset_v2_execution_errors.ts b/packages/core/src/database/migration/20260703210000_reset_v2_execution_errors.ts
deleted file mode 100644
index bcb96adbd7..0000000000
--- a/packages/core/src/database/migration/20260703210000_reset_v2_execution_errors.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { Effect } from "effect"
-import type { DatabaseMigration } from "../migration"
-
-export default {
- id: "20260703210000_reset_v2_execution_errors",
- up(tx) {
- return Effect.gen(function* () {
- yield* tx.run(`DELETE FROM \`session_input\`;`)
- yield* tx.run(`DELETE FROM \`session_message\`;`)
- yield* tx.run(`DELETE FROM \`event\`;`)
- yield* tx.run(`DELETE FROM \`event_sequence\`;`)
- })
- },
-} satisfies DatabaseMigration.Migration
diff --git a/packages/core/test/database-migration.test.ts b/packages/core/test/database-migration.test.ts
index 1954b29add..b190170f23 100644
--- a/packages/core/test/database-migration.test.ts
+++ b/packages/core/test/database-migration.test.ts
@@ -15,7 +15,7 @@ import eventSourcedSessionInputMigration from "@opencode-ai/core/database/migrat
import contextEpochAgentMigration from "@opencode-ai/core/database/migration/20260605042240_add_context_epoch_agent"
import simplifyIntegrationCredentialsMigration from "@opencode-ai/core/database/migration/20260611192811_lush_chimera"
import simplifySessionInputMigration from "@opencode-ai/core/database/migration/20260622202450_simplify_session_input"
-import resetExecutionErrorsMigration from "@opencode-ai/core/database/migration/20260703210000_reset_v2_execution_errors"
+import resetSessionEventsMigration from "@opencode-ai/core/database/migration/20260703200000_reset_v2_session_events"
import { AppNodeBuilder } from "@opencode-ai/core/effect/app-node-builder"
import { LayerNode } from "@opencode-ai/core/effect/layer-node"
import { EventV2 } from "@opencode-ai/core/event"
@@ -39,7 +39,7 @@ const run = (effect: Effect.Effect) =>
const makeDb = EffectDrizzleSqlite.makeWithDefaults()
describe("DatabaseMigration", () => {
- test("resets incompatible V2 execution and error history", async () => {
+ test("resets incompatible V2 Session event history", async () => {
await run(
Effect.gen(function* () {
const db = yield* makeDb
@@ -52,7 +52,7 @@ describe("DatabaseMigration", () => {
yield* db.run(sql`INSERT INTO event (id) VALUES ('event')`)
yield* db.run(sql`INSERT INTO event_sequence (aggregate_id, seq) VALUES ('session', 1)`)
- yield* DatabaseMigration.applyOnly(db, [resetExecutionErrorsMigration])
+ yield* DatabaseMigration.applyOnly(db, [resetSessionEventsMigration])
expect(yield* db.get(sql`SELECT id FROM session_input`)).toBeUndefined()
expect(yield* db.get(sql`SELECT id FROM session_message`)).toBeUndefined()
diff --git a/specs/v2/schema-changelog.md b/specs/v2/schema-changelog.md
index c99a742638..5eaa02ad39 100644
--- a/specs/v2/schema-changelog.md
+++ b/specs/v2/schema-changelog.md
@@ -972,5 +972,5 @@ Compatibility:
Compatibility:
-- All changed durable definitions remain version 1. `20260703200000_reset_v2_event_fragments` wipes experimental V2 events, sequences, projected messages, and admitted inputs.
+- All changed durable definitions remain version 1. `20260703200000_reset_v2_session_events` performs the single reset for this Session event contract update, wiping experimental V2 events, sequences, projected messages, and admitted inputs.
- Promise, Effect, and legacy JavaScript SDK surfaces are regenerated from the simplified schemas.