mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-16 09:55:29 +02:00
feat(auq-format): proactive SESSION_KIND=spawned rule ordered above the Conductor rule (#2733)
The spawned classification previously existed only in the failure-fallback branch — a spawned session was invited to call AskUserQuestion and reach auto-choose via the deny/error detour, and a spawned session inside a Conductor workspace hit the Conductor prose-STOP rule first. The Tool resolution list now leads with the spawned rule (auto-choose recommended, never prose, never BLOCKED, destructive gates resolve conservative), the self-check carries the never-reach-this-checklist clause, and all tier>=2 SKILL.md renders are regenerated. Context-budget fixture refreshed in the same commit per the ratchet protocol (the AUQ section is eager in every tier>=2 skill). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
791eb870c2
commit
0c1b50441d
Vendored
+40
-40
@@ -2,64 +2,64 @@
|
||||
"_comment": "Context-budget ratchet ceilings (~tokens). Regenerate: bun test/helpers/capture-context-budget.ts. Headroom: alwaysOnTotal x1.05, eagerPerInvocation x1.1. Graded by test/context-budget-ratchet.test.ts via lib/context-bill.ts checkBudget.",
|
||||
"alwaysOnTotal": 6344,
|
||||
"eagerPerInvocation": {
|
||||
"autoplan": 16321,
|
||||
"autoplan": 16525,
|
||||
"benchmark": 4931,
|
||||
"benchmark-models": 3829,
|
||||
"browse": 7097,
|
||||
"browser-skills/hackernews-frontpage": 371,
|
||||
"canary": 10365,
|
||||
"canary": 10570,
|
||||
"careful": 919,
|
||||
"codex": 14952,
|
||||
"context-restore": 9304,
|
||||
"context-save": 9921,
|
||||
"cso": 14894,
|
||||
"design-consultation": 13601,
|
||||
"design-html": 13286,
|
||||
"design-review": 24182,
|
||||
"design-shotgun": 13397,
|
||||
"devex-review": 15540,
|
||||
"codex": 15156,
|
||||
"context-restore": 9509,
|
||||
"context-save": 10125,
|
||||
"cso": 15098,
|
||||
"design-consultation": 13805,
|
||||
"design-html": 13491,
|
||||
"design-review": 24387,
|
||||
"design-shotgun": 13602,
|
||||
"devex-review": 15744,
|
||||
"diagram": 3847,
|
||||
"document-generate": 12049,
|
||||
"document-release": 9846,
|
||||
"document-generate": 12253,
|
||||
"document-release": 10050,
|
||||
"freeze": 990,
|
||||
"gstack": 3548,
|
||||
"gstack-upgrade": 3981,
|
||||
"guard": 889,
|
||||
"health": 10502,
|
||||
"investigate": 11155,
|
||||
"ios-clean": 8407,
|
||||
"ios-design-review": 8588,
|
||||
"ios-fix": 8360,
|
||||
"ios-qa": 11100,
|
||||
"ios-sync": 8531,
|
||||
"land-and-deploy": 15776,
|
||||
"landing-report": 9214,
|
||||
"learn": 8884,
|
||||
"health": 10707,
|
||||
"investigate": 11360,
|
||||
"ios-clean": 8612,
|
||||
"ios-design-review": 8793,
|
||||
"ios-fix": 8565,
|
||||
"ios-qa": 11305,
|
||||
"ios-sync": 8736,
|
||||
"land-and-deploy": 15981,
|
||||
"landing-report": 9418,
|
||||
"learn": 9088,
|
||||
"make-pdf": 4957,
|
||||
"office-hours": 18685,
|
||||
"office-hours": 18890,
|
||||
"open-gstack-browser": 4504,
|
||||
"openclaw/skills/gstack-openclaw-ceo-review": 2764,
|
||||
"openclaw/skills/gstack-openclaw-investigate": 1429,
|
||||
"openclaw/skills/gstack-openclaw-office-hours": 4433,
|
||||
"openclaw/skills/gstack-openclaw-retro": 2542,
|
||||
"pair-agent": 11309,
|
||||
"plan-ceo-review": 19400,
|
||||
"plan-design-review": 18841,
|
||||
"plan-devex-review": 16681,
|
||||
"plan-eng-review": 13621,
|
||||
"plan-tune": 14458,
|
||||
"qa": 13197,
|
||||
"qa-only": 12970,
|
||||
"retro": 18660,
|
||||
"review": 14914,
|
||||
"pair-agent": 11513,
|
||||
"plan-ceo-review": 19604,
|
||||
"plan-design-review": 19045,
|
||||
"plan-devex-review": 16886,
|
||||
"plan-eng-review": 13825,
|
||||
"plan-tune": 14662,
|
||||
"qa": 13401,
|
||||
"qa-only": 13175,
|
||||
"retro": 18865,
|
||||
"review": 15119,
|
||||
"scrape": 3939,
|
||||
"setup-browser-cookies": 3194,
|
||||
"setup-deploy": 10646,
|
||||
"setup-gbrain": 15251,
|
||||
"ship": 19751,
|
||||
"skillify": 11889,
|
||||
"spec": 14385,
|
||||
"sync-gbrain": 13672,
|
||||
"setup-deploy": 10851,
|
||||
"setup-gbrain": 15456,
|
||||
"ship": 19956,
|
||||
"skillify": 12094,
|
||||
"spec": 14589,
|
||||
"sync-gbrain": 13876,
|
||||
"unfreeze": 393
|
||||
}
|
||||
}
|
||||
|
||||
+5
-4
@@ -76,9 +76,10 @@ If `SKILL_PREFIX` is `"true"`, suggest/invoke `/gstack-*` names. Disk paths stay
|
||||
|
||||
Branch on the skill-start STATUS lines, in this order:
|
||||
|
||||
1. **`CONDUCTOR_SESSION: true` echoed** → do NOT call AskUserQuestion at all (neither native nor any `mcp__*__AskUserQuestion` variant): render EVERY decision brief as the **prose form** below and STOP. Proactive, not a failure reaction — Conductor disables native AUQ and its MCP variant is flaky (`[Tool result missing due to internal error]`). **Auto-decide preferences still apply first** (failure-fallback item 1 below): proceed with a surfaced auto-decide option, no prose — enforced HERE since no tool call ever happens. Capture each Conductor prose brief with `bin/gstack-question-log` (the PostToolUse hook never fires on a prose path; `/plan-tune` learning depends on it).
|
||||
2. **Any `mcp__*__AskUserQuestion` variant in your tool list** → prefer it (hosts may disable native via `--disallowedTools`; calling native there silently fails). Same shape, same decision-brief format.
|
||||
3. **Unavailable (no variant) OR a call fails** → do NOT silently auto-decide or write the decision to the plan file as a substitute; follow the **failure fallback** below.
|
||||
1. **`SESSION_KIND: spawned` echoed (or your dispatch prompt marks this session as spawned)** → do NOT call AskUserQuestion at all and do NOT render prose decision briefs: no human reads this session's output mid-run. Auto-choose the **recommended** option at every decision point per the Spawned session block — never prose, never BLOCKED — and record each auto-chosen decision in your completion report. Exception: never auto-choose a destructive or irreversible option — take the conservative non-destructive choice and record it. This rule outranks the Conductor rule below: a spawned session inside a Conductor workspace still auto-chooses.
|
||||
2. **`CONDUCTOR_SESSION: true` echoed** → do NOT call AskUserQuestion at all (neither native nor any `mcp__*__AskUserQuestion` variant): render EVERY decision brief as the **prose form** below and STOP. Proactive, not a failure reaction — Conductor disables native AUQ and its MCP variant is flaky (`[Tool result missing due to internal error]`). **Auto-decide preferences still apply first** (failure-fallback item 1 below): proceed with a surfaced auto-decide option, no prose — enforced HERE since no tool call ever happens. Capture each Conductor prose brief with `bin/gstack-question-log` (the PostToolUse hook never fires on a prose path; `/plan-tune` learning depends on it).
|
||||
3. **Any `mcp__*__AskUserQuestion` variant in your tool list** → prefer it (hosts may disable native via `--disallowedTools`; calling native there silently fails). Same shape, same decision-brief format.
|
||||
4. **Unavailable (no variant) OR a call fails** → do NOT silently auto-decide or write the decision to the plan file as a substitute; follow the **failure fallback** below.
|
||||
|
||||
### When AskUserQuestion is unavailable or a call fails
|
||||
|
||||
@@ -175,7 +176,7 @@ Before calling AskUserQuestion, verify:
|
||||
- [ ] (recommended) label on one option (even for neutral-posture)
|
||||
- [ ] Dual-scale effort labels on effort-bearing options (human / CC)
|
||||
- [ ] Net line closes the decision
|
||||
- [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: the prose fallback's mandatory triad + a "reply with a letter" instruction, then STOP)
|
||||
- [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: the prose fallback's mandatory triad + a "reply with a letter" instruction, then STOP); in `SESSION_KIND: spawned` you should never reach this checklist — auto-choose the recommended option, no tool call, no prose
|
||||
- [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped
|
||||
- [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any
|
||||
- [ ] If you split, you checked dependencies between options before firing the chain
|
||||
|
||||
+5
-4
@@ -62,9 +62,10 @@ If `SKILL_PREFIX` is `"true"`, suggest/invoke `/gstack-*` names. Disk paths stay
|
||||
|
||||
Branch on the skill-start STATUS lines, in this order:
|
||||
|
||||
1. **`CONDUCTOR_SESSION: true` echoed** → do NOT call AskUserQuestion at all (neither native nor any `mcp__*__AskUserQuestion` variant): render EVERY decision brief as the **prose form** below and STOP. Proactive, not a failure reaction — Conductor disables native AUQ and its MCP variant is flaky (`[Tool result missing due to internal error]`). **Auto-decide preferences still apply first** (failure-fallback item 1 below): proceed with a surfaced auto-decide option, no prose — enforced HERE since no tool call ever happens. Capture each Conductor prose brief with `bin/gstack-question-log` (the PostToolUse hook never fires on a prose path; `/plan-tune` learning depends on it).
|
||||
2. **Any `mcp__*__AskUserQuestion` variant in your tool list** → prefer it (hosts may disable native via `--disallowedTools`; calling native there silently fails). Same shape, same decision-brief format.
|
||||
3. **Unavailable (no variant) OR a call fails** → do NOT silently auto-decide or write the decision to the plan file as a substitute; follow the **failure fallback** below.
|
||||
1. **`SESSION_KIND: spawned` echoed (or your dispatch prompt marks this session as spawned)** → do NOT call AskUserQuestion at all and do NOT render prose decision briefs: no human reads this session's output mid-run. Auto-choose the **recommended** option at every decision point per the Spawned session block — never prose, never BLOCKED — and record each auto-chosen decision in your completion report. Exception: never auto-choose a destructive or irreversible option — take the conservative non-destructive choice and record it. This rule outranks the Conductor rule below: a spawned session inside a Conductor workspace still auto-chooses.
|
||||
2. **`CONDUCTOR_SESSION: true` echoed** → do NOT call AskUserQuestion at all (neither native nor any `mcp__*__AskUserQuestion` variant): render EVERY decision brief as the **prose form** below and STOP. Proactive, not a failure reaction — Conductor disables native AUQ and its MCP variant is flaky (`[Tool result missing due to internal error]`). **Auto-decide preferences still apply first** (failure-fallback item 1 below): proceed with a surfaced auto-decide option, no prose — enforced HERE since no tool call ever happens. Capture each Conductor prose brief with `bin/gstack-question-log` (the PostToolUse hook never fires on a prose path; `/plan-tune` learning depends on it).
|
||||
3. **Any `mcp__*__AskUserQuestion` variant in your tool list** → prefer it (hosts may disable native via `--disallowedTools`; calling native there silently fails). Same shape, same decision-brief format.
|
||||
4. **Unavailable (no variant) OR a call fails** → do NOT silently auto-decide or write the decision to the plan file as a substitute; follow the **failure fallback** below.
|
||||
|
||||
### When AskUserQuestion is unavailable or a call fails
|
||||
|
||||
@@ -161,7 +162,7 @@ Before calling AskUserQuestion, verify:
|
||||
- [ ] (recommended) label on one option (even for neutral-posture)
|
||||
- [ ] Dual-scale effort labels on effort-bearing options (human / CC)
|
||||
- [ ] Net line closes the decision
|
||||
- [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: the prose fallback's mandatory triad + a "reply with a letter" instruction, then STOP)
|
||||
- [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: the prose fallback's mandatory triad + a "reply with a letter" instruction, then STOP); in `SESSION_KIND: spawned` you should never reach this checklist — auto-choose the recommended option, no tool call, no prose
|
||||
- [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped
|
||||
- [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any
|
||||
- [ ] If you split, you checked dependencies between options before firing the chain
|
||||
|
||||
+5
-4
@@ -64,9 +64,10 @@ If `SKILL_PREFIX` is `"true"`, suggest/invoke `/gstack-*` names. Disk paths stay
|
||||
|
||||
Branch on the skill-start STATUS lines, in this order:
|
||||
|
||||
1. **`CONDUCTOR_SESSION: true` echoed** → do NOT call AskUserQuestion at all (neither native nor any `mcp__*__AskUserQuestion` variant): render EVERY decision brief as the **prose form** below and STOP. Proactive, not a failure reaction — Conductor disables native AUQ and its MCP variant is flaky (`[Tool result missing due to internal error]`). **Auto-decide preferences still apply first** (failure-fallback item 1 below): proceed with a surfaced auto-decide option, no prose — enforced HERE since no tool call ever happens. Capture each Conductor prose brief with `bin/gstack-question-log` (the PostToolUse hook never fires on a prose path; `/plan-tune` learning depends on it).
|
||||
2. **Any `mcp__*__AskUserQuestion` variant in your tool list** → prefer it (hosts may disable native via `--disallowedTools`; calling native there silently fails). Same shape, same decision-brief format.
|
||||
3. **Unavailable (no variant) OR a call fails** → do NOT silently auto-decide or write the decision to the plan file as a substitute; follow the **failure fallback** below.
|
||||
1. **`SESSION_KIND: spawned` echoed (or your dispatch prompt marks this session as spawned)** → do NOT call AskUserQuestion at all and do NOT render prose decision briefs: no human reads this session's output mid-run. Auto-choose the **recommended** option at every decision point per the Spawned session block — never prose, never BLOCKED — and record each auto-chosen decision in your completion report. Exception: never auto-choose a destructive or irreversible option — take the conservative non-destructive choice and record it. This rule outranks the Conductor rule below: a spawned session inside a Conductor workspace still auto-chooses.
|
||||
2. **`CONDUCTOR_SESSION: true` echoed** → do NOT call AskUserQuestion at all (neither native nor any `mcp__*__AskUserQuestion` variant): render EVERY decision brief as the **prose form** below and STOP. Proactive, not a failure reaction — Conductor disables native AUQ and its MCP variant is flaky (`[Tool result missing due to internal error]`). **Auto-decide preferences still apply first** (failure-fallback item 1 below): proceed with a surfaced auto-decide option, no prose — enforced HERE since no tool call ever happens. Capture each Conductor prose brief with `bin/gstack-question-log` (the PostToolUse hook never fires on a prose path; `/plan-tune` learning depends on it).
|
||||
3. **Any `mcp__*__AskUserQuestion` variant in your tool list** → prefer it (hosts may disable native via `--disallowedTools`; calling native there silently fails). Same shape, same decision-brief format.
|
||||
4. **Unavailable (no variant) OR a call fails** → do NOT silently auto-decide or write the decision to the plan file as a substitute; follow the **failure fallback** below.
|
||||
|
||||
### When AskUserQuestion is unavailable or a call fails
|
||||
|
||||
@@ -163,7 +164,7 @@ Before calling AskUserQuestion, verify:
|
||||
- [ ] (recommended) label on one option (even for neutral-posture)
|
||||
- [ ] Dual-scale effort labels on effort-bearing options (human / CC)
|
||||
- [ ] Net line closes the decision
|
||||
- [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: the prose fallback's mandatory triad + a "reply with a letter" instruction, then STOP)
|
||||
- [ ] You are calling the tool, not writing prose — unless `CONDUCTOR_SESSION: true` (then prose is the DEFAULT, not the tool) OR the documented failure fallback applies (then: the prose fallback's mandatory triad + a "reply with a letter" instruction, then STOP); in `SESSION_KIND: spawned` you should never reach this checklist — auto-choose the recommended option, no tool call, no prose
|
||||
- [ ] Non-ASCII characters (CJK / accents) written directly, NOT \u-escaped
|
||||
- [ ] If you had 5+ options, you split (or batched into ≤4-groups) — did NOT drop any
|
||||
- [ ] If you split, you checked dependencies between options before firing the chain
|
||||
|
||||
Reference in New Issue
Block a user