@surlymochan/evalid 0.0.0-stage → 0.4.1

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.
Files changed (192) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/LICENSE +21 -0
  3. package/README.md +315 -2
  4. package/RELEASE_NOTES.md +124 -0
  5. package/atoms/registry.json +758 -0
  6. package/bin/xflow.js +7261 -0
  7. package/docs/adoption/README.md +128 -0
  8. package/docs/adoption/openflow-release-hardening.md +61 -0
  9. package/docs/benchmark-openflow-vs-gstack-superpowers-openspec-2026-05-25.md +81 -0
  10. package/docs/compatibility.md +52 -0
  11. package/docs/competitive-benchmark.md +108 -0
  12. package/docs/corps-operator-guide.md +75 -0
  13. package/docs/demo-proof.md +126 -0
  14. package/docs/examples-gallery.md +115 -0
  15. package/docs/fixtures/tracker-item.json +7 -0
  16. package/docs/goal-vs-codex.md +129 -0
  17. package/docs/gstack-comparison.md +88 -0
  18. package/docs/install-upgrade.md +133 -0
  19. package/docs/integrations.md +49 -0
  20. package/docs/launch-demo.md +123 -0
  21. package/docs/launch-dossier.md +180 -0
  22. package/docs/methodology.md +149 -0
  23. package/docs/npm-publish-handoff.md +96 -0
  24. package/docs/openspec-migration.md +106 -0
  25. package/docs/public-benchmark.md +68 -0
  26. package/docs/public-release.md +145 -0
  27. package/docs/quality-assessment.md +139 -0
  28. package/docs/quickstart.md +156 -0
  29. package/docs/reviewer-guide.md +43 -0
  30. package/docs/spec-kit-benchmark.md +73 -0
  31. package/docs/super-assistant-comparison.md +106 -0
  32. package/docs/superpowers-comparison.md +82 -0
  33. package/docs/team-adoption.md +123 -0
  34. package/docs/tooling-matrix.md +91 -0
  35. package/docs/walkthrough.md +76 -0
  36. package/docs/workflow-manual.md +1130 -0
  37. package/package.json +83 -4
  38. package/prompts/pencil-draft.md +46 -0
  39. package/prompts/pencil-refine.md +46 -0
  40. package/prompts/phase-artifact.md +24 -0
  41. package/prompts/phase-execution.md +32 -0
  42. package/schemas/competitor-reconstruction-contract.schema.json +91 -0
  43. package/schemas/llm-design-review-aggregate.schema.json +83 -0
  44. package/schemas/visual-benchmark.schema.json +978 -0
  45. package/schemas/workflow.schema.json +100 -0
  46. package/scripts/run-tests.mjs +23 -0
  47. package/scripts/takein_digest.py +139 -0
  48. package/specs/README.md +118 -0
  49. package/specs/architecture.md +36 -0
  50. package/specs/product.md +33 -0
  51. package/specs/workflow.md +349 -0
  52. package/src/agent_team/atoms/codex-app-bridge.js +8 -0
  53. package/src/agent_team/atoms/design/competitor-reconstruction-review.js +44 -0
  54. package/src/agent_team/atoms/design/contract-freeze.js +8 -0
  55. package/src/agent_team/atoms/design/generation-contract.js +442 -0
  56. package/src/agent_team/atoms/design/reconstruction-pack.js +246 -0
  57. package/src/agent_team/atoms/design/reference-surface-lock.js +49 -0
  58. package/src/agent_team/atoms/patch-challenge.js +19 -0
  59. package/src/agent_team/atoms/pencil/accept.js +9 -0
  60. package/src/agent_team/atoms/pencil/draft.js +365 -0
  61. package/src/agent_team/atoms/pencil/refine.js +229 -0
  62. package/src/agent_team/atoms/phase-run-dispatch.js +8 -0
  63. package/src/agent_team/atoms/team-run.js +380 -0
  64. package/src/agent_team/atoms/visual/aesthetic-review.js +231 -0
  65. package/src/agent_team/atoms/visual/benchmark-repair-plan.js +291 -0
  66. package/src/agent_team/atoms/visual/benchmark.js +1652 -0
  67. package/src/agent_team/atoms/visual/design-selection.js +23 -0
  68. package/src/agent_team/atoms/visual/direction-synthesis.js +124 -0
  69. package/src/agent_team/atoms/visual/dom-rect-export.js +129 -0
  70. package/src/agent_team/atoms/visual/image-diff.js +186 -0
  71. package/src/agent_team/atoms/visual/layout-competition.js +8 -0
  72. package/src/agent_team/atoms/visual/page-evidence-capture.js +806 -0
  73. package/src/agent_team/atoms/visual/playwright-runtime.js +8 -0
  74. package/src/agent_team/atoms/visual/review-aggregate.js +87 -0
  75. package/src/agent_team/atoms/visual/review.js +77 -0
  76. package/src/agent_team/atoms/visual/visual-report.js +197 -0
  77. package/src/agent_team/atoms/visual/visual-token-export.js +417 -0
  78. package/src/agent_team/common.js +311 -0
  79. package/src/core/atoms/agent-invoke.js +684 -0
  80. package/src/core/atoms/event/ingest.js +30 -0
  81. package/src/core/atoms/experience/digest.js +55 -0
  82. package/src/core/atoms/gate/artifact-verify.js +83 -0
  83. package/src/core/atoms/gate/competitor-contract-validate.js +119 -0
  84. package/src/core/atoms/gate/evidence-collect.js +64 -0
  85. package/src/core/atoms/gate/payload-from-phase-run.js +78 -0
  86. package/src/core/atoms/gate/visual-benchmark-validate.js +183 -0
  87. package/src/core/atoms/gate/workbench.js +79 -0
  88. package/src/core/atoms/intake/classify.js +15 -0
  89. package/src/core/atoms/intake/design-skill-select.js +16 -0
  90. package/src/core/atoms/intake/preview-or-refine.js +19 -0
  91. package/src/core/atoms/intake/recommend.js +20 -0
  92. package/src/core/atoms/intake/research-same-category.js +19 -0
  93. package/src/core/atoms/intervention/create.js +30 -0
  94. package/src/core/atoms/memory/manage.js +27 -0
  95. package/src/core/atoms/memory/mount.js +13 -0
  96. package/src/core/atoms/mission/create.js +19 -0
  97. package/src/core/atoms/mission/list.js +14 -0
  98. package/src/core/atoms/mission/show.js +26 -0
  99. package/src/core/atoms/notify/checkpoint.js +46 -0
  100. package/src/core/atoms/phase-run/complete.js +42 -0
  101. package/src/core/atoms/phase-run/fail.js +40 -0
  102. package/src/core/atoms/phase-run/persist.js +39 -0
  103. package/src/core/atoms/phase-run/start.js +30 -0
  104. package/src/core/atoms/plugin/run.js +76 -0
  105. package/src/core/atoms/policy/gate.js +90 -0
  106. package/src/core/atoms/policy/resolve.js +11 -0
  107. package/src/core/atoms/storage/sync.js +57 -0
  108. package/src/core/atoms/workflow/advance.js +25 -0
  109. package/src/core/atoms/workflow/guard.js +127 -0
  110. package/src/core/atoms/workflow/state-load.js +37 -0
  111. package/src/core/bindings.js +37 -0
  112. package/src/core/change-artifacts.js +134 -0
  113. package/src/core/competitive-score.js +265 -0
  114. package/src/core/concurrency-policy.js +35 -0
  115. package/src/core/execution-log.js +108 -0
  116. package/src/core/intake-recommendation.js +134 -0
  117. package/src/core/memory-state.js +62 -0
  118. package/src/core/mission-state.js +780 -0
  119. package/src/core/pending-gates.js +66 -0
  120. package/src/core/phase-cost.js +116 -0
  121. package/src/core/phase-run-read.js +27 -0
  122. package/src/core/policy-overlay.js +180 -0
  123. package/src/core/state-store.js +201 -0
  124. package/src/core/workflow-executor.js +1014 -0
  125. package/src/core/workflow-integrity.js +111 -0
  126. package/src/core/workflow-loader.js +163 -0
  127. package/src/core/workflow-rerun.js +84 -0
  128. package/src/core/workflow-state.js +119 -0
  129. package/src/server.js +1307 -0
  130. package/workflows/corps.yaml +481 -0
  131. package/workflows/yolo.yaml +241 -0
  132. package/xflow/README.md +76 -0
  133. package/xflow/aha/SKILL.md +82 -0
  134. package/xflow/aha/scripts/append_aha.py +50 -0
  135. package/xflow/archive/scripts/archive_change.py +338 -0
  136. package/xflow/archive/templates/merge-design.md +54 -0
  137. package/xflow/archive/templates/merge-workflow.md +26 -0
  138. package/xflow/atoms/__init__.py +6 -0
  139. package/xflow/atoms/a1_issue_create_or_patch.py +70 -0
  140. package/xflow/atoms/a2_branch_create_and_link.py +42 -0
  141. package/xflow/atoms/a3_repo_doctor.py +11 -0
  142. package/xflow/atoms/a4_project_set_status.py +11 -0
  143. package/xflow/atoms/a5_archive_commit_push_close.py +11 -0
  144. package/xflow/atoms/a6_pr_create.py +72 -0
  145. package/xflow/atoms/b1_change_scaffold.py +11 -0
  146. package/xflow/atoms/b2_status_read.py +16 -0
  147. package/xflow/atoms/b2b_status_write.py +20 -0
  148. package/xflow/atoms/b3_status_transition.py +27 -0
  149. package/xflow/atoms/b4_handoff_scaffold_or_refresh.py +11 -0
  150. package/xflow/atoms/b5_aha_append.py +11 -0
  151. package/xflow/atoms/b6_takein_digest.py +11 -0
  152. package/xflow/atoms/b6b_lookback_digest.py +11 -0
  153. package/xflow/atoms/b7_change_mission_bind.py +43 -0
  154. package/xflow/atoms/c1_mem.py +54 -0
  155. package/xflow/atoms/e6_gate_local_precheck.py +23 -0
  156. package/xflow/atoms/h1_design_lite_gate.py +74 -0
  157. package/xflow/atoms/i6a_tdd_run.py +107 -0
  158. package/xflow/atoms/i6b_tdd_proof_validate.py +184 -0
  159. package/xflow/atoms/i6c_tdd_quality_review.py +372 -0
  160. package/xflow/atoms/j1_tests_run.py +129 -0
  161. package/xflow/atoms/j4a_spec_consistency_structural.py +105 -0
  162. package/xflow/atoms/j4b_spec_delta_review.py +316 -0
  163. package/xflow/atoms/j4c_openspec_migration_map.py +121 -0
  164. package/xflow/atoms/j4d_spec_clarify_gate.py +373 -0
  165. package/xflow/atoms/j6_cr_review.py +443 -0
  166. package/xflow/atoms/k1_artifacts_complete_check.py +39 -0
  167. package/xflow/atoms/k2_merge_snippets_apply.py +11 -0
  168. package/xflow/atoms/k3_handoff_refresh.py +14 -0
  169. package/xflow/atoms/k4_mem_lesson_persist.py +65 -0
  170. package/xflow/atoms/k5_archive_publish.py +21 -0
  171. package/xflow/atoms/k6_aha_merge.py +42 -0
  172. package/xflow/atoms/tdd_lib.py +956 -0
  173. package/xflow/corps/SKILL.md +109 -0
  174. package/xflow/exec/scripts/set_issue_in_progress.py +159 -0
  175. package/xflow/goal/SKILL.md +150 -0
  176. package/xflow/handoff/SKILL.md +95 -0
  177. package/xflow/handoff/scripts/scaffold_handoff.py +304 -0
  178. package/xflow/lookback/SKILL.md +66 -0
  179. package/xflow/lookback/scripts/lookback_digest.py +46 -0
  180. package/xflow/openissue/scripts/open_issue_flow.py +438 -0
  181. package/xflow/plan/SKILL.md +47 -0
  182. package/xflow/ralph/SKILL.md +123 -0
  183. package/xflow/scripts/check_installed_xflow_skill_sync.sh +44 -0
  184. package/xflow/scripts/common.py +483 -0
  185. package/xflow/scripts/doctor.py +278 -0
  186. package/xflow/scripts/sync_installed_xflow_skill.sh +134 -0
  187. package/xflow/takein/SKILL.md +81 -0
  188. package/xflow/takein/scripts/takein_digest.py +88 -0
  189. package/xflow/yolo/SKILL.md +75 -0
  190. package/xflow/yolo/scripts/scaffold_specs_change.py +673 -0
  191. package/xflow/yolo/scripts/yolo_gate.py +312 -0
  192. package/xflow/yolo/templates/DESIGN.md +179 -0
@@ -0,0 +1,481 @@
1
+ name: corps
2
+ version: 1
3
+ description: >
4
+ Heavy multi-agent delivery workflow for complex user-facing products.
5
+ Requires evalid HTTP server, GitHub CLI, and Pencil.
6
+ Full 28-phase pipeline covering research → decomposition → design loop → execution → gate_final → archive.
7
+ track: heavy
8
+ parallel:
9
+ max_agents: 3
10
+ policy: weighted
11
+ requires:
12
+ agentos_bin: true
13
+ agentos_http: true
14
+ gh: true
15
+ pencil: true
16
+
17
+ phases:
18
+ - id: change-init
19
+ label: "01 · Change init"
20
+ catalog_ref: 1
21
+ required: true
22
+ atoms:
23
+ - id: B1.change.scaffold
24
+ with: { change_type: "${input.change_type}", title: "${input.title}" }
25
+ - id: D1.mission.create
26
+ with: { goal: "${input.title}", workspace: "${input.workspace}" }
27
+ - id: B7.change_mission.bind
28
+ with: { direction: "change_to_mission" }
29
+ - id: B2b.status.write
30
+ with:
31
+ fields:
32
+ current_stage: "change-init"
33
+ status: "draft"
34
+ archival_status: "not_ready"
35
+ artifacts:
36
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
37
+ gate:
38
+ type: artifact-verify
39
+ on_fail: stop
40
+
41
+ - id: explore
42
+ label: "02 · Explore"
43
+ catalog_ref: 2
44
+ required: true
45
+ atoms:
46
+ - id: G3.research.same_category
47
+ - id: G2.intake.classify
48
+ - id: D3a.phase_run.start
49
+ with: { phase: "explore" }
50
+ - id: I1b.team.run.structured
51
+ with: { phase: "explore" }
52
+ - id: D3c.phase_run.complete
53
+ artifacts:
54
+ - { path: "specs/changes/${change_id}/explore.json", optional: false }
55
+ gate:
56
+ type: llm-judge
57
+ on_fail: stop
58
+
59
+ - id: brainstorm
60
+ label: "03 · Brainstorm"
61
+ catalog_ref: 3
62
+ required: true
63
+ atoms:
64
+ - id: D3a.phase_run.start
65
+ with: { phase: "brainstorm" }
66
+ - id: I1b.team.run.structured
67
+ with: { phase: "brainstorm" }
68
+ - id: D3c.phase_run.complete
69
+ artifacts:
70
+ - { path: "specs/changes/${change_id}/brainstorm.json", optional: false }
71
+ gate:
72
+ type: llm-judge
73
+ on_fail: stop
74
+
75
+ - id: risk_review
76
+ label: "04 · Risk review"
77
+ catalog_ref: 4
78
+ required: true
79
+ atoms:
80
+ - id: D3a.phase_run.start
81
+ with: { phase: "risk_review" }
82
+ - id: I1b.team.run.structured
83
+ with: { phase: "risk_review" }
84
+ - id: D3c.phase_run.complete
85
+ artifacts:
86
+ - { path: "specs/changes/${change_id}/risk_review.json", optional: false }
87
+ gate:
88
+ type: llm-judge
89
+ on_fail: stop
90
+
91
+ - id: clarify
92
+ label: "05 · Clarify"
93
+ catalog_ref: 5
94
+ required: true
95
+ atoms:
96
+ - id: D3a.phase_run.start
97
+ with: { phase: "clarify" }
98
+ - id: I1b.team.run.structured
99
+ with: { phase: "clarify" }
100
+ - id: D3c.phase_run.complete
101
+ artifacts:
102
+ - { path: "specs/changes/${change_id}/clarify.json", optional: false }
103
+ gate:
104
+ type: human
105
+ on_fail: stop
106
+
107
+ - id: proposal
108
+ label: "06 · Proposal"
109
+ catalog_ref: 6
110
+ required: true
111
+ atoms:
112
+ - id: D3a.phase_run.start
113
+ with: { phase: "proposal" }
114
+ - id: I1b.team.run.structured
115
+ with: { phase: "proposal" }
116
+ - id: J5.gate.evidence_collect
117
+ - id: E4.gate.payload_from_phase_run
118
+ - id: D3c.phase_run.complete
119
+ - id: B3.status.transition
120
+ with: { to_stage: "proposal-freeze" }
121
+ artifacts:
122
+ - { path: "specs/changes/${change_id}/proposal.md", optional: false }
123
+ - { path: "specs/changes/${change_id}/proposal.json", optional: false }
124
+ gate:
125
+ type: artifact-verify
126
+ on_fail: stop
127
+
128
+ - id: proposal-consistency-check
129
+ label: "07 · Proposal consistency check"
130
+ catalog_ref: 7
131
+ required: true
132
+ atoms:
133
+ - id: J4a.spec_consistency.structural
134
+ - id: J4d.spec_clarify.gate
135
+ artifacts:
136
+ - { path: "specs/changes/${change_id}/spec_clarify.json", optional: true }
137
+ gate:
138
+ type: deterministic
139
+ atom: J4d.spec_clarify.gate
140
+ on_fail: stop
141
+
142
+ - id: design_contract_freeze
143
+ label: "08 · Design contract freeze"
144
+ catalog_ref: 8
145
+ required: true
146
+ atoms:
147
+ - id: G4.design_skill.select
148
+ - id: H2.design.contract_freeze
149
+ artifacts:
150
+ - { path: "specs/changes/${change_id}/design_contract.json", optional: false }
151
+ gate:
152
+ type: artifact-verify
153
+ on_fail: stop
154
+
155
+ - id: competitor_reconstruction_review
156
+ label: "09 · Competitor reconstruction review"
157
+ catalog_ref: 9
158
+ required: true
159
+ atoms:
160
+ - id: H2b.design.competitor_reconstruction_review
161
+ - id: H2d.design.reference_surface_lock
162
+ - id: H2e.design.reconstruction_pack
163
+ - id: H2f.design.generation_contract
164
+ artifacts:
165
+ - { path: "specs/changes/${change_id}/competitor_reconstruction_review.json", optional: false }
166
+ - { path: "specs/changes/${change_id}/reference_surface_lock.json", optional: false }
167
+ - { path: "specs/changes/${change_id}/reconstruction_pack.json", optional: false }
168
+ - { path: "specs/changes/${change_id}/generation_contract.json", optional: false }
169
+ - { path: "specs/changes/${change_id}/design_system_pack.json", optional: false }
170
+ gate:
171
+ type: deterministic
172
+ atom: H2c.design.competitor_contract_validate
173
+ on_fail: stop
174
+
175
+ - id: visual_direction_synthesis
176
+ label: "10 · Visual direction synthesis"
177
+ catalog_ref: 10
178
+ required: true
179
+ atoms:
180
+ - id: H3a.visual.direction_synthesis
181
+ artifacts:
182
+ - { path: "specs/changes/${change_id}/visual_direction_synthesis.json", optional: false }
183
+ - { path: "specs/changes/${change_id}/image_reference_set.json", optional: false }
184
+ gate:
185
+ type: llm-judge
186
+ on_fail: stop
187
+
188
+ - id: layout_competition
189
+ label: "11 · Layout competition"
190
+ catalog_ref: 11
191
+ required: true
192
+ atoms:
193
+ - id: H3b.visual.layout_competition
194
+ artifacts:
195
+ - { path: "specs/changes/${change_id}/layout_competition.json", optional: false }
196
+ gate:
197
+ type: llm-judge
198
+ on_fail: stop
199
+
200
+ - id: design_selection
201
+ label: "12 · Design selection"
202
+ catalog_ref: 12
203
+ required: true
204
+ atoms:
205
+ - id: H3c.visual.design_selection
206
+ artifacts:
207
+ - { path: "specs/changes/${change_id}/design_selection.json", optional: false }
208
+ gate:
209
+ type: human
210
+ on_fail: stop
211
+
212
+ - id: ux_design_brief
213
+ label: "13 · UX design brief"
214
+ catalog_ref: 13
215
+ required: true
216
+ atoms:
217
+ - id: D3a.phase_run.start
218
+ with: { phase: "ux_design_brief" }
219
+ - id: I1b.team.run.structured
220
+ with: { phase: "ux_design_brief" }
221
+ - id: D3c.phase_run.complete
222
+ artifacts:
223
+ - { path: "specs/changes/${change_id}/ux_design_brief.json", optional: false }
224
+ gate:
225
+ type: artifact-verify
226
+ on_fail: stop
227
+
228
+ - id: pencil_draft
229
+ label: "14 · Pencil draft"
230
+ catalog_ref: 14
231
+ required: true
232
+ atoms:
233
+ - id: H4a.pencil.draft
234
+ artifacts:
235
+ - { path: "specs/changes/${change_id}/pencil_output.pen", optional: false }
236
+ gate:
237
+ type: artifact-verify
238
+ on_fail: stop
239
+
240
+ - id: llm_design_review
241
+ label: "15 · LLM design review"
242
+ catalog_ref: 15
243
+ required: true
244
+ atoms:
245
+ - id: H5.visual.review
246
+ parallel_group: visual_review
247
+ parallel_weight: 2
248
+ - id: H6.visual.benchmark
249
+ parallel_group: visual_review
250
+ parallel_weight: 1
251
+ - id: H5b.visual.review.aggregate
252
+ artifacts:
253
+ - { path: "specs/changes/${change_id}/llm_design_review.json", optional: false }
254
+ gate:
255
+ type: deterministic
256
+ atom: H6b.visual.benchmark_validate
257
+ with: { mode: "advisory" }
258
+ on_fail: stop
259
+
260
+ - id: pencil_refine
261
+ label: "16 · Pencil refine"
262
+ catalog_ref: 16
263
+ required: true
264
+ atoms:
265
+ - id: H6c.visual.benchmark_repair_plan
266
+ - id: H4b.pencil.refine
267
+ artifacts:
268
+ - { path: "specs/changes/${change_id}/benchmark_repair_plan.json", optional: false }
269
+ - { path: "specs/changes/${change_id}/pencil_output.pen", optional: false }
270
+ gate:
271
+ type: artifact-verify
272
+ on_fail: stop
273
+
274
+ - id: llm_design_recheck
275
+ label: "17 · LLM design recheck"
276
+ catalog_ref: 17
277
+ required: true
278
+ atoms:
279
+ - id: H5.visual.review
280
+ parallel_group: visual_review
281
+ parallel_weight: 2
282
+ - id: H6.visual.benchmark
283
+ parallel_group: visual_review
284
+ parallel_weight: 1
285
+ - id: H5b.visual.review.aggregate
286
+ - id: H6d.visual.aesthetic_review
287
+ artifacts:
288
+ - { path: "specs/changes/${change_id}/llm_design_review.json", optional: false }
289
+ - { path: "specs/changes/${change_id}/aesthetic_review.json", optional: false }
290
+ gate:
291
+ type: deterministic
292
+ atom: H6b.visual.benchmark_validate
293
+ on_fail: stop
294
+
295
+ - id: design_accept
296
+ label: "18 · Design accept"
297
+ catalog_ref: 18
298
+ required: true
299
+ atoms:
300
+ - id: H4c.pencil.accept
301
+ artifacts:
302
+ - { path: "specs/changes/${change_id}/design_accept.json", optional: false }
303
+ - { path: "specs/changes/${change_id}/pencil_output.attestation.json", optional: false }
304
+ gate:
305
+ type: human
306
+ on_fail: stop
307
+
308
+ - id: plan
309
+ label: "19 · Plan"
310
+ catalog_ref: 19
311
+ required: true
312
+ atoms:
313
+ - id: D3a.phase_run.start
314
+ with: { phase: "plan" }
315
+ - id: I1b.team.run.structured
316
+ with: { phase: "plan" }
317
+ - id: E4.gate.payload_from_phase_run
318
+ - id: D3c.phase_run.complete
319
+ artifacts:
320
+ - { path: "specs/changes/${change_id}/plan.json", optional: false }
321
+ - { path: "specs/changes/${change_id}/plan.md", optional: false }
322
+ gate:
323
+ type: artifact-verify
324
+ on_fail: stop
325
+
326
+ - id: openissue
327
+ label: "20 · Open issue + branch"
328
+ catalog_ref: 20
329
+ required: true
330
+ atoms:
331
+ - id: A1.issue.create_or_patch
332
+ with:
333
+ repo: "${input.target_repo}"
334
+ title: "${input.issue_title}"
335
+ body: "${input.issue_body}"
336
+ change_type: "${input.change_type}"
337
+ - id: A2.branch.create_and_link
338
+ - id: B2b.status.write
339
+ with:
340
+ fields:
341
+ current_stage: "openissue"
342
+ status: "active"
343
+ gate:
344
+ type: deterministic
345
+ atom: E6.gate.local_precheck
346
+ with: { phase: "post-openissue" }
347
+ on_fail: stop
348
+
349
+ - id: set-in-progress
350
+ label: "21 · Set issue in progress"
351
+ catalog_ref: 21
352
+ required: true
353
+ atoms:
354
+ - id: A4.project.set_status
355
+ with: { target_status: "In Progress" }
356
+ - id: A3.repo.doctor
357
+ gate:
358
+ type: deterministic
359
+ atom: E6.gate.local_precheck
360
+ with: { phase: "pre-exec" }
361
+ on_fail: stop
362
+
363
+ - id: tdd-red
364
+ label: "22a · TDD red"
365
+ catalog_ref: 22
366
+ required: true
367
+ atoms:
368
+ - id: I6a.tdd.run
369
+ with: { phase: "red", test_command: "${input.tdd_red_command}", expect: "fail" }
370
+ - id: I6b.tdd.proof_validate
371
+ with: { phase: "red", tdd_mode: "${input.tdd_mode}" }
372
+ artifacts:
373
+ - { path: "specs/changes/${change_id}/tdd/red-0.json", optional: false }
374
+ gate:
375
+ type: artifact-verify
376
+ on_fail: stop
377
+
378
+ - id: execute
379
+ label: "23 · Execute"
380
+ catalog_ref: 23
381
+ required: true
382
+ atoms:
383
+ - id: I2.phase_run.dispatch
384
+ with: { phase: "execute" }
385
+ - id: I4.patch.challenge
386
+ artifacts:
387
+ - { path: "specs/changes/${change_id}/execute.json", optional: false }
388
+ gate:
389
+ type: artifact-verify
390
+ on_fail: stop
391
+
392
+ - id: tdd-green
393
+ label: "22b · TDD green + quality"
394
+ catalog_ref: 22
395
+ required: true
396
+ atoms:
397
+ - id: I6a.tdd.run
398
+ with: { phase: "green", test_command: "${input.tdd_green_command}", expect: "pass" }
399
+ - id: I6b.tdd.proof_validate
400
+ with: { phase: "green", tdd_mode: "${input.tdd_mode}" }
401
+ - id: I6c.tdd.quality_review
402
+ with: { tdd_mode: "${input.tdd_mode}" }
403
+ artifacts:
404
+ - { path: "specs/changes/${change_id}/tdd/green-0.json", optional: false }
405
+ - { path: "specs/changes/${change_id}/tdd/quality-0.json", optional: false }
406
+ gate:
407
+ type: artifact-verify
408
+ on_fail: stop
409
+
410
+ - id: review
411
+ label: "24 · Review"
412
+ catalog_ref: 24
413
+ required: true
414
+ atoms:
415
+ - id: I4.patch.challenge
416
+ with: { mode: "review" }
417
+ - id: J5.gate.evidence_collect
418
+ artifacts:
419
+ - { path: "specs/changes/${change_id}/review.json", optional: false }
420
+ gate:
421
+ type: llm-judge
422
+ on_fail: stop
423
+
424
+ - id: qa
425
+ label: "25 · QA"
426
+ catalog_ref: 25
427
+ required: true
428
+ atoms:
429
+ - id: J1.tests.run
430
+ - id: J4b.spec_delta.review
431
+ - id: J6.cr.review
432
+ - id: H5.visual.review
433
+ with: { mode: "qa" }
434
+ - id: E5.artifact.verify
435
+ - id: B3.status.transition
436
+ with: { to_stage: "verify" }
437
+ - id: B2b.status.write
438
+ with:
439
+ fields:
440
+ verification_status: "passed"
441
+ design_aligned: "yes"
442
+ - id: J5.gate.evidence_collect
443
+ artifacts:
444
+ - { path: "specs/changes/${change_id}/qa_acceptance.json", optional: false }
445
+ - { path: "specs/changes/${change_id}/cr/review-0.json", optional: false }
446
+ gate:
447
+ type: artifact-verify
448
+ on_fail: stop
449
+
450
+ - id: gate_final
451
+ label: "27 · Final gate"
452
+ catalog_ref: 27
453
+ required: true
454
+ atoms:
455
+ - id: J5.gate.evidence_collect
456
+ - id: E3.gate.workbench
457
+ - id: K1.artifacts.complete_check
458
+ artifacts:
459
+ - { path: "specs/changes/${change_id}/gate_final.json", optional: false }
460
+ gate:
461
+ type: human
462
+ on_fail: stop
463
+
464
+ - id: archive
465
+ label: "28 · Archive"
466
+ catalog_ref: 27
467
+ required: true
468
+ atoms:
469
+ - id: K1.artifacts.complete_check
470
+ - id: K6.aha.merge
471
+ - id: K3.handoff.refresh
472
+ - id: K4.mem.lesson_persist
473
+ with: { lesson: "${input.lesson_summary}" }
474
+ - id: A5.archive.commit_push_close
475
+ with: { push: true, close_issue: true }
476
+ - id: A6.pr.create
477
+ gate:
478
+ type: deterministic
479
+ atom: E6.gate.local_precheck
480
+ with: { phase: "pre-archive" }
481
+ on_fail: stop
@@ -0,0 +1,241 @@
1
+ name: yolo
2
+ version: 1
3
+ description: >
4
+ Lightweight delivery workflow for backend, docs, infra, and small UI changes.
5
+ Does not require an HTTP server. GitHub CLI (gh) required.
6
+ All gate checks route through E6.gate.local_precheck (yolo_gate.py) — single source of truth.
7
+ track: lite
8
+ requires:
9
+ agentos_bin: true
10
+ agentos_http: false
11
+ gh: true
12
+ pencil: false
13
+
14
+ phases:
15
+ - id: change-init
16
+ label: "01 · Change init"
17
+ catalog_ref: 1
18
+ required: true
19
+ atoms:
20
+ - id: B1.change.scaffold
21
+ with: { change_type: "${input.change_type}", title: "${input.title}" }
22
+ - id: B2b.status.write
23
+ with:
24
+ fields:
25
+ current_stage: "change-init"
26
+ status: "draft"
27
+ archival_status: "not_ready"
28
+ - id: B7.change_mission.bind
29
+ with: { direction: "change_to_mission" }
30
+ artifacts:
31
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
32
+ - { path: "specs/changes/${change_id}/proposal.md", optional: true }
33
+ gate:
34
+ type: deterministic
35
+ atom: E6.gate.local_precheck
36
+ with: { phase: "pre-openissue" }
37
+ on_fail: stop
38
+
39
+ - id: brainstorm
40
+ label: "03 · Brainstorm"
41
+ catalog_ref: 3
42
+ required: true
43
+ atoms:
44
+ - id: B3.status.transition
45
+ with: { to_stage: "brainstorm" }
46
+ gate:
47
+ type: human
48
+ on_fail: stop
49
+
50
+ - id: design-check-lite
51
+ label: "09 · Design check (lite)"
52
+ catalog_ref: 9
53
+ required: false
54
+ condition:
55
+ input_field: change_type
56
+ equals: frontend
57
+ atoms:
58
+ - id: H1.design.lite_gate
59
+ with: { require_full_contract: false }
60
+ - id: B3.status.transition
61
+ with: { to_stage: "design-check" }
62
+ artifacts:
63
+ - { path: "DESIGN.md", optional: true }
64
+ gate:
65
+ type: deterministic
66
+ atom: H1.design.lite_gate
67
+ with: { require_full_contract: false }
68
+ on_fail: stop
69
+
70
+ - id: proposal
71
+ label: "06 · Proposal freeze"
72
+ catalog_ref: 6
73
+ required: true
74
+ atoms:
75
+ - id: B3.status.transition
76
+ with: { to_stage: "proposal-freeze" }
77
+ artifacts:
78
+ - { path: "specs/changes/${change_id}/proposal.md", optional: false }
79
+ gate:
80
+ type: artifact-verify
81
+ on_fail: stop
82
+
83
+ - id: proposal-consistency-check
84
+ label: "07 · Proposal consistency check"
85
+ catalog_ref: 7
86
+ required: true
87
+ atoms:
88
+ - id: J4a.spec_consistency.structural
89
+ - id: J4d.spec_clarify.gate
90
+ - id: B3.status.transition
91
+ with: { to_stage: "proposal-consistency-check" }
92
+ artifacts:
93
+ - { path: "specs/changes/${change_id}/spec_clarify.json", optional: true }
94
+ gate:
95
+ type: deterministic
96
+ atom: J4d.spec_clarify.gate
97
+ on_fail: stop
98
+
99
+ - id: plan
100
+ label: "18 · Plan"
101
+ catalog_ref: 18
102
+ required: true
103
+ atoms:
104
+ - id: B3.status.transition
105
+ with: { to_stage: "plan" }
106
+ artifacts:
107
+ - { path: "specs/changes/${change_id}/plan.md", optional: false }
108
+ - { path: "specs/changes/${change_id}/tasks.md", optional: false }
109
+ gate:
110
+ type: artifact-verify
111
+ on_fail: stop
112
+
113
+ # F2 (issue #5 P1-2): on the lite track the red proof is sealed immediately
114
+ # after planning, in the same agent pass that authored the plan and the
115
+ # failing test. The issue/branch ceremony (openissue, set-in-progress) no
116
+ # longer sits between planning and red-proof, where it forced a separate
117
+ # exploration pass; it still completes before execute.
118
+ - id: tdd-red
119
+ label: "21a · TDD red"
120
+ catalog_ref: 21
121
+ required: true
122
+ atoms:
123
+ - id: I6a.tdd.run
124
+ with: { phase: "red", test_command: "${input.tdd_red_command}", expect: "fail" }
125
+ - id: I6b.tdd.proof_validate
126
+ with: { phase: "red", tdd_mode: "${input.tdd_mode}" }
127
+ - id: B3.status.transition
128
+ with: { to_stage: "tdd" }
129
+ artifacts:
130
+ - { path: "specs/changes/${change_id}/tdd/red-0.json", optional: false }
131
+ gate:
132
+ type: artifact-verify
133
+ on_fail: stop
134
+
135
+ - id: openissue
136
+ label: "19 · Open issue + branch"
137
+ catalog_ref: 19
138
+ required: true
139
+ atoms:
140
+ - id: A1.issue.create_or_patch
141
+ with: { repo: "owner/internal-tracker" }
142
+ - id: A2.branch.create_and_link
143
+ - id: B2b.status.write
144
+ with:
145
+ fields:
146
+ current_stage: "openissue"
147
+ status: "active"
148
+ artifacts:
149
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
150
+ gate:
151
+ type: deterministic
152
+ atom: E6.gate.local_precheck
153
+ with: { phase: "post-openissue" }
154
+ on_fail: stop
155
+
156
+ - id: set-in-progress
157
+ label: "20 · Set issue in progress"
158
+ catalog_ref: 20
159
+ required: true
160
+ atoms:
161
+ - id: A4.project.set_status
162
+ with: { target_status: "In Progress" }
163
+ - id: A3.repo.doctor
164
+ gate:
165
+ type: deterministic
166
+ atom: E6.gate.local_precheck
167
+ with: { phase: "pre-exec" }
168
+ on_fail: stop
169
+
170
+ - id: execute
171
+ label: "22 · Execute"
172
+ catalog_ref: 22
173
+ required: true
174
+ atoms:
175
+ - id: B3.status.transition
176
+ with: { to_stage: "execute" }
177
+ gate:
178
+ type: human
179
+ on_fail: stop
180
+
181
+ - id: tdd-green
182
+ label: "21b · TDD green + quality"
183
+ catalog_ref: 21
184
+ required: true
185
+ atoms:
186
+ - id: I6a.tdd.run
187
+ with: { phase: "green", test_command: "${input.tdd_green_command}", expect: "pass" }
188
+ - id: I6b.tdd.proof_validate
189
+ with: { phase: "green", tdd_mode: "${input.tdd_mode}" }
190
+ - id: I6c.tdd.quality_review
191
+ with: { tdd_mode: "${input.tdd_mode}" }
192
+ artifacts:
193
+ - { path: "specs/changes/${change_id}/tdd/green-0.json", optional: false }
194
+ - { path: "specs/changes/${change_id}/tdd/quality-0.json", optional: false }
195
+ gate:
196
+ type: artifact-verify
197
+ on_fail: stop
198
+
199
+ - id: verify-consistency
200
+ label: "23 · Verify consistency"
201
+ catalog_ref: 23
202
+ required: true
203
+ atoms:
204
+ - id: J1.tests.run
205
+ - id: J4a.spec_consistency.structural
206
+ - id: J4b.spec_delta.review
207
+ - id: J6.cr.review
208
+ - id: B3.status.transition
209
+ with: { to_stage: "verify" }
210
+ - id: B2b.status.write
211
+ with:
212
+ fields:
213
+ verification_status: "running"
214
+ artifacts:
215
+ - { path: "specs/changes/${change_id}/cr/review-0.json", optional: false }
216
+ gate:
217
+ type: deterministic
218
+ atom: J4a.spec_consistency.structural
219
+ on_fail: stop
220
+
221
+ - id: archive
222
+ label: "27 · Archive"
223
+ catalog_ref: 27
224
+ required: true
225
+ atoms:
226
+ - id: K1.artifacts.complete_check
227
+ - id: K6.aha.merge
228
+ - id: K3.handoff.refresh
229
+ - id: K4.mem.lesson_persist
230
+ with: { lesson: "${input.lesson_summary}" }
231
+ - id: A5.archive.commit_push_close
232
+ with: { push: true, close_issue: true }
233
+ - id: A6.pr.create
234
+ artifacts:
235
+ - { path: "specs/changes/${change_id}/status.json", optional: false }
236
+ - { path: "specs/changes/${change_id}/spec_delta_review.json", optional: false }
237
+ gate:
238
+ type: deterministic
239
+ atom: E6.gate.local_precheck
240
+ with: { phase: "pre-archive" }
241
+ on_fail: stop