convoke-agents 2.4.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/INSTALLATION.md +109 -86
- package/README.md +220 -163
- package/UPDATE-GUIDE.md +63 -23
- package/_bmad/bme/_gyre/README.md +100 -0
- package/_bmad/bme/_gyre/agents/.gitkeep +0 -0
- package/_bmad/bme/_gyre/agents/model-curator.md +128 -0
- package/_bmad/bme/_gyre/agents/readiness-analyst.md +127 -0
- package/_bmad/bme/_gyre/agents/review-coach.md +130 -0
- package/_bmad/bme/_gyre/agents/stack-detective.md +125 -0
- package/_bmad/bme/_gyre/compass-routing-reference.md +168 -0
- package/_bmad/bme/_gyre/config.yaml +22 -0
- package/_bmad/bme/_gyre/contracts/.gitkeep +0 -0
- package/_bmad/bme/_gyre/contracts/gc1-stack-profile.md +152 -0
- package/_bmad/bme/_gyre/contracts/gc2-capabilities-manifest.md +189 -0
- package/_bmad/bme/_gyre/contracts/gc3-findings-report.md +197 -0
- package/_bmad/bme/_gyre/contracts/gc4-feedback-loop.md +209 -0
- package/_bmad/bme/_gyre/guides/ATLAS-USER-GUIDE.md +177 -0
- package/_bmad/bme/_gyre/guides/COACH-USER-GUIDE.md +172 -0
- package/_bmad/bme/_gyre/guides/LENS-USER-GUIDE.md +181 -0
- package/_bmad/bme/_gyre/guides/SCOUT-USER-GUIDE.md +158 -0
- package/_bmad/bme/_gyre/workflows/.gitkeep +0 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-01-select-repos.md +55 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-02-run-validation.md +78 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-03-score-results.md +143 -0
- package/_bmad/bme/_gyre/workflows/accuracy-validation/workflow.md +41 -0
- package/_bmad/bme/_gyre/workflows/delta-report/steps/step-01-load-history.md +63 -0
- package/_bmad/bme/_gyre/workflows/delta-report/steps/step-02-compute-delta.md +72 -0
- package/_bmad/bme/_gyre/workflows/delta-report/steps/step-03-present-delta.md +143 -0
- package/_bmad/bme/_gyre/workflows/delta-report/workflow.md +34 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-01-initialize.md +68 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-02-detect-stack.md +49 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-03-generate-model.md +52 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-04-analyze-gaps.md +42 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/steps/step-05-review-findings.md +128 -0
- package/_bmad/bme/_gyre/workflows/full-analysis/workflow.md +39 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-01-load-manifest.md +70 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-02-observability-analysis.md +110 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-03-deployment-analysis.md +87 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-04-cross-domain-correlation.md +105 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/steps/step-05-present-findings.md +172 -0
- package/_bmad/bme/_gyre/workflows/gap-analysis/workflow.md +38 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-01-load-profile.md +74 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-02-generate-capabilities.md +116 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-03-web-enrichment.md +89 -0
- package/_bmad/bme/_gyre/workflows/model-generation/steps/step-04-write-manifest.md +122 -0
- package/_bmad/bme/_gyre/workflows/model-generation/workflow.md +40 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-01-load-context.md +86 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-02-walkthrough.md +116 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-03-apply-amendments.md +92 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-04-capture-feedback.md +107 -0
- package/_bmad/bme/_gyre/workflows/model-review/steps/step-05-summary.md +60 -0
- package/_bmad/bme/_gyre/workflows/model-review/workflow.md +41 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-01-scan-filesystem.md +176 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-02-classify-stack.md +111 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/steps/step-03-guard-questions.md +117 -0
- package/_bmad/bme/_gyre/workflows/stack-detection/workflow.md +42 -0
- package/_bmad/bme/_vortex/config.yaml +1 -1
- package/package.json +6 -2
- package/scripts/archive.js +304 -0
- package/scripts/convoke-doctor.js +146 -132
- package/scripts/docs-audit.js +21 -5
- package/scripts/install-gyre-agents.js +140 -0
- package/scripts/install-vortex-agents.js +0 -0
- package/scripts/update/lib/agent-registry.js +70 -0
- package/scripts/update/lib/refresh-installation.js +152 -30
- package/scripts/update/lib/validator.js +160 -1
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 1
|
|
3
|
+
workflow: accuracy-validation
|
|
4
|
+
title: Select Ground Truth Repos
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 1: Select Ground Truth Repos
|
|
8
|
+
|
|
9
|
+
Choose ≥3 synthetic ground truth repositories representing diverse stack archetypes.
|
|
10
|
+
|
|
11
|
+
## MANDATORY EXECUTION RULES
|
|
12
|
+
|
|
13
|
+
- Select repos that are well-known, publicly available, and representative of their archetype
|
|
14
|
+
- Each repo must have a DIFFERENT primary language AND deployment pattern
|
|
15
|
+
- Do NOT use toy projects — repos must have real production-grade structure
|
|
16
|
+
|
|
17
|
+
## RECOMMENDED ARCHETYPES
|
|
18
|
+
|
|
19
|
+
Select at least 3 from:
|
|
20
|
+
|
|
21
|
+
| # | Archetype | Example Repo | Stack Signature |
|
|
22
|
+
|---|-----------|-------------|-----------------|
|
|
23
|
+
| 1 | Go microservice on K8s | CNCF project (e.g., CoreDNS, Prometheus) | Go + gRPC/REST + Kubernetes + Prometheus |
|
|
24
|
+
| 2 | Node.js web service | Express/Fastify API with Docker | Node.js + REST + Docker + GitHub Actions |
|
|
25
|
+
| 3 | Python data pipeline | Airflow DAG or FastAPI service | Python + Celery/Airflow + Docker Compose |
|
|
26
|
+
| 4 | JVM enterprise service | Spring Boot with Gradle | Java + REST + Maven/Gradle + Jenkins |
|
|
27
|
+
| 5 | Rust system service | Actix/Axum with monitoring | Rust + REST + Docker + CI/CD |
|
|
28
|
+
|
|
29
|
+
## SELECTION PROCESS
|
|
30
|
+
|
|
31
|
+
1. Present the archetype options to the user
|
|
32
|
+
2. User selects ≥3 (or accepts the recommended set)
|
|
33
|
+
3. For each selected archetype, confirm the specific repo or let Atlas use a synthetic profile
|
|
34
|
+
|
|
35
|
+
**Synthetic profile option:** If specific repos are unavailable, Atlas can generate capabilities based on the archetype description alone (the Stack Profile simulates what Scout would produce). Note this in the results as "synthetic profile" vs "live repo".
|
|
36
|
+
|
|
37
|
+
## OUTPUT
|
|
38
|
+
|
|
39
|
+
Record selections as a table:
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
## Selected Archetypes
|
|
43
|
+
|
|
44
|
+
| # | Archetype | Repo/Profile | Method |
|
|
45
|
+
|---|-----------|-------------|--------|
|
|
46
|
+
| 1 | [archetype] | [repo URL or "synthetic"] | [live scan / synthetic profile] |
|
|
47
|
+
| 2 | [archetype] | [repo URL or "synthetic"] | [live scan / synthetic profile] |
|
|
48
|
+
| 3 | [archetype] | [repo URL or "synthetic"] | [live scan / synthetic profile] |
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## NEXT STEP
|
|
54
|
+
|
|
55
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-02-run-validation.md
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 2
|
|
3
|
+
workflow: accuracy-validation
|
|
4
|
+
title: Run Validation
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 2: Run Validation
|
|
8
|
+
|
|
9
|
+
For each selected archetype, run stack detection + model generation and collect the capabilities manifest.
|
|
10
|
+
|
|
11
|
+
## MANDATORY EXECUTION RULES
|
|
12
|
+
|
|
13
|
+
- Process each archetype independently — do not carry context between runs
|
|
14
|
+
- Record the exact Stack Profile (GC1) used for each archetype
|
|
15
|
+
- Record the complete capabilities manifest (GC2) generated for each
|
|
16
|
+
- If using live repos, run Scout's scan sequence from step-01-scan-filesystem.md
|
|
17
|
+
- If using synthetic profiles, construct a GC1-compliant Stack Profile from the archetype description
|
|
18
|
+
|
|
19
|
+
## EXECUTION SEQUENCE
|
|
20
|
+
|
|
21
|
+
For each archetype:
|
|
22
|
+
|
|
23
|
+
### 1. Produce Stack Profile
|
|
24
|
+
|
|
25
|
+
**Live repo method:**
|
|
26
|
+
- Run Scout's filesystem scan (step-01-scan-filesystem.md) against the repo
|
|
27
|
+
- Classify the stack (step-02-classify-stack.md)
|
|
28
|
+
- Skip guard questions (assume high confidence for validation purposes)
|
|
29
|
+
- Record the resulting GC1 Stack Profile
|
|
30
|
+
|
|
31
|
+
**Synthetic profile method:**
|
|
32
|
+
- Construct a GC1-compliant stack profile from the archetype description:
|
|
33
|
+
```yaml
|
|
34
|
+
stack_profile:
|
|
35
|
+
primary_language: "[from archetype]"
|
|
36
|
+
primary_framework: "[from archetype]"
|
|
37
|
+
secondary_stacks: []
|
|
38
|
+
container_orchestration: "[from archetype]"
|
|
39
|
+
ci_cd_platform: "[from archetype]"
|
|
40
|
+
observability_tooling: ["[from archetype]"]
|
|
41
|
+
cloud_provider: "[from archetype]"
|
|
42
|
+
communication_protocol: "[from archetype]"
|
|
43
|
+
detection_confidence: "high"
|
|
44
|
+
detection_summary: "[archetype description]"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 2. Generate Capabilities Manifest
|
|
48
|
+
|
|
49
|
+
- Run Atlas's model generation workflow against the Stack Profile
|
|
50
|
+
- Record the complete capabilities list
|
|
51
|
+
- Note: web search enrichment should be performed if available, skipped if not (record which)
|
|
52
|
+
|
|
53
|
+
### 3. Record Results
|
|
54
|
+
|
|
55
|
+
For each archetype, record:
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
## Archetype [N]: [Name]
|
|
59
|
+
|
|
60
|
+
**Stack Profile:** [summary]
|
|
61
|
+
**Method:** [live scan / synthetic profile]
|
|
62
|
+
**Web search:** [performed / skipped]
|
|
63
|
+
**Capabilities generated:** [count]
|
|
64
|
+
**Limited coverage:** [yes/no]
|
|
65
|
+
|
|
66
|
+
### Capabilities List
|
|
67
|
+
|
|
68
|
+
| # | ID | Category | Name | Description |
|
|
69
|
+
|---|-----|----------|------|-------------|
|
|
70
|
+
| 1 | [id] | [category] | [name] | [description] |
|
|
71
|
+
| ... | | | | |
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## NEXT STEP
|
|
77
|
+
|
|
78
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-03-score-results.md
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 3
|
|
3
|
+
workflow: accuracy-validation
|
|
4
|
+
title: Score Results
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 3: Score Results
|
|
8
|
+
|
|
9
|
+
Score each capability for relevance and compute accuracy per archetype.
|
|
10
|
+
|
|
11
|
+
## MANDATORY EXECUTION RULES
|
|
12
|
+
|
|
13
|
+
- Score EVERY capability — do not skip any
|
|
14
|
+
- Apply scoring criteria consistently across archetypes
|
|
15
|
+
- Be honest about borderline cases — use 0.5, not 1.0, when uncertain
|
|
16
|
+
- Document reasoning for any capability scored 0.0 (irrelevant)
|
|
17
|
+
- The user makes the final call on disputed scores
|
|
18
|
+
|
|
19
|
+
## SCORING CRITERIA
|
|
20
|
+
|
|
21
|
+
For each capability, assign a relevance score:
|
|
22
|
+
|
|
23
|
+
| Score | Label | Criteria |
|
|
24
|
+
|-------|-------|----------|
|
|
25
|
+
| **1.0** | Relevant | Would appear in a production readiness checklist for this stack, written by a domain expert. Clear, specific, and actionable. |
|
|
26
|
+
| **0.5** | Partially relevant | Related to the stack's concerns but either: (a) too generic to be actionable, (b) specific to a different deployment model, or (c) relevant but poorly described |
|
|
27
|
+
| **0.0** | Irrelevant | No meaningful relationship to this stack. Wrong technology, wrong domain, or nonsensical for the architecture. |
|
|
28
|
+
|
|
29
|
+
### Scoring Guidelines
|
|
30
|
+
|
|
31
|
+
**Score 1.0 when:**
|
|
32
|
+
- The capability references technology actually in the stack (e.g., "Kubernetes liveness probes" for a K8s-deployed service)
|
|
33
|
+
- The practice is industry-standard for this stack type (e.g., "structured logging" for any production service)
|
|
34
|
+
- The description explains WHY it matters for THIS stack (not a generic definition)
|
|
35
|
+
|
|
36
|
+
**Score 0.5 when:**
|
|
37
|
+
- The capability is correct but the description is too generic (e.g., "monitoring" without specifying what to monitor)
|
|
38
|
+
- The capability applies to a related but different deployment model (e.g., "ECS task health" for a K8s service)
|
|
39
|
+
- The capability is relevant but at a different maturity level than the stack suggests
|
|
40
|
+
|
|
41
|
+
**Score 0.0 when:**
|
|
42
|
+
- The capability references technology not in the stack at all
|
|
43
|
+
- The capability is a duplicate of another capability (higher-quality version gets the score)
|
|
44
|
+
- The capability is meaningless or contradictory (e.g., "serverless cold start optimization" for a bare-metal service)
|
|
45
|
+
|
|
46
|
+
## SCORING PROCESS
|
|
47
|
+
|
|
48
|
+
Present each archetype's capabilities for scoring:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
## Scoring: Archetype [N] — [Name]
|
|
52
|
+
|
|
53
|
+
| # | Capability | Score | Reasoning |
|
|
54
|
+
|---|-----------|:-----:|-----------|
|
|
55
|
+
| 1 | [name]: [description summary] | [1.0/0.5/0.0] | [brief reasoning] |
|
|
56
|
+
| 2 | ... | | |
|
|
57
|
+
|
|
58
|
+
**Total capabilities:** [N]
|
|
59
|
+
**Sum of scores:** [X]
|
|
60
|
+
**Accuracy:** [X/N = Y%]
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
After scoring all archetypes, present the summary:
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
## Accuracy Validation Results
|
|
67
|
+
|
|
68
|
+
| Archetype | Capabilities | Sum | Accuracy | Pass? |
|
|
69
|
+
|-----------|:-----------:|:---:|:--------:|:-----:|
|
|
70
|
+
| [Archetype 1] | [N] | [X] | [Y%] | ✓/✗ |
|
|
71
|
+
| [Archetype 2] | [N] | [X] | [Y%] | ✓/✗ |
|
|
72
|
+
| [Archetype 3] | [N] | [X] | [Y%] | ✓/✗ |
|
|
73
|
+
|
|
74
|
+
**Overall:** [PASS / FAIL] — [lowest accuracy]% (gate: ≥70%)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## GATE DECISION
|
|
78
|
+
|
|
79
|
+
### If PASS (all archetypes ≥70%):
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
✅ Model accuracy validated. Atlas is ready for production use.
|
|
83
|
+
|
|
84
|
+
**Findings:**
|
|
85
|
+
- Strongest archetype: [name] at [X%]
|
|
86
|
+
- Weakest archetype: [name] at [X%]
|
|
87
|
+
- Common issues: [brief summary of 0.0 and 0.5 patterns]
|
|
88
|
+
|
|
89
|
+
**Recommendation:** Proceed to Epic 3 (Absence Detection).
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### If FAIL (any archetype <70%):
|
|
93
|
+
|
|
94
|
+
```
|
|
95
|
+
❌ Model accuracy below threshold. Iteration required.
|
|
96
|
+
|
|
97
|
+
**Failing archetypes:**
|
|
98
|
+
- [name]: [X%] — [primary issue pattern]
|
|
99
|
+
|
|
100
|
+
**Iteration guidance:**
|
|
101
|
+
1. Review 0.0-scored capabilities — are they prompt issues or knowledge gaps?
|
|
102
|
+
2. Review 0.5-scored capabilities — can descriptions be improved?
|
|
103
|
+
3. Adjust Atlas's generation prompts (step-02-generate-capabilities.md)
|
|
104
|
+
4. Re-run this validation workflow
|
|
105
|
+
|
|
106
|
+
**BLOCKER:** Do not proceed to Epic 3 until ≥70% accuracy achieved across all archetypes.
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
## OUTPUT ARTIFACT
|
|
110
|
+
|
|
111
|
+
Write the validation results to `_bmad-output/gyre-artifacts/accuracy-validation-[date].md` for team reference:
|
|
112
|
+
|
|
113
|
+
```markdown
|
|
114
|
+
# Gyre Model Accuracy Validation — [date]
|
|
115
|
+
|
|
116
|
+
## Summary
|
|
117
|
+
- **Result:** [PASS/FAIL]
|
|
118
|
+
- **Archetypes tested:** [N]
|
|
119
|
+
- **Accuracy range:** [lowest%] — [highest%]
|
|
120
|
+
- **Gate threshold:** ≥70%
|
|
121
|
+
|
|
122
|
+
## Detailed Scores
|
|
123
|
+
[Full scoring tables from above]
|
|
124
|
+
|
|
125
|
+
## Methodology Notes
|
|
126
|
+
- [Live scan vs synthetic profiles used]
|
|
127
|
+
- [Web search performed vs skipped]
|
|
128
|
+
- [Any scoring disputes and resolutions]
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Gyre Compass
|
|
134
|
+
|
|
135
|
+
Based on what you just completed, here are your options:
|
|
136
|
+
|
|
137
|
+
| If you want to... | Consider next... | Agent | Why |
|
|
138
|
+
|---|---|---|---|
|
|
139
|
+
| Iterate model prompts | model-generation | Atlas 📐 | Improve accuracy for failing archetypes |
|
|
140
|
+
| Run full analysis pipeline | full-analysis | Scout 🔎 | Complete end-to-end with validated model |
|
|
141
|
+
| Re-detect a different stack | stack-detection | Scout 🔎 | Test against a new archetype |
|
|
142
|
+
|
|
143
|
+
> **Note:** These are recommendations. You can run any Gyre workflow at any time.
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: accuracy-validation
|
|
3
|
+
agent: model-curator
|
|
4
|
+
title: Model Accuracy Validation
|
|
5
|
+
description: Pre-pilot validation of model accuracy against synthetic ground truth repos — NFR19 ≥70% gate
|
|
6
|
+
steps: 3
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Accuracy Validation Workflow
|
|
10
|
+
|
|
11
|
+
Validates that Atlas can generate capabilities manifests that are ≥70% relevant across diverse stack archetypes. This is the **go/no-go gate** for the entire Gyre product (NFR19).
|
|
12
|
+
|
|
13
|
+
## Purpose
|
|
14
|
+
|
|
15
|
+
Model generation is the critical path for Gyre. If Atlas produces irrelevant capabilities, Lens will flag false positives and Coach will waste the user's time reviewing noise. This workflow provides a repeatable methodology to measure and iterate model quality.
|
|
16
|
+
|
|
17
|
+
## Scoring Methodology
|
|
18
|
+
|
|
19
|
+
Each generated capability is scored:
|
|
20
|
+
|
|
21
|
+
| Score | Meaning | Criteria |
|
|
22
|
+
|-------|---------|----------|
|
|
23
|
+
| 1.0 | **Relevant** | Capability is appropriate for this stack archetype and would appear in a production readiness checklist written by an expert |
|
|
24
|
+
| 0.5 | **Partially relevant** | Capability is tangentially related but not specific to this stack, OR is relevant but poorly described |
|
|
25
|
+
| 0.0 | **Irrelevant** | Capability has no meaningful relationship to this stack archetype |
|
|
26
|
+
|
|
27
|
+
**Accuracy formula:** `accuracy = sum_of_scores / total_capabilities`
|
|
28
|
+
|
|
29
|
+
## Gate Criteria
|
|
30
|
+
|
|
31
|
+
- Run against ≥3 stack archetypes (different language/framework/deployment combos)
|
|
32
|
+
- ≥70% accuracy across ALL archetypes (not averaged)
|
|
33
|
+
- If any archetype scores <70%, iterate Atlas prompts before proceeding to Epic 3
|
|
34
|
+
|
|
35
|
+
## Instructions
|
|
36
|
+
|
|
37
|
+
Load the first step to begin:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/accuracy-validation/steps/step-01-select-repos.md
|
|
41
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 1
|
|
3
|
+
workflow: delta-report
|
|
4
|
+
title: Load History
|
|
5
|
+
implements: Story 4.6 (FR39)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 1: Load History
|
|
9
|
+
|
|
10
|
+
Load current findings and previous findings for comparison.
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
|
|
14
|
+
- Current findings (`.gyre/findings.yaml`) MUST exist — if missing, STOP
|
|
15
|
+
- Previous findings (`.gyre/history.yaml`) are optional — first run has no history
|
|
16
|
+
|
|
17
|
+
## EXECUTION
|
|
18
|
+
|
|
19
|
+
### 1. Load Current Findings
|
|
20
|
+
|
|
21
|
+
Read `.gyre/findings.yaml`. If missing:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
❌ No current findings found at .gyre/findings.yaml
|
|
25
|
+
|
|
26
|
+
Delta report requires a current analysis to compare against.
|
|
27
|
+
Run gap-analysis first to generate findings, then run delta-report.
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Then STOP — do not proceed.
|
|
31
|
+
|
|
32
|
+
Parse the findings array and compound_findings array from GC3.
|
|
33
|
+
|
|
34
|
+
### 2. Load Previous Findings
|
|
35
|
+
|
|
36
|
+
Read `.gyre/history.yaml`. If missing:
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
💡 No previous findings found — this is your first delta-capable run.
|
|
40
|
+
|
|
41
|
+
All current findings will be tagged [NEW]. After this report,
|
|
42
|
+
your current findings will be saved as history for future comparison.
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Set `first_run = true` and proceed with empty previous findings.
|
|
46
|
+
|
|
47
|
+
If present, parse the findings array and compound_findings array.
|
|
48
|
+
|
|
49
|
+
### 3. Validate Compatibility
|
|
50
|
+
|
|
51
|
+
Check that both files have the same schema version. If versions differ:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
⚠️ Schema version mismatch: current is v[X], history is v[Y].
|
|
55
|
+
|
|
56
|
+
Proceeding with best-effort comparison — some findings may not correlate perfectly.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## NEXT STEP
|
|
62
|
+
|
|
63
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/delta-report/steps/step-02-compute-delta.md
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 2
|
|
3
|
+
workflow: delta-report
|
|
4
|
+
title: Compute Delta
|
|
5
|
+
implements: Story 4.6 (FR40)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 2: Compute Delta
|
|
9
|
+
|
|
10
|
+
Compare current findings against previous findings to classify each as new, carried-forward, or resolved.
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
|
|
14
|
+
- Match findings by `capability_ref` (primary key) and `domain` (secondary key)
|
|
15
|
+
- New = in current but not in previous
|
|
16
|
+
- Carried-forward = in both current and previous (same capability_ref)
|
|
17
|
+
- Resolved = in previous but not in current
|
|
18
|
+
- Also compute compound finding delta using `related_findings` arrays
|
|
19
|
+
|
|
20
|
+
## EXECUTION
|
|
21
|
+
|
|
22
|
+
### 1. Build Finding Maps
|
|
23
|
+
|
|
24
|
+
Create lookup maps from both finding sets:
|
|
25
|
+
- **Current map:** `{ capability_ref → finding }` for all current findings
|
|
26
|
+
- **Previous map:** `{ capability_ref → finding }` for all previous findings
|
|
27
|
+
|
|
28
|
+
### 2. Classify Findings
|
|
29
|
+
|
|
30
|
+
For each current finding:
|
|
31
|
+
- If `capability_ref` exists in previous map → **CARRIED** (carried-forward)
|
|
32
|
+
- Note any severity changes: "was [old severity], now [new severity]"
|
|
33
|
+
- Note any confidence changes
|
|
34
|
+
- If `capability_ref` NOT in previous map → **NEW**
|
|
35
|
+
|
|
36
|
+
For each previous finding:
|
|
37
|
+
- If `capability_ref` NOT in current map → **RESOLVED**
|
|
38
|
+
|
|
39
|
+
### 3. Classify Compound Findings
|
|
40
|
+
|
|
41
|
+
For each current compound:
|
|
42
|
+
- If both `related_findings` IDs have carried-forward counterparts → **CARRIED**
|
|
43
|
+
- Otherwise → **NEW**
|
|
44
|
+
|
|
45
|
+
For each previous compound:
|
|
46
|
+
- If either `related_findings` ID is resolved → **RESOLVED**
|
|
47
|
+
|
|
48
|
+
### 4. Compute Summary Statistics
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
delta_summary:
|
|
52
|
+
new_findings: [count]
|
|
53
|
+
carried_forward: [count]
|
|
54
|
+
resolved: [count]
|
|
55
|
+
severity_changes: [count]
|
|
56
|
+
new_compounds: [count]
|
|
57
|
+
resolved_compounds: [count]
|
|
58
|
+
net_change: [current total - previous total] (positive = more findings)
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 5. First Run Handling
|
|
62
|
+
|
|
63
|
+
If `first_run = true`:
|
|
64
|
+
- All current findings are **NEW**
|
|
65
|
+
- No carried-forward or resolved findings
|
|
66
|
+
- No previous compounds
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## NEXT STEP
|
|
71
|
+
|
|
72
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/delta-report/steps/step-03-present-delta.md
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 3
|
|
3
|
+
workflow: delta-report
|
|
4
|
+
title: Present Delta
|
|
5
|
+
implements: Story 4.6 (FR41)
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Step 3: Present Delta
|
|
9
|
+
|
|
10
|
+
Present the delta report and save current findings as history for next run.
|
|
11
|
+
|
|
12
|
+
## MANDATORY EXECUTION RULES
|
|
13
|
+
|
|
14
|
+
- Present delta with [NEW], [CARRIED] tags (FR41)
|
|
15
|
+
- List resolved findings briefly
|
|
16
|
+
- Note severity changes on carried-forward findings
|
|
17
|
+
- Save current findings as history after presentation
|
|
18
|
+
- Output must be copy-pasteable into Slack/Jira/docs (FR49)
|
|
19
|
+
|
|
20
|
+
## CONVERSATIONAL PRESENTATION
|
|
21
|
+
|
|
22
|
+
### 1. Delta Header
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
## Delta Report — [Crisis Mode / Anticipation Mode]
|
|
26
|
+
|
|
27
|
+
**Comparing:** [current analyzed_at] vs [previous analyzed_at]
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
If first run:
|
|
31
|
+
```
|
|
32
|
+
## Delta Report — First Run (Baseline)
|
|
33
|
+
|
|
34
|
+
**Baseline established:** [current analyzed_at]
|
|
35
|
+
All findings are new — this report establishes your baseline for future comparison.
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 2. Delta Summary
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
| Status | Count |
|
|
42
|
+
|--------|:-----:|
|
|
43
|
+
| 🆕 New findings | [N] |
|
|
44
|
+
| ➡️ Carried forward | [N] |
|
|
45
|
+
| ✅ Resolved | [N] |
|
|
46
|
+
| **Net change** | **[+/-N]** |
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. New Findings [NEW]
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
### 🆕 New Findings
|
|
53
|
+
|
|
54
|
+
| # | [NEW] Finding | Severity | Confidence |
|
|
55
|
+
|---|--------------|----------|:----------:|
|
|
56
|
+
| [ID] | [description] | [severity] | [confidence] |
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
If no new findings:
|
|
60
|
+
```
|
|
61
|
+
### 🆕 New Findings
|
|
62
|
+
|
|
63
|
+
No new findings since last analysis. ✅
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### 4. Carried Forward [CARRIED]
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
### ➡️ Carried Forward
|
|
70
|
+
|
|
71
|
+
| # | [CARRIED] Finding | Severity | Change |
|
|
72
|
+
|---|-------------------|----------|--------|
|
|
73
|
+
| [ID] | [description] | [severity] | [unchanged / was: old severity] |
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
If no carried-forward:
|
|
77
|
+
```
|
|
78
|
+
### ➡️ Carried Forward
|
|
79
|
+
|
|
80
|
+
No carried-forward findings — all previous findings are resolved! 🎉
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
### 5. Resolved Findings
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
### ✅ Resolved
|
|
87
|
+
|
|
88
|
+
These findings from your previous analysis were not found this time:
|
|
89
|
+
|
|
90
|
+
| # | Finding | Was Severity |
|
|
91
|
+
|---|---------|-------------|
|
|
92
|
+
| [ID] | [description] | [severity] |
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
If no resolved:
|
|
96
|
+
```
|
|
97
|
+
### ✅ Resolved
|
|
98
|
+
|
|
99
|
+
No findings were resolved since last analysis.
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### 6. Compound Finding Changes
|
|
103
|
+
|
|
104
|
+
If there are new or resolved compounds:
|
|
105
|
+
```
|
|
106
|
+
### ⚡ Compound Finding Changes
|
|
107
|
+
|
|
108
|
+
**New compounds:**
|
|
109
|
+
- [COMPOUND-NNN]: [description] (combines [ID] + [ID])
|
|
110
|
+
|
|
111
|
+
**Resolved compounds:**
|
|
112
|
+
- [COMPOUND-NNN]: [description] — no longer applies
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### 7. Save History
|
|
116
|
+
|
|
117
|
+
After presenting, save current findings as history:
|
|
118
|
+
|
|
119
|
+
1. Copy `.gyre/findings.yaml` content to `.gyre/history.yaml`
|
|
120
|
+
2. Confirm:
|
|
121
|
+
|
|
122
|
+
```
|
|
123
|
+
---
|
|
124
|
+
|
|
125
|
+
Current findings saved as history for next delta comparison.
|
|
126
|
+
Written to `.gyre/history.yaml`
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
### 8. Gyre Compass
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
## What's Next?
|
|
133
|
+
|
|
134
|
+
| If you want to... | Consider next... | Agent | Why |
|
|
135
|
+
|---|---|---|---|
|
|
136
|
+
| Review and customize findings | model-review | Coach 🏋️ | Walk through findings, amend capabilities |
|
|
137
|
+
| Re-run analysis to check progress | gap-analysis | Lens 🔬 | See if fixes resolved findings |
|
|
138
|
+
| Regenerate the model | model-generation | Atlas 📐 | Model may need adjustment |
|
|
139
|
+
| Run the full pipeline | full-analysis | Scout 🔎 | Complete end-to-end analysis |
|
|
140
|
+
| Share progress with your team | — | — | Commit .gyre/ directory to your repository |
|
|
141
|
+
|
|
142
|
+
> **Note:** These are recommendations. You can run any Gyre workflow at any time.
|
|
143
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: delta-report
|
|
3
|
+
agent: readiness-analyst
|
|
4
|
+
title: Delta Report
|
|
5
|
+
description: Compare current findings against previous run — track progress over time
|
|
6
|
+
steps: 3
|
|
7
|
+
implements: Epic 4 (Story 4.6)
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Delta Report Workflow
|
|
11
|
+
|
|
12
|
+
Compares current `.gyre/findings.yaml` against `.gyre/history.yaml` to show what changed: new findings, carried-forward findings, and resolved gaps.
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
- GC3 (Findings Report) at `.gyre/findings.yaml` — current analysis results
|
|
17
|
+
- `.gyre/history.yaml` — previous findings (saved automatically after each delta report)
|
|
18
|
+
|
|
19
|
+
## Pipeline
|
|
20
|
+
|
|
21
|
+
| Step | File | Action |
|
|
22
|
+
|------|------|--------|
|
|
23
|
+
| 1 | step-01-load-history.md | Load current and previous findings |
|
|
24
|
+
| 2 | step-02-compute-delta.md | Compute: new findings, carried-forward, resolved |
|
|
25
|
+
| 3 | step-03-present-delta.md | Present delta with [NEW], [CARRIED], resolved list |
|
|
26
|
+
|
|
27
|
+
## First Run Behavior
|
|
28
|
+
|
|
29
|
+
If no `.gyre/history.yaml` exists, this is the first delta-capable run. All current findings are tagged [NEW], and the current findings are saved as history for future comparison.
|
|
30
|
+
|
|
31
|
+
## Error Recovery
|
|
32
|
+
|
|
33
|
+
- If `.gyre/findings.yaml` missing: inform user to run gap-analysis first
|
|
34
|
+
- If `.gyre/history.yaml` missing: treat as first run — all findings are [NEW]
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
step: 1
|
|
3
|
+
workflow: full-analysis
|
|
4
|
+
title: Initialize Analysis
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Step 1: Initialize Analysis
|
|
8
|
+
|
|
9
|
+
Set up the `.gyre/` directory and detect the analysis mode.
|
|
10
|
+
|
|
11
|
+
## MANDATORY EXECUTION RULES
|
|
12
|
+
|
|
13
|
+
- Use Claude Code tools (Glob, Read) — do NOT ask the user for filesystem information
|
|
14
|
+
- Create `.gyre/` at the project root (or service root in monorepo) if it doesn't exist
|
|
15
|
+
- Detect mode automatically — only ask the user if regeneration intent is ambiguous
|
|
16
|
+
|
|
17
|
+
## INITIALIZATION SEQUENCE
|
|
18
|
+
|
|
19
|
+
### 1. Check for Existing `.gyre/` Directory
|
|
20
|
+
|
|
21
|
+
**Glob** for `.gyre/` at the project root:
|
|
22
|
+
- `.gyre/stack-profile.yaml` → GC1 exists (previous detection)
|
|
23
|
+
- `.gyre/capabilities.yaml` → GC2 exists (previous model generation)
|
|
24
|
+
- `.gyre/findings.yaml` → GC3 exists (previous analysis)
|
|
25
|
+
- `.gyre/.lock` → Concurrent analysis guard (NFR13)
|
|
26
|
+
|
|
27
|
+
### 2. Detect Analysis Mode
|
|
28
|
+
|
|
29
|
+
Based on what exists in `.gyre/`:
|
|
30
|
+
|
|
31
|
+
| Condition | Mode | Behavior |
|
|
32
|
+
|-----------|------|----------|
|
|
33
|
+
| `.gyre/` does not exist | **Crisis** | First run — create directory, run full pipeline |
|
|
34
|
+
| `.gyre/capabilities.yaml` exists | **Anticipation** | Re-run — skip model generation (step 3), use cached model |
|
|
35
|
+
| User explicitly says "regenerate" or "fresh" | **Regeneration** | Fresh model — ignore cache, run full pipeline |
|
|
36
|
+
|
|
37
|
+
### 3. Lock File Check (NFR13)
|
|
38
|
+
|
|
39
|
+
If `.gyre/.lock` exists:
|
|
40
|
+
- Read the lock file for timestamp and process info
|
|
41
|
+
- If older than 5 minutes: warn the user, suggest removing it
|
|
42
|
+
- If recent: inform the user another analysis may be in progress, ask to proceed or wait
|
|
43
|
+
|
|
44
|
+
### 4. Create `.gyre/` Directory
|
|
45
|
+
|
|
46
|
+
If `.gyre/` doesn't exist, create it.
|
|
47
|
+
|
|
48
|
+
### 5. Report Initialization
|
|
49
|
+
|
|
50
|
+
Present the initialization status conversationally:
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
## Analysis Initialized
|
|
54
|
+
|
|
55
|
+
**Mode:** [Crisis / Anticipation / Regeneration]
|
|
56
|
+
**Directory:** .gyre/ [created / already exists]
|
|
57
|
+
**Existing artifacts:** [list any found, or "none — first run"]
|
|
58
|
+
|
|
59
|
+
Starting stack detection...
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## NEXT STEP
|
|
65
|
+
|
|
66
|
+
Proceed to stack detection:
|
|
67
|
+
|
|
68
|
+
Load step: {project-root}/_bmad/bme/_gyre/workflows/full-analysis/steps/step-02-detect-stack.md
|