intentdna 1.7.4 → 1.8.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.
Files changed (152) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/LICENSE +201 -0
  4. package/README.md +143 -194
  5. package/dist/assets/candidates.d.ts +124 -0
  6. package/dist/assets/candidates.js +1249 -0
  7. package/dist/assets/catalog.d.ts +101 -0
  8. package/dist/assets/catalog.js +311 -0
  9. package/dist/assets/evidence.d.ts +93 -0
  10. package/dist/assets/evidence.js +391 -0
  11. package/dist/assets/index.d.ts +4 -0
  12. package/dist/assets/index.js +4 -0
  13. package/dist/assets/metadata.d.ts +19 -0
  14. package/dist/assets/metadata.js +227 -0
  15. package/dist/cli/commands/assets.d.ts +65 -0
  16. package/dist/cli/commands/assets.js +2871 -0
  17. package/dist/cli/commands/auth.d.ts +322 -0
  18. package/dist/cli/commands/auth.js +1592 -0
  19. package/dist/cli/commands/cloud-auth-guidance.d.ts +2 -0
  20. package/dist/cli/commands/cloud-auth-guidance.js +4 -0
  21. package/dist/cli/commands/cloud.d.ts +1359 -0
  22. package/dist/cli/commands/cloud.js +8364 -0
  23. package/dist/cli/commands/evolve.js +18 -2
  24. package/dist/cli/commands/generate.js +25 -2
  25. package/dist/cli/commands/guard.d.ts +1 -1
  26. package/dist/cli/commands/guard.js +1 -1
  27. package/dist/cli/commands/guide.d.ts +15 -0
  28. package/dist/cli/commands/guide.js +1747 -0
  29. package/dist/cli/commands/init.d.ts +12 -0
  30. package/dist/cli/commands/init.js +95 -60
  31. package/dist/cli/commands/org.d.ts +16 -0
  32. package/dist/cli/commands/org.js +2393 -0
  33. package/dist/cli/commands/release.d.ts +59 -0
  34. package/dist/cli/commands/release.js +716 -0
  35. package/dist/cli/commands/report.d.ts +82 -0
  36. package/dist/cli/commands/report.js +1516 -0
  37. package/dist/cli/commands/run.d.ts +6 -1
  38. package/dist/cli/commands/run.js +95 -26
  39. package/dist/cli/commands/sync.d.ts +8 -1
  40. package/dist/cli/commands/sync.js +436 -141
  41. package/dist/cli/commands/templates.d.ts +64 -0
  42. package/dist/cli/commands/templates.js +2151 -1
  43. package/dist/cli/commands/workflow.d.ts +26 -0
  44. package/dist/cli/commands/workflow.js +3053 -0
  45. package/dist/cli/index.js +719 -42
  46. package/dist/compiler/cascade.js +4 -9
  47. package/dist/compiler/compile.js +1 -0
  48. package/dist/governance/evidence-capture-attribution.d.ts +12 -0
  49. package/dist/governance/evidence-capture-attribution.js +46 -0
  50. package/dist/governance/index.d.ts +2 -0
  51. package/dist/governance/index.js +1 -0
  52. package/dist/hooks/cli.d.ts +6 -0
  53. package/dist/hooks/cli.js +168 -12
  54. package/dist/hooks/enforce.d.ts +1 -0
  55. package/dist/hooks/protocol.d.ts +1 -1
  56. package/dist/hooks/protocol.js +1 -1
  57. package/dist/hooks/state.d.ts +41 -0
  58. package/dist/hooks/state.js +126 -2
  59. package/dist/index.d.ts +3 -0
  60. package/dist/index.js +3 -0
  61. package/dist/mcp/tools-state.js +2 -0
  62. package/dist/organization/index.d.ts +121 -0
  63. package/dist/organization/index.js +413 -0
  64. package/dist/runtime/claude-sync-target.d.ts +49 -0
  65. package/dist/runtime/claude-sync-target.js +280 -0
  66. package/dist/runtime/codex-adapter.d.ts +254 -0
  67. package/dist/runtime/codex-adapter.js +1204 -0
  68. package/dist/runtime/codex-sync-target.d.ts +33 -0
  69. package/dist/runtime/codex-sync-target.js +241 -0
  70. package/dist/runtime/index.d.ts +8 -0
  71. package/dist/runtime/index.js +4 -0
  72. package/dist/runtime/output-artifact-registry.d.ts +1 -1
  73. package/dist/runtime/output-artifact-registry.js +2 -0
  74. package/dist/runtime/settings-adapter.d.ts +1 -1
  75. package/dist/runtime/settings-adapter.js +1 -1
  76. package/dist/runtime/skill-adapter.d.ts +5 -1
  77. package/dist/runtime/skill-adapter.js +120 -34
  78. package/dist/runtime/sync-artifact-registry.d.ts +99 -0
  79. package/dist/runtime/sync-artifact-registry.js +194 -0
  80. package/dist/runtime/sync-target-plan.d.ts +45 -0
  81. package/dist/runtime/sync-target-plan.js +19 -0
  82. package/dist/schema/controller-registry.d.ts +8 -1
  83. package/dist/schema/controller-registry.js +8 -0
  84. package/dist/schema/types.d.ts +35 -23
  85. package/dist/schema/types.js +10 -1
  86. package/dist/schema/validate.js +22 -22
  87. package/dist/schema/validators/controllers.js +38 -20
  88. package/dist/schema/workflow-authoring-contract.d.ts +29 -0
  89. package/dist/schema/workflow-authoring-contract.js +109 -0
  90. package/dist/schema/yaml-parser.js +18 -0
  91. package/dist/templates/api-backend.dna.yaml +19 -0
  92. package/dist/templates/brainstorming-first.dna.yaml +19 -0
  93. package/dist/templates/code-cleanup.dna.yaml +19 -0
  94. package/dist/templates/code-review-pipeline.dna.yaml +18 -0
  95. package/dist/templates/documentation-writer.dna.yaml +19 -0
  96. package/dist/templates/flutter-behavior-lock.dna.yaml +19 -0
  97. package/dist/templates/flutter-refactoring-rescue.dna.yaml +19 -0
  98. package/dist/templates/flutter-rewrite-diagnosis-review.dna.yaml +210 -0
  99. package/dist/templates/flutter-rewrite-fix-review-loop.dna.yaml +260 -0
  100. package/dist/templates/flutter-rewrite-new.dna.yaml +506 -0
  101. package/dist/templates/flutter-rewrite.dna.yaml +20 -0
  102. package/dist/templates/frontend-quality.dna.yaml +19 -0
  103. package/dist/templates/full-pipeline.dna.yaml +20 -0
  104. package/dist/templates/marketplace.d.ts +92 -0
  105. package/dist/templates/marketplace.js +502 -0
  106. package/dist/templates/metadata.d.ts +25 -0
  107. package/dist/templates/metadata.js +136 -3
  108. package/dist/templates/mobile-dev.dna.yaml +19 -0
  109. package/dist/templates/multi-agent-handoff-coordination.dna.yaml +156 -0
  110. package/dist/templates/multi-perspective-review.dna.yaml +19 -0
  111. package/dist/templates/persistent-executor.dna.yaml +19 -0
  112. package/dist/templates/qa-loop.dna.yaml +18 -0
  113. package/dist/templates/release-evidence-gate.dna.yaml +131 -0
  114. package/dist/templates/requirements-gate.dna.yaml +19 -0
  115. package/dist/templates/research-orchestration.dna.yaml +19 -0
  116. package/dist/templates/root-cause-analysis.dna.yaml +19 -0
  117. package/dist/templates/safe-refactoring.dna.yaml +321 -0
  118. package/dist/templates/secure-dev.dna.yaml +19 -0
  119. package/dist/templates/subagent-parallel.dna.yaml +19 -0
  120. package/dist/templates/systematic-debugging.dna.yaml +19 -0
  121. package/dist/templates/tdd-strict.dna.yaml +19 -0
  122. package/dist/templates/ui-visual-regression-qa.dna.yaml +133 -0
  123. package/dist/templates/workflow-author.dna.yaml +302 -0
  124. package/dist/templates/workflow-blocked-scope-triage.dna.yaml +242 -0
  125. package/dist/templates/workflow-completion-audit.dna.yaml +254 -0
  126. package/dist/templates/workflow-cross-boundary-resource-approval.dna.yaml +249 -0
  127. package/dist/templates/workflow-evidence-review.dna.yaml +198 -0
  128. package/dist/templates/workflow-module-inventory.dna.yaml +257 -0
  129. package/dist/templates/workflow-runtime-smoke-review.dna.yaml +252 -0
  130. package/dist/templates/workflow-verification-command-routing.dna.yaml +278 -0
  131. package/dist/workflow/authoring-packet.d.ts +67 -0
  132. package/dist/workflow/authoring-packet.js +218 -0
  133. package/dist/workflow/draft.d.ts +159 -0
  134. package/dist/workflow/draft.js +800 -0
  135. package/dist/workflow/index.d.ts +3 -0
  136. package/dist/workflow/index.js +3 -0
  137. package/dist/workflow/suggestion-review.d.ts +65 -0
  138. package/dist/workflow/suggestion-review.js +245 -0
  139. package/package.json +1 -1
  140. package/spec/README.md +15 -48
  141. package/spec/codex-adapter-contract.md +176 -0
  142. package/spec/sync-target-plan.md +158 -0
  143. package/spec/workflow-capability-ir.md +153 -0
  144. package/spec/agent-dispatch-fix.md +0 -116
  145. package/spec/control-plane-convergence-handoff-2026-04-24.md +0 -432
  146. package/spec/flutter-rewrite-template-optimization.md +0 -301
  147. package/spec/foundation-hardening.md +0 -178
  148. package/spec/hooks-infra-harness-hardening.md +0 -741
  149. package/spec/multi-config.md +0 -172
  150. package/spec/parallel-isolation.md +0 -268
  151. package/spec/template-version-namespace-fix.md +0 -653
  152. package/spec/workflow-pipeline.md +0 -101
@@ -0,0 +1,302 @@
1
+ # workflow-author: create real workflow assets through C3 authoring packet
2
+ # Purpose: external-agent authoring plus deterministic dna validation and an explicit human save gate.
3
+
4
+ version: "0.1.0"
5
+ id: template_workflow_author
6
+ name: Workflow Author
7
+ purpose: Create a real C1 workflow asset through an external-agent interview, YAML generation, dna validate loop, explicit human save confirmation, and catalog verification.
8
+ maturity: draft
9
+ fit:
10
+ - Creating a new workflow asset when no existing asset fits the work method.
11
+ - Turning a repeated team or personal work method into portable C1 YAML.
12
+ - Dogfooding the C3 authoring-packet path before Online Builder exists.
13
+ not_for:
14
+ - Runtime execution of the workflow being authored.
15
+ - Automatic adoption, organization binding, sync, deployment, or policy mutation.
16
+ - Pretending dna inferred intent from a one-line goal.
17
+ inputs:
18
+ - natural-language workflow goal
19
+ - human interview answers
20
+ - C3 authoring packet
21
+ - dna validate diagnostics
22
+ outputs:
23
+ - staged C1 workflow asset candidate
24
+ - deterministic validation evidence
25
+ - human save decision
26
+ - saved project asset and catalog inspection evidence
27
+ boundaries:
28
+ - External agents author YAML; they do not adopt, bind, sync, deploy, upload, or make runtime decisions.
29
+ - The goal is opaque context for dna; dna does not parse, score, or infer intent.
30
+ - Candidate YAML stays under .dna/authoring until dna validate passes and the human explicitly approves save.
31
+ - Save copies the exact validated candidate into .dna/templates; it does not adopt or sync the asset.
32
+ - Online, marketplace, Supabase, and MCP have no runtime authority in this workflow.
33
+ lineage:
34
+ source: P2 authoring packet dogfood asset
35
+ contract: docs/architecture/c3-authoring-packet.md
36
+ type: project
37
+ namespace: wa
38
+
39
+ cascade:
40
+ inherits: ["species:default"]
41
+ priority: 100
42
+
43
+ variables:
44
+ workflow_goal:
45
+ description: "Human description of the work method to author. Used only as opaque packet/interview context."
46
+ default: "$ARGUMENTS"
47
+ candidate_path:
48
+ description: "Fixed safe staging path for the current authoring session."
49
+ default: ".dna/authoring/workflow-author.candidate.dna.yaml"
50
+
51
+ genes:
52
+ k2_authoring_boundary:
53
+ description: Keep probabilistic creation outside dna and deterministic validation inside dna.
54
+ codons:
55
+ - type: attract
56
+ target: external_agent_interview
57
+ - type: attract
58
+ target: dna_validate_loop
59
+ - type: repel
60
+ target: dna_intent_inference
61
+ - type: repel
62
+ target: automatic_policy_mutation
63
+
64
+ human_save_gate:
65
+ description: Block catalog save while explicit human confirmation is absent.
66
+ codons:
67
+ - type: attract
68
+ target: explicit_human_save_confirmation
69
+ - type: repel
70
+ target: silent_template_write
71
+ - type: threshold
72
+ condition: "human_save_confirmation_present == false"
73
+ action: block
74
+
75
+ validation_before_catalog:
76
+ description: Only the exact candidate that passed dna validate may enter the project asset catalog.
77
+ codons:
78
+ - type: attract
79
+ target: exact_validated_candidate_save
80
+ - type: repel
81
+ target: pre_validation_catalog_write
82
+ - type: threshold
83
+ condition: "candidate_validation_green == false"
84
+ action: block
85
+
86
+ contexts: {}
87
+
88
+ roles:
89
+ packet_reader:
90
+ description: Reads the C3 packet and reports its deterministic contract without mutating project state.
91
+ tool_permissions:
92
+ allow: [Read, Grep, Glob, Bash]
93
+ deny: [Edit, Write, NotebookEdit]
94
+ scope:
95
+ read: ["**/*", ".dna/**", "docs/**"]
96
+ write: []
97
+ instructions:
98
+ - Run dna workflow authoring-packet for the requested goal, passing the goal as one CLI argument.
99
+ - Treat goal_context.raw as opaque context, not as a parsed intent model.
100
+ - Return the complete asset contract, schema constraints, examples, red lines, interview protocol, and validate loop.
101
+ success_criteria:
102
+ - Packet schema is intentdna.authoring_packet.v1.
103
+ - No project file is written by packet generation.
104
+
105
+ external_author:
106
+ description: Main-session external agent that interviews the human, authors the staged candidate, revises it from diagnostics, and saves only after approval.
107
+ model: interactive
108
+ tool_permissions:
109
+ allow: [Read, Write, Grep, Glob]
110
+ deny: [Bash, Edit, NotebookEdit]
111
+ scope:
112
+ read: ["**/*", ".dna/**", "docs/**"]
113
+ write: [".dna/authoring/**", ".dna/templates/**"]
114
+ instructions:
115
+ - Ask every interview_protocol question before writing YAML.
116
+ - Obtain a safe asset id matching /^[a-z][a-z0-9-]{1,62}$/ from the human-confirmed answers; never derive a file path from the raw goal.
117
+ - Write and revise only {{candidate_path}} until deterministic validation is green.
118
+ - After APPROVE_SAVE, copy the exact validated YAML to .dna/templates/<asset-id>.dna.yaml without changing its contents.
119
+ - Do not adopt, bind, sync, deploy, upload, or claim runtime authority.
120
+ success_criteria:
121
+ - Candidate structure reflects the interview answers rather than a canned example clone.
122
+ - Saved YAML is byte-equivalent to the validated candidate.
123
+
124
+ dna_validator:
125
+ description: Runs deterministic validation, catalog checks, and dry-run sync previews without rewriting YAML.
126
+ tool_permissions:
127
+ allow: [Read, Grep, Glob, Bash]
128
+ deny: [Edit, Write, NotebookEdit]
129
+ scope:
130
+ read: ["**/*", ".dna/**", "docs/**"]
131
+ write: []
132
+ instructions:
133
+ - Run dna validate on the staged candidate and report exact diagnostics.
134
+ - Never edit the candidate or infer what the human intended.
135
+ - After save, run dna assets show, dna assets inspect, dna sync --dry-run, and dna sync --codex --dry-run.
136
+ success_criteria:
137
+ - Validation evidence records exit code and diagnostics.
138
+ - Catalog and both harness previews refer to the saved asset.
139
+
140
+ human_reviewer:
141
+ description: Human owner who decides whether the validated candidate reflects the real work method and may be saved.
142
+ model: human
143
+ tool_permissions:
144
+ allow: []
145
+ deny: [Read, Write, Edit, Bash, Grep, Glob, NotebookEdit]
146
+ scope:
147
+ read: []
148
+ write: []
149
+ instructions:
150
+ - Review the candidate and deterministic validation evidence.
151
+ - Respond APPROVE_SAVE, REQUEST_CHANGES, or REJECT.
152
+ - Keep adoption, organization binding, and runtime sync as later explicit decisions.
153
+
154
+ workflow:
155
+ name: workflow-author
156
+ description: Author a real workflow asset through C3 packet, external-agent interview and YAML work, deterministic validate retries, explicit human save confirmation, and catalog verification.
157
+ steps:
158
+ - id: packet
159
+ role: packet_reader
160
+ description: Emit and read the complete C3 authoring packet for the opaque workflow goal.
161
+ prompt: |
162
+ Run dna workflow authoring-packet for {{workflow_goal}} in JSON mode.
163
+ Pass the entire goal as one CLI argument.
164
+ Return the complete packet without parsing, scoring, or inferring intent.
165
+ handoff:
166
+ produces:
167
+ - type: summary
168
+ name: authoring_packet
169
+ description: Complete packet schema, red lines, examples, interview protocol, and validate loop.
170
+
171
+ - id: interview
172
+ role: external_author
173
+ depends_on: [packet]
174
+ description: Interview the human for the real workflow shape and a safe asset id.
175
+ prompt: |
176
+ Ask the packet interview_protocol questions for {{workflow_goal}}.
177
+ Confirm goal, steps, roles, verification, boundaries, failure handling, and a safe asset id matching /^[a-z][a-z0-9-]{1,62}$/.
178
+ Do not write YAML until the human answers are concrete enough to define the workflow.
179
+ handoff:
180
+ consumes:
181
+ - type: summary
182
+ name: authoring_packet
183
+ from: packet
184
+ description: Complete C3 packet.
185
+ produces:
186
+ - type: summary
187
+ name: interview_answers
188
+ description: Human-confirmed workflow shape, safe asset id, roles, boundaries, and validation needs.
189
+
190
+ - id: draft-yaml
191
+ role: external_author
192
+ depends_on: [interview]
193
+ description: Write or revise one staged C1 workflow asset candidate.
194
+ prompt: |
195
+ Write {{candidate_path}} from interview_answers and the packet contract.
196
+ Keep maturity draft, declare boundaries, and use the safe asset id from the interview.
197
+ On a retry, change only what the dna validate diagnostics or explicit human correction require.
198
+ Do not write under .dna/templates in this step.
199
+ handoff:
200
+ consumes:
201
+ - type: summary
202
+ name: interview_answers
203
+ from: interview
204
+ description: Human-confirmed workflow shape and safe asset id.
205
+ produces:
206
+ - type: file
207
+ path: "{{candidate_path}}"
208
+ description: Staged C1 workflow asset candidate outside the project asset catalog.
209
+
210
+ - id: validate
211
+ role: dna_validator
212
+ depends_on: [draft-yaml]
213
+ description: Validate the staged candidate and return exact diagnostics for bounded revision.
214
+ prompt: |
215
+ Run dna validate "{{candidate_path}}".
216
+ If invalid, return the exact diagnostics to draft-yaml and do not continue to human review or save.
217
+ If valid, record green validation evidence without changing the candidate.
218
+ checkpoints:
219
+ - assert: authoring_candidate_validated
220
+ command: "dna validate \"{{candidate_path}}\""
221
+ message: "Candidate workflow asset must pass dna validate before human save review."
222
+ action: block
223
+ handoff:
224
+ consumes:
225
+ - type: file
226
+ path: "{{candidate_path}}"
227
+ from: draft-yaml
228
+ description: Staged candidate YAML.
229
+ produces:
230
+ - type: test_result
231
+ name: validate_result
232
+ description: Deterministic dna validate exit code and diagnostics.
233
+
234
+ - id: human-save-review
235
+ role: human_reviewer
236
+ depends_on: [validate]
237
+ description: Ask the human whether the exact validated candidate may enter the project asset catalog.
238
+ prompt: |
239
+ Review {{candidate_path}}, interview_answers, and validate_result.
240
+ Respond with APPROVE_SAVE, REQUEST_CHANGES, or REJECT.
241
+ APPROVE_SAVE authorizes only the exact catalog save; it does not authorize adoption, binding, sync, deployment, or upload.
242
+ handoff:
243
+ consumes:
244
+ - type: file
245
+ path: "{{candidate_path}}"
246
+ from: draft-yaml
247
+ description: Exact validated candidate YAML.
248
+ - type: test_result
249
+ name: validate_result
250
+ from: validate
251
+ description: Green deterministic validation evidence.
252
+ produces:
253
+ - type: summary
254
+ name: human_save_decision
255
+ description: Explicit APPROVE_SAVE, REQUEST_CHANGES, or REJECT decision.
256
+
257
+ - id: save-asset
258
+ role: external_author
259
+ depends_on: [human-save-review]
260
+ description: Save the exact validated candidate only after APPROVE_SAVE.
261
+ prompt: |
262
+ Require human_save_decision == APPROVE_SAVE.
263
+ Read {{candidate_path}} and write the exact same YAML bytes to .dna/templates/<safe-asset-id>.dna.yaml using the safe id from interview_answers.
264
+ Do not alter maturity, adopt, bind, sync, deploy, or upload.
265
+ handoff:
266
+ consumes:
267
+ - type: file
268
+ path: "{{candidate_path}}"
269
+ from: draft-yaml
270
+ description: Exact candidate that passed dna validate.
271
+ - type: summary
272
+ name: human_save_decision
273
+ from: human-save-review
274
+ description: Explicit human save decision.
275
+ produces:
276
+ - type: file
277
+ name: saved_workflow_asset
278
+ description: Project-local .dna/templates/<safe-asset-id>.dna.yaml copied from the validated candidate.
279
+
280
+ - id: catalog-check
281
+ role: dna_validator
282
+ depends_on: [save-asset]
283
+ description: Confirm catalog visibility and preview both supported harness surfaces.
284
+ prompt: |
285
+ Run dna validate on the saved asset, then dna assets show <safe-asset-id> and dna assets inspect <safe-asset-id>.
286
+ Run dna sync --dry-run and dna sync --codex --dry-run.
287
+ Report equivalent workflow projection or any explicitly unsupported adapter difference; do not perform live sync.
288
+ handoff:
289
+ consumes:
290
+ - type: file
291
+ name: saved_workflow_asset
292
+ from: save-asset
293
+ description: Human-approved project-local workflow asset.
294
+ produces:
295
+ - type: test_result
296
+ name: catalog_and_sync_preview
297
+ description: Saved-asset validation, catalog visibility, and Claude/Codex dry-run evidence.
298
+
299
+ retry_policy:
300
+ max_retries: 3
301
+ retry_from: draft-yaml
302
+ backoff: none
@@ -0,0 +1,242 @@
1
+ # workflow-blocked-scope-triage: reusable blocked/skipped/deferred scope review
2
+ # Source: extracted from Flutter rewrite dogfood modules with blocked and skipped work
3
+ # Purpose: make blocked scope classification explicit before manager review, adoption, rollout, or sync
4
+
5
+ version: "0.1.0"
6
+ id: template_workflow_blocked_scope_triage
7
+ name: Workflow Blocked Scope Triage
8
+ purpose: Classify blocked, skipped, deferred, removed, or outside-scope work before completion, adoption, rollout, or sync.
9
+ maturity: reviewed
10
+ fit:
11
+ - Workflow evidence with skipped tests, blocked items, or human approval requirements.
12
+ - Manager review before treating deferred scope as accepted.
13
+ not_for:
14
+ - Hiding unimplemented work as completion.
15
+ - Automatic policy mutation from evidence.
16
+ inputs:
17
+ - progress or verification evidence
18
+ - diagnosis or baseline reference
19
+ - blocked item owner and reason
20
+ outputs:
21
+ - blocked scope triage artifact
22
+ - manager-readable next review path
23
+ - explicit remaining versus deferred classification
24
+ lineage:
25
+ source: Flutter rewrite dogfood modules
26
+ reference: src/templates/flutter-rewrite.dna.yaml
27
+ type: project
28
+ namespace: wbst
29
+
30
+ cascade:
31
+ inherits: ["species:default"]
32
+ priority: 100
33
+
34
+ variables:
35
+ evidence_path:
36
+ description: "Progress or verification evidence path"
37
+ default: ".dna/fix-progress/$ARGUMENTS.json"
38
+ triage_path:
39
+ description: "Blocked scope triage artifact path"
40
+ default: ".dna/blocked-scope/$ARGUMENTS.triage.json"
41
+ reference_path:
42
+ description: "Optional behavior, diagnosis, or review reference path"
43
+ default: "docs/behavior/$ARGUMENTS.md"
44
+
45
+ evidence:
46
+ - label: Flutter rewrite dogfood blocked evidence
47
+ kind: reference
48
+ path: /Users/samuel/lawark/lwk_flutter_v2-rewrite/.dna/fix-progress
49
+ description: Module progress JSON and logs where chat and device recorded blocked or intentionally skipped items.
50
+ - label: Flutter rewrite blocked item rules
51
+ kind: reference
52
+ path: src/templates/flutter-rewrite.dna.yaml
53
+ description: Dogfood workflow rules that separate remaining UNIMPLEMENTED skipped tests from blocked TEST_BUG, INFRA, REMOVED, or explicitly approved blocked items.
54
+
55
+ genes:
56
+ blocked_scope_is_explicit:
57
+ description: Blocked, skipped, removed, infra, and deferred work must be classified before completion or rollout
58
+ codons:
59
+ - type: attract
60
+ target: explicit_blocked_item_classification
61
+ - type: repel
62
+ target: silent_skip_as_pass
63
+ - type: threshold
64
+ condition: "blocked_scope_triage_written == true"
65
+ action: block
66
+
67
+ remaining_not_blocked:
68
+ description: Diagnosis-backed UNIMPLEMENTED skipped work is remaining work, not blocked scope
69
+ codons:
70
+ - type: attract
71
+ target: remaining_unimplemented_skipped_count
72
+ - type: repel
73
+ target: unimplemented_marked_blocked
74
+ - type: threshold
75
+ condition: "remaining_items_not_hidden == true"
76
+ action: block
77
+
78
+ manager_approval_for_defer:
79
+ description: Deferred or intentionally blocked scope requires a manager-readable reason and next review path
80
+ codons:
81
+ - type: attract
82
+ target: manager_readable_blocked_reason
83
+ - type: attract
84
+ target: next_review_command
85
+ - type: repel
86
+ target: automatic_defer
87
+ - type: sense
88
+ signal: blocked_scope_without_owner
89
+ response: request_manager_review
90
+
91
+ contexts: {}
92
+
93
+ roles:
94
+ scope_triager:
95
+ description: Reads progress, tests, diagnosis, and references to classify blocked, skipped, and deferred scope.
96
+ tool_permissions:
97
+ allow: [Read, Grep, Glob]
98
+ deny: [Edit, Write, Bash, NotebookEdit]
99
+ scope:
100
+ read: ["**/*", ".dna/**", "docs/**"]
101
+ write: []
102
+ instructions:
103
+ - Read {{evidence_path}} and {{reference_path}} before classifying blocked or skipped items.
104
+ - Separate REMAINING from BLOCKED, DEFERRED, TEST_BUG, INFRA, REMOVED, and USER_APPROVED_BLOCKED.
105
+ - Treat diagnosis-backed UNIMPLEMENTED skipped tests as REMAINING, not BLOCKED.
106
+ - Do not turn historical blocked notes into current verdicts without fresh evidence.
107
+ - Keep Obsidian/wiki as internal memory only; use machine evidence and reviewed artifacts for workflow decisions.
108
+
109
+ triage_reviewer:
110
+ description: Reviews scope triage for hidden remaining work, unsupported deferrals, and stale evidence.
111
+ tool_permissions:
112
+ allow: [Read, Grep, Glob]
113
+ deny: [Edit, Write, Bash, NotebookEdit]
114
+ scope:
115
+ read: ["**/*", ".dna/**", "docs/**"]
116
+ write: []
117
+ instructions:
118
+ - Reject triage that marks actionable BUG or UNIMPLEMENTED work as blocked.
119
+ - Reject PASS if any diagnosis-backed UNIMPLEMENTED skipped test remains.
120
+ - Require owner, reason, evidence path, and next review command for each blocked or deferred item.
121
+ - Return APPROVE, REQUEST_CHANGES, or BLOCKED with concise reasons.
122
+
123
+ triage_recorder:
124
+ description: Writes durable blocked scope triage evidence without mutating workflow assets or runtime sync artifacts.
125
+ tool_permissions:
126
+ allow: [Read, Write, Grep, Glob]
127
+ deny: [Edit, Bash, NotebookEdit]
128
+ scope:
129
+ read: ["**/*", ".dna/**", "docs/**"]
130
+ write: [".dna/blocked-scope/**"]
131
+ instructions:
132
+ - Write {{triage_path}} as JSON with status, remaining_items, blocked_items, deferred_items, evidence_paths, next_commands, reviewer_verdict, and updated_at.
133
+ - Include counts for remaining_count, blocked_count, deferred_count, and remaining_unimplemented_skipped_count.
134
+ - State whether manager review, continued fixing, adoption, evolution preview, rollout, or sync is allowed.
135
+ - Do not edit app code, tests, workflow templates, organization profiles, evolution markers, or runtime artifacts.
136
+
137
+ manager_reviewer:
138
+ description: Produces a manager-readable route from the triage artifact.
139
+ tool_permissions:
140
+ allow: [Read, Grep, Glob]
141
+ deny: [Edit, Write, Bash, NotebookEdit]
142
+ scope:
143
+ read: ["**/*", ".dna/**", "docs/**"]
144
+ write: []
145
+ instructions:
146
+ - Read {{triage_path}} and summarize whether work is PASS, CONTINUE, REQUEST_CHANGES, or BLOCKED.
147
+ - Name the evidence paths and explain any deferred or blocked scope in plain language.
148
+ - If remaining work exists, route back to fix/review before adoption, evolution mutation, rollout, or sync.
149
+ - End with an explicit mutation boundary.
150
+
151
+ workflows:
152
+ blocked-scope-triage:
153
+ name: Blocked Scope Triage
154
+ description: Classify blocked, skipped, and deferred work before manager review, adoption, rollout, or runtime sync.
155
+ steps:
156
+ - id: classify-scope
157
+ role: scope_triager
158
+ description: Classify remaining, blocked, skipped, and deferred scope from evidence.
159
+ prompt: |
160
+ Classify blocked, skipped, and deferred scope for $ARGUMENTS.
161
+ Read {{evidence_path}} and {{reference_path}}.
162
+ Separate REMAINING from BLOCKED, DEFERRED, TEST_BUG, INFRA, REMOVED, and USER_APPROVED_BLOCKED.
163
+ Treat diagnosis-backed UNIMPLEMENTED skipped tests as REMAINING, not BLOCKED.
164
+ handoff:
165
+ produces:
166
+ - type: summary
167
+ name: scope_classification
168
+ description: Remaining, blocked, deferred, and skipped item classification with evidence paths.
169
+ - id: review-triage
170
+ role: triage_reviewer
171
+ depends_on: [classify-scope]
172
+ description: Review the scope triage for hidden work and unsupported blocked claims.
173
+ prompt: |
174
+ Review scope triage for $ARGUMENTS.
175
+ Reject hidden remaining work, stale evidence, unsupported deferrals, or actionable work marked as blocked.
176
+ Return APPROVE, REQUEST_CHANGES, or BLOCKED.
177
+ handoff:
178
+ consumes:
179
+ - type: summary
180
+ name: scope_classification
181
+ from: classify-scope
182
+ description: Scope classification.
183
+ produces:
184
+ - type: summary
185
+ name: triage_review_verdict
186
+ description: Review verdict and required changes.
187
+ - id: record-triage
188
+ role: triage_recorder
189
+ depends_on: [review-triage]
190
+ description: Write durable triage evidence for manager review.
191
+ prompt: |
192
+ Write {{triage_path}} for $ARGUMENTS.
193
+ Include status, remaining_items, blocked_items, deferred_items, evidence_paths, next_commands, reviewer_verdict, counts, and updated_at.
194
+ State whether adoption, evolution preview, rollout, or sync is allowed.
195
+ checkpoints:
196
+ - assert: triage_artifact_written
197
+ command: "test -s \"{{triage_path}}\""
198
+ message: "Blocked scope triage artifact must exist before manager route."
199
+ action: block
200
+ handoff:
201
+ consumes:
202
+ - type: summary
203
+ name: triage_review_verdict
204
+ from: review-triage
205
+ description: Triage review verdict.
206
+ produces:
207
+ - type: file
208
+ path: "{{triage_path}}"
209
+ description: Durable blocked scope triage JSON.
210
+ - id: manager-route
211
+ role: manager_reviewer
212
+ depends_on: [record-triage]
213
+ description: Produce manager-readable next action from blocked scope triage.
214
+ prompt: |
215
+ Read {{triage_path}} for $ARGUMENTS.
216
+ State PASS, CONTINUE, REQUEST_CHANGES, or BLOCKED, with evidence and next command.
217
+ Do not approve adoption, evolution mutation, rollout, or sync while remaining work is hidden.
218
+ handoff:
219
+ consumes:
220
+ - type: file
221
+ path: "{{triage_path}}"
222
+ from: record-triage
223
+ description: Blocked scope triage artifact.
224
+ produces:
225
+ - type: summary
226
+ name: manager_triage_route
227
+ description: Manager-readable route to continue, approve, request changes, or block.
228
+
229
+ controllers:
230
+ blocked-scope-triage:
231
+ name: Blocked Scope Triage
232
+ description: "Classify, review, record, and route blocked/skipped/deferred scope before adoption or sync."
233
+ kind: sequential
234
+ workflow: blocked-scope-triage
235
+ max_rounds: 1
236
+ progress_artifact_path: ".dna/blocked-scope/$ARGUMENTS.controller.json"
237
+ roles:
238
+ scope_triager: scope_triager
239
+ triage_reviewer: triage_reviewer
240
+ triage_recorder: triage_recorder
241
+ manager_reviewer: manager_reviewer
242
+ stop_format: configured_stop_report