fix(core): harden v2 session context epochs

This commit is contained in:
Kit Langton 2026-06-04 14:49:05 -04:00
commit 03974ba0e6
33 changed files with 340 additions and 6461 deletions

View file

@ -1,7 +0,0 @@
CREATE TABLE `session_context_epoch` (
`session_id` text PRIMARY KEY,
`baseline` text NOT NULL,
`checkpoint` text NOT NULL,
`baseline_seq` integer NOT NULL,
CONSTRAINT `fk_session_context_epoch_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
);

File diff suppressed because it is too large Load diff

View file

@ -1,10 +0,0 @@
CREATE TABLE `session_context_message` (
`session_id` text NOT NULL,
`seq` integer NOT NULL,
`parts` text NOT NULL,
CONSTRAINT `session_context_message_pk` PRIMARY KEY(`session_id`, `seq`),
CONSTRAINT `fk_session_context_message_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
);
--> statement-breakpoint
ALTER TABLE `session_context_epoch` ADD `revision` integer DEFAULT 0 NOT NULL;--> statement-breakpoint
CREATE INDEX `session_context_message_session_seq_idx` ON `session_context_message` (`session_id`,`seq`);

View file

@ -1 +0,0 @@
ALTER TABLE `session_context_epoch` ADD `replacement_pending` integer DEFAULT false NOT NULL;

View file

@ -1 +0,0 @@
ALTER TABLE `session_context_epoch` ADD `replacement_seq` integer;

View file

@ -0,0 +1,17 @@
CREATE TABLE `session_context_epoch` (
`session_id` text PRIMARY KEY,
`baseline` text NOT NULL,
`checkpoint` text NOT NULL,
`baseline_seq` integer NOT NULL,
`replacement_seq` integer,
`revision` integer DEFAULT 0 NOT NULL,
CONSTRAINT `fk_session_context_epoch_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
);
--> statement-breakpoint
CREATE TABLE `session_context_message` (
`session_id` text NOT NULL,
`seq` integer NOT NULL,
`parts` text NOT NULL,
CONSTRAINT `session_context_message_pk` PRIMARY KEY(`session_id`, `seq`),
CONSTRAINT `fk_session_context_message_session_id_session_id_fk` FOREIGN KEY (`session_id`) REFERENCES `session`(`id`) ON DELETE CASCADE
);

View file

@ -1,9 +1,9 @@
{
"version": "7",
"dialect": "sqlite",
"id": "85667f6a-603f-4041-be9b-783a34eb74d4",
"id": "6fe30aa9-5772-49a6-b688-d022dbd28903",
"prevIds": [
"f08074bb-2b27-4365-924c-5a4eae9a5194"
"fc92fa34-8074-44c3-88f0-a5417f7fd92d"
],
"ddl": [
{
@ -822,6 +822,16 @@
"entityType": "columns",
"table": "session_context_epoch"
},
{
"type": "integer",
"notNull": false,
"autoincrement": false,
"default": null,
"generated": null,
"name": "replacement_seq",
"entityType": "columns",
"table": "session_context_epoch"
},
{
"type": "integer",
"notNull": true,
@ -1923,24 +1933,6 @@
"entityType": "indexes",
"table": "part"
},
{
"columns": [
{
"value": "session_id",
"isExpression": false
},
{
"value": "seq",
"isExpression": false
}
],
"isUnique": false,
"where": null,
"origin": "manual",
"name": "session_context_message_session_seq_idx",
"entityType": "indexes",
"table": "session_context_message"
},
{
"columns": [
{