Skip to content

v0.52.0 — Create tenant-isolation fix + SLO/codegen/compose hardening

Choose a tag to compare

@daniel-garcia daniel-garcia released this 03 Jul 23:28

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). Generated Create previously stamped account_id from the caller's tenant context only when the client left it empty, so a client-supplied account_id won — letting any authorized caller plant a resource under an arbitrary tenant's account_id. Now stamped from TenantIDFromContext unconditionally, ignoring client input, on both GORM and ent backends (mirrors the existing Update guard). Covered by a new seccheck.AssertNoCrossTenantCreate regression. (PR #176)

Reliability / SLO (WS-025)

  • de slo generate now 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). Corrected operate/slo.md's promise.
  • New reference/slo-kpis.md section documenting the devedge/otel-rpc SLI source fields (#172).

Codegen

  • A plain OUTPUT_ONLY scalar outside the framework vocabulary (etag/delete_time/expire_time, derived name) now fails generation with an actionable message instead of silently getting no column and losing every write (#170). model-a-resource.md gains 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 stale v0.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).