v0.52.0 — Create tenant-isolation fix + SLO/codegen/compose hardening
Synchronized multi-module release (root + 8 nested modules all at v0.52.0). Ships the fixes from the DX hardening cadence Runs 16–18 (2026-07-03). Contains a security fix — upgrade recommended.
🔒 Security (upgrade recommended)
- Tenant-isolation bypass on
Create(#175). GeneratedCreatepreviously stampedaccount_idfrom the caller's tenant context only when the client left it empty, so a client-suppliedaccount_idwon — letting any authorized caller plant a resource under an arbitrary tenant'saccount_id. Now stamped fromTenantIDFromContextunconditionally, ignoring client input, on both GORM and ent backends (mirrors the existingUpdateguard). Covered by a newseccheck.AssertNoCrossTenantCreateregression. (PR #176)
Reliability / SLO (WS-025)
de slo generatenow prints a visible notice for custom (AIP-136) methods it does not group into the default SLOs, instead of silently omitting a service's hot path (#171). Correctedoperate/slo.md's promise.- New
reference/slo-kpis.mdsection documenting thedevedge/otel-rpcSLI source fields (#172).
Codegen
- A plain
OUTPUT_ONLYscalar outside the framework vocabulary (etag/delete_time/expire_time, derivedname) now fails generation with an actionable message instead of silently getting no column and losing every write (#170).model-a-resource.mdgains a warning callout.
Composable services (WS-012)
- The gorm scaffold emits a composition seam —
NewModule(db *gorm.DB) servicekit.Module+Models() []any— so a composed host (de compose build) can build a module over one shared DB without naming its repository/model (part of the compose "won't compile" fix). Additive; standalone services are unchanged. (PR #178)
Scaffold
- Generated CI now installs
de@v0.12.0(was a stalev0.7.0) (#179).
See CHANGELOG.md and the run report (devedge-assessment-2026-07-03-dx-loops-16-19.md) for the full context. Open follow-ups: #173 (unique-lookup helper), #177 (ent composition seam).