orchestrix-yuri 1.0.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.
@@ -0,0 +1,172 @@
1
+ # Phase 4: Test Project
2
+
3
+ **Command**: `*test`
4
+ **Purpose**: Run smoke tests on each epic via the QA agent, fix failures through the Dev agent, and verify all epics pass.
5
+
6
+ ---
7
+
8
+ ## Prerequisites
9
+
10
+ - Phase 3 (Develop) must be complete
11
+ - Dev tmux session must be running (or will be recreated)
12
+ - `.yuri/memory.yaml` must exist with `phase3_develop: complete`
13
+
14
+ ---
15
+
16
+ ## Step 0: Load Memory and Collect Epic List
17
+
18
+ 1. Read `.yuri/memory.yaml` — restore project context
19
+ 2. Verify `lifecycle.phase_status.phase3_develop == complete`
20
+ - If not → "Phase 3 not complete. Run `*develop` first."
21
+ 3. Set `PROJECT_DIR` from `project.project_root`
22
+ 4. Collect epic list from sharded PRD files:
23
+ ```bash
24
+ ls "$PROJECT_DIR/docs/prd/epic-"*.yaml 2>/dev/null | sed 's/.*epic-//' | sed 's/\.yaml//'
25
+ ```
26
+ 5. If `phase4_test == in_progress` → resume from last untested epic
27
+ 6. If `phase4_test == complete` → offer skip to Phase 5
28
+
29
+ Update memory:
30
+ - `lifecycle.current_phase` → 4
31
+ - `lifecycle.phase_status.phase4_test` → "in_progress"
32
+ - Save immediately
33
+
34
+ Ensure dev session is alive:
35
+ ```bash
36
+ SCRIPT_DIR="${CLAUDE_SKILL_DIR}/scripts"
37
+ SESSION=$(bash "$SCRIPT_DIR/ensure-session.sh" dev "$PROJECT_DIR")
38
+ ```
39
+
40
+ ---
41
+
42
+ ## Step 1: Reload QA Agent
43
+
44
+ Reload the QA agent in a clean state:
45
+
46
+ ```bash
47
+ tmux send-keys -t "$SESSION:3" "/clear" Enter
48
+ sleep 2
49
+ tmux send-keys -t "$SESSION:3" "/o qa" Enter
50
+ sleep 12
51
+ ```
52
+
53
+ Report to user:
54
+ ```
55
+ 🧪 QA agent reloaded. Starting smoke tests...
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Step 2: Smoke Test Each Epic
61
+
62
+ FOR EACH `epic_id` in the epic list:
63
+
64
+ ### 2.1 Send Smoke Test Command
65
+
66
+ ```bash
67
+ tmux send-keys -t "$SESSION:3" "*smoke-test $EPIC_ID" Enter
68
+ ```
69
+
70
+ ### 2.2 Monitor QA Completion
71
+
72
+ ```bash
73
+ SCRIPT_DIR="${CLAUDE_SKILL_DIR}/scripts"
74
+ RESULT=$(bash "$SCRIPT_DIR/monitor-agent.sh" "$SESSION" 3 "" 30 30)
75
+ ```
76
+
77
+ Use the same detection strategy (completion message → idle → stability).
78
+
79
+ ### 2.3 Parse Results
80
+
81
+ Check for smoke test evidence in `docs/qa/evidence/`.
82
+
83
+ ### 2.4 IF FAIL
84
+
85
+ Extract bug descriptions from QA output.
86
+
87
+ FOR EACH bug:
88
+
89
+ 1. Reload Dev agent:
90
+ ```bash
91
+ tmux send-keys -t "$SESSION:2" "/clear" Enter
92
+ sleep 2
93
+ tmux send-keys -t "$SESSION:2" "/o dev" Enter
94
+ sleep 12
95
+ ```
96
+
97
+ 2. Send quick-fix:
98
+ ```bash
99
+ tmux send-keys -t "$SESSION:2" "*quick-fix \"$BUG_DESCRIPTION\"" Enter
100
+ ```
101
+
102
+ 3. Monitor Dev completion:
103
+ ```bash
104
+ RESULT=$(bash "$SCRIPT_DIR/monitor-agent.sh" "$SESSION" 2 "" 30 30)
105
+ ```
106
+
107
+ After all bugs fixed, run regression test:
108
+
109
+ 1. Reload QA:
110
+ ```bash
111
+ tmux send-keys -t "$SESSION:3" "/clear" Enter
112
+ sleep 2
113
+ tmux send-keys -t "$SESSION:3" "/o qa" Enter
114
+ sleep 12
115
+ ```
116
+
117
+ 2. Re-run smoke test:
118
+ ```bash
119
+ tmux send-keys -t "$SESSION:3" "*smoke-test $EPIC_ID" Enter
120
+ ```
121
+
122
+ 3. Monitor and check results again
123
+ 4. Increment `regression_rounds`
124
+
125
+ IF `regression_rounds > 3`:
126
+ - Escalate to user with full diagnostics
127
+ - Include QA evidence and Dev fix attempts
128
+ - Wait for user guidance
129
+
130
+ ### 2.5 IF PASS
131
+
132
+ Mark epic as passed in memory:
133
+ ```yaml
134
+ testing.epics[n].status: passed
135
+ testing.epics[n].rounds: {round_count}
136
+ ```
137
+
138
+ Report:
139
+ ```
140
+ ✅ Epic {epic_id} passed smoke test ({rounds} round(s))
141
+ ```
142
+
143
+ Proceed to next epic.
144
+
145
+ ---
146
+
147
+ ## Step 3: All Epics Pass
148
+
149
+ 1. Save checkpoint:
150
+ - `lifecycle.phase_status.phase4_test` → "complete"
151
+ - `lifecycle.current_step` → "phase4.complete"
152
+ - Write checkpoint → `.yuri/checkpoints/checkpoint-phase4.yaml`
153
+
154
+ 2. Report:
155
+ ```
156
+ ## ✅ Testing Phase Complete
157
+
158
+ All epics passed smoke testing:
159
+
160
+ | Epic | Status | Rounds |
161
+ |------|--------|--------|
162
+ | {id} | ✅ Pass | {n} |
163
+ | ... | ... | ... |
164
+ ```
165
+
166
+ 3. Present deployment options:
167
+ ```
168
+ 🚀 Ready to deploy! Run `/yuri *deploy` to see deployment options.
169
+ ```
170
+
171
+ - If user confirms → execute `tasks/yuri-deploy-project.md`
172
+ - If user declines → save state, end with reminder
@@ -0,0 +1,77 @@
1
+ # Yuri Project Memory — auto-generated, do not edit manually
2
+ # Tracks the full lifecycle state of a Yuri-managed project.
3
+
4
+ project:
5
+ name: ""
6
+ dir_name: ""
7
+ project_root: ""
8
+ license_key: ""
9
+ description: ""
10
+ created_at: ""
11
+ tech_stack: ""
12
+
13
+ lifecycle:
14
+ current_phase: 0
15
+ current_step: ""
16
+ started_at: ""
17
+ phase_status:
18
+ phase1_create: pending
19
+ phase2_plan: pending
20
+ phase3_develop: pending
21
+ phase4_test: pending
22
+ phase5_deploy: pending
23
+
24
+ tmux:
25
+ planning_session: ""
26
+ dev_session: ""
27
+
28
+ planning:
29
+ steps:
30
+ - id: analyst
31
+ status: pending
32
+ output: ""
33
+ completed_at: ""
34
+ - id: pm
35
+ status: pending
36
+ output: ""
37
+ completed_at: ""
38
+ - id: ux-expert
39
+ status: pending
40
+ output: ""
41
+ completed_at: ""
42
+ - id: architect
43
+ status: pending
44
+ output: ""
45
+ completed_at: ""
46
+ - id: po-validate
47
+ status: pending
48
+ output: ""
49
+ completed_at: ""
50
+ - id: po-shard
51
+ status: pending
52
+ output: ""
53
+ completed_at: ""
54
+
55
+ development:
56
+ total_epics: 0
57
+ total_stories: 0
58
+ stories_done: 0
59
+ stories_in_progress: []
60
+ last_progress_at: ""
61
+ stuck_count: 0
62
+
63
+ testing:
64
+ epics: []
65
+
66
+ deployment:
67
+ strategy: ""
68
+ url: ""
69
+ status: ""
70
+
71
+ changes:
72
+ history: []
73
+
74
+ errors:
75
+ last_error: ""
76
+ total_errors: 0
77
+ recovery_log: []