gsxdsm
06d03d4e1f
FN-8103: enforce PostgreSQL-only production data access
Require production paths to use PostgreSQL-aware stores and prevent new unrestricted database access.
- Add a checked allowlist that bans production getDatabase() calls by default.
- Route Quality plugin persistence through an async PostgreSQL-aware store and add Drizzle ORM.
- Document backend-safe plugin storage patterns and cover guarded access behavior.
Files changed:
docs/PLUGIN_AUTHORING.md | 20 +++
package.json | 6 +-
.../src/__tests__/agent-logs-backend-mode.test.ts | 7 +
packages/core/src/store.ts | 7 +-
packages/core/src/task-store/remaining-ops-5.ts | 8 +-
plugins/fusion-plugin-quality/package.json | 1 +
.../src/__tests__/async-quality-store.pg.test.ts | 36 +++++
.../src/__tests__/cancel-and-plans.test.ts | 8 +-
.../src/__tests__/experimental-gate.test.ts | 1 +
.../src/routes/create-routes.ts | 50 +++----
.../src/runner/command-runner.ts | 17 ++-
.../src/store/async-quality-store.ts | 34 +++++
pnpm-lock.yaml | 3 +
scripts/__tests__/check-no-getdatabase.test.mjs | 90 ++++++++++++
scripts/check-no-getdatabase.mjs | 159 +++++++++++++++++++++
scripts/lib/getdatabase-allowlist.json | 18 +++
16 files changed, 422 insertions(+), 43 deletions(-)
Fusion-Task-Id: FN-8103
Fusion-Task-Lineage: ff17bcb2-5341-4c6c-a5c4-993580539676
Co-authored-by: Fusion (runfusion.ai) <noreply@runfusion.ai>
2026-07-16 10:13:49 -07:00
..
2026-06-13 10:01:01 -07:00
2026-07-13 19:07:58 -07:00
2026-07-14 23:18:55 -07:00
2026-07-08 00:37:07 -07:00
2026-07-15 08:44:11 -07:00
2026-05-13 22:41:30 -07:00
2026-07-13 23:00:25 -07:00
2026-06-23 23:25:48 -07:00
2026-06-23 23:30:32 -07:00
2026-06-21 00:05:41 -07:00
2026-07-16 10:13:49 -07:00
2026-05-23 19:51:36 -07:00
2026-07-14 08:16:42 -07:00
2026-06-14 15:29:35 -07:00
2026-07-12 21:21:10 -07:00
2026-06-14 15:29:35 -07:00
2026-06-13 19:22:00 -07:00
2026-06-03 20:34:51 -07:00
2026-06-13 10:01:01 -07:00
2026-05-06 15:21:45 -07:00
2026-06-03 19:12:28 -07:00
2026-06-08 15:19:27 -07:00
2026-07-10 13:26:23 -07:00
2026-07-13 01:21:33 -07:00
2026-05-15 12:24:30 -07:00
2026-06-25 11:21:46 -07:00
2026-06-03 21:03:38 -07:00
2026-06-20 04:11:33 -07:00
2026-06-24 19:25:38 -07:00
2026-06-18 16:47:09 -07:00
2026-05-06 17:51:09 -07:00
2026-05-11 06:47:43 -07:00
2026-07-13 19:07:58 -07:00
2026-05-12 17:04:33 -07:00
2026-07-13 19:07:58 -07:00
2026-05-11 06:47:43 -07:00
2026-07-13 19:07:58 -07:00
2026-07-08 09:00:47 -07:00
2026-06-15 02:30:41 -07:00
2026-05-09 13:21:47 -07:00
2026-06-25 21:42:22 -07:00
2026-05-10 15:33:25 -07:00
2026-06-30 08:04:12 -07:00
2026-07-14 23:18:55 -07:00
2026-07-01 10:04:55 -07:00
2026-07-03 07:47:03 -07:00
2026-05-07 18:08:08 +02:00
2026-06-25 17:04:30 -07:00
2026-07-02 11:38:32 -07:00
2026-07-03 22:04:45 -07:00
2026-05-05 13:25:02 -07:00
2026-06-19 05:13:39 -07:00