import type { WorkflowRevisionRequest } from "../workflows/runner.js"; /** * The feedback half of the Todo surface: what happens to a bound Todo when a * run-bound Approval gate is rejected WITH a note. * * It lives beside `workflow-todo-surface.ts` rather than inside it because it is * a loop with its own rules — a cycle bound, and a re-arm that has to satisfy the * trigger it is arming — while the surface next door is a set of one-shot * reflections. The surface re-exports what it hands the runner. */ /** * Re-arms allowed on one Todo before the loop ends in front of the operator * instead. Each cycle needs a FRESH human rejection, so it cannot spin on its * own; the bound is here because a Todo that has been round three times is a * signal about the brief rather than a workflow, and a fourth full pipeline run * buys less than a conversation. Three is also the platform's existing top * rework ceiling (`thorough`), so no new number was invented. * * Deliberately NOT the Todo's `rounds` / `verifyPolicy.maxRounds` budget. That * one bounds an UNGATED machine loop (verifier ↔ executor), which is why it stops * at two: sharing it would let a run's own rework spend the operator's revision * allowance, and the board renders it as "Review round N of M", which a workflow * revision is not. */ export declare const MAX_REVISION_CYCLES = 3; /** * The feedback loop, and the whole reason this hook exists: a rejection carrying * a note means "do it again with this", so the note lands as a comment (where the * next run's first phase reads it) and the Todo returns to the status its own * workflow trigger fires on. The rejecter is the actor, because they decided it. */ export declare function requestRevision(input: WorkflowRevisionRequest): void; //# sourceMappingURL=workflow-todo-revision.d.ts.map