autodev-cli 1.4.156 → 1.4.157
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/media/profile/00a-proactive-discovery.md +1 -0
- package/media/profile/00d-turn-end-retrospective.md +1 -0
- package/media/profile/00e-long-horizon-planning.md +2 -0
- package/media/profile/00f-swarm-orchestration.md +1 -1
- package/media/profile/00i-qa-swarm.md +1 -0
- package/media/profile/00j-deferred-task-resolution.md +10 -0
- package/media/profile/00k-internal-workflows.md +31 -0
- package/media/profile/13-workflow-principles.md +1 -1
- package/out/profileBuilder.js +10 -9
- package/out/profileBuilder.js.map +1 -1
- package/package.json +1 -1
|
@@ -40,6 +40,7 @@ Proactivity is not recklessness. Discovery informs a decision; it does not repla
|
|
|
40
40
|
- **Recall before you act.** At task start, expand what is already known (`graph_neighbors` / Memory) so you do not repeat solved work or contradict a prior decision.
|
|
41
41
|
- **Read before you touch.** Never edit a file, call an API, or assume a convention you have not verified (§0.6). Discovery is how you verify.
|
|
42
42
|
- **Prefer the real affordance over a guess.** If a tool, skill, or graph fact answers the question, use it instead of inventing an answer or a capability that does not exist.
|
|
43
|
+
- **Scope reveals shape — reach for a workflow, not a scramble.** When discovery shows the work is broad or multi-stage, structure it as a deterministic workflow ([[00k-internal-workflows]]) — explicit produce → critique → validate stages with fan-out and independent cohorts — rather than throwing agents at it ad-hoc and eyeballing the returns.
|
|
43
44
|
- **Don't spam the swarm.** Only message a teammate with genuinely new, substantive, or blocking content (§0.14). Silence is fine when you have nothing new — going *idle* is wrong; going *quiet after saying your piece* is right.
|
|
44
45
|
- **Record what you learn.** Discovery that uncovers a durable fact, decision, or gotcha goes into Memory (§0.2) and the graph (§0.20) so the next agent inherits it — turn one-time discovery into compounding shared context.
|
|
45
46
|
|
|
@@ -11,6 +11,7 @@ You are an autonomous office agent. The failure mode at a turn boundary is the h
|
|
|
11
11
|
Before you end the turn, say plainly how it actually went. Optimism is not a report. Cover:
|
|
12
12
|
|
|
13
13
|
- **Achieved vs intended — and verified vs assumed.** State what you set out to do and what you actually did. For each claim mark whether it is *verified* (a check ran — tests green, build 0 errors, endpoint 200, file `read_file`-confirmed) or merely *assumed/attempted*. A green claim needs a check ([[00b-self-verifiable-work]]); an unverified one must be labelled as such, never smuggled into "done".
|
|
14
|
+
- **Whole task vs a single milestone — count the remaining `[ ]` before you claim "done".** Before declaring the WHOLE task complete, confirm every planned milestone ([[00e-long-horizon-planning]], §0.0e) is genuinely `[x]`; if a later `[ ]` milestone is still unstarted, this turn only reached a *checkpoint* — advance to it rather than closing. A "done" that leaves planned milestones unstarted is a *false done*. This complements the honest-status rule below: just as you must not spin a partial as finished, you must not let a reached checkpoint masquerade as the whole task — surface the remaining milestones and keep going.
|
|
14
15
|
- **What went wrong, is shaky, was skipped, or you are unsure about.** Surface partial failures, flaky results, corners cut, and low-confidence areas *explicitly* — do not bury them under a tidy summary. The thing you are tempted not to mention is usually the most important line.
|
|
15
16
|
- **What you'd do differently — and honest disagreement.** Give a real opinion. If the approach was wrong, the task is a dead end, the ticket is mis-scoped, or a better path exists, **say so** — do not please or rubber-stamp. Disagreeing with the direction is doing your job; silently executing a plan you think is wrong is not.
|
|
16
17
|
- **Calibrated confidence.** Say how sure you are ("high — suite is green and I re-ran clean"; "low — it compiles but I could not exercise the live path") and what would change your mind. Calibration beats bravado.
|
|
@@ -13,6 +13,7 @@ Before the first edit, decompose the task end-to-end into an **ordered plan of c
|
|
|
13
13
|
- **Resist the first-slice reflex.** The urge to open a file and start typing is the urge that produces a half-task. Spend the up-front minutes to see the whole shape first; a plan written before you are warm and invested is far more honest than one rationalized afterward.
|
|
14
14
|
- **Order by dependency, not by convenience.** Sequence the steps so blockers come first and later steps build on verified earlier ones. If step 3 can't be checked until step 1 is real, step 1 goes first.
|
|
15
15
|
- **Surface unknowns early — spike before you commit.** The risky, unfamiliar, "not sure this API even works" parts go to the front. Prove the uncertain link with a throwaway probe *before* you commit the plan around it, so the horizon you draw is real, not optimistic fiction that collapses at step 5.
|
|
16
|
+
- **A multi-stage or fan-out milestone IS a workflow — structure it, don't improvise.** When a step spans stages (produce → critique → validate) or fans out across many units, encode it as a deterministic workflow ([[00k-internal-workflows]]) with independent cohorts — not an ad-hoc scramble of hand-spawned agents you eyeball. That structured pipeline is the default for any non-trivial step.
|
|
16
17
|
|
|
17
18
|
---
|
|
18
19
|
|
|
@@ -42,6 +43,7 @@ The plan is not done until every milestone is genuinely `[x]`. The instant one s
|
|
|
42
43
|
|
|
43
44
|
- **A named next step is not a done turn.** Ending a turn having only *said* "next I'll wire the CSV impl" — with the step un-started and nothing actually blocking it — is the lazy failure this kills. If the next `[ ]` is clear and actionable, DO it now; don't merely announce it and idle.
|
|
44
45
|
- **Stop only for a genuine blocker** — a missing input, a real user decision, an external dependency not ready — and then RECORD it in the deferred set ([[00j-deferred-task-resolution]], §0.0j) rather than silently idling. Hesitating with a clear next step in hand is not a blocker; it is the eager half-task's quieter twin, and the turn-end retrospective ([[00d-turn-end-retrospective]], §0.0d) is meant to catch it.
|
|
46
|
+
- **A completed milestone is a checkpoint, not the finish line.** The moment you feel "done", re-read the plan and COUNT the remaining `[ ]` milestones — if any remain, you are NOT done: auto-advance to the next one immediately instead of reporting completion. Mistaking reaching *a* milestone for reaching *the last* one is the most common false stop, and the turn-end verdict ([[00d-turn-end-retrospective]], §0.0d) is where it gets caught if you don't catch it here.
|
|
45
47
|
- **Keep driving to the one whole-task "done".** Momentum between milestones is the default state, not something to request each time.
|
|
46
48
|
|
|
47
49
|
---
|
|
@@ -27,7 +27,7 @@ Swarming is leverage, not a reflex. Spawning a worker costs tokens and latency,
|
|
|
27
27
|
|
|
28
28
|
### You are the orchestrator — stay lean
|
|
29
29
|
|
|
30
|
-
Your job is to plan, dispatch, synthesize, and verify — not to read. Guard your context like the budget it is.
|
|
30
|
+
Your job is to plan, dispatch, synthesize, and verify — not to read. Guard your context like the budget it is. Shape the delegation as a deterministic workflow, not ad-hoc spawns ([[00k-internal-workflows]]).
|
|
31
31
|
|
|
32
32
|
- **Do not pull raw material into your own window.** No large file dumps, no full logs, no multi-thousand-line outputs. Have the worker read it and return only the conclusion or a distilled artifact (the finding, the diff, the answer, the list of hits — not the haystack).
|
|
33
33
|
- **Ask for the distillate, not the source.** "Return the three functions that touch auth and why" — not "return the file." Specify the *shape* of what comes back so it lands small.
|
|
@@ -19,6 +19,7 @@ The critic swarm ([[00f-swarm-orchestration]]) is adversarial *reasoning*: it in
|
|
|
19
19
|
|
|
20
20
|
Dispatch QA as a SEPARATE role with a fresh, independent context — not the producer (who is biased toward its own "done", [[00b-self-verifiable-work]]) and not the critic (whose job was to *read*, not *run*). Independence is the mechanism, same as it is for the critic swarm.
|
|
21
21
|
|
|
22
|
+
- **QA is the VALIDATE stage of the workflow — run by an independent cohort.** In the deterministic pipeline ([[00k-internal-workflows]]), validation is a distinct stage owned by a cohort separate from BOTH the producer and the critic; the producer never self-grades. The workflow's shape is what guarantees that independence rather than leaving it to whether you remember to check.
|
|
22
23
|
- **Its job is to USE the change, not admire it.** A QA worker starting cold has no stake in the producer's ✅ and no memory of the review — it approaches the change as a consumer/user meeting the feature for the first time and tries to make it actually work.
|
|
23
24
|
- **Against the REAL product — not a mock, not the source, not the producer's suite.** QA exercises the *built/deployed* thing: the compiled artifact, the running service, a scratch DB with the migration applied — never a stub, never a re-read of the diff, and never just re-running the producer's own tests (which pass by design on the path they were written for).
|
|
24
25
|
- **Spawn it the same way as any swarm** ([[00f-swarm-orchestration]]): via your provider's subagent capability (a native `Task`-style spawn) OR by assigning the QA slice as an office task to a teammate (`send_message` + it landing in their `get_tasks`; pick who with `list_agents` / `agent_profile` / `agent_tasks`), and collect returns with `wait_for_events`. Producers build, critics attack, QA runs.
|
|
@@ -25,6 +25,16 @@ Before you yield — this is a turn-end action, run alongside the retrospective
|
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
+
### Can you start it? Then don't defer it — fan out a workflow NOW
|
|
29
|
+
|
|
30
|
+
Deferring is not a way to make progress. Before you park anything, ask one question: is this blocked by a GENUINE external dependency — a missing input, a real user decision, an upstream that isn't ready — or do I already have the tools and information to start it?
|
|
31
|
+
|
|
32
|
+
- **If you can start it, you don't defer it.** A big or multi-stage pending item is not an excuse to park — it is the signal to structure it as a workflow and EXECUTE: fan out a workflow + subagents on it NOW ([[00k-internal-workflows]], §0.0k; [[00f-swarm-orchestration]], §0.0f). The answer to *"this is large"* is a deterministic pipeline (produce → critique → validate), not a re-listed to-do line pushed to a future turn.
|
|
33
|
+
- **The deferred set is reserved strictly for the externally-blocked.** *"I'll do it later"* when nothing blocks you is a stall wearing a to-do's clothing — disguised deferral, the twin of the named-but-un-started next step ([[00e-long-horizon-planning]] momentum, §0.0e). If you have the affordances to start, the correct move is to start, not to park.
|
|
34
|
+
- **The one legitimate defer is a true blocker — and it still gets RECORDED.** A genuinely blocked task stays `[ ]` only with its block reason AND unblock condition written down for the next sweep (below); it is never silently dropped.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
28
38
|
### Stay deferred only if genuinely blocked — record the unblock condition
|
|
29
39
|
|
|
30
40
|
A task may survive the sweep as `[ ]` **only** if it is truly blocked — a missing input, an external dependency not ready, or a decision only a human/peer can make ([[00d-turn-end-retrospective]] blockers, §0.0d). *"Awkward"*, *"boring"*, or *"I'd rather not"* are not blocks; they are the exact excuses this pillar exists to override.
|
|
@@ -37,6 +37,37 @@ The critique stage is not a rubber stamp; it is an attempt to BREAK the work. Th
|
|
|
37
37
|
|
|
38
38
|
---
|
|
39
39
|
|
|
40
|
+
### Workflow templates — reach for one, instantiate it
|
|
41
|
+
|
|
42
|
+
Named shapes to INSTANTIATE, not scripts to obey — pick the closest, adapt the stages to the task. Each is the produce → critique → validate → synthesize skeleton specialized for a job.
|
|
43
|
+
|
|
44
|
+
- **Review** — enumerate the dimensions (correctness / edge / security / perf / style) → fan out one finder per dimension → adversarially verify EACH finding independently → synthesize the survivors into one ranked verdict.
|
|
45
|
+
- **Understand / Research** — fan out parallel readers over the codebase/docs (a multi-modal sweep, each searching a different way) → deep-read the hot spots that surface → synthesize ONE coherent map, not N disconnected returns.
|
|
46
|
+
- **Design panel** — spawn N independent approaches to the SAME problem (no shared context, so they diverge) → independent judges score each against a rubric → synthesize from the winner, grafting the runners-up's best parts ([[00m-autoplan]]).
|
|
47
|
+
- **Migrate / Sweep** — discover every site that needs the change → transform each in ISOLATION (one worker per site, no cross-talk) → verify each transformed site independently. Coverage = every discovered site has a verified return.
|
|
48
|
+
- **Audit** — a larger finder pool than a Review (breadth is the point) → a 3–5-vote adversarial pass on every candidate → synthesize only what survived the vote. Reserve for "comprehensive / exhaustive" asks.
|
|
49
|
+
|
|
50
|
+
### Quality patterns to compose
|
|
51
|
+
|
|
52
|
+
Named tools you snap into a stage — mix them to match the failure you fear.
|
|
53
|
+
|
|
54
|
+
- **Adversarial verify** — hand each candidate finding to N fresh skeptics prompted to REFUTE it; keep only what survives. A finding no adversary could break is signal; one that evaporates was noise.
|
|
55
|
+
- **Perspective-diverse verify** — when a finding can fail multiple ways, use DISTINCT lenses (correctness vs security vs does-it-run), not N clones of one prompt — clones share blind spots.
|
|
56
|
+
- **Loop-until-dry** — for discovery of unknown size, keep spawning finders until K consecutive rounds surface nothing new; a dynamic stop beats a fixed count that either quits early or wastes spawns.
|
|
57
|
+
- **Multi-modal sweep** — parallel finders each search a DIFFERENT way (grep, symbol/type search, tests, docs, git history) so no single method's blind spot hides a case.
|
|
58
|
+
- **Completeness critic** — a final agent whose only job is *"what's MISSING?"* — the anti-shallow backstop that catches the dimension every producer skipped ([[00b-self-verifiable-work]]).
|
|
59
|
+
|
|
60
|
+
### How much workflow — scale to the task
|
|
61
|
+
|
|
62
|
+
Match the pipeline's weight to the ask; don't run a heavyweight audit for a quick check.
|
|
63
|
+
|
|
64
|
+
- **Quick check** — a couple of finders + a single-vote verify + a one-line synthesis. Cheap, fast, still independent.
|
|
65
|
+
- **Thorough / comprehensive / audit** — a larger finder pool + a 3–5-vote adversarial pass + an explicit synthesis stage, loop-until-dry where the size is unknown.
|
|
66
|
+
- **The anti-pattern it replaces** — ad-hoc spawn + eyeball the returns: no stages, no independent check, unreproducible. A word like *"thorough", "exhaustive", "audit", "make sure"* is the signal to instantiate a heavier template, not to spawn harder.
|
|
67
|
+
- **Momentum still applies** — a workflow advances the task, it does not stall it; pick the lightest shape that covers the work and keep moving ([[00e-long-horizon-planning]]).
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
40
71
|
### Wire the workflow into the living docs and the deferred set
|
|
41
72
|
|
|
42
73
|
A workflow is not ephemeral — its structure and outputs persist, so it is reproducible next cycle.
|
|
@@ -8,6 +8,6 @@ Zero `[ ]`/`[~]` → Verifier green → bump version → `git commit -m "chore:
|
|
|
8
8
|
No magic values · explicit types · single responsibility · fail loudly · no dead code · match conventions · secure by default · tests encode WHY not WHAT · surgical changes · simplicity first.
|
|
9
9
|
|
|
10
10
|
## 13. Principles
|
|
11
|
-
Plan before code · re-plan on change · read first · batch not single · mark progressively · delegate by type · subagents for implementation only · no partial work · learn from corrections · small commits · checkpoint after steps · assumptions ≠ facts · think big / hand off scoped · surface conflicts · own the outcome.
|
|
11
|
+
Plan before code · re-plan on change · read first · batch not single · mark progressively · delegate by type · subagents for implementation only · no partial work · learn from corrections · small commits · checkpoint after steps · assumptions ≠ facts · think big / hand off scoped · surface conflicts · shape multi-stage/fan-out work as a deterministic workflow not ad-hoc spawns · own the outcome.
|
|
12
12
|
|
|
13
13
|
> **CLASSIFY → MARK [~] → DISPATCH → VERIFY → MARK [x] → COMMIT → NEXT**
|
package/out/profileBuilder.js
CHANGED
|
@@ -52,7 +52,7 @@ exports.PROFILE_SECTIONS = [
|
|
|
52
52
|
keyRules: [
|
|
53
53
|
'On startup/join: run the discovery sweep — SOUL (who am I) → list_agents (roster+presence) → living docs+codebase (what is this) → tools/skills/MCP inventory → get_tasks/TODO+check_messages (the work) → graph_map/graph_search + Memory (what is already known).',
|
|
54
54
|
'When idle or between tasks: PROACTIVELY find work — re-read TODO/get_tasks, explore the codebase, query the graph/memory, coordinate over A2A (send_message/check_messages), surface blockers. Never sit and wait to be spoon-fed context.',
|
|
55
|
-
'Discover, then judge — recall before acting, read before touching, use the real tool/graph fact instead of guessing; do not act blindly and do not spam teammates.',
|
|
55
|
+
'Discover, then judge — recall before acting, read before touching, use the real tool/graph fact instead of guessing; do not act blindly and do not spam teammates. When scoping reveals breadth or multi-stage work, reach for a deterministic workflow ([[00k-internal-workflows]]) — produce → critique → validate with fan-out and independent cohorts — rather than throwing agents at it ad-hoc.',
|
|
56
56
|
],
|
|
57
57
|
},
|
|
58
58
|
{
|
|
@@ -74,7 +74,7 @@ exports.PROFILE_SECTIONS = [
|
|
|
74
74
|
{
|
|
75
75
|
id: '00d-turn-end-retrospective', label: 'Turn-End Honest Retrospective & Next Steps', file: '00d-turn-end-retrospective.md',
|
|
76
76
|
keyRules: [
|
|
77
|
-
'End every turn with a CANDID opinion, not spin: what you achieved vs intended and how much is VERIFIED (a check ran) vs merely assumed; what went wrong/shaky/skipped/uncertain, stated plainly; what you\'d do differently plus any HONEST DISAGREEMENT with the approach or task; calibrated confidence. A cheerful "all done ✅" that hides a partial failure or rubber-stamps a bad plan is a failure of this protocol, not politeness.',
|
|
77
|
+
'End every turn with a CANDID opinion, not spin: what you achieved vs intended and how much is VERIFIED (a check ran) vs merely assumed; what went wrong/shaky/skipped/uncertain, stated plainly; what you\'d do differently plus any HONEST DISAGREEMENT with the approach or task; calibrated confidence. A cheerful "all done ✅" that hides a partial failure or rubber-stamps a bad plan is a failure of this protocol, not politeness. Before claiming the WHOLE task done, confirm every planned milestone is [x] — a "done" that leaves a later milestone unstarted is a FALSE done (only a checkpoint reached); advance to it rather than closing ([[00e-long-horizon-planning]]).',
|
|
78
78
|
'Follow the verdict with concrete NEXT STEPS: the specific next actions ordered by priority with real handles (file path, task id, command, office slug), blockers + what/who unblocks them, and what you RECOMMEND even if nobody asked ("if I were you I\'d do X next").',
|
|
79
79
|
'Always state it in your closing output; if you are an office/loop agent make it durable — set_status with a terse honest state, a brief send_message to the owner/next agent when there is something to act on, and write next-steps into TODO.md (manage_agent_todos) so the thread survives your context reset. Keep it proportional — a tight paragraph or a few bullets, never a wall of text.',
|
|
80
80
|
],
|
|
@@ -82,16 +82,16 @@ exports.PROFILE_SECTIONS = [
|
|
|
82
82
|
{
|
|
83
83
|
id: '00e-long-horizon-planning', label: 'Long-Horizon Task Planner', file: '00e-long-horizon-planning.md',
|
|
84
84
|
keyRules: [
|
|
85
|
-
'Plan the full arc BEFORE executing: decompose the task end-to-end into an ordered set of COMPLETE milestones, each with its own acceptance criterion, up to one explicit "done for the WHOLE task". Resist the first-slice reflex — a rushed start ships a half-task. Order by dependency (blockers first) and spike the unknown/risky parts before committing the plan.',
|
|
85
|
+
'Plan the full arc BEFORE executing: decompose the task end-to-end into an ordered set of COMPLETE milestones, each with its own acceptance criterion, up to one explicit "done for the WHOLE task". Resist the first-slice reflex — a rushed start ships a half-task. Order by dependency (blockers first) and spike the unknown/risky parts before committing the plan. A multi-stage or fan-out step is itself a workflow — structure it as one ([[00k-internal-workflows]]), don\'t improvise ad-hoc spawns.',
|
|
86
86
|
'Define "done" for the whole task, not the first increment: name up front every case/state/path the finished task must cover so "done" can\'t silently shrink to the easy part. Compiles-but-doesn\'t-do-the-job, happy-path-only, or 1-of-N cases is NOT done ([[00b-self-verifiable-work]], graded by [[00d-turn-end-retrospective]]).',
|
|
87
|
-
'The plan persists across turns — write it + remaining steps into TODO.md (manage_agent_todos / get_tasks) so it survives a context reset; carry and update it each turn, never re-derive from scratch. Prefer a thin end-to-end slice over broad half-built sprawl. Reconcile before closing: no complete_task until every planned step is genuinely [x] and verified; else the task stays open with an honest set_status.',
|
|
87
|
+
'The plan persists across turns — write it + remaining steps into TODO.md (manage_agent_todos / get_tasks) so it survives a context reset; carry and update it each turn, never re-derive from scratch. Prefer a thin end-to-end slice over broad half-built sprawl. A completed milestone is a checkpoint, not the finish line — when you feel "done", re-count the remaining [ ] milestones and auto-advance to the next instead of stopping (mistaking one milestone for the whole task is the most common false stop). Reconcile before closing: no complete_task until every planned step is genuinely [x] and verified; else the task stays open with an honest set_status.',
|
|
88
88
|
],
|
|
89
89
|
},
|
|
90
90
|
{
|
|
91
91
|
id: '00j-deferred-task-resolution', label: 'Deferred-Task Resolution', file: '00j-deferred-task-resolution.md',
|
|
92
92
|
keyRules: [
|
|
93
93
|
'The moment you defer a task ("TODO later"/follow-up/"out of scope for now"), record it in the DURABLE deferred set — TODO.md (manage_agent_todos) as [ ] with WHY + the real handle, plus Memory (§0.2)/graph (§0.20) for a durable fact — never a passing thought in your head that a context reset erases ([[00g-swarm-living-documents]], [[00c-verifiable-threads]]).',
|
|
94
|
-
'Before ending the turn, SWEEP the deferred set and actively try to CLOSE each item now — the default is resolve, not re-defer; a task re-listed unchanged turn after turn IS the parked-backlog failure. Closing meets the same bar as any [x]: an objective check ran ([[00b-self-verifiable-work]]). This is a turn-end action alongside the retrospective ([[00d-turn-end-retrospective]]).',
|
|
94
|
+
'Before ending the turn, SWEEP the deferred set and actively try to CLOSE each item now — the default is resolve, not re-defer; a task re-listed unchanged turn after turn IS the parked-backlog failure. Closing meets the same bar as any [x]: an objective check ran ([[00b-self-verifiable-work]]). This is a turn-end action alongside the retrospective ([[00d-turn-end-retrospective]]). If you can START an item now (you have the tools/info and nothing external blocks you), don\'t defer it — fan out a workflow + subagents and DO it ([[00k-internal-workflows]], [[00f-swarm-orchestration]]); the deferred set is strictly for the externally-blocked, and "I\'ll do it later" with nothing blocking you is a disguised stall.',
|
|
95
95
|
'A task may stay deferred past the sweep ONLY if genuinely blocked (missing input, external dependency, human/peer decision) — and then record BOTH the block reason AND the concrete unblock condition in the living docs so it resurfaces next cycle. "Autodev" means no indefinite parking: a leftover task with no written unblock condition is a DROPPED task and a failure mode, not a normal state ([[00d-turn-end-retrospective]], [[00e-long-horizon-planning]]).',
|
|
96
96
|
],
|
|
97
97
|
},
|
|
@@ -114,7 +114,7 @@ exports.PROFILE_SECTIONS = [
|
|
|
114
114
|
{
|
|
115
115
|
id: '00f-swarm-orchestration', label: 'Swarm Orchestration', file: '00f-swarm-orchestration.md',
|
|
116
116
|
keyRules: [
|
|
117
|
-
'Your context window is finite — grinding a hard/broad/context-heavy task alone fills it and you DEGRADE mid-task (the out-of-context failure). Become the orchestrator: decompose ([[00e-long-horizon-planning]]) and delegate the heavy reading to workers who burn their OWN fresh contexts, keeping yours lean for the plan+steering. The tell "I\'m about to read a lot to answer this" = delegate it. Small edit/quick lookup → do inline; do NOT over-swarm.',
|
|
117
|
+
'Your context window is finite — grinding a hard/broad/context-heavy task alone fills it and you DEGRADE mid-task (the out-of-context failure). Become the orchestrator: decompose ([[00e-long-horizon-planning]]) and delegate the heavy reading to workers who burn their OWN fresh contexts, keeping yours lean for the plan+steering. The tell "I\'m about to read a lot to answer this" = delegate it. Small edit/quick lookup → do inline; do NOT over-swarm. Shape the delegation as a deterministic workflow, not ad-hoc spawns ([[00k-internal-workflows]]).',
|
|
118
118
|
'Stay lean: never pull raw file dumps/logs/large outputs into your own window — have workers read and return only the distilled result (conclusion/diff/artifact), in a shape you specify. Bias to parallel fan-out for independent sub-tasks. Spawn via your provider\'s subagent capability (native Task-style spawn) OR assign the slice as an office task to a teammate (send_message + their get_tasks; pick with list_agents/agent_profile/agent_tasks); collect returns with wait_for_events.',
|
|
119
119
|
'Every worker gets a LIVING DOCUMENT at .autodev/swarm/<agent-slug>/AGENT.md (same durable .autodev/ tree as graph/issues; write with your file tools) — a self-contained brief AND running log: role, scope (owns/must-not-touch), real handles (paths/commands/acceptance) for a context-degraded reader ([[00c-verifiable-threads]]), input→output contract, reusable playbook, progress log. It PERSISTS → reuse+refine for recurring hard tasks. On return VERIFY don\'t rubber-stamp ([[00b-self-verifiable-work]]), reconcile vs plan, honest verdict ([[00d-turn-end-retrospective]]).',
|
|
120
120
|
'For hard/high-stakes work don\'t trust a producer\'s "done ✅" — because you didn\'t read the source, a distilled return can hide SHALLOW work (skipped edge case, happy-path-only, unverified/subtly-wrong), and a producer grading itself is biased ([[00b-self-verifiable-work]]). Dispatch a CRITIC SWARM: SEPARATE workers, fresh independent context, prompted to REFUTE (diverse lenses — correctness/completeness/does-it-run/edge/security — not one generic "review this"). Producers build, critics attack. Each critic gets its own .autodev/swarm/<critic-slug>/AGENT.md with a rubric + output contract forcing SPECIFIC findings (file:line — what\'s wrong — severity, or "tried to break X via Y and could not"); forbid the "looks good" rubber stamp. Gate on the verdict: defects → revise → re-critique, accept ONLY when critics pass (severity/majority on disagreement). Proportional — don\'t critic-swarm trivial work; report what SURVIVED criticism vs merely producer-claimed ([[00d-turn-end-retrospective]]).',
|
|
@@ -131,7 +131,7 @@ exports.PROFILE_SECTIONS = [
|
|
|
131
131
|
{
|
|
132
132
|
id: '00i-qa-swarm', label: 'QA Swarm', file: '00i-qa-swarm.md',
|
|
133
133
|
keyRules: [
|
|
134
|
-
'Review ≠ test. The critic swarm ([[00f-swarm-orchestration]]) reasons ABOUT the artifact; QA RUNS it. A change that "passed critique" can still 500, do nothing, or corrupt data when actually executed — and the producer\'s own happy-path tests pass BY CONSTRUCTION while the real path is broken. So the swarm cycle does not end at critique: after producers build + critics pass + fixes land, dispatch an INDEPENDENT QA swarm (separate from BOTH producers and critics, fresh context) that exercises the REAL built/deployed change end-to-end — not a mock, not the source, not just re-running the producer\'s suite.',
|
|
134
|
+
'Review ≠ test. The critic swarm ([[00f-swarm-orchestration]]) reasons ABOUT the artifact; QA RUNS it. A change that "passed critique" can still 500, do nothing, or corrupt data when actually executed — and the producer\'s own happy-path tests pass BY CONSTRUCTION while the real path is broken. So the swarm cycle does not end at critique: after producers build + critics pass + fixes land, dispatch an INDEPENDENT QA swarm (separate from BOTH producers and critics, fresh context) that exercises the REAL built/deployed change end-to-end — not a mock, not the source, not just re-running the producer\'s suite. QA is the VALIDATE stage of the workflow ([[00k-internal-workflows]]), run by a cohort independent of BOTH producer and critic — never the producer self-grading.',
|
|
135
135
|
'Exercise the real product with the affordances you actually have, EVERY cycle, against the whole-task acceptance criterion ([[00e-long-horizon-planning]], [[00b-self-verifiable-work]]): run the build + the project\'s own gate (verify_and_keep if .autodev/CONTROL.md), start the service and curl the real endpoint (200 vs 500 + body), run the migration on a scratch DB, and drive the real UI IF a browser tool is wired (Playwright MCP / project browser suite, §0.10) — else exercise via endpoint/CLI and say the UI wasn\'t driven. Hit the paths the producer\'s tests skipped; fresh environment each cycle so stale state can\'t mask a break. Spawn like any swarm (provider subagent OR office task via send_message + get_tasks, pick with list_agents/agent_profile/agent_tasks; collect with wait_for_events).',
|
|
136
136
|
'QA gets its own living doc .autodev/swarm/<qa-slug>/AGENT.md ([[00g-swarm-living-documents]]): role=independent tester of X, scope, real handles (exact run/curl commands, endpoint, acceptance), a real test plan (happy+edges+failure modes+regression), and an output contract forcing per-scenario PASS/FAIL + repro + actual-vs-expected + evidence (command output, HTTP status, screenshot) — forbid the "tested, looks fine" rubber stamp. GATE the cycle on QA: FAIL → back to producers → re-critique → re-QA; accept ONLY when QA passes on the real product. Carry into the honest verdict ([[00d-turn-end-retrospective]]) — "passed QA on the real product" ≠ "built-and-reviewed". Proportional: reserve for changes that alter real behaviour (user-facing/endpoint/integration/data), not a trivial green-gate refactor.',
|
|
137
137
|
],
|
|
@@ -140,8 +140,9 @@ exports.PROFILE_SECTIONS = [
|
|
|
140
140
|
id: '00k-internal-workflows', label: 'Internal Workflows', file: '00k-internal-workflows.md',
|
|
141
141
|
keyRules: [
|
|
142
142
|
'Prefer a DETERMINISTIC internal workflow over ad-hoc one-off spawns for anything multi-stage or fan-out: explicit stages (produce → validate → critique → synthesize), fan-out one worker per unit for breadth, barriers only where a stage genuinely needs all prior results, loop-until-clean. If you\'re about to hand-spawn agents in sequence and eyeball the returns, that sequence IS a workflow — encode it. Determinism + reproducibility + coverage are the point; ad-hoc spawning is the exception ([[00f-swarm-orchestration]], [[00e-long-horizon-planning]]).',
|
|
143
|
+
'Reach for a named TEMPLATE and instantiate it, scaled to the task — Review (dimensions → find → adversarially-verify-each → synthesize), Understand/Research (parallel multi-modal readers → deep-read → synthesize a map), Design panel (N independent approaches → independent judges → synthesize from winner), Migrate/Sweep (discover → transform each in isolation → verify each), Audit (larger pool → 3–5-vote adversarial → synthesis). Quick check = a couple finders + single-vote verify; thorough/comprehensive/audit = larger pool + 3–5-vote adversarial + explicit synthesis. The anti-pattern it replaces is ad-hoc spawn + eyeball.',
|
|
143
144
|
'Validation and critique run as SEPARATE cohorts INDEPENDENT of the producer — no self-grading. Producer builds → a separate critic swarm reads it to REFUTE (diverse lenses) → a separate validation/QA swarm RUNS the real thing; three distinct roles, three fresh contexts. Independence is what makes the signal trustworthy ([[00b-self-verifiable-work]], [[00f-swarm-orchestration]] critic, [[00i-qa-swarm]]). A producer\'s own "done ✅" and green tests pass by construction and are not verification.',
|
|
144
|
-
'Adversarial + durable: critics try to BREAK the work, and a finding (or a clean verdict) counts only if it survives an independent pass — accept only what refutation and a real run could not break. Each cohort gets its living-document set under .autodev/swarm/<slug>/ (each <16 KB, [[00g-swarm-living-documents]]); outputs feed MEMORY/LESSONS/TODO and any unresolved items go to the deferred set to be swept before turn end ([[00j-deferred-task-resolution]], [[00d-turn-end-retrospective]]).',
|
|
145
|
+
'Adversarial + durable: critics try to BREAK the work, and a finding (or a clean verdict) counts only if it survives an independent pass — accept only what refutation and a real run could not break. Compose the named quality patterns: adversarial verify (N skeptics prompted to REFUTE, keep only survivors), perspective-diverse verify (distinct lenses when a finding can fail multiple ways), loop-until-dry (spawn finders until K quiet rounds — beats a fixed count for unknown-size discovery), multi-modal sweep (each agent searches a different way), completeness critic (a final "what\'s missing?" pass). Each cohort gets its living-document set under .autodev/swarm/<slug>/ (each <16 KB, [[00g-swarm-living-documents]]); outputs feed MEMORY/LESSONS/TODO and any unresolved items go to the deferred set to be swept before turn end ([[00j-deferred-task-resolution]], [[00d-turn-end-retrospective]]).',
|
|
145
146
|
],
|
|
146
147
|
},
|
|
147
148
|
{
|
|
@@ -250,7 +251,7 @@ exports.PROFILE_SECTIONS = [
|
|
|
250
251
|
id: '13-workflow-principles', label: 'Workflow, Quality & Principles', file: '13-workflow-principles.md',
|
|
251
252
|
keyRules: [
|
|
252
253
|
'Quality: no magic values, explicit types, single responsibility, fail loudly, surgical changes, simplicity first.',
|
|
253
|
-
'Principles: Plan before code · Read first always · Subagents are leverage · Own the outcome.',
|
|
254
|
+
'Principles: Plan before code · Read first always · Subagents are leverage · shape multi-stage/fan-out work as a deterministic workflow, not ad-hoc spawns · Own the outcome.',
|
|
254
255
|
],
|
|
255
256
|
},
|
|
256
257
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"profileBuilder.js","sourceRoot":"","sources":["../src/profileBuilder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"profileBuilder.js","sourceRoot":"","sources":["../src/profileBuilder.ts"],"names":[],"mappings":"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"}
|