Prototype paused admin participant AI support

Enable an existing AI difficulty for a human seat through admin controls without granting private access or advancing paused play. Preserve custody, credentials, takeback and separate paced resume. Bind atomic writes and outgoing-grant revocation to live authority, room/pause versions and active seat access with durable exact receipts.

Validation: types/lint, 5408 offline tests, build and 52 HTTP tests passed on source fingerprint 2157de0f4bb0b74d9760d52102601c52344cf674dee8ccd1d559f0a246a1d4ff; 22 authenticated admin HTTP groups, independent SQL/privacy/UI review, desktop/mobile and refresh checks. All 2098 baseline rooms and 4455 seats preserved. Migration 0015 is additive. Positive production admin QA awaits authorized access; full admin/rules scope remains unfinished.
This commit is contained in:
Quintine committed 2026-09-26 14:04:17 +10:00
1 parent 137f9223f1
commit 2cddf03932
23 files changed
+3187 -10

No files matched your search

+15
View File
@@ -0,0 +1,15 @@
CREATE TABLE `admin_seat_ai_operations` (
`operation_id` text PRIMARY KEY NOT NULL,
`actor_admin_id` text NOT NULL,
`room_code` text NOT NULL,
`request_hash` text NOT NULL,
`expected_version` integer NOT NULL,
`expected_control_revision` integer NOT NULL,
`applied_version` integer NOT NULL,
`target` text NOT NULL,
`difficulty` text NOT NULL,
`reason` text NOT NULL,
`created_at` integer NOT NULL
);
--> statement-breakpoint
CREATE INDEX `admin_seat_ai_room` ON `admin_seat_ai_operations` (`room_code`,`created_at`);
File diff suppressed because it is too large. Load diff
+7
View File
@@ -106,6 +106,13 @@
"when": 1790044461950,
"tag": "0014_admin_room_archive",
"breakpoints": true
},
{
"idx": 15,
"version": "6",
"when": 1790389395436,
"tag": "0015_admin_seat_ai",
"breakpoints": true
}
]
}