Releases
v0.1.6
Compare
Sorry, something went wrong.
No results found
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 )
You can’t perform that action at this time.