Skip to content

v0.1.6

Latest

Choose a tag to compare

@leonardomso leonardomso released this 24 May 20:30

0.1.6 (2026-05-24)

⚠ BREAKING CHANGES

  • runtime: Strait now requires PostgreSQL, Redis, and Sequin at startup; deployments without Redis or Sequin must add them before upgrading.

Features

  • api: surface 402 quota_exceeded with structured body on plan rejections (bc1715d)
  • app: add at-a-glance summary strips to runs schedules and webhooks (4f67e69)
  • app: add optimistic updates for delete, dlq, and retry-run mutations (2ec7895)
  • app: add per-route document titles and align breadcrumb labels (3b3634e)
  • app: app design overhaul — pagination, a11y, optimistic updates, UI polish (c14abf9)
  • app: wire server-side cursor pagination across list pages (1844274)
  • billing: add cloud-only Stripe SLA credit-note issuer (ea9631d)
  • billing: add dunning state machine with scheduled ticker (3f6fbce)
  • billing: add Prometheus-backed uptime source for SLA calculator (87538ab)
  • billing: add SLA credit calculator and issuance pipeline (2c752dc)
  • billing: dispatch billing.payment_succeeded on payment recovery (61eea90)
  • billing: dispatch schedule.suspended and workflow.registration_rejected events (d8dcd48)
  • billing: Wave 3 entitlements snapshot + Wave 4 plan enforcement tightening (8c75807)
  • billing: wire billing event dispatcher into enforcer, dunner, downgrade, sla (3a95c2d)
  • billing: wire cloud-only Stripe SLA credit issuer into services (c7fbd19)
  • runtime: require redis and sequin (df5a78a)
  • webhook: add billing event dispatcher adapter (c477bba)

Bug Fixes

  • api-keys: atomically create rotated keys (8318b39)
  • api: account for cli device-code rate budget (57bdae5)
  • api: align cli polling with route limits (42b5017)
  • api: align trigger dry-run limit checks (bce9f9a)
  • api: audit trigger mutation outcomes (ad35c5b)
  • api: authorize workflow topology endpoints (41517b8)
  • api: avoid audit writes for rejected run tokens (5ce3e86)
  • api: avoid caching webhook signing secrets (320d502)
  • api: complete idempotency after request commit (9377c29)
  • api: count bulk triggers in rate limits (18a7648)
  • api: encrypt endpoint signing secrets (b2f4b1f)
  • api: enforce bulk trigger daily budget (303296d)
  • api: enforce key lifetime on rotation (a56a4ab)
  • api: enforce RBAC for DLQ admin scopes (c4c63e2)
  • api: enforce trigger permissions for event dispatch (c367383)
  • api: enforce workflow trigger scopes for events (80d5f03)
  • api: fail closed for event source signatures (54ff2e3)
  • api: fail closed on dlq audit writes (8da1a3b)
  • api: fail closed on outbox audit writes (7579520)
  • api: filter dlq listing by environment (eb115e7)
  • api: filter webhook deliveries by environment (0464c76)
  • api: gate batch cron overlap policy (40d3f0b)
  • api: gate on-failure job chaining (5999eb6)
  • api: guard run resources by environment (394c95a)
  • api: harden billing and environment bulk access (e960c25)
  • api: include inherited role permissions in grant checks (24bc4d7)
  • api: mint usable rbac sse tokens (f4702da)
  • api: preserve environment scope in sse tokens (2c80002)
  • api: preserve idempotency path case (dff0daf)
  • api: preserve rotation webhook secret (90e8d1a)
  • api: prevent cross-project workflow clones (64f26e3)
  • api: prune expired cli device codes (1e57849)
  • api: redact outbox audit details (ad53e69)
  • api: redact rotation webhook audit url (24b7a25)
  • api: redact webhook delivery urls (c631710)
  • api: remove stale timeline nolint (71ee70b)
  • api: require durable audit export events (0999d23)
  • api: require org scope for billing controls (8406052)
  • api: require project scope for group and job analytics (10239bc)
  • api: require project-wide outbox admin access (f49ef91)
  • api: require rbac manage for workflow policies (b8fd0b5)
  • api: require secrets write for environment variables (48dc345)
  • api: require webhook scope for test endpoint (c010250)
  • api: restrict project budget mutations by scope (2dc710a)
  • api: return retryable webhook errors (51e3fdf)
  • api: scope admin dlq list by environment (672ae6d)
  • api: scope event trigger stream messages (99cc2e2)
  • api: separate bulk dlq replay modes (fa53fe9)
  • api: strip request tx from idempotency cleanup (05a41f8)
  • api: tighten activity stream scopes (923afd0)
  • api: validate bulk trigger timing bounds (32861fa)
  • api: validate rotation webhook delivery urls (b96f44b)
  • app: add page h1s, table aria-labels, and dialog autoFocus (6f5ccdd)
  • app: clean up dashboard e2e warnings (451e838)
  • app: close remaining deepsec findings (051dcc3)
  • app: consume organization deletion tokens (74c92b1)
  • app: disable devtools transform in production builds (8ad8ad5)
  • app: enforce project rbac on api hooks (9e854cd)
  • app: harden account auth flows (c1880f7)
  • app: harden billing authorization (52a5fc8)
  • app: harden internal api proxy (29c2bfc)
  • app: harden production build outputs (0cd4f27)
  • app: improve form a11y with isTouched gating and aria attributes (476ce08)
  • app: paginate project scope membership lookup (05afb92)
  • app: repair organization project lifecycle (4116641)
  • app: stabilize project helpers and contact controls (f00fc9b)
  • app: throttle support contact actions (2375663)
  • app: wire run actions, scope schedule runs, drop undefined rounded-custom (41bb462)
  • app: wire schedule and workflow trigger/pause actions and remove dead UI (8aa7306)
  • audit: atomically age deadletter evidence (7a4c9dc)
  • audit: avoid stale epoch retries (77090eb)
  • audit: bound retention day cutoffs (8e40da6)
  • audit: check destructive audit privileges (8143d9c)
  • audit: detect unsafe audit column grants (59ef843)
  • audit: distinguish retention overrides from defaults (e75d6f6)
  • audit: drop deadletter rows with durable audit (67d48d8)
  • audit: fail closed on retention audit (85c9790)
  • audit: page deadletter rows with stable cursor (78f8cc7)
  • audit: replay deadletter rows atomically (ae60f48)
  • billing: accept block project budgets (3c23b0f)
  • billing: allow single-day usage exports (26ee01c)
  • billing: bound prometheus uptime queries (619eaf3)
  • billing: bound usage export queries (7cd8855)
  • billing: bound usage report totals to period (1a9690d)
  • billing: clamp active addon entitlements (6bb31f8)
  • billing: clean up resources after grace restriction (fa76b08)
  • billing: clear entitlements on contract expiry (1be9a50)
  • billing: credit overlapping sla contracts (6ce5be9)
  • billing: emit webhook amounts in microusd (b925fc6)
  • billing: enforce contract expiry once (4e833db)
  • billing: enforce quotas during payment grace (b9302ee)
  • billing: enforce schedule downgrades on workflows (faa51d1)
  • billing: fail closed on plan limit lookup errors (c1fb00d)
  • billing: fail closed on retention lookup errors (49df2da)
  • billing: finalize usage report send claims (e3569c0)
  • billing: flush usage snapshots across lookback (be904c6)
  • billing: harden quota and report enforcement (921c95f)
  • billing: harden usage csv formula escaping (5055fa7)
  • billing: include recorded compute in usage history (5dcb2d5)
  • billing: keep restricted orgs out of grace (237f86c)
  • billing: label sla credits by breached period (719ee80)
  • billing: list overlapping sla contracts (0822a40)
  • billing: make cost recording durable (ced55fb)
  • billing: persist sla credit webhook state (21915d6)
  • billing: preserve newest downgrade resources (13436fa)
  • billing: preserve restrictions on active subscription updates (3f56f40)
  • billing: reconcile addons on plan changes (d52f498)
  • billing: refresh payment restriction entitlements (d1b9dfe)
  • billing: reject invalid sla uptime credits (8e08688)
  • billing: remove retention org list cap (ebf493f)
  • billing: report actual downgrade preview usage (58bfbca)
  • billing: report actual downgrade usage (71cc6af)
  • billing: require org scope for billing mutations (641b447)
  • billing: reserve worker connections globally (130f25c)
  • billing: retry failed downgrade enforcement (93ab729)
  • billing: satisfy sla calculator store interface (00338b5)
  • billing: scope sla invoice lookup (a9dd97a)
  • billing: send admin emails only to verified users (0f18647)
  • billing: serialize member quota assignments (5e483f7)
  • billing: skip paid invoices in sla credit issuer (ab52eff)
  • billing: skip stale entitlement backfills (c96bbc3)
  • billing: suppress duplicate billing.delinquent on initial dunning entry (852aa67)
  • billing: surface usage summary errors (a0cdb50)
  • billing: wire budget and usage schedulers (e9c64d6)
  • cdc: dedupe audit redelivery (fba1f6e)
  • cdc: dedupe slo points by run (1b2ec50)
  • cdc: dedupe slo redelivery inserts (7e4960d)
  • cdc: dedupe terminal analytics redelivery (a27304e)
  • cdc: harden pull side effects (065d525)
  • cdc: ignore audit snapshot actions (f2bc1a2)
  • cdc: ignore unsupported audit actions (eda6c09)
  • cdc: map all terminal run failures (bbe2f1a)
  • cdc: preserve computed slo metrics (520d6e3)
  • cdc: record terminal slo failures (a49906e)
  • cdc: reserve webhook dedupe keys (95f8ed8)
  • cdc: verify sequin webhook pushes (8f42a5c)
  • cli: align history backfill retention (a72ee13)
  • clickhouse: avoid long-lived sensitive analytics columns (3108e9d)
  • clickhouse: bound exporter buffer bytes (4eeeb08)
  • clickhouse: redact run failure analytics (67d2c6b)
  • clickhouse: redact webhook analytics urls (f848504)
  • clickhouse: sanitize exporter analytics payloads (6ed0bdd)
  • config: run aggregate validation on load (3ebfb18)
  • crypto: accept url-safe encryption keys (ed7df66)
  • domain: validate compensation workflow statuses (0f10236)
  • e2e: configure webhook secret encryption (4dbd954)
  • environments: harden variable secrecy and inheritance (ac5588e)
  • environments: scope inheritance resolution (3db999e)
  • eventfilter: fail closed on invalid filters (091d3d1)
  • events: guard trigger status updates with cas (6a083b7)
  • events: preserve requeue checkpoints (21b0464)
  • events: scope trigger listings and purges by environment (eb52e67)
  • grpc: bind in-flight replays to assignments (177d953)
  • grpc: bind worker results to assignments (37b6316)
  • grpc: close worker streams on key expiry (5f44d56)
  • grpc: expire rotated worker streams (4df96ba)
  • grpc: fail closed on revocation subscribe (3cbbc91)
  • grpc: fence sweep with stream leases (1a153bc)
  • grpc: harden worker stream handoff (f16de07)
  • grpc: recover durable worker result handoffs (48dff37)
  • grpc: recover stale worker assignments (c2eb4d3)
  • grpc: renew worker connection reservations (d2926c1)
  • grpc: scope worker ids by project (85fd6b1)
  • grpc: skip connected workers during sweep (16ec2e0)
  • grpc: track worker key expiry deadline (72d2d2c)
  • jobs: gate version snapshots by version (1fe6a90)
  • jobs: protect endpoint signing secrets (22130f6)
  • jobs: remove memory on delete (ef4244f)
  • jobs: snapshot versioned execution settings (74321f4)
  • loadtest: bound generator trigger goroutines (348a2a6)
  • loadtest: cancel endurance spike sleeps (03325fe)
  • loadtest: detach chaos cleanup context (fb73bc1)
  • loadtest: drain tenant simulation triggers (1f35b06)
  • loadtest: fail closed during chaos spikes (dc1183f)
  • loadtest: fail closed on missing redis cascade (576939e)
  • loadtest: fail closed on stats errors (4818b78)
  • loadtest: harden audit harness shutdown (48480ee)
  • loadtest: honor configured trough hour (a8c968b)
  • loadtest: preserve ramp breaking step metadata (e2c9c37)
  • loadtest: resolve endurance job ids (14dbc42)
  • loadtest: scope disk pressure cleanup (24f9a84)
  • loadtest: scope disk pressure cleanup (ea89140)
  • loadtest: surface metrics write errors (f465b1f)
  • loadtest: track accepted audit drain work (0dcffde)
  • loadtest: wait for endurance completion (3a3251f)
  • migrate: harden manual migration inputs (f5fc6bf)
  • migrations: satisfy migrationlint on dunning_state (799bb80)
  • migrations: satisfy safety lint for new indexes (91805fc)
  • migrations: split dunning active index into standalone CONCURRENTLY migration (a97db06)
  • notification: dispatch deliveries concurrently (beb651e)
  • notification: redact delivery secrets (ab01f63)
  • notification: register email sender in worker (56ca721)
  • notification: skip disabled channel deliveries (476ae2d)
  • outbox: retry unknown enqueue failures (fda305f)
  • pentest: escape revoke prefix patterns (eba0624)
  • pubsub: preserve sentinel redis tls (beeb0bd)
  • queue: clear notifier degraded on reconnect (4d86cfb)
  • queue: filter worker runs from partitioned dequeue (2548fd0)
  • queue: gate half-open db circuit probes (7dcd2da)
  • queue: rearm expired claim cursors (471e602)
  • queue: release canceled db circuit probes (a077c82)
  • queue: reset notifier disconnect timer (7987d4c)
  • queue: scope worker dequeue by project (f7eb597)
  • rbac: invalidate role permission caches (f0707a6)
  • runtime: make required stack pass smoke (e65fa13)
  • scheduler: apply downgrades before enforcement (a5801d4)
  • scheduler: apply downgrades only for enforced tier (d65071e)
  • scheduler: avoid counter reconciliation table locks (a87e803)
  • scheduler: block cron workflows for inactive projects (f63ece3)
  • scheduler: block rotation webhook redirects (6a05916)
  • scheduler: bound quota resume by pause time (1786866)
  • scheduler: claim contract reminders durably (0d6fb64)
  • scheduler: claim due debounces before firing (28c53c3)
  • scheduler: claim usage reports before send (dce2ba0)
  • scheduler: dedupe anomaly ticks by default (0befe6a)
  • scheduler: dedupe budget notification deliveries (5d0b24e)
  • scheduler: dedupe cron fires durably (10c6f3e)
  • scheduler: drop empty partitions atomically (0165ec7)
  • scheduler: enforce cron admission limits (47a5591)
  • scheduler: enforce cron daily cost quotas (f791a9c)
  • scheduler: enforce expired payment grace periods (9cf25cc)
  • scheduler: fail outbox flusher cycle on errors (76aeef9)
  • scheduler: flush batches transactionally (c9c8d80)
  • scheduler: gate slo evaluation with advisory lock (775c821)
  • scheduler: guard contract expiry races (7e5da22)
  • scheduler: guard priority promotion state (53c28b2)
  • scheduler: harden api key auto rotation (838830e)
  • scheduler: harden cron and batch replay paths (54739ca)
  • scheduler: harden replayable quota paths (2525ad0)
  • scheduler: harden trigger and metric guardrails (78a513a)
  • scheduler: include previous month partition (462fb8b)
  • scheduler: invalidate downgrade plan cache promptly (4050cb6)
  • scheduler: load all cron jobs (9323f8f)
  • scheduler: lock debounce admission checks (54034a3)
  • scheduler: pin advisory lock cycles (2459b27)
  • scheduler: preserve replacement cron runs (a949370)
  • scheduler: quarantine invalid outbox metadata (0f648cd)
  • scheduler: recheck debounce limits at fire time (d06977e)
  • scheduler: reconcile counters under write lock (116ee5a)
  • scheduler: reconcile cron schedules (63841b1)
  • scheduler: redact anomaly notification payloads (d8dbf07)
  • scheduler: redact org budget alert payloads (71d9c93)
  • scheduler: release advisory locks after panics (6a30404)
  • scheduler: repair missing claims with queue name (d06c2f8)
  • scheduler: repair slo warning delivery (0bba26c)
  • scheduler: reschedule throttled debounce rows (f4cb280)
  • scheduler: retain debounce rows until completion (24bc6ae)
  • scheduler: retry empty quota resume periods (aa1bca1)
  • scheduler: retry failed downgrade enforcement (75f0860)
  • scheduler: retry failed hourly aggregations (0f50a07)
  • scheduler: retry throttled outbox enqueues (a3ec5ca)
  • scheduler: run heartbeat gc loop (a8c749c)
  • scheduler: run slo evaluator loop (04e2dec)
  • scheduler: skip invalid cron timezones (31b2d2d)
  • scheduler: skip missing reindex targets (720aba1)
  • scheduler: surface outbox flusher panics (ab04556)
  • scheduler: verify claim queue triggers at startup (3781acc)
  • secrets: resolve job secret environments deterministically (9088f1f)
  • security: harden auth and webhook guards (e9dcd7c)
  • security: require encrypted endpoint secrets (0bdde1b)
  • store: count webhook limits across project rls (c55e818)
  • store: enforce workflow project context (53d9d29)
  • store: hide masked org runs (e6cd69c)
  • store: page workflow step runs forward (535c14d)
  • store: preserve standard environments (f929d1b)
  • store: preserve transaction configuration (e6bad35)
  • store: read cost gate action from snapshot (721bd87)
  • store: require encryption for environment variables (8b78157)
  • store: return all workflow steps (76f0e3c)
  • store: scope event trigger keys by project (357a49d)
  • store: scope inherited role permissions (f177b93)
  • store: scope workflow step lookups (cd42cea)
  • store: trim oldest log drains first (ea704c2)
  • store: trim oldest notification channels first (d814c19)
  • store: trim oldest webhook subscriptions first (24f64a4)
  • strait: audit internal bypasses and scope worker sweep (9d243fd)
  • strait: close trigger and webhook retry races (7e91c14)
  • strait: fail closed on unsigned secret delivery (e9ee559)
  • strait: harden deepsec findings (0823352)
  • strait: harden migration and webhook safety guards (601b7d7)
  • strait: repair deepsec ci regressions (56dc78b)
  • strait: stabilize deepsec validation suite (9f3646a)
  • telemetry: ignore inbound sentry sampling (449cac2)
  • telemetry: redact common sentry query credentials (e9b0788)
  • telemetry: redact otlp endpoint credentials (6a87832)
  • telemetry: redact sentry credential query aliases (798cff4)
  • webhook: authenticate idempotency keys (15b0c83)
  • webhook: harden circuit breaker keys (259987d)
  • webhook: redact malformed delivery urls (9e801c8)
  • webhook: require encrypted subscription secrets (6e23561)
  • webhooks: allow subscription revocation with history (305c645)
  • worker: align endpoint failure keys (3f7a360)
  • worker: block secret dispatch to endpoint overrides (7bb6f42)
  • worker: isolate endpoint state by project (252ba1b)
  • worker: normalize non-json success bodies (80638d7)
  • worker: require explicit secret release for endpoints (960bba1)
  • workflow: apply canary routing to runs (004473d)
  • workflow: authorize compared workflow runs (76c9367)
  • workflow: cap sleep step duration (cc4ccd9)
  • workflow: dedupe snapshots by definition (5c19d9d)
  • workflow: execute manual compensation jobs (a06ad57)
  • workflow: reject unknown step types (59a0be7)
  • workflow: scope auto-emitted event keys (2382f25)
  • workflows: dedupe step dependency fan-in (7570278)
  • workflows: emit creatable hook event types (8bc7355)
  • workflows: keep hook payloads out of errors (ecf5eba)
  • workflows: preserve terminal bulk cancels (70ff1c7)
  • workflows: retain all terminal workflow states (f3a89e1)
  • workflows: serialize approval decisions (8452164)
  • workflows: validate event notify callback URLs (b183dd8)
  • workflows: validate project ownership for workflow changes (ae39100)

Performance

  • api: fast-path event payload matching (6e4b9af)
  • api: linearize role invalidation walk (888d2f4)
  • api: make timeline overlap detection output-sensitive (fef2f26)
  • api: optimize workflow critical path estimate (0be1547)
  • api: reduce audit redaction allocations (5a659a3)
  • app: fix empty chart render, consolidate effects, lazy-load billing tabs (80097ff)
  • queue: batch transactional outbox inserts (9af30b3)
  • queue: optimize worker queue scope routing (3d8cd51)
  • queue: preallocate claim id buffers (ee180bc)
  • queue: skip empty cursor clock reads (b1938e8)
  • queue: stream enqueue batch copy rows (e370507)
  • scheduler: batch approval reminder channel lookups (a005f10)
  • scheduler: cache batch flusher job lookups (0377848)
  • scheduler: improve delayed poller catch-up (3076df5)
  • scheduler: prune budget alert state by day (c249be5)
  • scheduler: reduce approval reminder allocations (3b5894c)
  • scheduler: reduce approval reminder allocations (b0b2eb3)
  • wave 1 + wave 2 hot-path and audit-chain hardening (81fbc13)
  • worker: write heartbeats through side table (413b934)
  • workflow: avoid redundant payload merge work (30108a8)
  • workflow: avoid sorting compensation plan steps (eea5c4f)
  • workflow: cache template variable resolution (c87e6db)
  • workflow: fast path dependent skip shapes (367dbaa)
  • workflow: fast path expected completion chains (1692aa0)
  • workflow: fast path ordered dag chains (43e70e5)
  • workflow: fast path ordered run comparisons (ae8df96)
  • workflow: optimize dag condition paths (d0653ad)
  • workflow: optimize workflow hot paths (0b82fac)
  • workflow: reduce callback scheduling overhead (5cd2d5b)
  • workflow: reduce child output aggregation overhead (b488c9e)
  • workflow: reduce dag traversal allocations (4301c2d)
  • workflow: skip parsing nonterminal stage notifications (bd64d89)
  • workflow: skip static payload rendering (a0c351f)
  • workflow: skip unresolved template rendering work (0b25d03)
  • workflow: speed up compensation planning (0327752)
  • workflow: speed up dag simulation planning (f431afe)
  • workflow: speed up debug view assembly (b65c243)
  • workflow: speed up dependent skip traversal (634aeec)
  • workflow: speed up step override filtering (10a54d2)
  • workflow: trim payload merge overhead (8d343fd)

Chores

  • re-cut 0.1.6 release from latest master (0e2482e)