You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
IApprovalService.recall docstring says "only the submitter (or a system context)" — it predates the #3424 admin override and does not carry the pending-only scope #14670
Split from #14602 (item 2) by the triage seat, on the filer's own routing note: this half lands in packages/spec, which is the domain:spec seat's single-owner surface, while item 1 lands in plugin-approvals. Splitting keeps each lane's single ownership intact.
The defect
packages/spec/src/contracts/approval-service.ts, the recall docstring, verbatim at origin/main2aa8456:
Withdraw a pending request. Only the submitter (or a system context) may recall. Finalises the request as recalled and resumes the owning flow run down the reject branch with output.decision = 'recall'.
ADR-0044: also valid on the LATEST returned request of its (run, node) — the submitter abandons the revision window instead of resubmitting; the request flips returned → recalled and the run resumes down reject the same way.
Two things are now missing from the first paragraph:
The second is the more misleading of the two: a reader who takes the two paragraphs together concludes an admin can recall a returned request. #12775 pins that they cannot, for both admin postures.
It was already imprecise on main before PR #14571, and it sits under packages/spec/**, outside that card's fence — which is why the in-seat Clause-② review classed it non-blocking rather than fixing it there. The published prose elsewhere is already correct: content/docs/automation/approvals.mdx:550-556, sys-approval-request.object.ts:561-568 and ADR-0044 all matched the pending-only scope before the PR. This docstring is the one surface that did not keep up.
Scope
Prose only. ⛔ No schema change, no shape change, no behaviour change — the implementation is correct and ruled; only its description in the contract is stale. Not Clause ②: nothing about the accept/reject set moves and no public surface widens.
The rewrite needs to say who may recall (submitter, system context, override actor), and that the returned widening is the submitter's alone. Whether to restructure the two paragraphs or amend the first is the spec seat's call.
Re-check: git show origin/main:packages/spec/src/contracts/approval-service.ts | sed -n '705,720p'
Split from #14602 (item 2) by the triage seat, on the filer's own routing note: this half lands in
packages/spec, which is thedomain:specseat's single-owner surface, while item 1 lands inplugin-approvals. Splitting keeps each lane's single ownership intact.The defect
packages/spec/src/contracts/approval-service.ts, therecalldocstring, verbatim atorigin/main2aa8456:Two things are now missing from the first paragraph:
organization_adminor platform admin may recall a request they did not submit. The docstring's "only the submitter (or a system context)" reads as an exhaustive list and is not one.returnedapproval: an ADR-0044 side effect to retire, or a capability to keep? The gate, the prose and the viewer flag disagree three ways #12775. The gate is spelled asattachViewers'can_override:status === 'pending' && isOverrideActor(...). So the override arm does not inherit the ADR-0044returnedwidening that the paragraph below grants the submitter — and the docstring's structure (a general rule, then an ADR-0044 widening) actively suggests it does.The second is the more misleading of the two: a reader who takes the two paragraphs together concludes an admin can recall a
returnedrequest. #12775 pins that they cannot, for both admin postures.Not a defect introduced by #12775
It was already imprecise on
mainbefore PR #14571, and it sits underpackages/spec/**, outside that card's fence — which is why the in-seat Clause-② review classed it non-blocking rather than fixing it there. The published prose elsewhere is already correct:content/docs/automation/approvals.mdx:550-556,sys-approval-request.object.ts:561-568and ADR-0044 all matched the pending-only scope before the PR. This docstring is the one surface that did not keep up.Scope
Prose only. ⛔ No schema change, no shape change, no behaviour change — the implementation is correct and ruled; only its description in the contract is stale. Not Clause ②: nothing about the accept/reject set moves and no public surface widens.
The rewrite needs to say who may recall (submitter, system context, override actor), and that the
returnedwidening is the submitter's alone. Whether to restructure the two paragraphs or amend the first is the spec seat's call.Re-check:
git show origin/main:packages/spec/src/contracts/approval-service.ts | sed -n '705,720p'Refs: #14602 (parent finding, item 2) · #12775 · PR #14571 · #3424 · ADR-0044
Generated by Claude Code