Skip to content

automation: enforce ActionDescriptor.supportsPause at runtime (executor suspend vs declaration), and decide isAsync disposition #6667

Description

@os-zhuang

Successor to #5703, filed per the maintainer ruling of 2026-08-08 (option A there: close the original card — its "zero readers" premise expired once #5561 / PR #5725 landed the authoring-time warning and the CI gate for supportsPause).

Two pieces remain that the #5703 thread identified but no card owns:

  1. Runtime consistency check for supportsPause. The automation: resumeAuthority defaults to 'any', so every future pausing node ships fail-open — ADR-0044 says this is "tracked separately" and nothing tracks it #5561 warning (warnIfResumeAuthorityUndeclared) and the check-resume-authority-declared.mjs CI gate cover the authoring/CI side only. The runtime blind spot is still open: an executor can return a result with suspend set to true while its ActionDescriptor declares supportsPause false, and nothing flags the mismatch. Proposed shape (from the automation: ActionDescriptor.supportsPause / isAsync 是零读者的声明字段 —— 引擎判定「暂停」的唯一事实是 execute() 返回的 suspend: true #5703 thread): validate the executor's suspend result against the descriptor's declaration at the engine boundary and fail loudly on mismatch, so declared = enforced holds at runtime, not just at authoring time.

  2. isAsync disposition. Taken alone, isAsync still has zero readers across the three repos (measured on the automation: ActionDescriptor.supportsPause / isAsync 是零读者的声明字段 —— 引擎判定「暂停」的唯一事实是 execute() 返回的 suspend: true #5703 thread, 2026-08-08). When this card is taken up: retire it under ADR-0049 enforce-or-remove, or enforce it the same way as supportsPause if a real consumer exists by then. Decide on fresh measurements at pickup time, not today's reading.

Dedup: searched open issues for supportsPause before filing — only #5703 itself and two PM registry cards match; no existing card owns this work.

No domain or queue labels applied — routing labels are the triage seat's single-producer territory.

Metadata

Metadata

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions