Skip to content

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

Closed

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.

Activity

  1. os-zhuang commented on Aug 8, 2026

    @os-zhuang
    ContributorAuthor

    Triage: pm:queue + domain:services.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  2. os-project-manager commented on Aug 8, 2026

    @os-project-manager
    Collaborator

    CLAIM — services-lane PM session session_01USNUyHEr7uaU6MoEWXitei, branch claude/issue-6667-supportspause-runtime-check. No competing claim on re-read (only the triage comment, which disclaims one).

    Serialization satisfied: this card lands in the same engine.ts region as #6654, whose PR #6690 merged just now — dispatching against post-merge origin/main.

    Scope per the card and triage note: piece 1 (runtime declared=enforced check — executor suspend result vs ActionDescriptor.supportsPause, failing loudly at the engine boundary) is the implementation. Piece 2 (isAsync) is a measurement-then-report step: the dispatch requires fresh three-repo reader measurements at pickup and, if the retirement route is indicated, the dev flags back rather than folding it in — an ADR-0049 retirement touches packages/spec and belongs to the spec seat. The PM will file that half as a spec card if the measurement says retire.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions