Mattsson
c912fc5633
fix(sandbox): delete api_keys and retag log in teardown (final backlog blockers) ( #1454 )
...
The last 9 backlog users decompose into exactly two classes: api_keys.sod_acknowledged_by (NO ACTION to auth.users) blocks every keyed sandbox, and the WORM dimension_retag_log blocks any sandbox where a voucher line was retagged. cleanup_sandbox_user now deletes the user's api_keys explicitly (they must die with the sandbox anyway) and the company's retag log under the standard bypass; dimension_retag_log_immutable's DELETE branch honors gnubok.sandbox_cleanup with the same per-row sandbox re-verification as every other guard, UPDATE stays blocked. Fixture seeds both row types. Validated end-to-end on staging.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-08-07 16:05:46 +02:00
..
2026-08-03 16:30:14 +02:00
2026-07-24 16:36:35 +02:00
2026-07-03 16:50:28 +02:00
2026-08-06 23:00:05 +02:00
2026-07-04 15:58:06 +02:00
2026-07-04 15:58:06 +02:00
2026-07-26 17:48:18 +02:00
2026-08-03 15:41:01 +02:00
2026-07-21 23:00:15 +02:00
2026-07-04 15:58:06 +02:00
2026-07-04 15:58:06 +02:00
2026-07-16 16:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-03 15:41:01 +02:00
2026-08-03 18:55:59 +02:00
2026-04-24 11:24:45 +02:00
2026-07-04 15:58:06 +02:00
2026-07-27 03:34:56 +02:00
2026-08-06 23:00:05 +02:00
2026-07-11 23:13:50 +02:00
2026-08-04 19:34:54 +02:00
2026-08-06 23:00:05 +02:00
2026-07-04 15:58:06 +02:00
2026-08-06 23:00:05 +02:00
2026-07-04 15:58:06 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-28 19:50:16 +02:00
2026-07-10 11:05:40 +02:00
2026-07-04 15:58:06 +02:00
2026-07-04 15:58:06 +02:00
2026-07-04 15:58:06 +02:00
2026-07-04 15:58:06 +02:00
2026-08-06 23:00:05 +02:00
2026-07-27 03:34:56 +02:00
2026-07-28 18:34:55 +02:00
2026-07-13 22:54:33 +02:00
2026-07-13 22:54:33 +02:00
2026-07-04 15:58:06 +02:00
2026-07-21 23:00:15 +02:00
2026-08-06 23:00:05 +02:00
2026-07-27 03:34:56 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-05-12 13:12:17 +02:00
2026-07-24 01:16:20 +02:00
2026-08-03 17:56:37 +02:00
2026-07-04 15:58:06 +02:00
2026-07-04 15:58:06 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-07-23 16:16:55 +02:00
2026-08-02 20:44:59 +02:00
2026-07-04 15:58:06 +02:00
2026-07-29 18:15:06 +02:00
2026-07-04 15:58:06 +02:00
2026-06-08 09:47:33 +02:00
2026-07-04 15:58:06 +02:00
2026-07-22 18:30:33 +02:00
2026-07-22 18:33:49 +02:00
2026-07-04 15:58:06 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-08-06 23:00:05 +02:00
2026-07-04 15:58:06 +02:00
2026-07-23 16:16:55 +02:00
2026-07-03 13:57:59 +02:00
2026-07-12 19:14:12 +02:00
2026-05-26 22:29:41 +02:00
2026-07-03 13:57:59 +02:00
2026-07-05 03:05:09 +02:00
2026-07-05 03:05:09 +02:00
2026-08-07 16:05:46 +02:00
2026-07-04 15:58:06 +02:00
2026-06-04 13:14:57 +02:00
2026-07-27 03:34:56 +02:00
2026-07-21 16:54:14 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-09 12:19:57 +02:00
2026-07-27 14:49:22 +02:00
2026-08-03 18:49:46 +02:00
2026-07-21 23:00:15 +02:00
2026-08-04 11:43:58 +02:00
2026-07-04 15:58:06 +02:00
2026-07-04 15:58:06 +02:00
2026-05-06 10:24:57 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-05 15:47:23 +02:00
2026-08-05 15:27:00 +02:00
2026-08-06 23:30:00 +02:00