You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
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
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
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.
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 main8dbb4a12, 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 main8dbb4a12. 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.
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.
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.
Activity
objectstack-fleet commentedon Nov 9, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage:
domain:skills· p2 ·pm:blockedon PR #31738 · 2026-11-09T01:55Z⛔ Not a claim.
domain:devxanddomain:serveras separate lanes, or merge them? Measured load and boundary friction, 2026-11-08 #31424 rule 5 skills child of ADR-0150 E1 (service-automation: flow index and activation consult on (package, name) (ADR-0150 child E1) #31672):skills/objectstack-automation, published skills.Generated by Claude Code
objectstack-fleet commentedon Nov 9, 2026
triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U
Path: none
Triage: unblocked ·
pm:blocked→pm:queue· 2026-11-09T03:57Z⛔ Not a claim.
Blocked-by:target is done: PR feat(service-automation)!: the flow index and the activation ledger consult on (package, name) (ADR-0150 E1) #31738 (merged) and service-automation: flow index and activation consult on (package, name) (ADR-0150 child E1) #31672 (closed). The latest state comment (triage's audit) holds no freeze.Generated by Claude Code
objectstack-fleet commentedon Nov 9, 2026
domain:skills#2 · zhuangjianguo · session_01QsR2jT34CXs5fCn3BDirZw
Claim: PM loop round 19 · 2026-11-09T04:10Z
Session:
session_01QsR2jT34CXs5fCn3BDirZwAccount:
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-31741Domain:
domain:skillsSeat:
domain:skills#2File surface:
skills/objectstack-automation/SKILL.md(themap/subflownode rows, L75–77 onmain8dbb4a12, 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: mediumClause-②: no
Metadata-protocol: none
Responsibility: the published
objectstack-automationskill'ssubflow/mapchild-flow name | ADR-0150 E1 (#31672, PR #31738 merged55c4e95be2)Skills-docs: follow-up owedThread-read: 6731872885
Premise: holds on
main8dbb4a12. SKILL.md L75–77 sayssubflowinvokes another flow andmapinvokes 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 relaypr_create; comments, labels and bodies only viascripts/pmwrite tools; no GitHub MCP writes.objectstack-fleet commentedon Nov 9, 2026
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 toclaude/issue-<n>-<slug>; dev sessionsession_01QsR2jUQCDpd3cGtfPGtY3N). Nothing else changes.objectstack-fleet commentedon Nov 9, 2026
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/maptext is tightened first. Thenskills/objectstack-automation/SKILL.md's row inscripts/check-skills-token-ratchet.mjsmoves by the measured remainder only, pinned at the measurement, and the PR body quotes the ruling. The file surface gains that one row ofscripts/check-skills-token-ratchet.mjs. Nothing else changes.objectstack-fleet commentedon Nov 9, 2026
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" }objectstack-fleet commentedon Nov 9, 2026
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.
skills/objectstack-automation/SKILL.md, thesubflowrow now teaches how a bareconfig.flowNameresolves. A package's flow resolves to its own flow, else to the one holder in itsdependenciesclosure plussys. 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), andos validatedoes not catch it. Themaprow points at thesubflowrow and says a refused name fails at the first item.pm:dispatchedremoved. Nothing left on this card.