chore: initial monorepo scaffold + WDS Phase 1+2 artifacts
- Nx 22.7 monorepo (pnpm 11.1, TypeScript 5.9, Node 24) - apps/api: NestJS 11 (CJS conforme CODING-RULES.md PGD-DB-004) - apps/web: React 19 + Vite 8 (ESM) - libs/shared/api-interface: Zod contract base - Docker Compose dev: Postgres 18, Valkey 8, MinIO, Mailpit - WDS artifacts: - design-artifacts/A-Product-Brief/ (5 docs canônicos + 16 dialogs) - design-artifacts/B-Trigger-Map/ (hub + 4 personas + feature impact) - Stack canon: STACK.md v2.2 + CODING-RULES.md v2.0 + brand.md - AGENTS.md + README.md como entrada para devs/agentes Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,119 @@
|
||||
---
|
||||
name: 'step-03a-execute-review'
|
||||
description: 'Autonomous execution loop - automate and code review'
|
||||
nextStep: './step-03b-execute-finish.md'
|
||||
scriptsDir: '../scripts/story-automator'
|
||||
outputFile: '{output_folder}/story-automator/orchestration-{epic_id}-{timestamp}.md'
|
||||
retryStrategy: '../data/retry-fallback-strategy.md'
|
||||
reviewLoop: '../data/code-review-loop.md'
|
||||
---
|
||||
|
||||
# Step 3a: Execute Review Phase
|
||||
|
||||
**Goal:** Run automate (guardrails) and code review loop for the current story.
|
||||
**Interaction mode:** Deterministic autonomous execution.
|
||||
|
||||
---
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Step 3 completed (create-story and dev-story done)
|
||||
- State document updated with current story progress
|
||||
|
||||
Set: `scripts="{scriptsDir}"`
|
||||
|
||||
---
|
||||
|
||||
## Story Loop (Continue from Step 3)
|
||||
|
||||
### C. Automate (Guardrails)
|
||||
*Skip if `overrides.skipAutomate`*
|
||||
|
||||
**Apply retry/fallback pattern from `{retryStrategy}`:** Non-blocking, but still retry on failure.
|
||||
|
||||
```bash
|
||||
# --command required (see Spawn Pattern in step-03)
|
||||
session=$("$scripts" tmux-wrapper spawn auto {epic} {story_id} \
|
||||
--agent "$current_agent" \
|
||||
--command "$("$scripts" tmux-wrapper build-cmd auto {story_id} --agent "$current_agent" --state-file "$state_file")")
|
||||
result=$("$scripts" monitor-session "$session" --json --agent "$current_agent")
|
||||
"$scripts" tmux-wrapper kill "$session"
|
||||
```
|
||||
|
||||
- SUCCESS:
|
||||
```bash
|
||||
# Update Story Progress: mark automate done
|
||||
tmp_state=$(mktemp)
|
||||
sed "s/^| ${story_id} |.*$/| ${story_id} | done | done | done | - | - | in-progress |/" "{outputFile}" > "$tmp_state" && mv "$tmp_state" "{outputFile}"
|
||||
```
|
||||
Display: `[story {N}/{total}] automate -> done`
|
||||
→ proceed to D
|
||||
- FAILURE → retry up to 3 attempts (non-blocking, so fewer retries), then log warning:
|
||||
```bash
|
||||
# Update Story Progress: mark automate skipped
|
||||
tmp_state=$(mktemp)
|
||||
sed "s/^| ${story_id} |.*$/| ${story_id} | done | done | skip | - | - | in-progress |/" "{outputFile}" > "$tmp_state" && mv "$tmp_state" "{outputFile}"
|
||||
```
|
||||
Display: `[story {N}/{total}] automate -> skip (non-blocking)`
|
||||
→ proceed to D
|
||||
|
||||
### D. Code Review Loop
|
||||
|
||||
**See `{reviewLoop}` for complete script-based review cycle with v2.3 per-task agent configuration.**
|
||||
|
||||
**MANDATORY log-summary contract (every review cycle):**
|
||||
- Run a single grep/regex pass over review output first.
|
||||
- Return only compact fields to parent flow: `next_action`, `confidence`, `error_class`, `issues_count`, `top_issues`.
|
||||
- Do not carry full log payloads forward unless escalation requires raw evidence.
|
||||
|
||||
```bash
|
||||
review_log=$(echo "$result" | jq -r '.output_file')
|
||||
review_focus=$(grep -nE "SUCCESS|FAIL|ERROR|CRITICAL|WARN|RETRY|ESCALATE|ISSUE" "$review_log" | head -n 120)
|
||||
if [ -z "$review_focus" ]; then
|
||||
review_focus=$(tail -n 120 "$review_log")
|
||||
fi
|
||||
|
||||
# Compact subprocess-style summary contract for parent flow
|
||||
review_summary=$("$scripts" orchestrator-helper parse-output "$review_log" review --state-file "$state_file" | jq -c '
|
||||
{
|
||||
next_action: (.next_action // "retry"),
|
||||
confidence: (.confidence // 0),
|
||||
error_class: (.error_class // "unknown"),
|
||||
issues_count: ((.issues // []) | length),
|
||||
top_issues: ((.issues // [])[:3])
|
||||
}
|
||||
')
|
||||
```
|
||||
|
||||
Key points:
|
||||
- Up to 5 cycles using `story-automator tmux-wrapper spawn review` + `story-automator monitor-session`
|
||||
- **Agent:** Uses per-task config from state document (`resolve_agent_for_task "review"`)
|
||||
- **Verification:** Uses `--workflow review --story-key` for sprint-status verification
|
||||
- **States:** `completed` (verified):
|
||||
```bash
|
||||
# Update Story Progress: mark code-review done
|
||||
tmp_state=$(mktemp)
|
||||
sed "s/^| ${story_id} |.*$/| ${story_id} | done | done | done | done | - | in-progress |/" "{outputFile}" > "$tmp_state" && mv "$tmp_state" "{outputFile}"
|
||||
```
|
||||
Display: `[story {N}/{total}] review -> done`
|
||||
→ E | `incomplete` → count as failed attempt, retry until maxCycles, then CRITICAL escalate (Trigger #8)
|
||||
- Exit loop when sprint-status shows "done"
|
||||
- If `review_summary.next_action` is ambiguous, ask one clarifying question before escalating.
|
||||
|
||||
---
|
||||
|
||||
## Auto-Proceed to Finalization
|
||||
|
||||
Display: "**Code review complete. Proceeding to finalize commits and status checks...**"
|
||||
|
||||
```bash
|
||||
"$scripts" orchestrator-helper state-update "{outputFile}" \
|
||||
--set currentStep=step-03b-execute-finish \
|
||||
--set lastUpdated="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
|
||||
echo "- **[$(date -u +%Y-%m-%dT%H:%M:%SZ)]** Code review complete, proceeding to finalization" >> "{outputFile}"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Then
|
||||
→ Immediately load and execute `{nextStep}`
|
||||
Reference in New Issue
Block a user