- 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>
3.7 KiB
name, description, learningsFile, templates, stateFilePattern, outputFile, stateHelper, stateMetrics, reportRetentionPolicy
| name | description | learningsFile | templates | stateFilePattern | outputFile | stateHelper | stateMetrics | reportRetentionPolicy |
|---|---|---|---|---|---|---|---|---|
| step-04-wrapup | Finalize: summary, learnings, recommendations (terminal step) | {output_folder}/story-automator/learnings.md | ../data/wrapup-templates.md | {output_folder}/story-automator/orchestration-*.md | {output_folder}/story-automator/orchestration-{epic_id}-{timestamp}.md | ../scripts/story-automator | ../scripts/story-automator | ../data/report-retention-policy.md |
Step 4: Wrap-up
Goal: Generate summary, capture learnings, finalize state. Interaction mode: Structured wrap-up with recommendation output.
Do
1. Load Final State
From state document (located via {stateFilePattern}; resolved path stored as {outputFile} for this run), extract:
- Story progress table
- Action log
- Session references
Calculate:
- Stories completed vs total
- Code review cycles
- Escalations encountered
Use the existing state document path from execution, and derive story_range_csv from frontmatter storyRange.
Deterministic metrics:
metrics=$("{stateMetrics}" state-metrics --state "{state_document_path}")
Parallel optimization (metrics + retention policy extraction):
tmp_metrics=$(mktemp)
tmp_retention=$(mktemp)
("{stateMetrics}" state-metrics --state "{state_document_path}" > "$tmp_metrics") &
metrics_pid=$!
(awk '/^```bash/{flag=1;next}/^```/{flag=0}flag{print}' "{reportRetentionPolicy}" > "$tmp_retention") &
retention_pid=$!
wait "$metrics_pid"
wait "$retention_pid"
metrics=$(cat "$tmp_metrics")
retention_cmds=$(cat "$tmp_retention")
rm -f "$tmp_metrics" "$tmp_retention"
Optimization (data ops): If action log exceeds 200 lines, use compact summary by default.
log_block=$(awk '/^## Action Log/{flag=1;next}/^## /{if(flag){exit}}flag{print}' "{state_document_path}")
log_lines=$(printf "%s\n" "$log_block" | wc -l | tr -d ' ')
if [ "$log_lines" -gt 200 ]; then
log_focus=$(printf "%s\n" "$log_block" | tail -n 50)
else
log_focus="$log_block"
fi
2. Generate Summary
From {templates}, use Summary Report Template.
Fill in all stats and display to user.
3. Capture Learnings
Analyze run for patterns:
- Common code review issues
- Steps needing escalation
- Timing patterns
- What worked well
IF {learningsFile} exists: Load and merge
ELSE: Create new
Append entry using Learnings Entry Template from {templates}.
4. Recommendations
From {templates}, use Recommendations Template.
Present actionable suggestions based on patterns observed.
4b. Validation Report Housekeeping
Load {reportRetentionPolicy} and apply its retention guidance when needed.
If validation report history is large, run the suggested maintenance command from that policy file.
5. Finalize State
Update state document:
status = 'COMPLETE'completedAt = {timestamp}- Append final summary to action log
Display: "State document finalized."
6. Remove Marker File
Remove the active runtime marker:
"{stateHelper}" orchestrator-helper marker remove
This allows the Stop hook to stop normally after workflow completion by clearing the marker from the active runtime layout.
7. Workflow Complete
Display:
**🎉 Story Automator workflow complete!**
All stories have been processed through the build cycle.
Retrospectives were triggered automatically when each epic completed (during execution loop).
State document: {outputFile}
Learnings: {learningsFile}
Persist final state to {outputFile}.
End
Workflow terminates here. Retrospectives are now handled within the execution loop (step-03b) when each epic completes, not as a separate terminal step.