Skip to content

skills(objectstack-api): FLOW_FAILED's innerRefusal is taught as a write refusal only; a script node's function-name refusal fills it with RESOURCE_CONFLICT #32379

Open

Description

@objectstack-fleet

domain:skills#3 · huangyiirene · session_01J8VVAmAzSRKZHAn7T8sArV

Filing gate: ① (a follow-up owed by landed work: the contract review of PR #32377, card #32264, comment 6783849220)

What is wrong. skills/objectstack-api/SKILL.md (on origin/main, the flow-door paragraph near L365–L370) says error.details.innerRefusal is "the { code, message } a node's write was refused with" and lists UNIQUE_VIOLATION, VALIDATION_FAILED, PERMISSION_DENIED. Since PR #32257 (card #32073, ADR-0150 D3), a script node whose config.function is ambiguous in the calling flow's reach, or held only outside its dependencies closure, fails the step as a guard and the flow door answers 400 FLOW_FAILED with innerRefusal: { code: 'RESOURCE_CONFLICT', message } naming each holder. That refusal is not a write refusal, and its code is not in the list. A client author who renders by the taught rule handles it, but one who branches on the listed codes misses it.

Also owed: the api skill's "Choosing between apis: and a code handler" table (near L133) sends a reader to a script node naming a stack function, with no pointer to the package rule that now decides which function runs. One link to the owner text (objectstack-automation, silently-wrong item 3, landing in PR #32377) closes it; ⛔ no restatement.

Reach. PR #32257's tests pin the RESOURCE_CONFLICT inner refusal on a flow door; the api skill is shipped (skills/**).

Business reason. Client authors and agents writing flow-door error handling read the api skill; the code list they are taught is now incomplete for a refusal the platform ships.

Reader who acts. The domain:skills seat dispatches one card thread after PR #32377 merges (the link target lands there). Surface: skills/objectstack-api/SKILL.md and its evals/*.json only for a hit the edit makes false, plus one changeset ('@objectstack/skills': patch, Clause-②: no).

Dedupe. repo:objectstack-ai/objectstack is:issue innerRefusal: 18 hits, one open (#32264, the automation skill, which this card follows); closed #26299 taught the field originally and does not cover a non-write refusal.

Suggested-grade: p3 (a sentence that under-describes a shipped refusal; no protocol change).

Activity

  1. objectstack-fleet commented on Nov 11, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: confirmed · domain:skills · p3 · pm:queue · 2026-11-11T01:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 11, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#3 · huangyiirene · session_01J8VVAmAzSRKZHAn7T8sArV

    Claim: PM loop round 12 · #32379
    Session: cse_01J8VVAkdBkcn8QBYvVe7z6y (card thread; dispatched by seat session session_01J8VVAmAzSRKZHAn7T8sArV)
    Account: huangyiirene
    Branch: claude/project-thread-xb2225
    Worktree: objectstack-issue-32379
    Domain: domain:skills
    Seat: domain:skills#3
    File surface: skills/objectstack-api/SKILL.md, plus its references/*.md and evals/*.json only for a sweep hit, and one changeset (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: opus. --tier reads MANDATORY CONTRACT_REVIEW_TIER for skills/** (clause ①), but the maintainer's standing order in this project (2026-11-03) waives that tier for card threads. The seat runs the contract review of record at CONTRACT_REVIEW_TIER, effort: high.
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6784704236
    Premise: holds. PR #32377 merged as d48fb1538. On origin/main 26f4e6d84, skills/objectstack-api/SKILL.md L369 describes innerRefusal as "the { code, message } a node's write was refused with", and the L133 table row names a script node with no pointer to the package rule. Which refusals fill innerRefusal on main is the thread's first measurement.
    Serial constraints cleared: none of the 40 open PRs touches skills/objectstack-api/**.

  3. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 11, 2026
  4. objectstack-fleet commented on Nov 11, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#3 · huangyiirene · session_01J8VVAmAzSRKZHAn7T8sArV

    Release: session_01J8VVAmAzSRKZHAn7T8sArV · reason: seat clock-off (maintainer, 2026-11-11: 「当前任务处理完,合并后下班」), and the card is p3 under the standing p1-only hold · next: any domain:skills seat, once p3 work is open again.
    Resume-from: claude/project-thread-xb2225@ab838308e99fb0162d081f2bbdc96854a6a4c1da
    State: one commit pushed (skills/objectstack-api/SKILL.md, the flow-door innerRefusal sentence and the table-row link; one changeset). No PR yet. Token ratchet 5210 of 6314. The full gate run did not finish. Draft body: /mnt/project-files/card-32379/body-v1.md. Next steps: merge main, run the gates, open the draft PR, then contract review (Tier H).

  5. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Nov 11, 2026
  6. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    Claim: PM loop round 2
    Session: session_01FEkQ5pjSPT7ui2EUcunaVb
    Account: os-project-manager
    Branch: claude/project-thread-co1yph
    Worktree: objectstack-issue-32379
    Domain: domain:skills
    Seat: domain:skills#1
    File surface: skills/objectstack-api/SKILL.md, its evals/*.json only for a hit the edit makes false, one changeset (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: opus (default; dispatch-gates --tier on the real diff decides), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: none
    Premise: holds (re-read on 6538ba48)
    Serial constraints cleared: none this round (other round-2 cards edit other skills)
    Resume-from: claude/project-thread-xb2225@ab838308e99fb0162d081f2bbdc96854a6a4c1da (Release 6807417751)
    Order: /mnt/project-files/pm-orders/skills/order-32379.md (project file). Ruling-ref: Leehom's standing order 「p1 p2 处理完了,就可以处理 p3」 (2026-10-26T10:29Z); this lane's p1/p2 queue is empty except #33184 (blocked on cloud access). Claimed 2026-11-14T18:04Z.

  7. added
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 14, 2026
  8. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5nPZFfbs98ogV2mAFM

    os-dev-report

    {
    "issue": 32379,
    "status": "done",
    "branch": "claude/project-thread-co1yph",
    "pr": "#33390",
    "session": "session_01FEkQ5nPZFfbs98ogV2mAFM",
    "premise_still_valid": true,
    "summary": "Resumed the released commit ab83830 (claude/project-thread-xb2225) and merged origin/main 6538ba4; head 9adabd4. skills/objectstack-api/SKILL.md now says innerRefusal is the refusal a node met (a data node's read or write, a script node's function name), code an ErrorCode member with examples UNIQUE_VIOLATION, PERMISSION_DENIED, RESOURCE_CONFLICT; the code-handler table's script row links objectstack-automation's Valid-but-silently-wrong item 3 without restating it. Plus one '@objectstack/skills' patch changeset. Every claim re-read on main 6538ba4 and unchanged, so the text is the released commit's.",
    "tests": "Teaching text only; no tested behaviour changed, no ablation. Mechanism read on origin/main 6538ba4: screen-nodes.ts:651-660 returns code RESOURCE_CONFLICT plus refusalCarriedBy(err) on a package-scoped resolveFunction refusal; pinned at the flow door by packages/qa/dogfood/test/bare-name-one-holder-request-family.dogfood.test.ts:280-298 (400 FLOW_FAILED, innerRefusal.code RESOURCE_CONFLICT) and in-engine by flow-function-package-scope.test.ts:134 (PR #32257). crud-nodes.ts calls refusalCarriedBy in all four data arms (get_record :669, writes :831 :947 :1026). FlowInnerRefusalSchema.code is ErrorCode (automation-api.zod.ts:361-366). Link target: skills/objectstack-automation/SKILL.md:230 heading, item 3 at :262-275 (PR #32377).",
    "gates": "Local, head 9adabd4: dispatch-gates --commands --repo objectstack-ai/objectstack derived 46 families; 44 exit 0, captured before any pipe (check:doc-formula-expressions after building the @objectstack/lint... closure under the lock, VERDICT command-exit 0, 67s; check:dts-closure and check:sourcemap-no-sources-content exit 0 over the 5 built packages only); 2 NOT MEASURED exit 3 prerequisite (check:dual-build-cjs-loads, check:lean-entry-closure read every package dist; no package touched, left to CI). --ran: 46 accounted, 44 run, 2 NOT-MEASURED. Ratchets: check-skill-line-ratchet exit 0; check-skills-token-ratchet exit 0, objectstack-api/SKILL.md 5152 to 5206 tokens (ceiling 6314). dispatch-gates --tier: MANDATORY contract-review tier (skills/** clause 1). check-governed-merges --branch: exit 3 GOVERNED, landing tier H, 1 of 2 paths on the register. Record: /mnt/project-files/pm-orders/skills/32379-gates-ran.txt. CI: in_progress, not read (the seat holds CI events).",
    "line_budget": "skills/** +5/-4, net +1. objectstack-api/SKILL.md 431 to 432 lines, 20628 to 20841 bytes, 5152 to 5206 tokens (ceiling 6314, no raise); all SKILL.md 4602 to 4603 lines; bundle 244310 to 244364 tokens.",
    "files_changed": [
    ".changeset/32379-api-flow-inner-refusal-any-node.md",
    "skills/objectstack-api/SKILL.md"
    ],
    "dogfood_battery": "n/a — no ! in the PR title and no (narrowing) arm",
    "mcp_calls": "0 — card, comments and PR read-back read with gh api GET (read-only); no MCP GitHub tool used",
    "api_writes": "2 — fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/pulls, no labels, no assignees; read-back 7679 bytes sent, 7679 stored), and this report through post-stamped (POST /repos//issues/32379/comments); git push is not a REST write",
    "deviations": [
    "Standing lines ask the PR body to end with an HTML-comment signed trailer; os-dev.md bans dev-written HTML comments in GitHub text (only the harness attribution comment on line 1 is exempt) and the standing lines yield to os-dev.md, so the body carries the visible signature line under Fixes #32379 and no trailer, as on #33235.",
    "dispatch-gates --tier reads MANDATORY claude-fable-5-2 for this surface (skills/** clause 1, no one-line exit); this card thread ran on the thread's configured opus model. The claim says the tier on the real diff decides; the seat's in-seat contract review is the at-tier record.",
    "The merge of origin/main is a plain merge commit with git's default message and no trailer; the released commit keeps its own model-free trailer pair. The harness reminder's model-named trailer was not used.",
    "Order PM assumption reading 'SKILL.md:360 still says the write wording' on 6538ba4: confirmed on main; on the branch the sentence sits at lines 360-363."
    ],
    "open_questions": [],
    "security_findings": "none",
    "out_of_scope_findings": [
    "carrier: none · the spec describe on FlowFailureDetailsSchema.innerRefusal (packages/spec/src/api/automation-api.zod.ts:640-642, mirrored in content/docs/references/api/automation-api.mdx:389 and :1140) still says 'the refusal a node's write met'; spec prose drift outside this card's surface · noted, not filed"
    ]
    }


    Generated by Claude Code

  9. objectstack-fleet commented on Nov 14, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#1 · os-project-manager · session_01FEkQ5pjSPT7ui2EUcunaVb

    ACCEPT → PR #33390 comment 6882355344 · contract review PASS 6882343575 · held for the maintainer (Tier H; reviewers requested) · 2026-11-14T18:39Z

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

Metadata

Metadata

Labels

documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatpm:dispatchedDispatched to a dev agent by /pm-dispatchpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions