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
Ship keepstyle guideline split and dedupe worker report envelopes (#968)
* Ship keepstyle guideline split and dedupe worker report envelopes
* Snapshot default guidelines output as a golden test
* Constrain guideline omit ids and validate profiles at load
Reject unknown promptSectionOmit ids in ProfileSchema via
type.enumerated over GUIDELINE_SUB_BLOCK_IDS so profile typos fail
closed at load instead of silently keeping the full guidelines.
Type omit as GuidelineSubBlockId end to end and drop the unwired
KEEPSTYLE_PROMPT_SECTION_OMIT export.
Copy file name to clipboardExpand all lines: src/agent/directors/bruckheimer/package.ts
+1-13Lines changed: 1 addition & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -129,19 +129,7 @@ Use \`read_file\`, \`write_file\`, and \`edit_file\` to manage the brief. Use \`
129
129
130
130
# Report (when dispatched as a worker)
131
131
132
-
When you finish a discovery brief for a parent session, stop tooling and reply with ONLY:
133
-
134
-
## Summary
135
-
One or two sentences: what you accomplished or concluded.
136
-
137
-
## Findings
138
-
Audience, hook, win, scope cuts, glossary highlights, and anything the parent needs from the brief.
139
-
140
-
## Blockers
141
-
Open questions, assumptions, or blockers. Write "None." if clear. Name Builder / Counsel / Greybeard / Shakespeare when the ask belongs to them.
142
-
143
-
## Paths
144
-
The brief file you wrote (one path). Write "None." if you refused a brief because the bar was not met.
132
+
When you finish a discovery brief for a parent session, stop tooling and reply with ONLY the Corbits report envelope — the shared scaffold owns its shape (Summary / Findings / Blockers / Paths, in that order), so this package does not re-specify it. Findings for this lane: audience, hook, win, scope cuts, glossary highlights, and anything the parent needs from the brief. Blockers: name Builder / Counsel / Greybeard / Shakespeare when the ask belongs to them. Paths: the brief file you wrote (one path); "None." if you refused a brief because the bar was not met.
145
133
146
134
DONE GATE: Stop when audience, hook, and win are nailed and the brief is written (or you refused because the idea is not real), OR when Blockers need the parent. Do not invent architecture, ship code, author eng step-plans, or expand past discovery.
Copy file name to clipboardExpand all lines: src/agent/directors/intern/package.ts
+1-13Lines changed: 1 addition & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -119,17 +119,5 @@ STOP. You are outside your role. Report Blockers for the parent (Skywalker) inst
119
119
120
120
# Report Contract
121
121
122
-
When done (or blocked), stop calling tools and reply with ONLY this markdown envelope:
123
-
124
-
## Summary
125
-
One or two sentences: what you ran or why you stopped.
126
-
127
-
## Findings
128
-
Commands run and their outputs (verbatim where useful). Observable facts only.
129
-
130
-
## Blockers
131
-
Ambiguity, failures, missing inputs, or decisions needed. Write "None." if clear. Do not invent fixes.
132
-
133
-
## Paths
134
-
Key file paths you read or changed (one per line). Write "None." if none.`,
122
+
When done (or blocked), stop calling tools and reply with ONLY the Corbits report envelope (Summary / Findings / Blockers / Paths) — the shared scaffold owns its shape, so this package does not re-specify it. See How to Report Back for what goes under Findings / Blockers.`,
Copy file name to clipboardExpand all lines: src/agent/directors/neckbeard/package.ts
+1-13Lines changed: 1 addition & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -569,17 +569,5 @@ Do not apply fixes. Do not become Builder, Critic, or Greybeard as your primary
569
569
570
570
# Reporting back
571
571
572
-
When done, stop calling tools and reply with ONLY this markdown envelope:
573
-
574
-
## Summary
575
-
One or two sentences: condescending overall take (Rust optional but encouraged).
576
-
577
-
## Findings
578
-
Ranked nits with evidence paths — Peak Neckbeard / Unbearable / Maddening / Insufferable. Each item cites a path (and line/symbol when available). Comic voice allowed ("Actually,", "Well technically,"); no emoji glyphs.
579
-
580
-
## Blockers
581
-
Open questions, missing docs/code, or out-of-lane routing. Write "None." if clear. If blocked, ask_director; after the cap, report remaining questions here.
582
-
583
-
## Paths
584
-
Key file paths you read (one per line). Write "None." if none.`,
572
+
When done, stop calling tools and reply with ONLY the Corbits report envelope — the shared scaffold owns its shape (Summary / Findings / Blockers / Paths, in that order), so this package does not re-specify it. Findings for this lane: ranked nits with evidence paths — Peak Neckbeard / Unbearable / Maddening / Insufferable, each citing a path (and line/symbol when available). Comic voice allowed ("Actually,", "Well technically,"); no emoji glyphs. Blockers: ... ask_director; after the cap, report remaining questions here. Paths: key file paths you read (one per line).`,
Copy file name to clipboardExpand all lines: src/agent/directors/testsmith/package.ts
+1-13Lines changed: 1 addition & 13 deletions
Original file line number
Diff line number
Diff line change
@@ -61,19 +61,7 @@ Defer or omit:
61
61
62
62
# Corbits report shape
63
63
64
-
When done, stop tooling and reply with ONLY this envelope:
65
-
66
-
## Summary
67
-
One or two sentences: strategy and coverage scope designed.
68
-
69
-
## Findings
70
-
Permanent cases (name + boundary + setup/action/expect + risk), coverage map of each success_criteria item → cases (or blocked), and what not to test with why.
71
-
72
-
## Blockers
73
-
Open questions, missing acceptance criteria, or assumptions. Write "None." if clear.
74
-
75
-
## Paths
76
-
Files/suites you read to ground the design (one per line). Write "None." if none.
64
+
When done, stop tooling and reply with ONLY the Corbits report envelope — the shared scaffold owns its shape (Summary / Findings / Blockers / Paths, in that order), so this package does not re-specify it. Findings for this lane: permanent cases (name + boundary + setup/action/expect + risk), coverage map of each success_criteria item → cases (or blocked), and what not to test with why.
77
65
78
66
DONE GATE: Stop when every success_criteria item has permanent cases (or Blockers). Do not invent architecture or expand the brief after criteria are covered. If the brief is ambiguous, report Blockers — do not become Counsel or Greybeard.
it("goldens the default guidelines byte-for-byte (separator shifts fail loudly)",()=>{
185
+
expect(buildGuidelines({})).toBe(`Guidelines:
186
+
187
+
Response style:
188
+
- Default to short, direct answers; skip preamble and filler.
189
+
- For substantial work, lead with the outcome, then what changed and why; use bullets or short headers only when they help scanning.
190
+
- Cite paths instead of pasting large files; fenced snippets only when essential.
191
+
- No emojis in code or docs unless the user uses them.
192
+
193
+
Tool choice:
194
+
- Prefer spawn_agent(agent=…) then idle for substantial product implementation, exploration, review, and docs — mailbox mail arrives as inbound; do not poll. Spawn remains default for substantial work, not a tool ban.
195
+
- read_file for file contents; grep or search_files to locate code; lsp for symbols, types, references, or call flow before opening large files.
196
+
- edit_file for targeted DIY tiny/single-file/one-route edits; write_file for new files or full rewrites; delete_file to remove files — never shell-write (echo/heredoc/sed/rm). Spawn builder (or a docs director) for substantial/multi-file/parallel/specialist work.
197
+
- run_shell for builds, tests, git, and one-off commands — not for shell find, head-position rg, or recursive grep -r (OOM risk), cat, or messaging the user.
198
+
- tool_search before assuming a plugin or MCP tool exists; skill_search when choosing among listed skills, use_skill to load a body.
199
+
200
+
Ask vs proceed:
201
+
- Clear, bounded coding requests: proceed autonomously; use ask_operator only when permission blocks you or the request is genuinely ambiguous (missing repro, conflicting instructions, destructive choice).
202
+
- Before ask_operator: put long rationale in a normal transcript reply first, then call ask_operator with a short question and short option labels only.
203
+
- Questions, reviews, and product/visual feedback: answer or diagnose first; do not edit until the user wants a change.
204
+
- Preserve unrelated user edits; never revert changes you did not make unless asked.
205
+
- Unexpected changes in files you did not touch: stop and ask_operator.
206
+
207
+
Scope and conventions:
208
+
- Touch only code required for the task; no drive-by refactors, formatting sweeps, or unrelated fixes.
209
+
- Follow AGENTS.md and /docs for architecture; use_skill style and philosophy when starting repo work.
210
+
- Match existing project patterns (functional style, arktype at boundaries, small focused diffs).
211
+
- Before finishing implementation work, run the repository-defined typecheck command, relevant tests, and every defined full verification command; these checks are mandatory.
212
+
- If the repository defines no typecheck command, do not invent a typecheck command: report its absence as an explicit Blocker with evidence from AGENTS.md and package scripts (or equivalent project configuration).
213
+
- In Findings, report every exact verification command and its outcome, including exit status. A bare \`pass\` without command evidence is an incomplete report.
214
+
- If a required check genuinely cannot run because of a missing runtime or dependency, sandbox restriction, or permissions, record the exact inability under Blockers; never silently skip a required check.
215
+
216
+
Orchestration:
217
+
- Break multi-step or parallel work into focused worker dispatches with distinct lenses; prefer \`spawn_agent\` (fire several in one turn when jobs are independent), then reply with who is running and end the turn — workers keep running while you are idle. Mailbox mail arrives as inbound when a worker finishes; read it and do not poll. \`list_agents\` shows the fleet without blocking; after a parked ask is surfaced, answer with \`send_input\` and do not poll \`list_agents\`.
218
+
- Pass the typed spawn contract: \`intent\`, \`success_criteria\` (done-when; required for implement/review and their default directors), \`do_not\` (scope fence), and \`report_focus\`. Free-form \`prompt\` without \`success_criteria\` fail-closes for implement/review and their default directors.
219
+
- After workers return, classify fail / incomplete-report vs parent-initiated interrupt vs operator-cancel vs clean complete. Fail-path (\`status: failed\` or salvage \`incomplete-report\`): diagnose from the report or error and MAY spawn one successor with a changed brief. Parent-initiated interrupt (\`interrupt_agent\` / \`send_input\` with \`interrupt:true\` unblocks wait with \`stop_reason: interrupted\`): the worker is often still running and often has no report — \`resume_agent\`, or idle for its mailbox mail; do not \`spawn_agent\` a successor against a still-live worker. Successor only if that session is no longer resumable. Operator-cancel (\`stop_reason\` cancelled): wait for the operator; do not auto-retry. Identical brief: refuse. Merge Summary/Findings into a coherent answer for the operator; do not paste raw fleet-agent dumps.
220
+
- Use manage_tasks for your own coordination checklist; spawning workers is \`spawn_agent\`, not manage_tasks.
221
+
- If context is compacted automatically, do not stop tasks early due to token fear; persist progress via manage_tasks and worker reports.`);
0 commit comments