Chris Coutinho and Claude Opus 4.8
9c2f9fac46
refactor(usage): address round-4 review on PR #871
...
- hooks: document why user_id in metadata is safe — it stays tenant-local
(the CP rollup aggregates GROUP BY (day, metric) into usage_daily, which
has no metadata column, so it never reaches Stripe) and is retained to
keep Deck #67 's future per-user attribution derivable from the app DB.
- migration: instantiate the SQLite-side column types (sa.Text() etc.) for
visual parity with the instantiated Postgres types.
- tests: assert the WARNING contract in the unserializable-metadata test
too; add an autouse fixture that resets UsageEventStore._shared_instance
so a stray shared() call can't leak across tests.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-07 15:42:12 +02:00
..
2026-04-07 10:07:02 +02:00
2026-06-04 13:07:28 +02:00
2026-06-01 17:39:23 +02:00
2026-06-04 12:55:17 +02:00
2026-06-03 00:35:20 +02:00
2026-06-05 16:20:05 +02:00
2025-10-24 04:38:49 +02:00
2026-06-02 18:15:50 +02:00
2026-05-29 13:13:25 +02:00
2026-06-03 12:40:50 +02:00
2026-05-31 21:34:05 +02:00
2026-05-16 18:06:42 +02:00
2026-04-07 10:07:02 +02:00
2025-12-20 21:16:17 +01:00
2026-05-03 14:21:12 +02:00
2026-05-02 22:40:06 +02:00
2026-05-02 18:26:39 +02:00
2026-05-29 16:55:00 +02:00
2026-05-10 13:49:17 +02:00
2026-04-30 01:20:21 +02:00
2026-04-14 21:14:42 +02:00
2026-05-16 13:07:50 +02:00
2026-06-07 15:13:14 +02:00
2026-05-02 21:56:08 +02:00
2026-06-01 17:40:46 +02:00
2026-06-05 02:35:26 +02:00
2026-06-05 05:10:09 +02:00
2026-06-06 14:20:03 +02:00
2026-06-04 12:55:17 +02:00
2026-04-07 09:22:19 +02:00
2026-05-02 16:33:43 +02:00
2026-06-02 18:15:50 +02:00
2026-05-17 19:33:24 +02:00
2025-12-26 10:05:27 -06:00
2026-05-03 00:57:12 +02:00
2026-02-27 21:53:06 +01:00
2025-11-10 02:07:45 +01:00
2026-05-29 00:19:30 +02:00
2026-06-01 15:15:48 +02:00
2026-05-04 00:15:55 +02:00
2026-05-08 20:50:27 +02:00
2026-04-22 19:50:13 +02:00
2026-05-12 19:34:13 +02:00
2026-04-14 23:02:56 +00:00
2026-05-03 13:03:49 +02:00
2026-05-03 14:21:12 +02:00
2026-05-29 00:10:35 +02:00
2026-05-02 17:03:57 +02:00
2026-06-05 03:21:10 +02:00
2026-04-07 23:48:49 +02:00
2026-05-02 21:56:08 +02:00
2026-05-02 23:14:07 +02:00
2026-05-29 13:13:25 +02:00
2026-06-05 00:06:40 +02:00
2026-06-06 14:02:05 +02:00
2025-10-25 19:52:45 +02:00
2026-03-31 17:09:37 +02:00
2026-06-05 01:32:14 +02:00
2026-06-05 04:44:15 +02:00
2026-05-21 10:07:47 +02:00
2026-05-02 18:26:39 +02:00
2026-05-02 16:59:53 +02:00
2026-04-07 10:07:02 +02:00
2026-04-07 16:58:29 +02:00
2026-05-16 18:53:45 +02:00
2026-05-12 22:35:50 +02:00
2026-05-17 18:45:14 +02:00
2026-05-17 09:25:42 +02:00
2026-05-06 20:24:11 +02:00
2026-05-02 17:03:57 +02:00
2026-05-02 19:46:36 +02:00
2026-04-30 01:20:21 +02:00
2026-06-07 15:42:12 +02:00
2026-06-04 20:28:44 +02:00
2026-05-08 20:50:27 +02:00
2026-06-04 14:19:30 +02:00
2026-05-06 20:24:11 +02:00
2026-05-29 13:13:25 +02:00
2026-06-05 16:20:05 +02:00
2026-06-05 16:20:05 +02:00
2026-04-30 04:02:26 +02:00
2026-04-30 14:17:45 +02:00
2026-05-16 18:53:45 +02:00
2026-04-30 04:17:00 +02:00
2026-05-04 00:15:55 +02:00