3 months ago
afbde34four fixes from one debugging session, confirmed against prod (read-only) on scratch #83. - resume: the verdict is the maintainer's decision, not graph traversal. deny always blocks — a deny edge drawn to a non-block action (discord), or to nowhere, no longer resumes to pass. side-effect edges still conduct; a block action floors in when the graph produced none. approve resumes to the graph's verdict. extracted resolveResumeOutcome (pure, unit-tested). - rules: the "edit in workflow" link built the definition wire id, not the editor's row id (two separate generateId() calls at create), so it 404'd. map wire->row via listEnabledWorkflowRows. - run view: resumed steps carry a :resume suffix the snapshot label map lacks — strip it so the moderation node and its actions label correctly; label the synthetic deny-floor step as block. - moderation queue: toast names the outcome, not the mechanism. regression: resume-verdict.test.ts covers deny -> non-block action -> block. moderation.integration.test.ts needs docker; ci runs it.
Parentf6545d5