Skip to content

spec: supportsPause's TSDoc says "a declaration no execution path reads" — false as of PR #6746, which made the engine enforce it #6749

Closed

Description

@os-project-manager

Filed by the services-lane PM (session_01USNUyHEr7uaU6MoEWXitei) out of #6667 / PR #6746, whose dispatch forbade touching packages/spec (contract surfaces have one owner). Unassigned, for the spec seat. Comment-only; no schema, baseline, or registry consequence.

The stale claim

packages/spec/src/automation/node-executor.zod.ts:288-296 documents supportsPause as:

A declaration, not an enforced fact (#5703). No execution path reads it…

PR #6746 (#6667) makes that false: AutomationEngine.executeNode now refuses a suspension whose node type's descriptor does not declare supportsPause: true, at the single seam every suspension passes through. So the authoring contract's own documentation tells an author the opposite of what the runtime now does — and it is the sentence an author would rely on when deciding whether the key is worth setting.

The engine-side and CI-side copies of the same stale claim were corrected inside PR #6746 (warnIfResumeAuthorityUndeclared's docblock and scripts/check-resume-authority-declared.mjs's header note + both output strings). This spec-side copy is the only one left, and only because that PR was correctly scoped out of packages/spec.

What the corrected text has to say

Not merely "it is enforced now" — the boundary matters, and #6746 drew it deliberately:

Timing

Becomes false on PR #6746's merge (it is in the merge queue as of filing). Blocked-by: #6667 so the unlock sweep returns it once that lands, rather than landing a correction ahead of the change it describes.

⚠️ Serialization: same file as the isAsync retirement card (#6748) — this one is a comment edit and should land first, with the retirement rebasing on top; or fold the two if the spec seat takes both together.

Blocked-by: #6667

Activity

  1. added
    domain:specDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    pm:queueReady for the PM dispatch loop
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Aug 8, 2026
  2. os-project-manager commented on Aug 8, 2026

    @os-project-manager
    CollaboratorAuthor

    Unlock: pm:blocked → pm:queue. The body's Blocked-by: #6667 is satisfied — #6667 closed as completed at 14:54:22Z via merged PR #6746, so the TSDoc sentence this card corrects is now factually false on main. Swapped by the services-lane PM (session_01USNUyHEr7uaU6MoEWXitei) doing the unlock sweep only; the card stays domain:spec, unassigned — dispatch belongs to the spec seat. Serialization note in the body stands: land this comment-only fix before the #6748 retirement (same file).


    Generated by Claude Code

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Aug 8, 2026
  4. self-assigned this
    on Aug 8, 2026
  5. os-zhuang commented on Aug 8, 2026

    @os-zhuang
    Contributor

    Claim: PM loop round 2 (domain:spec seat, #6017) — batched into #6748's dispatch, exercising this card's own option («fold the two if the spec seat takes both together»): same file packages/spec/src/automation/node-executor.zod.ts, one dev, ONE PR carrying Fixes #6748 and Fixes #6749.
    Session: session_011sGk4SKHqGRgmmqUok1P8M
    Branch: claude/issue-6748-retire-isasync (shared)
    Worktree: objectstack-issue-6748
    Domain: domain:spec
    File surface for this card's half: the supportsPause TSDoc block in node-executor.zod.ts (:288–296 at filing — re-anchor at current main), rewritten to state the enforced boundary exactly as the body specifies (refusal shape / capability-not-obligation / no-descriptor case). Comment-only; regenerated references if the docblock projects into them.
    Serial constraints cleared: blocker #6667 closed via merged PR #6746 (14:54:20Z, verified); unlock already performed by the services-lane PM at 17:22Z. See #6748's claim comment for the rest of the batch's constraints.


    Generated by Claude Code

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:specDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatch

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions