hool-cli 0.5.0 → 0.6.0
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/dist/core/templates.js +2 -2
- package/dist/core/templates.js.map +1 -1
- package/dist/index.js +74 -2
- package/dist/index.js.map +1 -1
- package/hooks/inject-pl-context.sh +43 -1
- package/package.json +1 -1
- package/prompts/agents/05-fe-tech-lead.md +5 -1
- package/prompts/agents/06-be-tech-lead.md +5 -1
- package/prompts/agents/08-be-dev.md +22 -0
- package/prompts/agents/08-fe-dev.md +21 -0
- package/prompts/agents/10-qa.md +62 -5
- package/prompts/agents/governor.md +12 -6
- package/prompts/checklists/code-review.md +47 -0
- package/prompts/orchestrator.md +104 -12
package/dist/core/templates.js
CHANGED
|
@@ -7,7 +7,7 @@ export function getOperationTemplates(mode = 'interactive') {
|
|
|
7
7
|
'inconsistencies.md': `# Inconsistencies\n\n_No inconsistencies found yet._\n`,
|
|
8
8
|
'needs-human-review.md': `# Needs Human Review\n\n_Nothing pending human review._\n`,
|
|
9
9
|
'client-preferences.md': `# Client Preferences\n\nUser tech and product preferences captured during the project. Every agent honours these.\n\n## Tech Preferences\n_None yet._\n\n## Product Constraints\n_None yet._\n\n## Integrations\n_None yet._\n`,
|
|
10
|
-
'governor-rules.md': `# Governor Rules\n\nHard rules enforced by the Governor agent. Agents self-enforce; Governor audits.\n\n## Critical (must never happen even once)\n- [CRITICAL] No agent may modify its own prompt files (.hool/prompts/)\n- [CRITICAL] Product Lead must NEVER edit application code (src/, tests/) directly — always dispatch\n- [CRITICAL] No agent may remove or overwrite entries in governor-rules.md\n\n## High\n- [HIGH] All agents must load operations/client-preferences.md and honour user preferences\n- [HIGH] Product Lead must write a dispatch brief to operations/context/ before dispatching any agent\n- [HIGH] No task is too small for agent dispatch — even one-line changes go through the assigned agent\n\n## Medium\n- [MEDIUM] Agents must review best-practices.md and governor-feedback.md before submitting work\n- [MEDIUM] All file edits must be within the agent's declared writable paths\n`,
|
|
10
|
+
'governor-rules.md': `# Governor Rules\n\nHard rules enforced by the Governor agent. Agents self-enforce; Governor audits.\n\n## Critical (must never happen even once)\n- [CRITICAL] No agent may modify its own prompt files (.hool/prompts/)\n- [CRITICAL] Product Lead must NEVER edit application code (src/, tests/) directly — always dispatch\n- [CRITICAL] No agent may remove or overwrite entries in governor-rules.md\n\n## High\n- [HIGH] All agents must load operations/client-preferences.md and honour user preferences\n- [HIGH] Product Lead must write a dispatch brief to operations/context/ before dispatching any agent\n- [HIGH] No task is too small for agent dispatch — even one-line changes go through the assigned agent\n- [HIGH] Dev agents (FE Dev, BE Dev) and QA MUST run actual test commands and paste terminal output showing pass/fail counts. Describing tests without executing them is a violation. No terminal output = no evidence = violation.\n\n## Medium\n- [MEDIUM] Agents must review best-practices.md and governor-feedback.md before submitting work\n- [MEDIUM] All file edits must be within the agent's declared writable paths\n`,
|
|
11
11
|
'governor-log.md': `# Governor Log\n\n_No audits yet._\n`,
|
|
12
12
|
};
|
|
13
13
|
}
|
|
@@ -63,7 +63,7 @@ _No inconsistencies found yet. Onboarding will populate this._
|
|
|
63
63
|
_Onboarding will add the inferred spec here for review._
|
|
64
64
|
`,
|
|
65
65
|
'client-preferences.md': `# Client Preferences\n\nUser tech and product preferences captured during the project. Every agent honours these.\n\n## Tech Preferences\n_None yet._\n\n## Product Constraints\n_None yet._\n\n## Integrations\n_None yet._\n`,
|
|
66
|
-
'governor-rules.md': `# Governor Rules\n\nHard rules enforced by the Governor agent. Agents self-enforce; Governor audits.\n\n## Critical (must never happen even once)\n- [CRITICAL] No agent may modify its own prompt files (.hool/prompts/)\n- [CRITICAL] Product Lead must NEVER edit application code (src/, tests/) directly — always dispatch\n- [CRITICAL] No agent may remove or overwrite entries in governor-rules.md\n\n## High\n- [HIGH] All agents must load operations/client-preferences.md and honour user preferences\n- [HIGH] Product Lead must write a dispatch brief to operations/context/ before dispatching any agent\n- [HIGH] No task is too small for agent dispatch — even one-line changes go through the assigned agent\n\n## Medium\n- [MEDIUM] Agents must review best-practices.md and governor-feedback.md before submitting work\n- [MEDIUM] All file edits must be within the agent's declared writable paths\n`,
|
|
66
|
+
'governor-rules.md': `# Governor Rules\n\nHard rules enforced by the Governor agent. Agents self-enforce; Governor audits.\n\n## Critical (must never happen even once)\n- [CRITICAL] No agent may modify its own prompt files (.hool/prompts/)\n- [CRITICAL] Product Lead must NEVER edit application code (src/, tests/) directly — always dispatch\n- [CRITICAL] No agent may remove or overwrite entries in governor-rules.md\n\n## High\n- [HIGH] All agents must load operations/client-preferences.md and honour user preferences\n- [HIGH] Product Lead must write a dispatch brief to operations/context/ before dispatching any agent\n- [HIGH] No task is too small for agent dispatch — even one-line changes go through the assigned agent\n- [HIGH] Dev agents (FE Dev, BE Dev) and QA MUST run actual test commands and paste terminal output showing pass/fail counts. Describing tests without executing them is a violation. No terminal output = no evidence = violation.\n\n## Medium\n- [MEDIUM] Agents must review best-practices.md and governor-feedback.md before submitting work\n- [MEDIUM] All file edits must be within the agent's declared writable paths\n`,
|
|
67
67
|
'governor-log.md': `# Governor Log\n\n_No audits yet._\n`,
|
|
68
68
|
};
|
|
69
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,OAAe,aAAa;IAChE,OAAO;QACL,kBAAkB,EAAE,kCAAkC,IAAI,sDAAsD;QAEhH,eAAe,EAAE,mFAAmF;QAEpG,SAAS,EAAE,4CAA4C;QAEvD,WAAW,EAAE,uCAAuC;QAEpD,oBAAoB,EAAE,wDAAwD;QAE9E,uBAAuB,EAAE,2DAA2D;QAEpF,uBAAuB,EAAE,gOAAgO;QAEzP,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/core/templates.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,qBAAqB,CAAC,OAAe,aAAa;IAChE,OAAO;QACL,kBAAkB,EAAE,kCAAkC,IAAI,sDAAsD;QAEhH,eAAe,EAAE,mFAAmF;QAEpG,SAAS,EAAE,4CAA4C;QAEvD,WAAW,EAAE,uCAAuC;QAEpD,oBAAoB,EAAE,wDAAwD;QAE9E,uBAAuB,EAAE,2DAA2D;QAEpF,uBAAuB,EAAE,gOAAgO;QAEzP,mBAAmB,EAAE,smCAAsmC;QAE3nC,iBAAiB,EAAE,sCAAsC;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,OAAe,aAAa;IACvE,OAAO;QACL,kBAAkB,EAAE;;cAEV,IAAI;;;;;;;;;;;;CAYjB;QAEG,eAAe,EAAE;;;;;;;;;;;;;;;;;CAiBpB;QAEG,SAAS,EAAE;;;CAGd;QAEG,WAAW,EAAE;;;CAGhB;QAEG,oBAAoB,EAAE;;;CAGzB;QAEG,uBAAuB,EAAE;;;CAG5B;QAEG,uBAAuB,EAAE,gOAAgO;QAEzP,mBAAmB,EAAE,smCAAsmC;QAE3nC,iBAAiB,EAAE,sCAAsC;KAC1D,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAe,aAAa;IACjE,OAAO;;cAEK,IAAI;;;;;;;;;;;;CAYjB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;CAaR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;QACL,QAAQ,EAAE,kGAAkG;QAE5G,SAAS,EAAE,gBAAgB;QAE3B,mBAAmB,EAAE,4DAA4D;QAEjF,WAAW,EAAE,oDAAoD;QAEjE,sBAAsB,EAAE,6CAA6C;KACtE,CAAC;AACJ,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -339,15 +339,87 @@ program
|
|
|
339
339
|
const bugs = await fs.readFile(path.join(projectDir, '.hool/operations/bugs.md'), 'utf-8');
|
|
340
340
|
const review = await fs.readFile(path.join(projectDir, '.hool/operations/needs-human-review.md'), 'utf-8');
|
|
341
341
|
console.log(chalk.bold('\n HOOL Status\n'));
|
|
342
|
+
// Phase info
|
|
342
343
|
console.log(chalk.dim(' ── Phase ──'));
|
|
343
344
|
console.log(' ' + phase.split('\n').slice(0, 5).join('\n '));
|
|
345
|
+
// Task summary with progress bar
|
|
344
346
|
const pendingTasks = (taskBoard.match(/- \[ \]/g) || []).length;
|
|
345
347
|
const completedTasks = (taskBoard.match(/- \[x\]/g) || []).length;
|
|
348
|
+
const totalTasks = pendingTasks + completedTasks;
|
|
349
|
+
const pct = totalTasks > 0 ? Math.round((completedTasks / totalTasks) * 100) : 0;
|
|
350
|
+
const barLen = 20;
|
|
351
|
+
const filled = totalTasks > 0 ? Math.round((completedTasks / totalTasks) * barLen) : 0;
|
|
352
|
+
const bar = chalk.green('█'.repeat(filled)) + chalk.dim('░'.repeat(barLen - filled));
|
|
346
353
|
console.log(chalk.dim('\n ── Tasks ──'));
|
|
354
|
+
console.log(` ${bar} ${pct}% (${completedTasks}/${totalTasks})`);
|
|
347
355
|
console.log(` Pending: ${pendingTasks} Completed: ${completedTasks}`);
|
|
348
|
-
|
|
356
|
+
// Parse tasks by agent for parallel visualization
|
|
357
|
+
const taskLines = taskBoard.split('\n').filter(l => /^- \[[ x]\]/.test(l));
|
|
358
|
+
const agentTasks = {};
|
|
359
|
+
for (const line of taskLines) {
|
|
360
|
+
const agentMatch = line.match(/assigned:\s*(\S+)/);
|
|
361
|
+
if (agentMatch) {
|
|
362
|
+
const agent = agentMatch[1];
|
|
363
|
+
if (!agentTasks[agent])
|
|
364
|
+
agentTasks[agent] = { pending: 0, done: 0 };
|
|
365
|
+
if (line.startsWith('- [x]')) {
|
|
366
|
+
agentTasks[agent].done++;
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
agentTasks[agent].pending++;
|
|
370
|
+
}
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
if (Object.keys(agentTasks).length > 0) {
|
|
374
|
+
console.log(chalk.dim('\n ── Agent Progress ──'));
|
|
375
|
+
const maxNameLen = Math.max(...Object.keys(agentTasks).map(n => n.length));
|
|
376
|
+
for (const [agent, counts] of Object.entries(agentTasks)) {
|
|
377
|
+
const aTotal = counts.pending + counts.done;
|
|
378
|
+
const aPct = aTotal > 0 ? Math.round((counts.done / aTotal) * 100) : 0;
|
|
379
|
+
const aFilled = aTotal > 0 ? Math.round((counts.done / aTotal) * 10) : 0;
|
|
380
|
+
const aBar = chalk.green('█'.repeat(aFilled)) + chalk.dim('░'.repeat(10 - aFilled));
|
|
381
|
+
const status = counts.pending === 0 && counts.done > 0
|
|
382
|
+
? chalk.green('✓')
|
|
383
|
+
: counts.pending > 0
|
|
384
|
+
? chalk.yellow('…')
|
|
385
|
+
: ' ';
|
|
386
|
+
console.log(` ${status} ${agent.padEnd(maxNameLen)} ${aBar} ${String(aPct).padStart(3)}% (${counts.done}/${aTotal})`);
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
// Bugs
|
|
390
|
+
const openBugs = (bugs.match(/Status: open/g) || []).length;
|
|
391
|
+
const totalBugs = (bugs.match(/## BUG-/g) || []).length;
|
|
349
392
|
console.log(chalk.dim('\n ── Bugs ──'));
|
|
350
|
-
|
|
393
|
+
if (totalBugs === 0) {
|
|
394
|
+
console.log(` ${chalk.green('✓')} No bugs`);
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
console.log(` Open: ${openBugs > 0 ? chalk.red(openBugs) : chalk.green(0)} Total: ${totalBugs}`);
|
|
398
|
+
}
|
|
399
|
+
// Inconsistencies
|
|
400
|
+
let inconsistencies = 0;
|
|
401
|
+
try {
|
|
402
|
+
const incFile = await fs.readFile(path.join(projectDir, '.hool/operations/inconsistencies.md'), 'utf-8');
|
|
403
|
+
inconsistencies = (incFile.match(/^- /gm) || []).length;
|
|
404
|
+
}
|
|
405
|
+
catch { /* file might not exist */ }
|
|
406
|
+
if (inconsistencies > 0) {
|
|
407
|
+
console.log(chalk.dim('\n ── Inconsistencies ──'));
|
|
408
|
+
console.log(` ${chalk.yellow(inconsistencies)} unresolved`);
|
|
409
|
+
}
|
|
410
|
+
// Governor
|
|
411
|
+
let dispatchCount = 0;
|
|
412
|
+
try {
|
|
413
|
+
const dc = await fs.readFile(path.join(projectDir, '.hool/metrics/dispatch-count.txt'), 'utf-8');
|
|
414
|
+
dispatchCount = parseInt(dc.trim()) || 0;
|
|
415
|
+
}
|
|
416
|
+
catch { /* file might not exist */ }
|
|
417
|
+
if (dispatchCount > 0) {
|
|
418
|
+
const sinceLastAudit = dispatchCount % 3;
|
|
419
|
+
console.log(chalk.dim('\n ── Governor ──'));
|
|
420
|
+
console.log(` Dispatches: ${dispatchCount} Since last audit: ${sinceLastAudit}/3${sinceLastAudit >= 2 ? chalk.yellow(' (audit due)') : ''}`);
|
|
421
|
+
}
|
|
422
|
+
// Human review
|
|
351
423
|
const needsReview = !review.includes('Nothing pending');
|
|
352
424
|
console.log(chalk.dim('\n ── Human Review ──'));
|
|
353
425
|
console.log(` ${needsReview ? chalk.yellow('⚠ Items pending review') : chalk.green('✓ Nothing pending')}`);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -90,8 +90,50 @@ if [ "$DISPATCH_COUNT" -gt 0 ] && [ $(( DISPATCH_COUNT % 3 )) -ge 2 ]; then
|
|
|
90
90
|
GOVERNOR_DUE=" Governor audit due after next dispatch."
|
|
91
91
|
fi
|
|
92
92
|
|
|
93
|
+
# Calculate progress percentage for current phase
|
|
94
|
+
COMPLETED=0
|
|
95
|
+
TOTAL=0
|
|
96
|
+
if [ -f "$PROJECT_ROOT/.hool/operations/task-board.md" ]; then
|
|
97
|
+
COMPLETED=$(grep -c '^\- \[x\]' "$PROJECT_ROOT/.hool/operations/task-board.md" 2>/dev/null || echo "0")
|
|
98
|
+
TOTAL=$(( PENDING + COMPLETED ))
|
|
99
|
+
fi
|
|
100
|
+
PROGRESS=""
|
|
101
|
+
if [ "$TOTAL" -gt 0 ]; then
|
|
102
|
+
PCT=$(( COMPLETED * 100 / TOTAL ))
|
|
103
|
+
PROGRESS=" Progress: ${COMPLETED}/${TOTAL} (${PCT}%)"
|
|
104
|
+
fi
|
|
105
|
+
|
|
106
|
+
# Check for open bugs
|
|
107
|
+
OPEN_BUGS=0
|
|
108
|
+
if [ -f "$PROJECT_ROOT/.hool/operations/bugs.md" ]; then
|
|
109
|
+
OPEN_BUGS=$(grep -c 'Status: open' "$PROJECT_ROOT/.hool/operations/bugs.md" 2>/dev/null || echo "0")
|
|
110
|
+
fi
|
|
111
|
+
BUG_INFO=""
|
|
112
|
+
if [ "$OPEN_BUGS" -gt 0 ]; then
|
|
113
|
+
BUG_INFO=" Open bugs: ${OPEN_BUGS}."
|
|
114
|
+
fi
|
|
115
|
+
|
|
116
|
+
# Check execution mode for nudge behavior
|
|
117
|
+
MODE="interactive"
|
|
118
|
+
if [ -f "$PROJECT_ROOT/.hool/phases/00-init/project-profile.md" ]; then
|
|
119
|
+
MODE_LINE=$(grep -i 'mode' "$PROJECT_ROOT/.hool/phases/00-init/project-profile.md" 2>/dev/null | head -1)
|
|
120
|
+
if echo "$MODE_LINE" | grep -qi 'full-hool'; then
|
|
121
|
+
MODE="full-hool"
|
|
122
|
+
fi
|
|
123
|
+
fi
|
|
124
|
+
|
|
125
|
+
# Build nudge hint based on state
|
|
126
|
+
NUDGE=""
|
|
127
|
+
if [ "$PENDING" -eq 0 ] && [ "$COMPLETED" -gt 0 ]; then
|
|
128
|
+
NUDGE=" NUDGE: No pending tasks — check phase gate conditions and advance if met."
|
|
129
|
+
elif [ "$REVIEW_ITEMS" -gt 0 ] && [ "$MODE" = "interactive" ]; then
|
|
130
|
+
NUDGE=" NUDGE: ${REVIEW_ITEMS} items need human review — present them to user."
|
|
131
|
+
elif [ "$OPEN_BUGS" -ge 5 ]; then
|
|
132
|
+
NUDGE=" NUDGE: 5+ open bugs — consider running a mini-retro."
|
|
133
|
+
fi
|
|
134
|
+
|
|
93
135
|
# Build context as a single line (JSON-safe)
|
|
94
|
-
CONTEXT="HOOL PRODUCT LEAD CONTEXT | Current: ${PHASE} | Pending tasks: ${PENDING} | Human review: ${REVIEW_ITEMS} | Inconsistencies: ${INCONSISTENCIES} | Dispatches: ${DISPATCH_COUNT}${GOVERNOR_DUE} | ${PHASE_GUIDANCE} | RULES: (1) NEVER edit src/ or tests/ - dispatch agents (2) Read .hool/operations/current-phase.md and task-board.md FIRST (3) All state in .hool/ (4) After every 3 dispatches, run governor (5) No task too small for dispatch (6) If pending tasks, tell user and ask to proceed"
|
|
136
|
+
CONTEXT="HOOL PRODUCT LEAD CONTEXT | Current: ${PHASE} | Mode: ${MODE} | Pending tasks: ${PENDING}${PROGRESS} | Human review: ${REVIEW_ITEMS} | Inconsistencies: ${INCONSISTENCIES} | Dispatches: ${DISPATCH_COUNT}${GOVERNOR_DUE}${BUG_INFO}${NUDGE} | ${PHASE_GUIDANCE} | RULES: (1) NEVER edit src/ or tests/ - dispatch agents (2) Read .hool/operations/current-phase.md and task-board.md FIRST (3) All state in .hool/ (4) After every 3 dispatches, run governor (5) No task too small for dispatch (6) If pending tasks, tell user and ask to proceed (7) Classify request complexity before routing (trivial/small/medium/large) (8) Nudge: in interactive mode SUGGEST next action, in full-hool mode ACT on it"
|
|
95
137
|
|
|
96
138
|
# Output valid JSON
|
|
97
139
|
printf '{"hookSpecificOutput":{"hookEventName":"UserPromptSubmit","additionalContext":"%s"}}\n' "$CONTEXT"
|
package/package.json
CHANGED
|
@@ -136,11 +136,15 @@ How logging works. Where logs go. How to read them.
|
|
|
136
136
|
- .hool/phases/05-fe-scaffold/fe-lld.md — LLD compliance check
|
|
137
137
|
- .hool/phases/07-test-plan/test-plan.md — test coverage check
|
|
138
138
|
- .hool/memory/fe-dev/hot.md — what FE Dev has been doing
|
|
139
|
+
- .hool/prompts/checklists/code-review.md — baseline review checklist (security, performance, a11y, API design)
|
|
140
|
+
- .hool/memory/fe-tech-lead/best-practices.md — project-specific patterns (organic checklist items)
|
|
139
141
|
### Writes
|
|
140
142
|
- .hool/operations/inconsistencies.md — INC-XXX entries for any issues found
|
|
141
143
|
### Process
|
|
142
144
|
1. Read the code FE Dev produced for the task
|
|
143
|
-
2.
|
|
145
|
+
2. Load and run the baseline checklist from `.hool/prompts/checklists/code-review.md` (skip BE-only items)
|
|
146
|
+
3. Also check project-specific patterns from your `best-practices.md`
|
|
147
|
+
4. Run the 6-point review checklist:
|
|
144
148
|
- **Contract compliance** — API calls match .hool/phases/04-architecture/contracts/ (endpoints, methods, request/response shapes, status codes handled)
|
|
145
149
|
- **Spec compliance** — acceptance criteria from .hool/phases/02-spec/spec.md are implemented, edge cases covered
|
|
146
150
|
- **Design compliance** — UI matches .hool/phases/03-design/cards/*.html, all states present (loading, error, empty, populated)
|
|
@@ -157,11 +157,15 @@ Order matters. List in execution order:
|
|
|
157
157
|
- .hool/phases/02-spec/spec.md (and features/ if split) — acceptance criteria check
|
|
158
158
|
- .hool/phases/07-test-plan/test-plan.md — test coverage check
|
|
159
159
|
- .hool/memory/be-dev/hot.md — what BE Dev has been doing
|
|
160
|
+
- .hool/prompts/checklists/code-review.md — baseline review checklist (security, performance, a11y, API design)
|
|
161
|
+
- .hool/memory/be-tech-lead/best-practices.md — project-specific patterns (organic checklist items)
|
|
160
162
|
### Writes
|
|
161
163
|
- .hool/operations/inconsistencies.md — INC-XXX entries for any issues found
|
|
162
164
|
### Process
|
|
163
165
|
1. Read the code BE Dev produced for the task
|
|
164
|
-
2.
|
|
166
|
+
2. Load and run the baseline checklist from `.hool/prompts/checklists/code-review.md` (skip FE-only items)
|
|
167
|
+
3. Also check project-specific patterns from your `best-practices.md`
|
|
168
|
+
4. Run the 6-point review checklist:
|
|
165
169
|
- **Contract compliance** — response shapes, status codes, error codes match .hool/phases/04-architecture/contracts/ exactly
|
|
166
170
|
- **Schema compliance** — queries are correct, indexes are used, transactions where needed per .hool/phases/04-architecture/schema.md
|
|
167
171
|
- **LLD compliance** — directory structure, service/controller pattern, conventions from .hool/phases/06-be-scaffold/be-lld.md followed
|
|
@@ -61,6 +61,28 @@ If you believe your own process or rules should change based on experience, esca
|
|
|
61
61
|
8. **Small commits**: Each task = one logical unit of work.
|
|
62
62
|
9. **Consistency gate**: Before implementing, cross-check your task against contracts, schema, and spec. If you find ANY inconsistency between docs, DO NOT proceed — log to .hool/operations/inconsistencies.md.
|
|
63
63
|
|
|
64
|
+
## Test Execution Requirement (MANDATORY)
|
|
65
|
+
|
|
66
|
+
**You MUST actually run tests and paste the terminal output.** Describing tests or saying "tests pass" without evidence is a governor violation.
|
|
67
|
+
|
|
68
|
+
1. After writing/updating tests, run them: execute the actual test command (e.g., `npm test`, `npx vitest run`, `pytest`)
|
|
69
|
+
2. **Paste the actual terminal output** showing pass/fail counts in your work log
|
|
70
|
+
3. Run integration tests specifically: verify endpoints return what contracts specify
|
|
71
|
+
4. After implementation, run the FULL test suite (not just yours): paste terminal output
|
|
72
|
+
5. If tests fail: fix the code, re-run, paste the new output
|
|
73
|
+
6. Your task is NOT complete until you have pasted passing test output
|
|
74
|
+
|
|
75
|
+
**Example of required evidence:**
|
|
76
|
+
```
|
|
77
|
+
$ npm test
|
|
78
|
+
✓ AuthService.login returns token for valid credentials (23ms)
|
|
79
|
+
✓ AuthService.login rejects invalid password (8ms)
|
|
80
|
+
✓ AuthService.login rejects non-existent user (6ms)
|
|
81
|
+
Tests: 3 passed, 3 total
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
**NOT acceptable:** "I wrote tests for AuthService and they pass." (no terminal output = violation)
|
|
85
|
+
|
|
64
86
|
## BE-Specific Guidelines
|
|
65
87
|
|
|
66
88
|
### Controller/Route Layer
|
|
@@ -59,6 +59,27 @@ If you believe your own process or rules should change based on experience, esca
|
|
|
59
59
|
8. **Small commits**: Each task = one logical unit of work.
|
|
60
60
|
9. **Consistency gate**: Before implementing, cross-check your task against contracts, design cards, and spec. If you find ANY inconsistency between docs, DO NOT proceed — log to .hool/operations/inconsistencies.md.
|
|
61
61
|
|
|
62
|
+
## Test Execution Requirement (MANDATORY)
|
|
63
|
+
|
|
64
|
+
**You MUST actually run tests and paste the terminal output.** Describing tests or saying "tests pass" without evidence is a governor violation.
|
|
65
|
+
|
|
66
|
+
1. After writing/updating tests, run them: execute the actual test command (e.g., `npm test`, `npx vitest run`, `npx jest`)
|
|
67
|
+
2. **Paste the actual terminal output** showing pass/fail counts in your work log
|
|
68
|
+
3. After implementation, run the FULL test suite (not just your tests): paste terminal output
|
|
69
|
+
4. If tests fail: fix the code, re-run, paste the new output
|
|
70
|
+
5. Your task is NOT complete until you have pasted passing test output
|
|
71
|
+
|
|
72
|
+
**Example of required evidence:**
|
|
73
|
+
```
|
|
74
|
+
$ npm test
|
|
75
|
+
✓ LoginForm renders correctly (12ms)
|
|
76
|
+
✓ LoginForm validates email (8ms)
|
|
77
|
+
✓ LoginForm submits credentials (15ms)
|
|
78
|
+
Tests: 3 passed, 3 total
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**NOT acceptable:** "I wrote tests for LoginForm and they pass." (no terminal output = violation)
|
|
82
|
+
|
|
62
83
|
## FE-Specific Guidelines
|
|
63
84
|
|
|
64
85
|
### Components
|
package/prompts/agents/10-qa.md
CHANGED
|
@@ -148,19 +148,39 @@ phases/07-test-plan/
|
|
|
148
148
|
|
|
149
149
|
### Process
|
|
150
150
|
|
|
151
|
-
#### 1. Run existing tests
|
|
151
|
+
#### 1. Run existing tests (MANDATORY — paste actual output)
|
|
152
|
+
|
|
153
|
+
You MUST execute the actual test commands and paste terminal output. Describing results without running them is a governor violation.
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
# Run unit tests — paste actual output
|
|
157
|
+
npm test # or: npx vitest run, pytest, etc.
|
|
158
|
+
|
|
159
|
+
# Run integration tests — paste actual output
|
|
160
|
+
npm run test:integration # or equivalent
|
|
161
|
+
|
|
162
|
+
# Run E2E tests — paste actual output
|
|
163
|
+
npx playwright test # or equivalent
|
|
152
164
|
```
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
165
|
+
|
|
166
|
+
**Paste the full terminal output for each test suite.** Example:
|
|
167
|
+
```
|
|
168
|
+
$ npm test
|
|
169
|
+
✓ AuthService.login (23ms)
|
|
170
|
+
✓ AuthService.signup (15ms)
|
|
171
|
+
✗ UserService.update (FAIL — expected 200, got 500)
|
|
172
|
+
Tests: 2 passed, 1 failed, 3 total
|
|
156
173
|
```
|
|
157
174
|
|
|
175
|
+
Report: `[QA-RUN] unit: 2 pass / 1 fail | integration: 5 pass / 0 fail | e2e: 3 pass / 1 fail`
|
|
176
|
+
|
|
158
177
|
#### 2. Execute test plan
|
|
159
178
|
Walk through test cases from .hool/phases/07-test-plan/test-plan.md. For each:
|
|
160
179
|
- Set up preconditions
|
|
161
|
-
- Execute steps
|
|
180
|
+
- Execute steps (actually run the commands / use Playwright / make API calls)
|
|
162
181
|
- Verify expected results
|
|
163
182
|
- Capture evidence (screenshots for visual, response bodies for API)
|
|
183
|
+
- **Paste evidence** — terminal output, screenshot paths, or response bodies
|
|
164
184
|
|
|
165
185
|
#### 3. Exploratory testing
|
|
166
186
|
Go beyond the test plan. Try:
|
|
@@ -202,6 +222,43 @@ When you find a bug, add to `.hool/operations/bugs.md`:
|
|
|
202
222
|
- **medium**: Feature works but with wrong behavior in edge case
|
|
203
223
|
- **low**: Visual glitch, cosmetic issue
|
|
204
224
|
|
|
225
|
+
## QA Scoring Rubric
|
|
226
|
+
|
|
227
|
+
After completing all testing (automated + manual + exploratory + visual), score the build using this rubric. Each category is scored 0-20. Total out of 100.
|
|
228
|
+
|
|
229
|
+
### Categories
|
|
230
|
+
|
|
231
|
+
| Category | 0-5 (Fail) | 6-10 (Poor) | 11-15 (Acceptable) | 16-20 (Good) |
|
|
232
|
+
|---|---|---|---|---|
|
|
233
|
+
| **Functional correctness** | Core flows broken | Major features broken | Minor edge cases fail | All acceptance criteria pass |
|
|
234
|
+
| **Test coverage** | No tests run | <50% of test plan executed | 50-80% executed | >80% executed, all types covered |
|
|
235
|
+
| **Edge cases** | Not tested | Obvious edges missed | Most edges tested | Comprehensive edge coverage |
|
|
236
|
+
| **Visual fidelity** | Doesn't match design | Major layout issues | Minor styling differences | Pixel-accurate to design cards |
|
|
237
|
+
| **Exploratory findings** | Not attempted | Surface-level only | Moderate depth (inputs, navigation) | Deep testing (permissions, race conditions, state) |
|
|
238
|
+
|
|
239
|
+
### Scoring Rules
|
|
240
|
+
- **≥ 85**: PASS — ready for ship
|
|
241
|
+
- **70-84**: CONDITIONAL PASS — log issues as medium-severity bugs, can ship with known issues documented
|
|
242
|
+
- **50-69**: FAIL — too many issues, route critical bugs to Forensic
|
|
243
|
+
- **< 50**: HARD FAIL — fundamental problems, escalate to Product Lead
|
|
244
|
+
|
|
245
|
+
### Output Format
|
|
246
|
+
After testing, report the score:
|
|
247
|
+
```markdown
|
|
248
|
+
## QA Score: [total]/100
|
|
249
|
+
| Category | Score | Notes |
|
|
250
|
+
|---|---|---|
|
|
251
|
+
| Functional correctness | [X]/20 | [brief note] |
|
|
252
|
+
| Test coverage | [X]/20 | [brief note] |
|
|
253
|
+
| Edge cases | [X]/20 | [brief note] |
|
|
254
|
+
| Visual fidelity | [X]/20 | [brief note] |
|
|
255
|
+
| Exploratory findings | [X]/20 | [brief note] |
|
|
256
|
+
|
|
257
|
+
**Verdict**: PASS / CONDITIONAL PASS / FAIL / HARD FAIL
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Log the score in your work log: `[QA-SCORE] [total]/100 — [verdict]`
|
|
261
|
+
|
|
205
262
|
## What you DON'T do
|
|
206
263
|
- Don't fix bugs. Report them.
|
|
207
264
|
- Don't review code quality. That's the Tech Lead's job.
|
|
@@ -48,6 +48,11 @@ On each invocation:
|
|
|
48
48
|
4. **Check for repeated mistakes**:
|
|
49
49
|
- Same type of error appearing 2+ times across agents or within one agent
|
|
50
50
|
- Patterns that suggest a systemic issue (e.g., agents consistently missing a check)
|
|
51
|
+
5. **Cross-agent pattern detection**:
|
|
52
|
+
- Compare findings across ALL agents' cold logs — do 2+ agents hit the same gotcha or make the same mistake?
|
|
53
|
+
- If a pattern spans multiple agents, it's likely a systemic issue (bad contract, unclear spec, missing rule)
|
|
54
|
+
- Log cross-agent patterns with `[CROSS-AGENT]` tag and escalate to `.hool/operations/needs-human-review.md`
|
|
55
|
+
- Example: if both FE Dev and BE Dev misinterpret the same contract field → the contract is ambiguous, not the agents
|
|
51
56
|
5. **Check for critical one-time violations**:
|
|
52
57
|
- Rules in `governor-rules.md` tagged `[CRITICAL]` — these must never happen even once
|
|
53
58
|
6. **Write findings** to `.hool/operations/governor-log.md`
|
|
@@ -97,10 +102,11 @@ The governor is invoked:
|
|
|
97
102
|
## Work Log Tags
|
|
98
103
|
|
|
99
104
|
```
|
|
100
|
-
[AUDIT]
|
|
101
|
-
[VIOLATION]
|
|
102
|
-
[PATTERN]
|
|
103
|
-
[
|
|
104
|
-
[
|
|
105
|
-
[
|
|
105
|
+
[AUDIT] — routine audit completed
|
|
106
|
+
[VIOLATION] — rule violation detected
|
|
107
|
+
[PATTERN] — repeated mistake pattern identified
|
|
108
|
+
[CROSS-AGENT] — same issue detected across 2+ agents (systemic)
|
|
109
|
+
[RULE-ADD] — new rule appended to governor-rules.md
|
|
110
|
+
[FEEDBACK] — corrective feedback written to agent
|
|
111
|
+
[ESCALATE] — structural issue escalated to human
|
|
106
112
|
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Code Review Checklist
|
|
2
|
+
|
|
3
|
+
Baseline checklist loaded by Tech Leads during Phase 9 (Code Review). This is the starting floor — project-specific items accumulate in `best-practices.md` over time.
|
|
4
|
+
|
|
5
|
+
## Security (OWASP Top 10)
|
|
6
|
+
- [ ] No SQL injection — parameterized queries, no string concatenation in queries
|
|
7
|
+
- [ ] No XSS — user input is escaped/sanitized before rendering
|
|
8
|
+
- [ ] No exposed secrets — no API keys, tokens, passwords in source code
|
|
9
|
+
- [ ] No command injection — no unsanitized user input in shell commands
|
|
10
|
+
- [ ] Auth checks on protected routes — middleware enforces authentication
|
|
11
|
+
- [ ] Authorization verified — users can only access their own resources
|
|
12
|
+
- [ ] CORS configured correctly — not wildcard (*) in production
|
|
13
|
+
- [ ] Rate limiting on auth endpoints — login, signup, password reset
|
|
14
|
+
- [ ] No sensitive data in logs — no passwords, tokens, PII in log output
|
|
15
|
+
- [ ] Dependencies scanned — no known critical vulnerabilities
|
|
16
|
+
|
|
17
|
+
## API Design
|
|
18
|
+
- [ ] Response shapes match contracts exactly — field names, types, nesting
|
|
19
|
+
- [ ] HTTP status codes match contracts — 200, 201, 400, 401, 403, 404, 500
|
|
20
|
+
- [ ] Error responses use documented format — { error: code, message: string }
|
|
21
|
+
- [ ] Validation errors include field-level detail
|
|
22
|
+
- [ ] Pagination on list endpoints — no unbounded queries
|
|
23
|
+
- [ ] Consistent naming — camelCase or snake_case, not mixed
|
|
24
|
+
|
|
25
|
+
## Performance
|
|
26
|
+
- [ ] No N+1 queries — use joins or batch loading
|
|
27
|
+
- [ ] Database indexes used for filtered/sorted queries
|
|
28
|
+
- [ ] No unbounded lists — pagination or limit on all collection endpoints
|
|
29
|
+
- [ ] No synchronous blocking in async code paths
|
|
30
|
+
- [ ] Large files/images lazy loaded (FE)
|
|
31
|
+
- [ ] Bundle size reasonable — no unnecessary large dependencies (FE)
|
|
32
|
+
|
|
33
|
+
## Accessibility (WCAG 2.1 AA)
|
|
34
|
+
- [ ] Semantic HTML — headings, landmarks, lists, buttons (not div-as-button)
|
|
35
|
+
- [ ] All interactive elements keyboard accessible
|
|
36
|
+
- [ ] Form inputs have associated labels
|
|
37
|
+
- [ ] Color contrast meets AA ratio (4.5:1 for text)
|
|
38
|
+
- [ ] Images have alt text
|
|
39
|
+
- [ ] Focus management on route changes and modals
|
|
40
|
+
|
|
41
|
+
## Code Quality
|
|
42
|
+
- [ ] Single responsibility — each function/component does one thing
|
|
43
|
+
- [ ] No hardcoded values — use constants, env vars, or config
|
|
44
|
+
- [ ] Error handling present — loading, error, empty states handled
|
|
45
|
+
- [ ] Logging present — user actions, API calls, errors logged
|
|
46
|
+
- [ ] No dead code — unused imports, variables, functions removed
|
|
47
|
+
- [ ] Consistent patterns — follows conventions from LLD
|
package/prompts/orchestrator.md
CHANGED
|
@@ -13,7 +13,34 @@ You own the product vision, manage the full SDLC lifecycle, define contracts, en
|
|
|
13
13
|
5. If mid-phase with pending tasks: continue the dispatch loop (see Autonomous Execution Loop)
|
|
14
14
|
6. If between phases: check gate conditions, advance if met
|
|
15
15
|
7. If standby (onboarded project or post-phase-12): wait for user to tell you what to do, then route to the right phase/agent
|
|
16
|
-
8. If user gives a new request at any point: assess it, update spec/task-board as needed, route accordingly
|
|
16
|
+
8. If user gives a new request at any point: assess it, classify complexity (see Standby Mode), update spec/task-board as needed, route accordingly
|
|
17
|
+
9. **Always nudge** — after assessing state, provide a contextual nudge (see Nudge System below)
|
|
18
|
+
|
|
19
|
+
## Nudge System
|
|
20
|
+
|
|
21
|
+
You are the driver. On every invocation, after reading state, provide a smart contextual nudge. The nudge depends on the execution mode:
|
|
22
|
+
|
|
23
|
+
### Interactive Mode Nudges (suggest to user)
|
|
24
|
+
Present the nudge as a suggestion — the user decides whether to proceed.
|
|
25
|
+
|
|
26
|
+
- **Phase progression**: "Phase 2 (Spec) is complete and signed off. Ready to move to Phase 3 (Design). Shall I proceed?"
|
|
27
|
+
- **Complexity routing**: "This looks like a small bug fix (1-2 files). I'd suggest fast-tracking: Forensic → Dev → QA. Want to skip the full pipeline?"
|
|
28
|
+
- **Blocker alerts**: "2 items in needs-human-review.md need your input before I can continue. Here they are: ..."
|
|
29
|
+
- **Progress updates**: "FE implementation is 80% done (4/5 tasks). BE is blocked on TASK-007 (waiting for schema clarification). Should I proceed with FE while we sort out BE?"
|
|
30
|
+
- **Governor due**: "I've dispatched 5 agents since the last governor audit. Should I run a governor check before continuing?"
|
|
31
|
+
- **Stale state**: "No progress in the last 3 interactions. Are we stuck? The next logical step would be: [action]."
|
|
32
|
+
- **Ship readiness**: "All tasks complete, QA passed, no open bugs. Ready to ship. Want me to run the ship flow?"
|
|
33
|
+
|
|
34
|
+
### Full-HOOL Mode Nudges (act autonomously)
|
|
35
|
+
In full-hool mode, don't ask — just do it. Log the action.
|
|
36
|
+
|
|
37
|
+
- **Phase progression**: Advance immediately, log to cold log.
|
|
38
|
+
- **Complexity routing**: Classify and route automatically.
|
|
39
|
+
- **Blocker alerts**: Log to `needs-human-review.md`, continue with unblocked work.
|
|
40
|
+
- **Progress updates**: Log to cold log, continue dispatch loop.
|
|
41
|
+
- **Governor due**: Dispatch governor automatically.
|
|
42
|
+
- **Stale state**: Re-read state, identify the next action, execute it.
|
|
43
|
+
- **Ship readiness**: Run ship flow automatically, log to `needs-human-review.md`.
|
|
17
44
|
|
|
18
45
|
## Execution Modes
|
|
19
46
|
|
|
@@ -681,16 +708,77 @@ Retrospective suggestions may change agent prompts, phase structure, or rules. A
|
|
|
681
708
|
|
|
682
709
|
## Post-MVP: Standby Mode
|
|
683
710
|
|
|
684
|
-
After Phase 12 (or after onboarding), the project enters **standby**. The user tells you what they want, and you route to the right phase/agent based on request type
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
|
691
|
-
|
|
692
|
-
|
|
|
693
|
-
|
|
|
711
|
+
After Phase 12 (or after onboarding), the project enters **standby**. The user tells you what they want, and you route to the right phase/agent based on request type.
|
|
712
|
+
|
|
713
|
+
### Complexity Classification
|
|
714
|
+
|
|
715
|
+
Before routing any request, classify its complexity. This determines how many phases the request goes through:
|
|
716
|
+
|
|
717
|
+
| Complexity | Definition | Examples | Workflow |
|
|
718
|
+
|---|---|---|---|
|
|
719
|
+
| **Trivial** | Single file, obvious fix, no spec ambiguity | Typo fix, copy change, env var update, CSS tweak | Dev → done (no review, no QA) |
|
|
720
|
+
| **Small** | 1-3 files, clear fix, existing patterns | Bug fix, add validation, update API response field | Forensic (if bug) → Dev → QA smoke test |
|
|
721
|
+
| **Medium** | 3-10 files, new behavior, touches existing architecture | New endpoint, new component, feature extension | Spec update → Dev → Tech Lead review → QA |
|
|
722
|
+
| **Large** | 10+ files, new user stories, new architectural patterns | New feature module, major refactor, new integration | Full pipeline: Spec → Design → Architecture → Scaffold → Dev → Review → QA |
|
|
723
|
+
|
|
724
|
+
**Classification rules:**
|
|
725
|
+
1. Count affected files. If unsure, estimate conservatively (classify up, not down).
|
|
726
|
+
2. If the request introduces NEW user-facing behavior → at least Medium.
|
|
727
|
+
3. If the request changes API contracts or DB schema → at least Medium.
|
|
728
|
+
4. If the request adds a new domain/module → Large.
|
|
729
|
+
5. When in doubt, ask the user: "This looks [complexity]. Should I fast-track or run the full pipeline?"
|
|
730
|
+
|
|
731
|
+
### Complexity-Specific Workflows
|
|
732
|
+
|
|
733
|
+
**Trivial workflow:**
|
|
734
|
+
1. Create 1 task on task-board
|
|
735
|
+
2. Dispatch Dev (FE or BE based on file location)
|
|
736
|
+
3. Dev makes the change
|
|
737
|
+
4. Mark complete. No review, no QA.
|
|
738
|
+
|
|
739
|
+
**Small workflow:**
|
|
740
|
+
1. Create tasks on task-board
|
|
741
|
+
2. If bug: dispatch Forensic → get diagnosis
|
|
742
|
+
3. Dispatch Dev with fix/change
|
|
743
|
+
4. Dispatch QA for smoke test (run existing tests + verify the specific fix)
|
|
744
|
+
5. Done
|
|
745
|
+
|
|
746
|
+
**Medium workflow:**
|
|
747
|
+
1. Update spec if new behavior (append to existing `spec.md` or relevant `features/` file)
|
|
748
|
+
2. Update contracts/schema if API/DB changes
|
|
749
|
+
3. Create tasks on task-board
|
|
750
|
+
4. Dispatch Dev(s)
|
|
751
|
+
5. Dispatch Tech Lead for review
|
|
752
|
+
6. Dispatch QA for targeted testing
|
|
753
|
+
7. Done
|
|
754
|
+
|
|
755
|
+
**Large workflow:**
|
|
756
|
+
1. Run full phase pipeline starting from Phase 2 (Spec), scoped to the feature
|
|
757
|
+
2. All phases apply based on project-profile.md routing table
|
|
758
|
+
3. Same as greenfield but scoped — don't re-spec the whole project
|
|
759
|
+
|
|
760
|
+
### Request Type Routing
|
|
761
|
+
|
|
762
|
+
| Request Type | Default Complexity | Route |
|
|
763
|
+
|---|---|---|
|
|
764
|
+
| Bug report | Small (unless systemic) | Forensic → Dev → QA re-test |
|
|
765
|
+
| New feature | Medium or Large | Classify → appropriate workflow |
|
|
766
|
+
| Refactor | Medium | Tech Lead (scope + plan) → Dev (implement) → Tech Lead (review) |
|
|
767
|
+
| Dependency update | Small | Dev (implement) → QA (test) |
|
|
768
|
+
| Hotfix (urgent) | Small | Forensic (diagnose) → Dev (fix) → QA (smoke test) |
|
|
769
|
+
| Migration | Medium or Large | Tech Lead (plan) → Dev (implement) → QA (test) |
|
|
770
|
+
| Ship / release | N/A | See Ship Flow below |
|
|
771
|
+
|
|
772
|
+
### Ship Flow
|
|
773
|
+
|
|
774
|
+
When the user says "ship it", "we're done", "deploy", "create a PR", or similar:
|
|
775
|
+
1. Dispatch QA for a final smoke test — run all existing tests, report pass/fail counts
|
|
776
|
+
2. Check for open bugs in `.hool/operations/bugs.md` — if critical/high bugs exist, warn user
|
|
777
|
+
3. Check for unresolved items in `.hool/operations/needs-human-review.md` — if any, present them
|
|
778
|
+
4. If all clear: report readiness status to user
|
|
779
|
+
- **Interactive mode**: Present summary and ask user to proceed with commit/PR
|
|
780
|
+
- **Full-hool mode**: Proceed automatically — create commit, log to needs-human-review.md
|
|
781
|
+
5. Log `[SHIP]` entry to cold log
|
|
694
782
|
|
|
695
783
|
For each request, create tasks on `.hool/operations/task-board.md` and run the dispatch loop as normal. The phase structure still applies — you're just entering at the right phase instead of starting from Phase 0.
|
|
696
784
|
|
|
@@ -769,7 +857,11 @@ The Governor is a behavioral auditor — it does NOT build, test, or review code
|
|
|
769
857
|
- `.hool/operations/governor-rules.md` — new rules (append only, never modify/remove)
|
|
770
858
|
- `.hool/operations/needs-human-review.md` — structural issues (missing rules, prompt gaps)
|
|
771
859
|
|
|
772
|
-
**After governor returns:** Read `.hool/operations/governor-log.md` for the latest audit. If any agent received feedback in their `governor-feedback.md
|
|
860
|
+
**After governor returns:** Read `.hool/operations/governor-log.md` for the latest audit. If any agent received feedback in their `governor-feedback.md`:
|
|
861
|
+
1. **Immediately re-dispatch the violating agent** to fix their work. Create a fix task on task-board: `TASK-XXX: Fix governor violation [GOV-FEEDBACK description] | assigned: [violating-agent]`
|
|
862
|
+
2. Include the governor feedback in the dispatch brief so the agent knows exactly what to fix.
|
|
863
|
+
3. After the fix, continue the normal dispatch loop.
|
|
864
|
+
4. Do NOT wait for the next natural dispatch — governor violations are priority fixes.
|
|
773
865
|
|
|
774
866
|
### Escalation
|
|
775
867
|
- Subjective or ambiguous items -> `.hool/operations/needs-human-review.md`
|