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
escalateTo carried the same pre-D3 trap the 'position' approver type fixed:
its description said 'User id, role, or manager level', its Studio picker was
a role picker, and the runtime used the raw string verbatim — a position name
authored there reassigned the request to an inert literal.
- spec: escalateTo is a position machine name or user id; xRef kind role→position.
- plugin-approvals: escalateRequest expands position holders (sys_user_position
∪ sys_member.role transition source) for the reassign hand-off and the notify
audience; empty expansion falls back to the literal user id, so existing
configs naming a user keep working. Audit keeps the authored target.
- lint: approval-escalation-reassign-no-target warns when action 'reassign'
has no escalateTo (silently degrades to notify at runtime).
- docs/skill: SKILL.md escalation row spells out the contract; approval
reference regenerated.
Claude-Session: https://claude.ai/code/session_01DgP1vEK6nrkkvnwQxCPGbe
Co-authored-by: Claude <noreply@anthropic.com>
|`escalation`| Optional per-node SLA — `{ enabled, timeoutHours, action: reassign\|auto_approve\|auto_reject\|notify, escalateTo?, notifySubmitter }`. `escalateTo` is a **position machine name** (expanded to its holders via `sys_user_position`, ADR-0090 D3) or a specific user id — never a membership tier. `reassign` without `escalateTo` degrades to notify (linted)|
396
396
|`maxRevisions`| ADR-0044 — max **send-backs-for-revision** per run before auto-reject. Default `3`; `0` disables send-back. Only meaningful when the node has a `revise` out-edge |
0 commit comments