gaia-framework 1.65.0 → 1.66.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.
- package/.claude/commands/gaia-add-feature.md +2 -2
- package/.claude/commands/gaia-change-request.md +16 -4
- package/.claude/commands/gaia-edit-ux.md +17 -0
- package/.claude/commands/gaia-resume.md +1 -1
- package/.claude/commands/gaia-validate-prd.md +9 -3
- package/CLAUDE.md +16 -1
- package/README.md +3 -3
- package/_gaia/_config/adversarial-triggers.yaml +91 -0
- package/_gaia/_config/files-manifest.csv +1 -0
- package/_gaia/_config/gaia-help.csv +10 -6
- package/_gaia/_config/global.yaml +2 -1
- package/_gaia/_config/lifecycle-sequence.yaml +26 -4
- package/_gaia/_config/manifest.yaml +3 -3
- package/_gaia/_config/skill-manifest.csv +3 -1
- package/_gaia/_config/workflow-manifest.csv +5 -3
- package/_gaia/core/config.yaml +1 -1
- package/_gaia/core/engine/workflow.xml +31 -5
- package/_gaia/core/protocols/review-gate-check.xml +29 -1
- package/_gaia/core/workflows/brainstorming/template.md +6 -0
- package/_gaia/lifecycle/agents/pm.md +9 -10
- package/_gaia/lifecycle/agents/ux-designer.md +1 -0
- package/_gaia/lifecycle/agents/validator.md +2 -1
- package/_gaia/lifecycle/config.yaml +1 -1
- package/_gaia/lifecycle/knowledge/brownfield/config-contradiction-scan.md +137 -0
- package/_gaia/lifecycle/knowledge/brownfield/dead-code-scan.md +179 -0
- package/_gaia/lifecycle/knowledge/brownfield/test-execution-scan.md +209 -0
- package/_gaia/lifecycle/module-help.csv +1 -1
- package/_gaia/lifecycle/skills/document-rulesets.md +251 -0
- package/_gaia/lifecycle/skills/memory-management-cross-agent.md +218 -0
- package/_gaia/lifecycle/skills/memory-management.md +32 -122
- package/_gaia/lifecycle/templates/brownfield-scan-doc-code-prompt.md +219 -0
- package/_gaia/lifecycle/templates/brownfield-scan-hardcoded-prompt.md +169 -0
- package/_gaia/lifecycle/templates/brownfield-scan-integration-seam-prompt.md +127 -0
- package/_gaia/lifecycle/templates/brownfield-scan-runtime-behavior-prompt.md +141 -0
- package/_gaia/lifecycle/templates/brownfield-scan-security-prompt.md +212 -0
- package/_gaia/lifecycle/templates/gap-entry-schema.md +247 -0
- package/_gaia/lifecycle/templates/infra-prd-template.md +356 -0
- package/_gaia/lifecycle/templates/platform-prd-template.md +431 -0
- package/_gaia/lifecycle/templates/prd-template.md +70 -0
- package/_gaia/lifecycle/templates/story-template.md +1 -0
- package/_gaia/lifecycle/workflows/1-analysis/create-product-brief/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/2-planning/create-prd/instructions.xml +4 -2
- package/_gaia/lifecycle/workflows/2-planning/create-prd/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/2-planning/create-ux-design/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/2-planning/edit-prd/instructions.xml +4 -4
- package/_gaia/lifecycle/workflows/2-planning/edit-prd/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/2-planning/edit-ux-design/checklist.md +18 -0
- package/_gaia/lifecycle/workflows/2-planning/edit-ux-design/instructions.xml +66 -0
- package/_gaia/lifecycle/workflows/2-planning/edit-ux-design/workflow.yaml +27 -0
- package/_gaia/lifecycle/workflows/3-solutioning/create-architecture/instructions.xml +3 -1
- package/_gaia/lifecycle/workflows/3-solutioning/create-architecture/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/3-solutioning/create-epics-stories/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/3-solutioning/edit-architecture/instructions.xml +4 -7
- package/_gaia/lifecycle/workflows/3-solutioning/edit-architecture/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/3-solutioning/security-threat-model/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/4-implementation/add-feature/checklist.md +42 -0
- package/_gaia/lifecycle/workflows/4-implementation/add-feature/instructions.xml +196 -0
- package/_gaia/lifecycle/workflows/{cross-phase → 4-implementation}/add-feature/workflow.yaml +20 -9
- package/_gaia/lifecycle/workflows/4-implementation/add-stories/checklist.md +5 -0
- package/_gaia/lifecycle/workflows/4-implementation/add-stories/instructions.xml +73 -1
- package/_gaia/lifecycle/workflows/4-implementation/add-stories/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/4-implementation/code-review/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/4-implementation/correct-course/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/4-implementation/create-story/checklist.md +1 -1
- package/_gaia/lifecycle/workflows/4-implementation/create-story/instructions.xml +5 -4
- package/_gaia/lifecycle/workflows/4-implementation/dev-story/workflow.yaml +1 -1
- package/_gaia/lifecycle/workflows/4-implementation/retrospective/instructions.xml +21 -1
- package/_gaia/lifecycle/workflows/4-implementation/retrospective/workflow.yaml +2 -1
- package/_gaia/lifecycle/workflows/4-implementation/sprint-planning/instructions.xml +3 -0
- package/_gaia/lifecycle/workflows/4-implementation/sprint-planning/workflow.yaml +2 -0
- package/_gaia/lifecycle/workflows/4-implementation/triage-findings/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/4-implementation/val-refresh-ground-truth/checklist.md +15 -0
- package/_gaia/lifecycle/workflows/4-implementation/val-refresh-ground-truth/instructions.xml +153 -57
- package/_gaia/lifecycle/workflows/4-implementation/val-refresh-ground-truth/workflow.yaml +5 -0
- package/_gaia/lifecycle/workflows/4-implementation/val-validate-artifact/instructions.xml +23 -12
- package/_gaia/lifecycle/workflows/4-implementation/val-validate-artifact/workflow.yaml +11 -0
- package/_gaia/lifecycle/workflows/4-implementation/val-validate-plan/instructions.xml +0 -2
- package/_gaia/lifecycle/workflows/5-deployment/deployment-checklist/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/anytime/brownfield-onboarding/checklist.md +12 -0
- package/_gaia/lifecycle/workflows/anytime/brownfield-onboarding/instructions.xml +313 -5
- package/_gaia/lifecycle/workflows/anytime/brownfield-onboarding/workflow.yaml +1 -0
- package/_gaia/lifecycle/workflows/anytime/memory-hygiene/instructions.xml +8 -18
- package/_gaia/testing/config.yaml +1 -1
- package/_gaia/testing/workflows/edit-test-plan/workflow.yaml +1 -0
- package/_gaia/testing/workflows/test-design/workflow.yaml +2 -0
- package/_gaia/testing/workflows/traceability/workflow.yaml +1 -0
- package/bin/gaia-framework.js +25 -9
- package/bin/generate-checksums.js +124 -0
- package/gaia-install.sh +74 -28
- package/package.json +5 -2
- package/_gaia/lifecycle/workflows/cross-phase/add-feature/checklist.md +0 -30
- package/_gaia/lifecycle/workflows/cross-phase/add-feature/instructions.xml +0 -85
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 'add-feature'
|
|
3
|
-
description: '
|
|
3
|
+
description: 'Triage and route a fix, enhancement, or feature through only the affected artifacts. Classifies as patch/enhancement/feature and cascades accordingly.'
|
|
4
4
|
model: opus
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ IT IS CRITICAL THAT YOU FOLLOW THESE STEPS:
|
|
|
9
9
|
<steps CRITICAL="TRUE">
|
|
10
10
|
1. LOAD the FULL {project-root}/_gaia/core/engine/workflow.xml
|
|
11
11
|
2. READ its entire contents — this is the CORE OS
|
|
12
|
-
3. Pass {project-root}/_gaia/lifecycle/workflows/
|
|
12
|
+
3. Pass {project-root}/_gaia/lifecycle/workflows/4-implementation/add-feature/workflow.yaml as 'workflow-config'
|
|
13
13
|
4. Follow workflow.xml instructions EXACTLY
|
|
14
14
|
5. Save outputs after EACH section
|
|
15
15
|
</steps>
|
|
@@ -1,11 +1,23 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 'change-request'
|
|
3
|
-
description: '
|
|
3
|
+
description: 'DEPRECATED — Redirects to /gaia-add-feature. Use /gaia-add-feature directly.'
|
|
4
4
|
model: opus
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
> **DEPRECATED:** `/gaia-change-request` has been replaced by `/gaia-add-feature`.
|
|
8
|
+
> This command now redirects to the add-feature workflow automatically.
|
|
9
|
+
>
|
|
10
|
+
> **Note:** SIGNIFICANT or larger changes are fully supported by the add-feature workflow,
|
|
11
|
+
> which classifies changes as patch/enhancement/feature and cascades accordingly.
|
|
8
12
|
|
|
9
|
-
|
|
13
|
+
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS:
|
|
10
14
|
|
|
11
|
-
|
|
15
|
+
<steps CRITICAL="TRUE">
|
|
16
|
+
1. LOAD the FULL {project-root}/_gaia/core/engine/workflow.xml
|
|
17
|
+
2. READ its entire contents — this is the CORE OS
|
|
18
|
+
3. Pass {project-root}/_gaia/lifecycle/workflows/4-implementation/add-feature/workflow.yaml as 'workflow-config'
|
|
19
|
+
4. Follow workflow.xml instructions EXACTLY
|
|
20
|
+
5. Save outputs after EACH section
|
|
21
|
+
</steps>
|
|
22
|
+
|
|
23
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: 'edit-ux'
|
|
3
|
+
description: 'Edit an existing UX design. Use when "edit the UX design".'
|
|
4
|
+
model: opus
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS:
|
|
8
|
+
|
|
9
|
+
<steps CRITICAL="TRUE">
|
|
10
|
+
1. LOAD the FULL {project-root}/_gaia/core/engine/workflow.xml
|
|
11
|
+
2. READ its entire contents — this is the CORE OS
|
|
12
|
+
3. Pass {project-root}/_gaia/lifecycle/workflows/2-planning/edit-ux-design/workflow.yaml as 'workflow-config'
|
|
13
|
+
4. Follow workflow.xml instructions EXACTLY
|
|
14
|
+
5. Save outputs after EACH section
|
|
15
|
+
</steps>
|
|
16
|
+
|
|
17
|
+
$ARGUMENTS
|
|
@@ -7,7 +7,7 @@ model: sonnet
|
|
|
7
7
|
IT IS CRITICAL THAT YOU FOLLOW THESE STEPS:
|
|
8
8
|
|
|
9
9
|
<steps CRITICAL="TRUE">
|
|
10
|
-
1. SCAN {project-root}/
|
|
10
|
+
1. SCAN {project-root}/_memory/checkpoints/ for .yaml files (exclude completed/)
|
|
11
11
|
2. If no checkpoints found: report "No active workflows to resume" and suggest /gaia
|
|
12
12
|
3. If one checkpoint: display its summary and offer Resume / Restart / Discard
|
|
13
13
|
4. If multiple checkpoints: list all with timestamps, ask user which to resume
|
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: 'validate-prd'
|
|
3
|
-
description: '
|
|
3
|
+
description: 'DEPRECATED — Redirects to /gaia-val-validate'
|
|
4
4
|
model: sonnet
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
> **This command is deprecated.**
|
|
8
|
+
>
|
|
9
|
+
> `/gaia-validate-prd` has been replaced by `/gaia-val-validate`, which provides unified artifact validation through Val's document-specific rulesets.
|
|
10
|
+
>
|
|
11
|
+
> **What changed:** Val now handles all artifact validation (PRDs, architecture docs, UX designs, and more) using document-specific rulesets. There is no longer a separate PRD-only validation workflow.
|
|
12
|
+
>
|
|
13
|
+
> **What to do:** Run `/gaia-val-validate` instead. It accepts any artifact type and applies the appropriate validation rules automatically.
|
|
8
14
|
|
|
9
15
|
<steps CRITICAL="TRUE">
|
|
10
16
|
1. LOAD the FULL {project-root}/_gaia/core/engine/workflow.xml
|
|
11
17
|
2. READ its entire contents — this is the CORE OS
|
|
12
|
-
3. Pass {project-root}/_gaia/lifecycle/workflows/
|
|
18
|
+
3. Pass {project-root}/_gaia/lifecycle/workflows/4-implementation/val-validate-artifact/workflow.yaml as 'workflow-config'
|
|
13
19
|
4. Follow workflow.xml instructions EXACTLY
|
|
14
20
|
5. Save outputs after EACH section
|
|
15
21
|
</steps>
|
package/CLAUDE.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
# GAIA Framework v1.
|
|
2
|
+
# GAIA Framework v1.66.0
|
|
3
3
|
|
|
4
4
|
This project uses the **GAIA** (Generative Agile Intelligence Architecture) framework — an AI agent framework for Claude Code that orchestrates software product development through 26 specialized agents, 65 workflows, and 8 shared skills.
|
|
5
5
|
|
|
@@ -149,6 +149,21 @@ Run `/gaia-run-all-reviews` to execute all six reviews sequentially via subagent
|
|
|
149
149
|
|
|
150
150
|
If any review fails, the story returns to `in-progress`. The Review Gate table in the story file tracks progress.
|
|
151
151
|
|
|
152
|
+
### Infra Review Gate Substitutions
|
|
153
|
+
|
|
154
|
+
For infrastructure stories (those whose `traces_to` field contains `IR-###`, `OR-###`, or `SR-###` requirement IDs), 4 of the 6 review gates use adapted criteria. Code Review and Security Review remain unchanged for all story types.
|
|
155
|
+
|
|
156
|
+
| Standard Gate | Infra Equivalent | Change |
|
|
157
|
+
|---|---|---|
|
|
158
|
+
| Code Review | IaC Code Review | Unchanged — same workflow, IaC expertise expected |
|
|
159
|
+
| QA Tests | Policy-as-Code Validation | Checkov/tfsec/OPA pass replaces unit/integration test pass |
|
|
160
|
+
| Security Review | Security Review | Unchanged — critical for infrastructure |
|
|
161
|
+
| Test Automation | Plan Validation + Drift Checks | terraform plan assertions replace automated test coverage |
|
|
162
|
+
| Test Review | Policy Review | OPA/Rego coverage replaces test quality review |
|
|
163
|
+
| Performance Review | Cost Review + Scaling Validation | Cost analysis and autoscaling validation replace load testing |
|
|
164
|
+
|
|
165
|
+
**Detection mechanism:** The `review-gate-check` protocol reads the story's `traces_to` field and checks the requirement ID prefix. Each story is evaluated independently — platform projects with mixed stories get per-story gate selection based on their own requirement prefix.
|
|
166
|
+
|
|
152
167
|
## Memory Hygiene
|
|
153
168
|
|
|
154
169
|
Agent memory sidecars accumulate decisions across sessions. Run `/gaia-memory-hygiene` periodically (recommended before each sprint) to detect stale, contradicted, or orphaned entries by cross-referencing sidecar decisions against current planning and architecture artifacts.
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# GAIA — Generative Agile Intelligence Architecture
|
|
2
2
|
|
|
3
|
-
[]()
|
|
4
4
|
[]()
|
|
5
5
|
[]()
|
|
6
6
|
[]()
|
|
@@ -245,7 +245,7 @@ Workflows are structured multi-step processes. Each has a `workflow.yaml` config
|
|
|
245
245
|
| Command | Workflow | Agent | Model | Output |
|
|
246
246
|
|---------|----------|-------|-------|--------|
|
|
247
247
|
| `/gaia-create-prd` | Create PRD | Derek | Opus | `docs/planning-artifacts/` |
|
|
248
|
-
| `/gaia-validate-prd` | Validate PRD | Derek | Sonnet | `docs/planning-artifacts/` |
|
|
248
|
+
| `/gaia-validate-prd` | ~~Validate PRD~~ (deprecated -- use `/gaia-val-validate`) | Derek | Sonnet | `docs/planning-artifacts/` |
|
|
249
249
|
| `/gaia-edit-prd` | Edit PRD | Derek | Opus | `docs/planning-artifacts/` |
|
|
250
250
|
| `/gaia-create-ux` | Create UX Design | Christy | Opus | `docs/planning-artifacts/` |
|
|
251
251
|
|
|
@@ -460,7 +460,7 @@ The single source of truth is `_gaia/_config/global.yaml`:
|
|
|
460
460
|
|
|
461
461
|
```yaml
|
|
462
462
|
framework_name: "GAIA"
|
|
463
|
-
framework_version: "1.
|
|
463
|
+
framework_version: "1.66.0"
|
|
464
464
|
user_name: "your-name"
|
|
465
465
|
project_name: "your-project"
|
|
466
466
|
```
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Adversarial Review Trigger Rules
|
|
2
|
+
# Declarative config governing when adversarial reviews are triggered.
|
|
3
|
+
# Change types: feature, high-risk-enhancement, low-risk-enhancement, bug-fix, documentation, patch
|
|
4
|
+
# Artifacts: prd, architecture, ux-design, test-plan
|
|
5
|
+
# When no change_type context is available (standalone creation), default to "feature".
|
|
6
|
+
|
|
7
|
+
high_risk_enhancement_criteria:
|
|
8
|
+
description: "A high-risk enhancement is any enhancement where the story risk field is 'high'"
|
|
9
|
+
matches:
|
|
10
|
+
- field: risk
|
|
11
|
+
value: high
|
|
12
|
+
- field: change_type
|
|
13
|
+
value: enhancement
|
|
14
|
+
|
|
15
|
+
trigger_rules:
|
|
16
|
+
# --- PRD artifact ---
|
|
17
|
+
- change_type: feature
|
|
18
|
+
artifact: prd
|
|
19
|
+
adversarial: true
|
|
20
|
+
- change_type: high-risk-enhancement
|
|
21
|
+
artifact: prd
|
|
22
|
+
adversarial: true
|
|
23
|
+
- change_type: low-risk-enhancement
|
|
24
|
+
artifact: prd
|
|
25
|
+
adversarial: false
|
|
26
|
+
- change_type: bug-fix
|
|
27
|
+
artifact: prd
|
|
28
|
+
adversarial: false
|
|
29
|
+
- change_type: documentation
|
|
30
|
+
artifact: prd
|
|
31
|
+
adversarial: false
|
|
32
|
+
- change_type: patch
|
|
33
|
+
artifact: prd
|
|
34
|
+
adversarial: false
|
|
35
|
+
|
|
36
|
+
# --- Architecture artifact ---
|
|
37
|
+
# Architecture adversarial requires BOTH a triggering change type AND magnitude >= SIGNIFICANT
|
|
38
|
+
- change_type: feature
|
|
39
|
+
artifact: architecture
|
|
40
|
+
adversarial: true
|
|
41
|
+
magnitude_threshold: SIGNIFICANT
|
|
42
|
+
- change_type: high-risk-enhancement
|
|
43
|
+
artifact: architecture
|
|
44
|
+
adversarial: true
|
|
45
|
+
magnitude_threshold: SIGNIFICANT
|
|
46
|
+
- change_type: low-risk-enhancement
|
|
47
|
+
artifact: architecture
|
|
48
|
+
adversarial: false
|
|
49
|
+
- change_type: bug-fix
|
|
50
|
+
artifact: architecture
|
|
51
|
+
adversarial: false
|
|
52
|
+
- change_type: documentation
|
|
53
|
+
artifact: architecture
|
|
54
|
+
adversarial: false
|
|
55
|
+
- change_type: patch
|
|
56
|
+
artifact: architecture
|
|
57
|
+
adversarial: false
|
|
58
|
+
|
|
59
|
+
# --- UX Design artifact --- (never triggers adversarial)
|
|
60
|
+
- change_type: feature
|
|
61
|
+
artifact: ux-design
|
|
62
|
+
adversarial: false
|
|
63
|
+
- change_type: high-risk-enhancement
|
|
64
|
+
artifact: ux-design
|
|
65
|
+
adversarial: false
|
|
66
|
+
- change_type: low-risk-enhancement
|
|
67
|
+
artifact: ux-design
|
|
68
|
+
adversarial: false
|
|
69
|
+
- change_type: bug-fix
|
|
70
|
+
artifact: ux-design
|
|
71
|
+
adversarial: false
|
|
72
|
+
- change_type: documentation
|
|
73
|
+
artifact: ux-design
|
|
74
|
+
adversarial: false
|
|
75
|
+
- change_type: patch
|
|
76
|
+
artifact: ux-design
|
|
77
|
+
adversarial: false
|
|
78
|
+
|
|
79
|
+
# --- Test Plan artifact --- (never triggers adversarial)
|
|
80
|
+
- change_type: feature
|
|
81
|
+
artifact: test-plan
|
|
82
|
+
adversarial: false
|
|
83
|
+
- change_type: high-risk-enhancement
|
|
84
|
+
artifact: test-plan
|
|
85
|
+
adversarial: false
|
|
86
|
+
- change_type: low-risk-enhancement
|
|
87
|
+
artifact: test-plan
|
|
88
|
+
adversarial: false
|
|
89
|
+
- change_type: bug-fix
|
|
90
|
+
artifact: test-plan
|
|
91
|
+
adversarial: false
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
path,type,module,description
|
|
2
2
|
"_gaia/_config/global.yaml","config","core","Global framework configuration"
|
|
3
|
+
"_gaia/_config/adversarial-triggers.yaml","config","core","Declarative trigger rules for adversarial reviews"
|
|
3
4
|
"_gaia/core/config.yaml","config","core","Core module configuration"
|
|
4
5
|
"_gaia/lifecycle/config.yaml","config","lifecycle","Lifecycle module configuration"
|
|
5
6
|
"_gaia/dev/config.yaml","config","dev","Developer module configuration"
|
|
@@ -11,9 +11,10 @@ module,phase,name,code,command,required,agent-name,description,output-location
|
|
|
11
11
|
"lifecycle","1-analysis","technical-research","tech-research","gaia-tech-research","false","analyst","Research a technology","docs/planning-artifacts"
|
|
12
12
|
"lifecycle","1-analysis","create-product-brief","product-brief","gaia-product-brief","false","analyst","Create a product brief","docs/planning-artifacts"
|
|
13
13
|
"lifecycle","2-planning","create-prd","create-prd","gaia-create-prd","true","pm","Create a Product Requirements Document","docs/planning-artifacts"
|
|
14
|
-
"lifecycle","2-planning","validate-prd","validate-prd","gaia-validate-prd","false","pm","
|
|
14
|
+
"lifecycle","2-planning","validate-prd","validate-prd","gaia-validate-prd","false","pm","DEPRECATED — Replaced by unified artifact validation","docs/planning-artifacts"
|
|
15
15
|
"lifecycle","2-planning","edit-prd","edit-prd","gaia-edit-prd","false","pm","Edit an existing PRD","docs/planning-artifacts"
|
|
16
16
|
"lifecycle","2-planning","create-ux-design","create-ux","gaia-create-ux","false","ux-designer","Create UX design specifications","docs/planning-artifacts"
|
|
17
|
+
"lifecycle","2-planning","edit-ux-design","edit-ux","gaia-edit-ux","false","ux-designer","Edit an existing UX design","docs/planning-artifacts"
|
|
17
18
|
"lifecycle","3-solutioning","create-architecture","create-arch","gaia-create-arch","true","architect","Design system architecture","docs/planning-artifacts"
|
|
18
19
|
"lifecycle","3-solutioning","create-epics-stories","create-epics","gaia-create-epics","true","pm","Break requirements into epics and stories","docs/planning-artifacts"
|
|
19
20
|
"lifecycle","3-solutioning","implementation-readiness","readiness-check","gaia-readiness-check","true","architect","Validate readiness for implementation","docs/planning-artifacts"
|
|
@@ -73,10 +74,13 @@ module,phase,name,code,command,required,agent-name,description,output-location
|
|
|
73
74
|
"testing","anytime","mobile-testing","mobile-testing","gaia-mobile-testing","false","test-architect","Create mobile test plan covering devices and responsive","docs/test-artifacts"
|
|
74
75
|
"creative","anytime","creative-sprint","creative-sprint","gaia-creative-sprint","false","orchestrator","Multi-agent creative pipeline: empathize → solve → innovate","docs/creative-artifacts"
|
|
75
76
|
"core","anytime","validate-framework","validate-framework","gaia-validate-framework","false","orchestrator","Run GAIA framework self-validation","n/a"
|
|
76
|
-
"lifecycle","4-implementation","change-request","change-request","gaia-change-request","false","pm","
|
|
77
|
+
"lifecycle","4-implementation","change-request","change-request","gaia-change-request","false","pm","DEPRECATED — Redirects to /gaia-add-feature. Use add-feature instead.","docs/planning-artifacts"
|
|
78
|
+
"lifecycle","4-implementation","add-feature","add-feature","gaia-add-feature","false","pm","Triage and route a fix, enhancement, or feature through affected artifacts","docs/planning-artifacts"
|
|
77
79
|
"lifecycle","4-implementation","add-stories","add-stories","gaia-add-stories","false","pm","Add incremental stories to existing epics-and-stories.md","docs/planning-artifacts"
|
|
78
80
|
"lifecycle","4-implementation","tech-debt-review","tech-debt-review","gaia-tech-debt-review","false","sm","Aggregate, classify, and prioritize technical debt","docs/implementation-artifacts"
|
|
79
|
-
"lifecycle","4-implementation","agent-validator","agent-validator","gaia-agent-validator","false","
|
|
80
|
-
"lifecycle","4-implementation","val-validate","val-validate","gaia-val-validate","false","
|
|
81
|
-
"lifecycle","4-implementation","val-validate-
|
|
82
|
-
"lifecycle","4-implementation","
|
|
81
|
+
"lifecycle","4-implementation","agent-validator","agent-validator","gaia-agent-validator","false","validator","Val — Validator Agent for artifact verification","n/a"
|
|
82
|
+
"lifecycle","4-implementation","val-validate","val-validate","gaia-val-validate","false","validator","Validate artifact against codebase and ground truth","docs/implementation-artifacts"
|
|
83
|
+
"lifecycle","4-implementation","val-validate-artifact","val-validate-artifact","gaia-val-validate","false","validator","Validate artifact against codebase and ground truth","docs/implementation-artifacts"
|
|
84
|
+
"lifecycle","4-implementation","val-validate-plan","val-validate-plan","gaia-val-validate-plan","false","validator","Validate implementation plan before execution","docs/implementation-artifacts"
|
|
85
|
+
"lifecycle","4-implementation","val-refresh-ground-truth","val-refresh-ground-truth","gaia-refresh-ground-truth","false","validator","Rescan filesystem and update verified ground truth","_memory/validator-sidecar"
|
|
86
|
+
"lifecycle","4-implementation","val-save-session","val-save-session","gaia-val-save-session","false","validator","Persist validation decisions to memory sidecar","_memory/validator-sidecar"
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# After modifying this file, run /gaia-build-configs to regenerate resolved configs.
|
|
4
4
|
|
|
5
5
|
framework_name: "GAIA"
|
|
6
|
-
framework_version: "1.
|
|
6
|
+
framework_version: "1.66.0"
|
|
7
7
|
|
|
8
8
|
# User settings
|
|
9
9
|
user_name: "jlouage"
|
|
@@ -23,6 +23,7 @@ project_path: "Gaia-framework"
|
|
|
23
23
|
# Val integration — feature gates for inline validation
|
|
24
24
|
val_integration:
|
|
25
25
|
template_output_review: true # Show [v] Review with Val at template-output prompts
|
|
26
|
+
val_validate_output: true # Enable automatic Val validation when workflow declares val_validate_output: true
|
|
26
27
|
|
|
27
28
|
# Output paths
|
|
28
29
|
output_folder: "{project-root}/docs"
|
|
@@ -72,11 +72,11 @@ sequence:
|
|
|
72
72
|
phase: 2-planning
|
|
73
73
|
command: /gaia-create-prd
|
|
74
74
|
next:
|
|
75
|
-
primary: /gaia-validate
|
|
75
|
+
primary: /gaia-val-validate
|
|
76
76
|
|
|
77
|
-
validate
|
|
77
|
+
val-validate:
|
|
78
78
|
phase: 2-planning
|
|
79
|
-
command: /gaia-validate
|
|
79
|
+
command: /gaia-val-validate
|
|
80
80
|
next:
|
|
81
81
|
on_pass: /gaia-create-ux
|
|
82
82
|
on_fail: /gaia-edit-prd
|
|
@@ -85,7 +85,7 @@ sequence:
|
|
|
85
85
|
phase: 2-planning
|
|
86
86
|
command: /gaia-edit-prd
|
|
87
87
|
next:
|
|
88
|
-
primary: /gaia-validate
|
|
88
|
+
primary: /gaia-val-validate
|
|
89
89
|
|
|
90
90
|
create-ux-design:
|
|
91
91
|
phase: 2-planning
|
|
@@ -340,6 +340,12 @@ sequence:
|
|
|
340
340
|
- command: /gaia-create-story
|
|
341
341
|
context: "To create individual stories from triaged findings"
|
|
342
342
|
|
|
343
|
+
action-items:
|
|
344
|
+
phase: 4-implementation
|
|
345
|
+
command: /gaia-action-items
|
|
346
|
+
next:
|
|
347
|
+
standalone: true
|
|
348
|
+
|
|
343
349
|
retrospective:
|
|
344
350
|
phase: 4-implementation
|
|
345
351
|
command: /gaia-retro
|
|
@@ -453,6 +459,22 @@ sequence:
|
|
|
453
459
|
- command: /gaia-dev-story
|
|
454
460
|
context: "To implement performance fixes"
|
|
455
461
|
|
|
462
|
+
# -- Deprecated (kept for manifest consistency until workflows are removed) --
|
|
463
|
+
validate-prd:
|
|
464
|
+
module: lifecycle
|
|
465
|
+
command: /gaia-validate-prd
|
|
466
|
+
deprecated: true
|
|
467
|
+
next:
|
|
468
|
+
standalone: true
|
|
469
|
+
note: "Deprecated — superseded by /gaia-val-validate. Will be removed in E10-S3."
|
|
470
|
+
|
|
471
|
+
edit-ux-design:
|
|
472
|
+
module: lifecycle
|
|
473
|
+
command: /gaia-edit-ux
|
|
474
|
+
next:
|
|
475
|
+
standalone: true
|
|
476
|
+
note: "Standalone UX design editor"
|
|
477
|
+
|
|
456
478
|
# -- Quick flow --
|
|
457
479
|
quick-spec:
|
|
458
480
|
module: lifecycle
|
|
@@ -3,11 +3,11 @@
|
|
|
3
3
|
|
|
4
4
|
modules:
|
|
5
5
|
- name: core
|
|
6
|
-
version: "1.12.
|
|
6
|
+
version: "1.12.2"
|
|
7
7
|
path: "_gaia/core"
|
|
8
8
|
type: built-in
|
|
9
9
|
- name: lifecycle
|
|
10
|
-
version: "1.37.
|
|
10
|
+
version: "1.37.2"
|
|
11
11
|
path: "_gaia/lifecycle"
|
|
12
12
|
type: built-in
|
|
13
13
|
- name: dev
|
|
@@ -19,6 +19,6 @@ modules:
|
|
|
19
19
|
path: "_gaia/creative"
|
|
20
20
|
type: built-in
|
|
21
21
|
- name: testing
|
|
22
|
-
version: "1.8.
|
|
22
|
+
version: "1.8.1"
|
|
23
23
|
path: "_gaia/testing"
|
|
24
24
|
type: built-in
|
|
@@ -9,4 +9,6 @@ name,displayName,description,path,applicable_agents
|
|
|
9
9
|
"security-basics","Security Basics","OWASP Top 10, input validation, secrets, CORS/CSRF","_gaia/dev/skills/security-basics.md","all-dev,architect,security,devops"
|
|
10
10
|
"validation-patterns","Validation Patterns","Claim extraction, filesystem verification, cross-reference, severity classification, findings formatting","_gaia/lifecycle/skills/validation-patterns.md","validator"
|
|
11
11
|
"ground-truth-management","Ground Truth Management","Entry structure, incremental/full refresh, conflict resolution, archival, token budget, brownfield extraction","_gaia/lifecycle/skills/ground-truth-management.md","validator"
|
|
12
|
-
"memory-management","Memory Management","Session load/save, decision formatting, stale detection, deduplication, context summarization","_gaia/lifecycle/skills/memory-management.md","all"
|
|
12
|
+
"memory-management","Memory Management","Session load/save, decision formatting, stale detection, deduplication, context summarization, cross-ref loading, budget-monitoring","_gaia/lifecycle/skills/memory-management.md","all"
|
|
13
|
+
"memory-management-cross-agent","Memory Management Cross-Agent","Cross-agent memory read protocol for loading other agents' sidecar files","_gaia/lifecycle/skills/memory-management-cross-agent.md","all"
|
|
14
|
+
"document-rulesets","Document Rulesets","Artifact type detection, document-specific validation rulesets (prd, arch, ux, test-plan, epics), two-pass validation logic","_gaia/lifecycle/skills/document-rulesets.md","validator"
|
|
@@ -8,9 +8,10 @@ name,displayName,description,module,phase,path,command,agent
|
|
|
8
8
|
"technical-research","Technical Research","Research a technology","lifecycle","1-analysis","_gaia/lifecycle/workflows/1-analysis/technical-research/workflow.yaml","gaia-tech-research","analyst"
|
|
9
9
|
"create-product-brief","Create Product Brief","Create a product brief","lifecycle","1-analysis","_gaia/lifecycle/workflows/1-analysis/create-product-brief/workflow.yaml","gaia-product-brief","analyst"
|
|
10
10
|
"create-prd","Create PRD","Create a Product Requirements Document","lifecycle","2-planning","_gaia/lifecycle/workflows/2-planning/create-prd/workflow.yaml","gaia-create-prd","pm"
|
|
11
|
-
"validate-prd","Validate PRD","
|
|
11
|
+
"validate-prd","Validate PRD (deprecated)","DEPRECATED — Use /gaia-val-validate instead","lifecycle","2-planning","_gaia/lifecycle/workflows/2-planning/validate-prd/workflow.yaml","gaia-validate-prd","pm"
|
|
12
12
|
"edit-prd","Edit PRD","Edit an existing PRD","lifecycle","2-planning","_gaia/lifecycle/workflows/2-planning/edit-prd/workflow.yaml","gaia-edit-prd","pm"
|
|
13
13
|
"create-ux-design","Create UX Design","Plan UX patterns and design specs","lifecycle","2-planning","_gaia/lifecycle/workflows/2-planning/create-ux-design/workflow.yaml","gaia-create-ux","ux-designer"
|
|
14
|
+
"edit-ux-design","Edit UX Design","Edit an existing UX design","lifecycle","2-planning","_gaia/lifecycle/workflows/2-planning/edit-ux-design/workflow.yaml","gaia-edit-ux","ux-designer"
|
|
14
15
|
"create-architecture","Create Architecture","Design system architecture","lifecycle","3-solutioning","_gaia/lifecycle/workflows/3-solutioning/create-architecture/workflow.yaml","gaia-create-arch","architect"
|
|
15
16
|
"edit-architecture","Edit Architecture","Edit an existing architecture document","lifecycle","3-solutioning","_gaia/lifecycle/workflows/3-solutioning/edit-architecture/workflow.yaml","gaia-edit-arch","architect"
|
|
16
17
|
"create-epics-stories","Create Epics and Stories","Break requirements into epics and stories","lifecycle","3-solutioning","_gaia/lifecycle/workflows/3-solutioning/create-epics-stories/workflow.yaml","gaia-create-epics","pm"
|
|
@@ -60,9 +61,9 @@ name,displayName,description,module,phase,path,command,agent
|
|
|
60
61
|
"epic-status","Epic Status","Show epic completion dashboard across all sprints","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/epic-status/workflow.yaml","gaia-epic-status","sm"
|
|
61
62
|
"triage-findings","Triage Findings","Triage development findings into backlog stories","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/triage-findings/workflow.yaml","gaia-triage-findings","sm"
|
|
62
63
|
"creative-sprint","Creative Sprint","Multi-agent creative pipeline: empathize → solve → innovate","creative","anytime","_gaia/creative/workflows/creative-sprint/workflow.yaml","gaia-creative-sprint","orchestrator"
|
|
63
|
-
"change-request","Change Request","
|
|
64
|
+
"change-request","Change Request (deprecated)","DEPRECATED — Use /gaia-add-feature instead. Redirects to add-feature workflow.","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/change-request/workflow.yaml","gaia-change-request","pm"
|
|
64
65
|
"add-stories","Add Stories","Add new stories to existing epics or create new epics with stories","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/add-stories/workflow.yaml","gaia-add-stories","pm"
|
|
65
|
-
"add-feature","Add Feature","
|
|
66
|
+
"add-feature","Add Feature","Triage and route a fix, enhancement, or feature through affected artifacts","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/add-feature/workflow.yaml","gaia-add-feature","pm"
|
|
66
67
|
"tech-debt-review","Tech Debt Review","Aggregate and prioritize technical debt","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/tech-debt-review/workflow.yaml","gaia-tech-debt-review","sm"
|
|
67
68
|
"val-validate-artifact","Validate Artifact","Validate artifact against codebase and ground truth","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/val-validate-artifact/workflow.yaml","gaia-val-validate","validator"
|
|
68
69
|
"val-validate-plan","Validate Plan","Validate implementation plan before execution","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/val-validate-plan/workflow.yaml","gaia-val-validate-plan","validator"
|
|
@@ -71,3 +72,4 @@ name,displayName,description,module,phase,path,command,agent
|
|
|
71
72
|
"check-dod","Check Definition of Done","Check Definition of Done criteria for a story before review transition","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/check-dod/workflow.yaml","gaia-check-dod","sm"
|
|
72
73
|
"run-all-reviews","Run All Reviews","Runs all 6 review workflows sequentially via subagents","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/run-all-reviews/workflow.yaml","gaia-run-all-reviews","orchestrator"
|
|
73
74
|
"check-review-gate","Check Review Gate","Check composite review gate status and transition story to done if all reviews pass","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/check-review-gate/workflow.yaml","gaia-check-review-gate","sm"
|
|
75
|
+
"action-items","Action Items","Process and resolve action items from retro, triage, tech-debt, and correct-course","lifecycle","4-implementation","_gaia/lifecycle/workflows/4-implementation/action-items/workflow.yaml","gaia-action-items","orchestrator"
|
package/_gaia/core/config.yaml
CHANGED
|
@@ -50,6 +50,12 @@ execution modes (normal/yolo/planning), checkpoints, and quality gates.
|
|
|
50
50
|
<action>Resolve {installed_path} from workflow.yaml location</action>
|
|
51
51
|
<action>Resolve {date} to current date</action>
|
|
52
52
|
<action>Ask user for any remaining unresolved variables</action>
|
|
53
|
+
|
|
54
|
+
<!-- Template Resolution (ADR-020, FR-101) — custom/templates/ overrides _gaia/lifecycle/templates/ -->
|
|
55
|
+
<!-- Resolution order for template reads: custom/templates/{filename} > _gaia/lifecycle/templates/{filename} -->
|
|
56
|
+
<!-- Resolution order for template writes: custom/templates/ ONLY — NEVER _gaia/lifecycle/templates/ -->
|
|
57
|
+
<action>Resolve template paths: If workflow.yaml declares a 'template' field, extract the template filename from the fully resolved template path (e.g., extract "story-template.md" from "{project-root}/_gaia/lifecycle/templates/story-template.md"). Check if {project-root}/custom/templates/{filename} exists and is non-empty (file size > 0 bytes). If yes: the custom template overrides the framework default — replace the resolved template variable with the custom path ({project-root}/custom/templates/{filename}). The custom template takes full precedence and completely replaces the framework default (no merge). If no (custom/templates/ directory does not exist, the specific file is not found, or the file is empty / 0 bytes): keep the original resolved framework path unchanged. No error, no warning on fallback — this is silent. If workflow.yaml has no 'template' field, skip template resolution entirely.</action>
|
|
58
|
+
<action>Template write-path mandate: Any workflow that writes or modifies template files MUST write to {project-root}/custom/templates/, NEVER to {project-root}/_gaia/lifecycle/templates/. Framework default templates are read-only.</action>
|
|
53
59
|
</step>
|
|
54
60
|
|
|
55
61
|
<step n="2" title="Preflight Validation">
|
|
@@ -68,8 +74,17 @@ execution modes (normal/yolo/planning), checkpoints, and quality gates.
|
|
|
68
74
|
<action if="agent is 'dev-*' (wildcard)">Check if workflow.yaml declares agent_auto_detect: true. If true, execute the agent_auto_detect_strategy from workflow.yaml to determine the stack. If auto-detection succeeds, resolve to {project-root}/_gaia/dev/agents/{detected_stack}-dev.md and inform user: "Auto-detected developer: {agent_name} based on {detection_source}." If auto-detection fails or agent_auto_detect is false/absent: ask user which stack developer to use (typescript, angular, flutter, java, python, mobile, go), then resolve to {project-root}/_gaia/dev/agents/{stack}-dev.md</action>
|
|
69
75
|
<action if="agent file resolved">Read the agent persona file — adopt its persona, name, communication style, rules, and domain knowledge for the duration of this workflow</action>
|
|
70
76
|
<action if="agent file resolved">Do NOT execute the agent's activation protocol, greeting, or menu — the workflow engine controls step execution</action>
|
|
71
|
-
<action if="agent file resolved">Do NOT load the agent's memory sidecar — the workflow engine manages its own checkpoints</action>
|
|
72
77
|
<action if="agent file resolved">Check for {project-root}/_gaia/_config/agents/{agent-id}.customize.yaml. If found, load and merge overrides (persona_overrides, menu_additions, menu_removals, skill_additions, rule_additions, skill_overrides, skill_section_overrides). For dev agents, also check all-dev.customize.yaml and merge (agent-specific takes precedence over all-dev).</action>
|
|
78
|
+
|
|
79
|
+
<!-- Memory Load Protocol (E9-S7) — Load agent memory sidecar files after persona, before instructions -->
|
|
80
|
+
<action if="agent file resolved">Read {project-root}/_memory/config.yaml to resolve agent tier and sidecar path. If the file does not exist, log "Memory config not found — skipping memory loading." and skip all remaining memory load actions in this step.</action>
|
|
81
|
+
<action if="agent file resolved">Resolve the agent's tier classification: look up the resolved agent ID in _memory/config.yaml tier lists — check tiers.tier_1.agents, tiers.tier_2.agents, and tiers.tier_3.agents in that order. If the agent ID is not found in any tier list (untiered), treat as Tier 3 by default — load decision-log.md only if it exists, with no budget enforcement.</action>
|
|
82
|
+
<action if="agent file resolved">Resolve sidecar path: read agents.{agent-id}.sidecar from _memory/config.yaml, construct absolute path as {project-root}/_memory/{sidecar_value}/. If the agent entry is not found in the agents section, construct path as {project-root}/_memory/{agent-id}-sidecar/.</action>
|
|
83
|
+
<action if="agent file resolved">Check if the sidecar directory exists. If the directory does not exist or is empty, skip all file loading silently — no error, no warning. Proceed to Step 4.</action>
|
|
84
|
+
<action if="agent file resolved and tier == 1">Load canonical sidecar files (silently skip any that do not exist): ground-truth.md, decision-log.md, conversation-context.md (3 files). These provide the agent's persistent ground truth, decision history, and recent conversation context.</action>
|
|
85
|
+
<action if="agent file resolved and tier == 2">Load canonical sidecar files (silently skip any that do not exist): decision-log.md, conversation-context.md (2 files). Tier 2 agents do not have ground-truth.md.</action>
|
|
86
|
+
<action if="agent file resolved and tier == 3 or untiered">Load canonical sidecar file (silently skip if it does not exist): decision-log.md (1 file). Tier 3 and untiered agents receive minimal memory context.</action>
|
|
87
|
+
<action if="agent file resolved and tier in [1, 2]">Estimate token budget usage: sum the byte lengths of all loaded sidecar files, divide by the token_approximation value (default: 4 chars per token, from _memory/config.yaml archival.token_approximation). Compare against the agent's session_budget from the tier definition in _memory/config.yaml. If usage reaches or exceeds the budget_warn_at threshold (0.8 / 80% from _memory/config.yaml archival.budget_warn_at): display warning "Memory budget at {N}% for {agent_name} — {used}K of {budget}K tokens." For Tier 3 and untiered agents (session_budget: null), skip the token budget check entirely.</action>
|
|
73
88
|
</step>
|
|
74
89
|
|
|
75
90
|
<step n="4" title="Load Instructions">
|
|
@@ -82,16 +97,23 @@ execution modes (normal/yolo/planning), checkpoints, and quality gates.
|
|
|
82
97
|
<action>Check workflow.yaml for 'execution_mode' field — default to 'normal' if absent</action>
|
|
83
98
|
<action if="execution_mode != 'planning'">Skip this step — proceed to Process Instructions</action>
|
|
84
99
|
<action if="mode was explicitly set by caller (subagent prompt) AND mode is NOT yolo">Skip this step — use the caller-requested mode</action>
|
|
85
|
-
<action if="mode was explicitly set by caller as yolo">Still execute the Planning Gate to generate the plan. After generating, check if workflow.yaml declares val_auto_in_yolo: true and the planning step number (5) is in val_auto_in_yolo_steps. If so, auto-invoke val-validate-
|
|
100
|
+
<action if="mode was explicitly set by caller as yolo">Still execute the Planning Gate to generate the plan. After generating, check if workflow.yaml declares val_auto_in_yolo: true and the planning step number (5) is in val_auto_in_yolo_steps. If so, auto-invoke val-validate-plan to validate the plan. If Val returns CRITICAL/WARNING findings: auto-fix the plan, re-invoke Val, repeat up to 3 iterations. If resolved: auto-approve the plan and set runtime mode to yolo. If unresolved after 3 iterations: HALT with findings list. If Val prerequisites not met or val_auto_in_yolo is false: auto-approve the plan without Val and set runtime mode to yolo. Do NOT present the [a]/[y]/[r]/[x] prompt — the plan is auto-approved after Val passes.</action>
|
|
86
101
|
<action>Invoke discover-inputs protocol to load all declared input files</action>
|
|
87
102
|
<action>Parse the loaded instructions to extract: step titles, action summaries, template-output paths, optional steps, skill references, subagent invocations</action>
|
|
88
103
|
<action>For input files: extract brief context (key metadata, not full content)</action>
|
|
89
104
|
<action>Present structured execution plan to user using the planning-output format: Context, Files to Modify, Detailed Edits, Version Bumps (if applicable), Implementation Order, Verification. Omit empty sections.</action>
|
|
90
|
-
<action>
|
|
105
|
+
<action>Check if Val integration is available for the planning gate: read {project-root}/_gaia/_config/global.yaml and check if val_integration.template_output_review is true. Check if {project-root}/_gaia/lifecycle/agents/validator.md exists AND {project-root}/_memory/validator-sidecar/ exists. Set val_review_available = true only if all three conditions pass. If any condition fails, set val_review_available = false.</action>
|
|
106
|
+
<action if="val_review_available == true">Prompt: "[a] Approve (normal) | [y] Approve (YOLO) | [r] Revise plan | [v] Review with Val (recommended) | [x] Abort"</action>
|
|
107
|
+
<action if="val_review_available == false">Prompt: "[a] Approve (normal) | [y] Approve (YOLO) | [r] Revise plan | [x] Abort"</action>
|
|
91
108
|
<action if="[a]">Set runtime mode to normal — proceed to Process Instructions</action>
|
|
92
109
|
<action if="[y]">Set runtime mode to yolo — proceed to Process Instructions</action>
|
|
93
|
-
<action if="[r]">Ask for feedback, regenerate plan
|
|
110
|
+
<action if="[r]">Ask for feedback, regenerate plan. Previous findings are discarded — each [v] press triggers fresh validation with no caching. Re-prompt with the same options.</action>
|
|
94
111
|
<action if="[x]">HALT — write checkpoint noting user abort</action>
|
|
112
|
+
<action if="[v] and plan has zero steps">Display "Plan contains no steps to validate." and return to the planning gate prompt without invoking Val.</action>
|
|
113
|
+
<action if="[v]">Invoke val-validate-plan as a subagent, passing the execution plan and the source_workflow (current workflow name). Each [v] press runs fresh validation — previous findings are discarded after plan revision, no caching. The discussion loop allows the user to discuss findings with Val, selectively accept or dismiss individual findings, and re-validate after making changes.</action>
|
|
114
|
+
<action if="Val returns zero findings">Display "Validation complete: no issues found." and return to the planning gate prompt with options [a] | [y] | [r] | [v] | [x].</action>
|
|
115
|
+
<action if="Val returns findings">Present findings to the user. Enter the discussion loop: user can selectively accept, dismiss, or discuss individual findings. After the user finishes reviewing, return to the planning gate prompt with all options [a] | [y] | [r] | [v] | [x].</action>
|
|
116
|
+
<action if="Val subagent fails (model unavailable, crash, timeout, context too large)">Display "Val validation could not complete: {reason}. Continuing without validation." and return to the planning gate prompt with [a] | [y] | [r] | [x] options (no [v]).</action>
|
|
95
117
|
<action>Write checkpoint: planning gate approved, selected runtime mode</action>
|
|
96
118
|
</step>
|
|
97
119
|
|
|
@@ -122,6 +144,7 @@ execution modes (normal/yolo/planning), checkpoints, and quality gates.
|
|
|
122
144
|
<action>At template-output in normal mode: first check if workflow.yaml declares a template_output_prompt field. If set to "auto": skip the template-output prompt entirely — save the file and auto-proceed to the next step with no user interaction. This is for read-only outputs (dashboards, reports) that need no user review. If set to a custom string (not "auto"): use that custom prompt string instead of the default options — parse [e] and [v] handlers from it as usual, and for any other user input auto-proceed to the next step. If template_output_prompt is absent: use the default prompt — if Val integration is enabled, show user the output and offer [c] Continue | [y] YOLO | [e] Edit | [v] Review with Val. If Val integration is not enabled, show user the output and offer [c]ontinue [y]olo [e]dit.</action>
|
|
123
145
|
<action>At [v] handler: when user presses [v], first check if the artifact file path has content. If the artifact has not been written yet or is empty, display "No artifact content to validate yet." and return to the template-output prompt without invoking Val. If content exists, invoke val-validate-artifact as a subagent, passing the artifact_path (the file just saved at template-output) and the source_workflow (the current workflow name from workflow.yaml). If Val completes and returns findings, present findings to the user and let user approve which findings to apply. Only approved findings are written to the artifact under a "## Validation Findings" section. After writing, return to the template-output prompt with the updated artifact content. If Val completes with zero findings, display "Validation complete: no issues found." and return to the template-output prompt with [c]/[y]/[e]/[v] options. If Val's subagent invocation fails for any reason (model unavailable, context too large, timeout), display "Val validation could not complete: {reason}. Continuing without validation." and return to the template-output prompt with [c]/[y]/[e]/[v] options. The user is never left stuck.</action>
|
|
124
146
|
<action>At template-output in yolo mode: auto-continue UNLESS open question indicators were detected — if detected, pause and display guidance as in normal mode. Open questions require human input and cannot be auto-answered. The [v] option is not auto-triggered in YOLO mode UNLESS the workflow.yaml declares val_auto_in_yolo: true AND the current instruction step number is listed in val_auto_in_yolo_steps AND Val integration prerequisites pass (global.yaml val_integration.template_output_review is true, validator.md exists, validator-sidecar/ exists). When all conditions are met: auto-invoke val-validate-artifact as a subagent with the artifact_path (file just saved) and source_workflow. If Val returns CRITICAL or WARNING findings: the dev agent must auto-fix them, then re-invoke Val to re-validate. Repeat this fix→validate loop up to 3 iterations. If resolved: save findings and fixes to artifact and validator-sidecar memory, then auto-continue. If unresolved after 3 iterations: HALT and inform user with the list of unresolved findings. INFO-level findings are logged to artifact and validator-sidecar memory but do not block. If Val invocation fails (model unavailable, timeout, context too large): HALT and inform user "Val validation could not complete: {reason}. Cannot proceed without validation in YOLO mode." — do NOT auto-continue.</action>
|
|
147
|
+
<action>At template-output with val_validate_output flag (per-workflow mandatory validation — ADR-017): after saving a template-output, check if the loaded workflow.yaml declares val_validate_output: true. If the flag is absent or false, skip this action entirely (backward compatible — no change in behavior for existing workflows). If the flag is true: first check the global emergency disable toggle by reading {project-root}/_gaia/_config/global.yaml and checking val_integration.val_validate_output. If the global toggle is false, skip validation entirely regardless of the workflow flag — this is the emergency kill switch. If both the workflow flag and global toggle are true: check Val integration prerequisites (validator.md exists, validator-sidecar/ exists). If prerequisites fail, skip validation silently — do not error. If prerequisites pass: auto-invoke val-validate-artifact as a subagent with the artifact_path (file just saved at template-output) and source_workflow. This applies in ALL execution modes — normal, yolo, and planning — because val_validate_output is a per-workflow mandatory validation requirement independent of user interaction mode. Precedence: if val_auto_in_yolo already triggered Val for this template-output (yolo mode only), val_validate_output does NOT re-invoke — one validation per template-output is sufficient. If Val returns CRITICAL or WARNING findings: auto-fix them, then re-invoke Val to re-validate. Repeat this auto-fix loop up to 3 iterations. If resolved within 3 iterations: save findings and fixes to artifact and validator-sidecar memory, then continue. If unresolved after 3 iterations: HALT and present the list of unresolved findings to the user. INFO-level findings are logged but do not block. If Val invocation fails (model unavailable, timeout, context too large): HALT and inform user "Val validation could not complete: {reason}."</action>
|
|
125
148
|
<action>When a subagent returns: present summary of results. In normal mode: wait for user [c]ontinue before proceeding. Subagent completion MUST NOT auto-advance the workflow.</action>
|
|
126
149
|
<action>After each step completes: write checkpoint with step number, key variables, output paths, and files_touched (for each file created/modified during this workflow, run shasum -a 256 {path} and record path, checksum as "sha256:{hex}", last_modified as ISO 8601)</action>
|
|
127
150
|
</step>
|
|
@@ -171,7 +194,10 @@ execution modes (normal/yolo/planning), checkpoints, and quality gates.
|
|
|
171
194
|
<execution-modes>
|
|
172
195
|
<mode name="normal">
|
|
173
196
|
Pause at every template-output for user confirmation.
|
|
174
|
-
Prompt: "[c] Continue | [y] Switch to YOLO | [e] Edit output"
|
|
197
|
+
Prompt: "[c] Continue | [y] Switch to YOLO | [e] Edit output | [v] Review with Val"
|
|
198
|
+
The [v] option is shown when Val integration is enabled (val_integration.template_output_review: true in global.yaml,
|
|
199
|
+
validator.md exists, and validator-sidecar/ exists). When [v] is selected, the engine invokes val-validate-artifact
|
|
200
|
+
as a subagent to validate the saved artifact. If Val is not enabled, only [c]/[y]/[e] are shown.
|
|
175
201
|
Pause at every ask tag — present the question and WAIT for user response.
|
|
176
202
|
NEVER infer or skip an ask, even if the answer appears available from context.
|
|
177
203
|
Pause when a subagent returns — show results summary and wait for [c]ontinue.
|
|
@@ -2,16 +2,44 @@
|
|
|
2
2
|
<description>
|
|
3
3
|
Shared protocol invoked by each review workflow after updating its Review Gate row.
|
|
4
4
|
Checks if ALL reviews have passed and transitions story to done if so.
|
|
5
|
+
Supports infrastructure review gate adaptations (ADR-022 §10.16.6):
|
|
6
|
+
stories tracing to infra requirements (IR-/OR-/SR- prefixes) use adapted gate criteria.
|
|
5
7
|
</description>
|
|
6
8
|
<critical>
|
|
7
9
|
<mandate>The Review Gate table must have EXACTLY 6 rows: Code Review, QA Tests, Security Review, Test Automation, Test Review, Performance Review. No other rows are valid. If extra rows exist, remove them.</mandate>
|
|
10
|
+
<mandate>For infrastructure stories, 4 of 6 gates use adapted criteria. Code Review and Security Review remain unchanged for all story types.</mandate>
|
|
8
11
|
</critical>
|
|
9
|
-
|
|
12
|
+
|
|
13
|
+
<!-- Infra Review Gate Substitutions (FR-128, ADR-022 §10.16.6)
|
|
14
|
+
When a story traces to infrastructure requirements, the following gate
|
|
15
|
+
criteria are substituted. The gate row NAMES in the Review Gate table
|
|
16
|
+
stay the same (for compatibility), but the review workflows apply
|
|
17
|
+
infra-specific criteria instead of standard application criteria.
|
|
18
|
+
|
|
19
|
+
| Standard Gate | Infra Equivalent | Changed? |
|
|
20
|
+
| Code Review | IaC Code Review | Unchanged — same workflow, IaC expertise expected |
|
|
21
|
+
| QA Tests | Policy-as-Code Validation | Checkov/tfsec/OPA pass replaces unit/integration test pass |
|
|
22
|
+
| Security Review | Security Review | Unchanged — critical for infrastructure |
|
|
23
|
+
| Test Automation | Plan Validation + Drift Checks | terraform plan assertions replace automated test coverage |
|
|
24
|
+
| Test Review | Policy Review | OPA/Rego coverage replaces test quality review |
|
|
25
|
+
| Performance Review | Cost Review + Scaling Validation | Cost analysis and autoscaling validation replace load testing |
|
|
26
|
+
-->
|
|
27
|
+
|
|
28
|
+
<step n="1" title="Read Review Gate and Determine Gate Type">
|
|
10
29
|
<action>Read the story file's Review Gate table</action>
|
|
11
30
|
<action>If Review Gate section is missing: initialize it with EXACTLY 6 rows — Code Review (PENDING), QA Tests (PENDING), Security Review (PENDING), Test Automation (PENDING), Test Review (PENDING), Performance Review (PENDING). Do NOT add any other rows.</action>
|
|
12
31
|
<action>If Review Gate table has extra rows beyond the 6 valid ones: remove the invalid rows</action>
|
|
13
32
|
<action>Parse each row: Review name, Status (PENDING | PASSED | FAILED), Report link</action>
|
|
33
|
+
|
|
34
|
+
<!-- Infra Gate Detection (FR-129): per-story gate type selection based on requirement ID prefix -->
|
|
35
|
+
<action>Read the story file's YAML frontmatter traces_to field (e.g., traces_to: [IR-001, FR-128])</action>
|
|
36
|
+
<action>Determine gate_type for this individual story by scanning its traces_to entries:
|
|
37
|
+
- If ANY entry has an IR-, OR-, or SR- prefix → set gate_type = "infra"
|
|
38
|
+
- If entries have only FR- or NFR- prefixes (or traces_to is empty/absent) → set gate_type = "standard"
|
|
39
|
+
Each story is evaluated independently — in platform projects with mixed stories, each story gets the gate set matching its own requirement prefix, not a single gate set for the whole project.</action>
|
|
40
|
+
<action if="gate_type == infra">Log: "Infra review gates detected for this story (traces to IR-/OR-/SR- requirements). Applying infrastructure gate criteria: QA Tests → Policy-as-Code Validation, Test Automation → Plan Validation + Drift Checks, Performance Review → Cost Review + Scaling Validation, Test Review → Policy Review. Code Review and Security Review remain unchanged."</action>
|
|
14
41
|
</step>
|
|
42
|
+
|
|
15
43
|
<step n="2" title="Evaluate Gate and Transition">
|
|
16
44
|
<critical>
|
|
17
45
|
<mandate>You MUST execute the transition even if the gate was already fully passed before this run. The purpose is to ensure story status matches gate state.</mandate>
|