mirror of
https://github.com/windmill-labs/windmill.git
synced 2026-10-15 16:03:02 +00:00
* feat: mark failed jobs as resolved so handled failures stop showing red Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: constrain auto-resolve to the proven retry chain and honor resolved filter everywhere Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: apply resolved filter to queue-union, concurrency and delete paths, bound note Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: sweep resolutions on workspace delete, verify helper args, enforce UI limits Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: count resolution note in characters on both sides of the API Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: skip the queue lookup for cancel-all under the resolved-only filter Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: converge retry auto-resolution from either commit order, keep notes on re-resolve Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs: correct the idempotency claim on the retry auto-resolve sweep Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat: gate resolution notes and attribution behind enterprise, add note popover Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: hide resolution from operators, exclude flow steps, enforce EE licence at runtime Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs: add job_resolution.automatic to the summarized schema Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: preserve stored attribution when re-resolving without a valid licence Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * docs: condense the attribution-preservation comment to four lines Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: validate resolution notes by code point instead of a UTF-16 maxlength Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: keep the resolution popover open when a note is rejected Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * feat: offer to resolve the original failure after a successful re-run Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: verify supersession server-side and stop re-runs overwriting notes Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: apply tag scope to the superseding run Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> * fix: exclude obscured cross-workspace runs from resolution actions Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
27 lines
1.5 KiB
SQL
27 lines
1.5 KiB
SQL
-- Sparse annotation: one row per failed job whose failure has been handled, either
|
|
-- because a later attempt succeeded or because someone explained it. Resolution is
|
|
-- orthogonal to `v2_job_completed.status`, which stays 'failure' so failure rates,
|
|
-- error handlers and critical alerts keep counting the true failure; only the human
|
|
-- triage surfaces (runs list, run detail) render a resolved failure differently.
|
|
-- Sparse: only failures that someone or something resolved produce rows.
|
|
-- Lifecycle: removed with its job by delete_jobs (no FK, to keep the bulk job delete
|
|
-- cheap), with an orphan sweep in the monitor as a backstop.
|
|
CREATE TABLE IF NOT EXISTS job_resolution (
|
|
job_id UUID PRIMARY KEY,
|
|
workspace_id VARCHAR(50) NOT NULL,
|
|
resolved_at TIMESTAMPTZ NOT NULL DEFAULT now(),
|
|
-- Who and why are enterprise-only, so both are NULL on a manual resolution in CE.
|
|
-- That is why "resolved automatically" is `automatic`, not `resolved_by IS NULL`:
|
|
-- overloading attribution would make every CE resolution look automatic.
|
|
resolved_by VARCHAR(255),
|
|
note TEXT,
|
|
automatic BOOLEAN NOT NULL DEFAULT false
|
|
);
|
|
|
|
ALTER TABLE job_resolution ADD COLUMN IF NOT EXISTS automatic BOOLEAN NOT NULL DEFAULT false;
|
|
|
|
-- windmill_user needs write access: the resolve endpoint runs under user_db so that
|
|
-- v2_job's row-level security decides which runs the caller may annotate.
|
|
GRANT ALL ON job_resolution TO windmill_admin;
|
|
GRANT ALL ON job_resolution TO windmill_user;
|