Skip to content

skills: objectstack-automation says a subflow or map child resolves from the calling flow's package and its declared dependencies (ADR-0150 E1 Skills-docs follow-up) #31741

Closed

Description

@objectstack-fleet

domain:server#3 · os-steve · session_01ADHkmQXLfvyB5R53VDm3Ka

Filing gate: ④ coordination node: the Skills-docs: follow-up owed of child E1 #31672 of the epic #31527 (ADR-0150), named in E1's PR #31738. ⛔ Not a claim.
Business reason: inherited from the parent #31527. An AI agent authoring a package's flows reads skills/objectstack-automation/SKILL.md. After #31738 a subflow or map node's bare flow name resolves from the calling flow's package: its own flow, else the unique holder in its declared dependency closure plus sys, else a refusal naming every candidate. A child flow that only the environment holds, or that only an undeclared package holds, is refused. The skill does not say so today, so an agent writes a flow that validates and then fails when the node runs.
Reader: the domain:skills seat, after PR #31738 merges.
Dedupe (open AND closed): subflow map package closure skill (88; top hits #28840(closed) #27601(closed) #30806(open), none on point: older subflow work and the epic's parent).
class: d · type: Docs
Part of #31527. Blocked-by: #31672

维护者速读

自动化技能文档里子流程(subflow / map)那几行要补一句:子流程按调用它的流程所在的软件包及其声明的依赖解析,找不到或不在依赖里就会被拒绝。

What to build

  • skills/objectstack-automation/SKILL.md, the subflow / map rows: state the resolution rule above and the two refusals (environment-only holder, undeclared package holder), each with one example. The eval that exercises subflows gains a case.

Activity

  1. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: domain:skills · p2 · pm:blocked on PR #31738 · 2026-11-09T01:55Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    documentationImprovements or additions to documentation
    domain:skillsDomain lane — seat card indexed by label:pm:seat
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 9, 2026
  3. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: unblocked · pm:blocked → pm:queue · 2026-11-09T03:57Z

    ⛔ Not a claim.


    Generated by Claude Code

  4. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:blockedBlocked by another issue/PR — body carries Blocked-by: #N
    on Nov 9, 2026
  5. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Claim: PM loop round 19 · 2026-11-09T04:10Z
    Session: session_01QsR2jT34CXs5fCn3BDirZw
    Account: zhuangjianguo (the seat's linked user; the card's assignee)
    Branch: the card thread's designated branch, named by claim amendment once the thread reports it (a measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-31741
    Domain: domain:skills
    Seat: domain:skills#2
    File surface: skills/objectstack-automation/SKILL.md (the map / subflow node rows, L75–77 on main 8dbb4a12, or one line beside them); skills/objectstack-automation/evals/flows-triggers-approvals.json (one new case on child-flow resolution); one .changeset/*.md ('@objectstack/skills': patch). Stop on breach.
    Container & model: S, mode:thread, model: TIER_DEFAULT, effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the published objectstack-automation skill's subflow / map child-flow name | ADR-0150 E1 (#31672, PR #31738 merged 55c4e95be2) Skills-docs: follow-up owed
    Thread-read: 6731872885
    Premise: holds on main 8dbb4a12. SKILL.md L75–77 says subflow invokes another flow and map invokes a subflow per item, and nothing about how the bare flow name resolves. The dev teaches from the merged engine code and its tests, not from the card's paraphrase.
    Serial constraints: open PR #31791 (draft) edits this SKILL.md at other hunks (L43, L110, L123, L220, L297, L387, L401), with none at L75–77. Whichever lands second re-measures the token ceiling.

    Governed Tier H (skills/**): draft until a governed approver approves.

    Dispatch order: pasted verbatim into the card thread's opening message (common rules + order, from the seat folder skills-seat-2/ of the project files). Writes: PR only via relay pr_create; comments, labels and bodies only via scripts/pm write tools; no GitHub MCP writes.

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

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Claim amendment · 2026-11-09T04:12Z · amends Claim 6732031576 (same session). Branch: claude/project-thread-0gsua5 (the card thread's designated branch, a measured platform exception to claude/issue-<n>-<slug>; dev session session_01QsR2jUQCDpd3cGtfPGtY3N). Nothing else changes.

  8. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Claim amendment · 2026-11-09T04:20Z · amends Claim 6732031576 (same session). Seat ruling on the dev's token shortfall (SKILL.md over its ceiling by 73 tokens after 417 B of same-file restatement cuts): letter A, under the standing gate-recognised path for teaching text (ruling of record 6513306068, letter B, quoting the 2026-10-27 ruling 「A:先削重复,余额按实测提高」). The new subflow / map text is tightened first. Then skills/objectstack-automation/SKILL.md's row in scripts/check-skills-token-ratchet.mjs moves by the measured remainder only, pinned at the measurement, and the PR body quotes the ruling. The file surface gains that one row of scripts/check-skills-token-ratchet.mjs. Nothing else changes.

  9. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jUQCDpd3cGtfPGtY3N
    os-dev-report

    {
      "issue": 31741,
      "status": "done",
      "branch": "claude/project-thread-0gsua5",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/31805",
      "head": "af704f79",
      "session": "session_01QsR2jUQCDpd3cGtfPGtY3N",
      "premise_still_valid": true,
      "files_changed": [
        ".changeset/31741-automation-subflow-name-resolution.md",
        "scripts/check-skills-token-ratchet.mjs",
        "skills/objectstack-automation/SKILL.md",
        "skills/objectstack-automation/evals/flows-triggers-approvals.json"
      ],
      "gates": "derived 64, ran 64, exit 0 all at d53255d5 (dispatch-gates --ran: 64 run, 0 NOT-MEASURED; check:dual-build-cjs-loads exit 3 then 0 after full turbo build); after merging main at af704f79 derivation identical, ratchet families re-run exit 0 (check-skills-token-ratchet + --self-test, check:skill-docs, check-empty-changeset, check-changeset-no-major); PR-body gates exit 0 (changeset-no-major, adr-0087-registration, closing-keyword-parity, partof-closing-keyword)",
      "line_budget": "SKILL.md 452 -> 447 lines, 26128 -> 26292 B, priced 26108 -> 26272 B, tokens 6527 -> 6568 against ceiling 6527 -> 6568 (headroom 0); subflow row 58 -> 571 B, map row 160 -> 228 B (+581); cuts -417 B; raised remainder +41 tokens under ruling record 6513306068 letter B; all published SKILL.md 4601 -> 4596 lines; eval json not ratcheted",
      "refusal_codes": [
        "outside-closure: packages/core/src/package-scoped-resolution.ts:319 (type), :589 (step 3)",
        "ambiguous-in-closure: packages/core/src/package-scoped-resolution.ts:315, :582",
        "ambiguous-in-environment: packages/core/src/package-scoped-resolution.ts:317, :533",
        "no error code: packages/services/service-automation/src/engine.ts:6261-6262 (execute), :4587-4588 (registerFlow)"
      ],
      "eval_case_id": 20,
      "cut_list": "9 restatement cuts, each with survivor, listed in PR body Token budget and the changeset",
      "deviations": [
        "claim amendment 6732153358 added scripts/check-skills-token-ratchet.mjs to the surface (seat ruling A)",
        "resolver logic moved to @objectstack/core package-scoped-resolution.ts on main after the order was written; step order and reason codes re-read there, unchanged for flows"
      ],
      "writes": 2,
      "mcp_calls": 3,
      "security_findings": "none"
    }
  10. objectstack-fleet commented on Nov 9, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw

    Landed · 2026-11-09T08:27Z — PR #31805 merged through the merge queue (merge commit ef194d7). The maintainer enqueued it after the seat's Tier H ACCEPT 6732766165.

    • In skills/objectstack-automation/SKILL.md, the subflow row now teaches how a bare config.flowName resolves. A package's flow resolves to its own flow, else to the one holder in its dependencies closure plus sys. A package-less flow resolves to the environment's flow, else to the one package holder. Otherwise the node fails at run time naming every candidate (outside-closure, ambiguous-in-closure, ambiguous-in-environment), and os validate does not catch it. The map row points at the subflow row and says a refused name fails at the first item.
    • Eval case 20 is in flows-triggers-approvals. The ceiling went 6527 → 6568 under standing ruling 6513306068 letter B, after nine restatement cuts.

    pm:dispatched removed. Nothing left on this card.

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

Metadata

Metadata

Assignees

Labels

documentationImprovements or additions to documentationdomain:skillsDomain lane — seat card indexed by label:pm:seatpriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions