@cosmicdrift/kumiko-dev-server 0.5.2 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,72 @@
1
1
  # @cosmicdrift/kumiko-dev-server
2
2
 
3
+ ## 0.6.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8489d18: feat(es-ops): Phase 1.5 — tenantIdOverride + dry-run-validator + E2E-Test + Doku
8
+
9
+ Phase 1.5 schließt die Lücken aus Phase 1 die den ersten Driver-Use-Case
10
+ (publicstatus admin-roles) blockten. Siehe Retro:
11
+ `kumiko-platform/docs/plans/features/es-ops-phase1-retro.md` (PR #9).
12
+
13
+ **A1 — tenantIdOverride:**
14
+ `SeedMigrationContext.systemWriteAs(qn, payload, tenantIdOverride?)`.
15
+ Default SYSTEM_TENANT_ID (unverändert für System-scope-Aggregates wie
16
+ config-values). Mit override: `createSystemUser(tenantIdOverride)` als
17
+ Executor, damit der Event-Store-Executor den Aggregate-Stream im
18
+ richtigen Tenant findet. Fix für die `version_conflict`-Klasse-Bug
19
+ (Memory `feedback_event_store_tenant_consistency.md`).
20
+
21
+ **A2 — dry-run-validator:**
22
+ Runner parsed seed-files vor `migration.run()` per regex
23
+ `systemWriteAs\(["']([^"']+)["']`, sammelt handler-QNs, validiert
24
+ gegen `registry.getWriteHandler(qn)`. Fail-fast mit klarer Message
25
+
26
+ - Datei + QN statt zur Runtime "handler not found". Catched camelCase-
27
+ typos (kebab-case-vs-camelCase Drift) + andere QN-Drift zur Boot-Zeit.
28
+ runProdApp reicht den richtigen Registry rein (`registry` neu in
29
+ RunPendingSeedMigrationsArgs).
30
+
31
+ **A3 — E2E-Test:**
32
+ `packages/bundled-features/src/__tests__/es-ops-e2e.integration.ts`
33
+ mit `setupTestStack`-Pattern: tenant+config Features echt geladen,
34
+ echtes Membership-Aggregate via TenantHandlers.addMember im Demo-Tenant,
35
+ seed-migration ruft update-member-roles mit tenantIdOverride → write
36
+ geht durch, Marker landed, Event in Store, Read-Model aktualisiert.
37
+ Plus typo-Test: seed mit camelCase fail-t Dry-Run mit
38
+ `/dry-run found.*unknown handler-QN/`. **TDD-First**: ohne A1+A2 wäre
39
+ der test rot.
40
+
41
+ **A4 — Doku:**
42
+ `framework/src/es-ops/README.md` erweitert um „Wann brauche ich
43
+ tenantIdOverride?" + „Deployment-Anforderungen" (Docker COPY, Idempotenz,
44
+ Multi-Replica) + „Lokaler Smoke vor Push". Recipe-README + seed-files
45
+ auf neue API aktualisiert.
46
+
47
+ **A5 — Smoke-Skript-Template:**
48
+ `samples/recipes/seed-migration/scripts/smoke.ts` als copy-paste-Template
49
+ für App-Authors: Bun-runnable, offline (read-only, kein DB-Write),
50
+ validiert Module-Load + QN-Resolution + System-User-Access. Recipe-
51
+ README dokumentiert Pflicht-Pattern.
52
+
53
+ **Bonus-Fix:**
54
+ `tenant:write:create`-access auf `["system", "SystemAdmin"]` erweitert
55
+ (symmetrisch zu update-member-roles). Aufgedeckt durch Recipe-Smoke +
56
+ initial-tenants-Seed. Pinning-Test in `tenant.integration.ts` updated.
57
+
58
+ **Test-State:** 45/45 grün (Pre-Push). Typecheck clean. Biome clean.
59
+ as-cast-Audit clean. Guard-silent-skip clean. Recipe-Smoke clean.
60
+
61
+ **Folge-Step (separater PR):** publicstatus driver-sample reaktivieren
62
+ mit lokalem Pre-Push-Smoke gegen publicstatus' echtes Feature-Set.
63
+
64
+ ### Patch Changes
65
+
66
+ - Updated dependencies [8489d18]
67
+ - @cosmicdrift/kumiko-framework@0.6.0
68
+ - @cosmicdrift/kumiko-bundled-features@0.6.0
69
+
3
70
  ## 0.5.2
4
71
 
5
72
  ### Patch Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cosmicdrift/kumiko-dev-server",
3
- "version": "0.5.2",
3
+ "version": "0.6.0",
4
4
  "description": "Development server bootstrap for Kumiko apps. Bundles the client, mints dev-JWTs, injects the resolved AppSchema, and seeds an admin. Not for production.",
5
5
  "license": "BUSL-1.1",
6
6
  "author": "Marc Frost <marc@cosmicdriftgamestudio.com>",
@@ -48,8 +48,8 @@
48
48
  "kumiko-dev": "./bin/kumiko-dev.ts"
49
49
  },
50
50
  "dependencies": {
51
- "@cosmicdrift/kumiko-bundled-features": "0.5.2",
52
- "@cosmicdrift/kumiko-framework": "0.5.2"
51
+ "@cosmicdrift/kumiko-bundled-features": "0.6.0",
52
+ "@cosmicdrift/kumiko-framework": "0.6.0"
53
53
  },
54
54
  "publishConfig": {
55
55
  "registry": "https://registry.npmjs.org",
@@ -633,6 +633,7 @@ export async function runProdApp(options: RunProdAppOptions): Promise<ProdAppHan
633
633
  db,
634
634
  seedsDir: options.seedsDir,
635
635
  appliedBy: "boot",
636
+ registry, // → dry-run-validator catched handler-QN-typos vor dem write
636
637
  createContext: (dbRunner: DbRunner) =>
637
638
  createSeedMigrationContext({ dispatcher: seedDispatcher, dbRunner }),
638
639
  });