Skip to content

Portal v0.30.0 — Database-enforced tenant isolation and steadier dispatch

Choose a tag to compare

@AndrewDryga AndrewDryga released this 17 Jul 00:35
· 1935 commits to main since this release
Immutable release. Only release title and notes can be modified.
v0.30.0
9f3bc3c

Tenant isolation moves into the database itself, and dispatch recovers more of its own edge cases.

Security

  • Database-enforced tenant isolation. Every runner-owned child row now carries a composite foreign key to its account, so a cross-tenant write is refused at the row, not only in application code.
  • CHECK backstops for the security-relevant enums. The database rejects out-of-range values for the enums that gate trust and dispatch, independent of the application layer.
  • CSP on every surface. The public, unauthenticated pages and the error responses now carry the same Content-Security-Policy as the rest of the site.
  • Sentry disclosed and scrubbed. Sentry is named as a subprocessor, and its events are scrubbed of personal data before they leave the process.
  • Signed-pack enforcement is visible over MCP. A runner that requires signed packs now announces that requirement to MCP clients.

Operability

  • Steadier dispatch. A runner at capacity redelivers the dispatches it refused, the stale-dispatch sweep drains the oldest queued first, and stuck pending runs advance instead of stranding.
  • One row per session. Active sessions each render as their own row with their own address, sign-in time, and revoke control.
  • Faster run search. A trigram index speeds run search on large accounts, replacing three now-covered indexes.
  • Sharper fleet alarms. Severe database and load-balancer conditions page directly, and the point-in-time recovery drill now measures actual RTO.

Fixes

  • The retired-pack re-trust control no longer crashes the packs page.