Skip to content

Release v0.269.0

Choose a tag to compare

@github-actions github-actions released this 06 Oct 19:08
· 46 commits to master since this release

[0.269.0] - 2026-10-06

Added

  • Agent harness for Claude Code and Codex:
    • hooks in scripts/agents/ deny commands that discard uncommitted work and SQLX_OFFLINE overrides, ask
      before commits, pushes and -p-scoped cargo builds, refuse hand edits to generated files, require loading
      the governing skill before editing guarded paths, and run rustfmt plus rule checks on edited Rust
    • new skills: Rust style (required before any .rs edit), renaming a concept, adding a bounded context,
      prose and comments
    • make lint-harness (part of make lint, and run by CI on every PR) checks the hooks, skill registration
      and routing, and documentation links
  • Flows: GraphQL lists the flows a completed flow started downstream (FlowEventCompleted.downstreamFlows,
    Flow.downstreamFlows), including history recorded before this release. Datasets the caller cannot read
    show only their ID, and webhook deliveries are shown only to dataset maintainers

Changed

  • Outbox and flow-system event delivery on Postgres wait for older in-flight transactions to commit before
    moving past them, so a long transaction delays delivery instead of risking a skipped message
  • Agent guidance consolidated: AGENTS.md is the single source of rules, skills moved to .claude/skills/
    with .agents/skills/ symlinks for Codex, and DEVELOPER.md gained an "Agent Harness" section
  • Database migrations are forward-only: make sqlx-add-migration no longer creates down migrations
  • Stricter Clippy policy: match_wildcard_for_single_variants, wildcard_enum_match_arm (no catch-all _
    arms over enums) and allow_attributes_without_reason are enforced workspace-wide; lint suppressions are
    #[expect] with a reason (halved in number), and usize casts use checked conversions
  • GraphQL (breaking): FlowActivationCauseDatasetUpdate.dataset is nullable, null when the dataset was
    deleted or is not readable by the caller; the new datasetId is always set. DependencyDatasetResult
    and its variants are renamed to DatasetAccessResult, DatasetAccessResultAccessible and
    DatasetAccessResultNotAccessible, with the same fields

Fixed

  • Flows: enabling a transform trigger now detects inputs whose history was rewritten while the trigger was off
    (reset, reset to metadata, compaction), instead of treating the derived dataset as up to date. With recovery
    enabled for breaking changes, the derived dataset is reset to metadata and then rebuilt from its inputs.
  • Concurrent modifications of flow triggers, flow configurations, account quotas and resources are detected
    instead of one writer silently overwriting the other
  • Flows: the history of a flow activated by a now-deleted upstream dataset no longer fails to load, and it no
    longer reveals upstream datasets the caller cannot read
  • Outbox and flow-system events of a transaction that commits after a later one no longer go undelivered
  • Reactive flow triggers whose flow was pending at restart react to input changes again
  • Flow configurations of a deleted dataset are no longer returned, and a dataset re-added with the same ID can
    be configured again
  • Resource update activation causes are deduplicated against all earlier causes of a flow, not only the first
  • Retry policies with a zero minimum delay or very long delays no longer panic; GraphQL rejects a minimum delay
    over u32::MAX seconds with a validation error
  • Webhook delivery flows return an error instead of panicking on an unsupported event type or payload
  • Unregistering a flow sensor no longer drops the routing of downstream sensors that listened to it