gsxdsm
87f18f87ed
FN-6705: add plugin activation analytics
Record plugin activation events and expose them to Command Center analytics.
- Add plugin activation persistence, aggregation helpers, and exports.
- Record load/reload activation events through the plugin loader and store APIs.
- Surface plugin activation counts in the Command Center Ecosystem area and API route.
- Cover migrations, aggregation behavior, plugin loader recording, route auth, UI rendering, and quarantined flaky suites.
Files changed:
.changeset/fn-6705-plugin-activation-analytics.md | 5 +
docs/architecture.md | 2 +-
docs/dashboard-guide.md | 2 +-
packages/cli/vitest.config.ts | 8 +
packages/core/src/__tests__/db-migrate.test.ts | 34 ++---
packages/core/src/__tests__/db.test.ts | 59 ++++----
packages/core/src/__tests__/goals-schema.test.ts | 6 +-
packages/core/src/__tests__/insight-store.test.ts | 12 +-
.../src/__tests__/merge-request-record.test.ts | 3 +-
packages/core/src/__tests__/mission-store.test.ts | 6 +-
.../__tests__/plugin-activation-analytics.test.ts | 67 ++++++++
packages/core/src/__tests__/plugin-loader.test.ts | 168 ++++++++++++++++++++-
packages/core/src/__tests__/run-audit.test.ts | 6 +-
.../core/src/__tests__/store-merge-queue.test.ts | 3 +-
.../src/__tests__/store-plugin-activations.test.ts | 52 +++++++
packages/core/src/__tests__/task-documents.test.ts | 3 +-
packages/core/src/db.ts | 35 ++++-
packages/core/src/index.ts | 8 +
packages/core/src/plugin-activation-analytics.ts | 104 +++++++++++++
packages/core/src/plugin-loader.ts | 27 ++++
packages/core/src/store.ts | 24 ++-
packages/core/src/types.ts | 22 +++
packages/core/vitest.config.ts | 12 ++
.../command-center/areas/EcosystemArea.tsx | 40 +++--
.../command-center/areas/__tests__/areas.test.tsx | 52 ++++++-
.../register-command-center-routes.auth.test.ts | 1 +
.../register-command-center-routes.test.ts | 29 ++++
.../src/routes/register-command-center-routes.ts | 20 +++
.../src/store/__tests__/roadmap-store.test.ts | 9 +-
scripts/boot-smoke.mjs | 24 ++-
scripts/lib/test-quarantine.json | 55 +++++++
31 files changed, 799 insertions(+), 99 deletions(-)
Fusion-Task-Id: FN-6705
Fusion-Task-Lineage: 12ed6227-f935-4038-bbe9-a605a054850e
2026-06-19 16:47:33 -07:00
..
2026-06-18 01:45:18 -07:00
2026-06-19 16:47:33 -07:00
2026-04-28 14:25:56 -07:00
2026-06-18 16:51:56 -07:00
2026-05-06 21:36:31 -07:00
2026-06-07 18:51:46 -07:00
2026-05-06 21:36:31 -07:00
2026-06-03 01:10:18 -07:00
2026-06-03 01:10:18 -07:00
2026-05-14 13:59:10 -07:00
2026-06-05 00:57:49 -07:00
2026-04-08 01:39:15 -07:00
2026-06-18 01:27:09 -07:00
2026-05-10 15:34:58 -07:00
2026-06-12 19:45:37 -07:00
2026-05-16 20:48:00 -07:00
2026-05-13 22:41:29 -07:00
2026-06-02 18:46:33 -07:00
2026-06-12 13:12:55 -07:00
2026-04-09 15:14:19 -07:00
2026-05-17 01:01:52 -07:00
2026-06-08 10:33:16 -07:00
2026-05-03 02:02:25 -07:00
2026-04-15 16:32:16 -07:00
2026-06-01 21:55:10 -07:00
2026-05-14 15:49:55 -07:00
2026-06-07 20:43:44 -07:00
2026-03-25 18:32:10 -04:00
2026-06-03 13:51:13 -07:00
2026-06-03 09:23:44 -07:00
2026-06-12 17:57:19 -07:00
2026-06-09 20:44:45 -07:00
2026-06-09 20:44:45 -07:00
2026-06-08 23:38:32 -07:00
2026-06-12 14:39:51 -07:00
2026-06-12 14:39:51 -07:00
2026-06-13 09:01:18 -07:00
2026-05-13 06:29:35 -07:00
2026-06-11 09:21:23 -07:00
2026-05-20 20:05:08 -07:00
2026-06-05 02:38:38 -07:00
2026-06-05 02:38:38 -07:00
2026-06-04 22:52:20 -07:00
2026-06-04 22:52:20 -07:00
2026-06-05 00:57:49 -07:00
2026-06-05 13:59:50 -07:00
2026-06-15 19:44:10 -07:00
2026-05-27 21:31:12 -07:00
2026-04-24 08:55:02 -07:00
2026-06-18 18:48:05 -07:00
2026-06-19 16:47:33 -07:00
2026-06-11 18:08:17 -07:00
2026-05-19 03:21:16 -07:00
2026-05-19 05:16:37 -07:00
2026-05-12 18:33:13 -07:00
2026-05-03 14:10:11 -07:00
2026-06-04 08:00:33 -07:00
2026-05-18 23:14:27 -07:00
2026-06-04 08:00:33 -07:00
2026-05-18 08:02:21 -07:00
2026-04-23 23:02:36 -07:00
2026-05-05 13:42:39 -07:00
2026-05-06 11:09:05 -07:00
2026-05-08 12:05:46 -07:00
2026-05-14 05:35:12 -07:00
2026-05-06 13:38:23 -07:00
2026-05-29 10:23:59 -07:00
2026-05-14 00:58:44 -07:00
2026-05-14 00:12:03 -07:00
2026-05-07 15:53:58 -07:00
2026-05-20 14:28:45 -07:00
2026-05-23 04:18:55 -07:00
2026-05-03 02:02:25 -07:00
2026-06-12 09:24:02 -07:00
2026-05-28 22:59:18 -07:00
2026-06-06 00:38:28 -07:00
2026-06-18 18:48:05 -07:00
2026-05-10 08:28:07 -07:00
2026-06-05 00:30:27 -07:00
2026-05-30 22:53:24 -07:00
2026-05-28 10:32:16 -07:00
2026-05-28 10:32:16 -07:00
2026-06-17 04:51:31 -07:00
2026-05-20 14:29:07 -07:00
2026-06-19 16:47:33 -07:00
2026-05-03 02:36:07 -07:00
2026-05-18 14:46:20 -07:00
2026-05-04 23:47:26 -07:00
2026-04-24 08:54:25 -07:00
2026-06-12 11:10:12 -07:00
2026-05-17 22:45:29 -07:00
2026-05-05 06:32:33 -07:00
2026-05-09 14:41:58 -07:00
2026-04-19 20:48:14 -07:00
2026-05-05 06:32:33 -07:00
2026-05-11 17:46:42 -07:00
2026-05-03 15:13:08 -07:00
2026-05-10 19:13:05 -07:00
2026-05-07 00:05:34 -07:00
2026-05-27 18:47:52 +02:00
2026-05-23 04:18:55 -07:00
2026-05-23 04:18:55 -07:00
2026-06-03 15:57:41 -07:00
2026-06-02 23:47:32 -07:00
2026-05-23 03:09:00 -07:00
2026-06-15 19:31:54 -07:00
2026-06-15 19:57:20 -07:00
2026-06-15 19:57:20 -07:00
2026-06-11 20:53:01 -07:00
2026-06-14 15:29:35 -07:00
2026-06-14 15:29:35 -07:00
2026-06-15 02:29:08 -07:00
2026-06-13 02:54:57 -07:00
2026-04-18 12:21:14 -07:00
2026-04-08 14:58:34 -07:00
2026-04-28 14:25:55 -07:00
2026-06-13 23:20:06 -07:00
2026-06-15 20:19:16 -07:00
2026-06-09 12:51:20 -07:00
2026-06-19 16:47:33 -07:00
2026-06-04 01:43:26 -07:00
2026-06-19 16:47:33 -07:00
2026-05-07 02:15:14 -07:00
2026-05-31 20:50:09 -07:00
2026-06-07 20:43:44 -07:00
2026-06-15 19:44:17 -07:00
2026-05-19 17:19:02 -07:00
2026-06-19 06:51:57 -07:00
2026-05-23 04:18:55 -07:00
2026-05-14 13:59:10 -07:00
2026-05-19 17:27:20 -07:00
2026-05-15 07:45:49 -07:00
2026-06-05 03:56:29 -07:00
2026-04-19 20:48:13 -07:00
2026-05-12 17:04:32 -07:00
2026-05-04 22:17:10 -07:00
2026-05-13 06:29:36 -07:00
2026-05-14 15:25:08 -07:00
2026-05-15 12:51:41 -07:00
2026-05-03 02:02:25 -07:00
2026-04-16 23:07:40 -07:00
2026-05-19 17:19:02 -07:00
2026-05-15 12:02:44 -07:00
2026-05-15 22:56:31 -07:00
2026-05-15 12:02:44 -07:00
2026-05-17 00:21:12 -07:00
2026-05-16 21:00:48 -07:00
2026-05-17 23:29:20 -07:00
2026-05-17 12:58:01 -07:00
2026-05-17 07:26:21 -07:00
2026-06-05 01:53:42 -07:00
2026-06-18 01:27:09 -07:00
2026-06-03 07:51:25 -07:00
2026-05-08 14:03:17 -07:00
2026-06-19 06:04:20 -07:00
2026-04-29 12:02:56 -07:00
2026-04-29 07:58:58 -07:00
2026-05-20 14:29:07 -07:00
2026-05-20 14:29:07 -07:00
2026-05-13 06:29:34 -07:00
2026-06-04 12:26:05 -07:00
2026-06-19 16:47:33 -07:00
2026-04-08 11:21:18 -07:00
2026-06-04 08:00:33 -07:00
2026-05-15 21:08:04 -07:00
2026-06-04 13:19:55 -07:00
2026-05-21 15:45:48 -07:00
2026-05-19 05:16:37 -07:00
2026-06-19 06:51:57 -07:00
2026-06-18 03:24:57 -07:00
2026-06-13 05:06:05 -07:00
2026-06-17 04:51:31 -07:00
2026-05-18 15:01:20 -07:00
2026-06-18 17:52:08 -07:00
2026-04-29 12:02:56 -07:00
2026-04-25 21:43:38 -07:00
2026-06-18 17:14:19 -07:00
2026-06-17 21:45:50 -07:00
2026-06-04 02:13:48 -07:00
2026-06-04 00:19:57 -07:00
2026-06-04 00:19:58 -07:00
2026-06-04 00:19:58 -07:00
2026-06-19 16:47:33 -07:00
2026-06-17 21:45:50 -07:00
2026-06-03 13:48:02 -07:00
2026-06-08 23:38:32 -07:00
2026-06-09 14:10:01 -07:00
2026-06-12 17:57:19 -07:00
2026-06-07 18:51:46 -07:00
2026-06-05 14:43:02 -07:00
2026-06-07 21:19:10 -07:00
2026-06-07 20:43:44 -07:00
2026-06-11 21:00:23 -07:00
2026-06-12 17:57:19 -07:00
2026-06-17 14:56:07 -07:00
2026-06-12 17:57:19 -07:00
2026-06-04 02:13:48 -07:00
2026-06-04 12:03:29 -07:00
2026-06-05 16:46:04 -07:00
2026-06-04 22:12:38 -07:00
2026-06-04 22:18:36 -07:00
2026-06-04 00:41:12 -07:00
2026-05-16 07:16:05 -07:00
2026-06-13 21:17:20 -07:00