convoke-agents 2.3.1 → 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 +35 -0
- package/INSTALLATION.md +109 -86
- package/README.md +236 -104
- package/UPDATE-GUIDE.md +63 -23
- package/_bmad/bme/_enhance/config.yaml +8 -0
- package/_bmad/bme/_enhance/extensions/bmm-pm.yaml +9 -0
- package/_bmad/bme/_enhance/guides/.gitkeep +0 -0
- package/_bmad/bme/_enhance/guides/ENHANCE-GUIDE.md +252 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/SKILL.md +6 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/.gitkeep +0 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-01-init.md +106 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-02-gather.md +136 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-03-score.md +146 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-c/step-c-04-prioritize.md +181 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-r/.gitkeep +0 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-r/step-r-01-load.md +120 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-r/step-r-02-rescore.md +141 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-r/step-r-03-update.md +154 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/.gitkeep +0 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-01-ingest.md +86 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-02-extract.md +169 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-03-score.md +147 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/steps-t/step-t-04-update.md +155 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/backlog-format-spec.md +219 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/templates/rice-scoring-guide.md +154 -0
- package/_bmad/bme/_enhance/workflows/initiatives-backlog/workflow.md +88 -0
- 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 +7 -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 +290 -29
- package/scripts/update/lib/validator.js +281 -1
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
# GC3: Findings Report — Schema Definition
|
|
2
|
+
|
|
3
|
+
> **Contract:** GC3 | **Type:** Artifact | **Flow:** Lens → Coach
|
|
4
|
+
>
|
|
5
|
+
> This schema defines the structure for the Findings Report produced by the gap-analysis workflow. Contains absence-based findings with severity, confidence, evidence summaries, and cross-domain compounds.
|
|
6
|
+
|
|
7
|
+
## Frontmatter Schema
|
|
8
|
+
|
|
9
|
+
```yaml
|
|
10
|
+
---
|
|
11
|
+
contract: GC3
|
|
12
|
+
type: artifact
|
|
13
|
+
source_agent: lens
|
|
14
|
+
source_workflow: gap-analysis
|
|
15
|
+
target_agents: [coach]
|
|
16
|
+
input_artifacts: [GC2]
|
|
17
|
+
created: YYYY-MM-DD
|
|
18
|
+
---
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Frontmatter Field Reference
|
|
22
|
+
|
|
23
|
+
| Field | Required | Type | Description |
|
|
24
|
+
|-------|----------|------|-------------|
|
|
25
|
+
| `contract` | Yes | string | Always `GC3` |
|
|
26
|
+
| `type` | Yes | string | Always `artifact` |
|
|
27
|
+
| `source_agent` | Yes | string | Always `lens` |
|
|
28
|
+
| `source_workflow` | Yes | string | Always `gap-analysis` |
|
|
29
|
+
| `target_agents` | Yes | array | Agent IDs that consume this artifact: `[coach]` |
|
|
30
|
+
| `input_artifacts` | Yes | array | `[GC2]` — requires Capabilities Manifest |
|
|
31
|
+
| `created` | Yes | date | ISO date when artifact was created |
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Body Schema
|
|
36
|
+
|
|
37
|
+
The Findings Report is written to `.gyre/findings.yaml` with the following structure:
|
|
38
|
+
|
|
39
|
+
```yaml
|
|
40
|
+
gyre_findings:
|
|
41
|
+
version: string # schema version, e.g., "1.0"
|
|
42
|
+
analyzed_at: ISO-8601 # analysis timestamp
|
|
43
|
+
mode: string # "crisis" | "anticipation"
|
|
44
|
+
stack_summary: string # from GC2
|
|
45
|
+
summary:
|
|
46
|
+
blockers: integer
|
|
47
|
+
recommended: integer
|
|
48
|
+
nice_to_have: integer
|
|
49
|
+
total: integer
|
|
50
|
+
novelty_ratio: string # e.g., "8 of 12 contextual"
|
|
51
|
+
findings:
|
|
52
|
+
- id: string # e.g., "OBS-001" or "DEP-003"
|
|
53
|
+
domain: string # "observability" | "deployment"
|
|
54
|
+
severity: string # "blocker" | "recommended" | "nice-to-have"
|
|
55
|
+
source: string # "static-analysis" | "contextual-model"
|
|
56
|
+
confidence: string # "high" | "medium" | "low"
|
|
57
|
+
capability_ref: string # references GC2 capability ID
|
|
58
|
+
description: string # what's missing and why it matters
|
|
59
|
+
evidence_summary: string # what was searched and what was/wasn't found
|
|
60
|
+
severity_rationale: string # why this severity level
|
|
61
|
+
compound_findings:
|
|
62
|
+
- id: string # e.g., "COMPOUND-001"
|
|
63
|
+
domain: "cross-domain"
|
|
64
|
+
severity: string # "blocker" | "recommended" | "nice-to-have"
|
|
65
|
+
source: "contextual-model"
|
|
66
|
+
confidence: string # lower of the two component confidences
|
|
67
|
+
capability_ref: string[] # references 2 GC2 capability IDs
|
|
68
|
+
description: string
|
|
69
|
+
evidence_summary: string
|
|
70
|
+
related_findings: string[] # references 2 finding IDs from different domains
|
|
71
|
+
combined_impact: string # reasoning chain: why these together are worse
|
|
72
|
+
sanity_check:
|
|
73
|
+
passed: boolean
|
|
74
|
+
warnings: string[] # e.g., ">80% capabilities flagged missing"
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Field Reference — Findings
|
|
78
|
+
|
|
79
|
+
| Field | Required | Type | Description |
|
|
80
|
+
|-------|----------|------|-------------|
|
|
81
|
+
| `id` | Yes | string | Unique finding ID: OBS-NNN or DEP-NNN |
|
|
82
|
+
| `domain` | Yes | string | "observability" or "deployment" |
|
|
83
|
+
| `severity` | Yes | string | "blocker", "recommended", or "nice-to-have" |
|
|
84
|
+
| `source` | Yes | string | "static-analysis" (file evidence) or "contextual-model" (inferred) |
|
|
85
|
+
| `confidence` | Yes | string | "high", "medium", or "low" |
|
|
86
|
+
| `capability_ref` | Yes | string | Must reference a valid GC2 capability ID |
|
|
87
|
+
| `description` | Yes | string | What's missing and why it matters |
|
|
88
|
+
| `evidence_summary` | Yes | string | What was searched and what was/wasn't found |
|
|
89
|
+
| `severity_rationale` | Yes | string | Why this severity level was assigned |
|
|
90
|
+
|
|
91
|
+
### Field Reference — Compound Findings
|
|
92
|
+
|
|
93
|
+
| Field | Required | Type | Description |
|
|
94
|
+
|-------|----------|------|-------------|
|
|
95
|
+
| `id` | Yes | string | Unique compound ID: COMPOUND-NNN |
|
|
96
|
+
| `domain` | Yes | string | Always "cross-domain" |
|
|
97
|
+
| `severity` | Yes | string | May be higher than either component |
|
|
98
|
+
| `source` | Yes | string | Always "contextual-model" |
|
|
99
|
+
| `confidence` | Yes | string | Lower of the two component confidences |
|
|
100
|
+
| `capability_ref` | Yes | array | Exactly 2 GC2 capability IDs |
|
|
101
|
+
| `related_findings` | Yes | array | Exactly 2 finding IDs from different domains |
|
|
102
|
+
| `combined_impact` | Yes | string | Reasoning chain explaining amplification |
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Artifact Location
|
|
107
|
+
|
|
108
|
+
- **Path:** `.gyre/findings.yaml` (relative to project root, or service root in monorepo)
|
|
109
|
+
- **Overwritten:** Each analysis run produces a fresh findings report
|
|
110
|
+
- **Previous report:** Backed up to `.gyre/findings.previous.yaml` for delta-report comparison
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Downstream Consumption
|
|
115
|
+
|
|
116
|
+
| Consumer | Purpose |
|
|
117
|
+
|----------|---------|
|
|
118
|
+
| **Coach** (review-coach) | Presents findings for user review, captures feedback on accuracy, guides severity adjustments |
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Example
|
|
123
|
+
|
|
124
|
+
```yaml
|
|
125
|
+
---
|
|
126
|
+
contract: GC3
|
|
127
|
+
type: artifact
|
|
128
|
+
source_agent: lens
|
|
129
|
+
source_workflow: gap-analysis
|
|
130
|
+
target_agents: [coach]
|
|
131
|
+
input_artifacts: [GC2]
|
|
132
|
+
created: 2026-03-22
|
|
133
|
+
---
|
|
134
|
+
|
|
135
|
+
gyre_findings:
|
|
136
|
+
version: "1.0"
|
|
137
|
+
analyzed_at: "2026-03-22T15:00:00Z"
|
|
138
|
+
mode: "crisis"
|
|
139
|
+
stack_summary: "Node.js Express web service on AWS EKS via GitHub Actions"
|
|
140
|
+
summary:
|
|
141
|
+
blockers: 2
|
|
142
|
+
recommended: 5
|
|
143
|
+
nice_to_have: 3
|
|
144
|
+
total: 10
|
|
145
|
+
novelty_ratio: "7 of 10 contextual"
|
|
146
|
+
findings:
|
|
147
|
+
- id: "OBS-001"
|
|
148
|
+
domain: "observability"
|
|
149
|
+
severity: "blocker"
|
|
150
|
+
source: "static-analysis"
|
|
151
|
+
confidence: "high"
|
|
152
|
+
capability_ref: "health-check-liveness"
|
|
153
|
+
description: "No Kubernetes liveness probe detected. EKS pods will not be auto-healed when unresponsive."
|
|
154
|
+
evidence_summary: "Glob for **/health*, **/liveness*: no files found. Grep for 'healthz', 'liveness': no matches in source files. No HEALTHCHECK in Dockerfile."
|
|
155
|
+
severity_rationale: "EKS requires liveness probes for auto-healing. Without them, stuck pods persist until manual intervention."
|
|
156
|
+
- id: "DEP-003"
|
|
157
|
+
domain: "deployment"
|
|
158
|
+
severity: "recommended"
|
|
159
|
+
source: "static-analysis"
|
|
160
|
+
confidence: "medium"
|
|
161
|
+
capability_ref: "rollback-strategy"
|
|
162
|
+
description: "No rollback mechanism detected in deployment configuration."
|
|
163
|
+
evidence_summary: "Grep for 'rollback', 'revision', 'undo' in k8s/ and .github/workflows/: no matches. K8s deployments use default rolling update without explicit rollback steps."
|
|
164
|
+
severity_rationale: "Rolling updates without explicit rollback increase recovery time from failed deployments."
|
|
165
|
+
compound_findings:
|
|
166
|
+
- id: "COMPOUND-001"
|
|
167
|
+
domain: "cross-domain"
|
|
168
|
+
severity: "blocker"
|
|
169
|
+
source: "contextual-model"
|
|
170
|
+
confidence: "high"
|
|
171
|
+
capability_ref: ["health-check-liveness", "rollback-strategy"]
|
|
172
|
+
description: "No health checks combined with no rollback creates unrecoverable deployment failure risk."
|
|
173
|
+
evidence_summary: "Combines OBS-001 (no liveness probe) with DEP-003 (no rollback). Failed deployments cannot be detected by K8s and cannot be reversed."
|
|
174
|
+
related_findings: ["OBS-001", "DEP-003"]
|
|
175
|
+
combined_impact: "Without liveness probes, K8s cannot detect that a new deployment is unhealthy. Without rollback, the failed deployment persists. Together: a bad deploy goes undetected and unrecoverable until manual SSH intervention."
|
|
176
|
+
sanity_check:
|
|
177
|
+
passed: true
|
|
178
|
+
warnings: []
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Validation Rules
|
|
184
|
+
|
|
185
|
+
A valid GC3 artifact must:
|
|
186
|
+
|
|
187
|
+
1. Have all required frontmatter fields present and correctly typed
|
|
188
|
+
2. Have all required body fields present and non-empty
|
|
189
|
+
3. Have every finding reference a valid `capability_ref` from GC2
|
|
190
|
+
4. Have every compound reference exactly 2 findings from different domains
|
|
191
|
+
5. Have compound `confidence` equal to the lower of component confidences
|
|
192
|
+
6. Have no compounds where either component has confidence "low"
|
|
193
|
+
7. Have finding IDs unique within the report
|
|
194
|
+
8. Have `severity` as one of: "blocker", "recommended", "nice-to-have"
|
|
195
|
+
9. Have `source` as one of: "static-analysis", "contextual-model"
|
|
196
|
+
10. Have `confidence` as one of: "high", "medium", "low"
|
|
197
|
+
11. Have summary counts matching actual finding counts
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
# GC4: Feedback Loop — Schema Definition
|
|
2
|
+
|
|
3
|
+
> **Contract:** GC4 | **Type:** Artifact | **Flow:** Coach → Atlas
|
|
4
|
+
>
|
|
5
|
+
> This schema defines the structure for the Feedback Loop produced by the model-review workflow. Contains two mechanisms: (1) amendment flags on capabilities in GC2, and (2) a standalone feedback file for missed-gap reports.
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
GC4 is a dual-mechanism contract:
|
|
10
|
+
|
|
11
|
+
1. **Amendment Flags** — stored directly on capabilities in `.gyre/capabilities.yaml` (GC2). Capabilities marked `removed: true` or `amended: true` persist across regeneration. Atlas reads these flags and respects them.
|
|
12
|
+
|
|
13
|
+
2. **Feedback File** — stored in `.gyre/feedback.yaml`. Contains user-reported missed capabilities, missed gaps, and severity adjustments. Atlas uses these to inform future model generation.
|
|
14
|
+
|
|
15
|
+
## Mechanism 1: Amendment Flags (in GC2)
|
|
16
|
+
|
|
17
|
+
Amendments are stored as additional fields on capability entries in `.gyre/capabilities.yaml`:
|
|
18
|
+
|
|
19
|
+
```yaml
|
|
20
|
+
# Removed capability — excluded from future analysis
|
|
21
|
+
- id: "obs-custom-metrics"
|
|
22
|
+
name: "Custom metrics collection"
|
|
23
|
+
category: "observability"
|
|
24
|
+
# ... standard fields ...
|
|
25
|
+
removed: true
|
|
26
|
+
removed_at: "2026-03-22"
|
|
27
|
+
|
|
28
|
+
# Edited capability — persists across regeneration
|
|
29
|
+
- id: "dep-rollback"
|
|
30
|
+
name: "Automated rollback" # updated by user
|
|
31
|
+
category: "deployment"
|
|
32
|
+
description: "Canary-based rollback" # updated by user
|
|
33
|
+
# ... standard fields ...
|
|
34
|
+
amended: true
|
|
35
|
+
amended_at: "2026-03-22"
|
|
36
|
+
original_name: "Rollback strategy"
|
|
37
|
+
original_description: "Mechanism to revert failed deployments"
|
|
38
|
+
|
|
39
|
+
# User-added capability
|
|
40
|
+
- id: "obs-custom-001"
|
|
41
|
+
name: "SLO dashboard"
|
|
42
|
+
category: "observability"
|
|
43
|
+
description: "Service Level Objective tracking dashboard with burn rate alerts"
|
|
44
|
+
source: "user-added"
|
|
45
|
+
amended: true
|
|
46
|
+
amended_at: "2026-03-22"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### Amendment Flag Reference
|
|
50
|
+
|
|
51
|
+
| Field | Type | When Present | Description |
|
|
52
|
+
|-------|------|-------------|-------------|
|
|
53
|
+
| `removed` | boolean | Capability removed by user | Always `true` when present |
|
|
54
|
+
| `removed_at` | date | With `removed` | ISO date of removal |
|
|
55
|
+
| `amended` | boolean | Capability edited or added by user | Always `true` when present |
|
|
56
|
+
| `amended_at` | date | With `amended` | ISO date of amendment |
|
|
57
|
+
| `original_name` | string | Name was changed | Previous name value |
|
|
58
|
+
| `original_description` | string | Description was changed | Previous description value |
|
|
59
|
+
| `original_category` | string | Category was changed | Previous category value |
|
|
60
|
+
| `source` | string | User-added capability | Set to `"user-added"` for new entries |
|
|
61
|
+
|
|
62
|
+
### Amendment Frontmatter Fields (in GC2)
|
|
63
|
+
|
|
64
|
+
When amendments are applied, the GC2 frontmatter is updated:
|
|
65
|
+
|
|
66
|
+
```yaml
|
|
67
|
+
---
|
|
68
|
+
contract: GC2
|
|
69
|
+
# ... standard GC2 fields ...
|
|
70
|
+
last_reviewed: "2026-03-22" # date of most recent review
|
|
71
|
+
review_deferred: false # true if user chose "later"
|
|
72
|
+
amendment_count: 3 # total amendments applied
|
|
73
|
+
---
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Mechanism 2: Feedback File
|
|
79
|
+
|
|
80
|
+
Feedback is stored in a standalone file at `.gyre/feedback.yaml`.
|
|
81
|
+
|
|
82
|
+
### Frontmatter Schema
|
|
83
|
+
|
|
84
|
+
```yaml
|
|
85
|
+
---
|
|
86
|
+
contract: GC4
|
|
87
|
+
type: artifact
|
|
88
|
+
source_agent: coach
|
|
89
|
+
target_agents: [atlas]
|
|
90
|
+
created: YYYY-MM-DD
|
|
91
|
+
updated: YYYY-MM-DD
|
|
92
|
+
---
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### Frontmatter Field Reference
|
|
96
|
+
|
|
97
|
+
| Field | Required | Type | Description |
|
|
98
|
+
|-------|----------|------|-------------|
|
|
99
|
+
| `contract` | Yes | string | Always `GC4` |
|
|
100
|
+
| `type` | Yes | string | Always `artifact` |
|
|
101
|
+
| `source_agent` | Yes | string | Always `coach` |
|
|
102
|
+
| `target_agents` | Yes | array | Agent IDs that consume this artifact: `[atlas]` |
|
|
103
|
+
| `created` | Yes | date | ISO date when first feedback entry was written |
|
|
104
|
+
| `updated` | Yes | date | ISO date of most recent feedback entry |
|
|
105
|
+
|
|
106
|
+
### Body Schema
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
feedback:
|
|
110
|
+
- timestamp: ISO-8601 # when the feedback was provided
|
|
111
|
+
reporter: string # user name from config
|
|
112
|
+
type: string # "missed-capability" | "missed-gap" | "severity-adjustment" | "other"
|
|
113
|
+
description: string # user's feedback in their own words
|
|
114
|
+
domain: string # "observability" | "deployment" | "reliability" | "security" | "general"
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Feedback Entry Field Reference
|
|
118
|
+
|
|
119
|
+
| Field | Required | Type | Description |
|
|
120
|
+
|-------|----------|------|-------------|
|
|
121
|
+
| `timestamp` | Yes | string | ISO-8601 timestamp of when feedback was captured |
|
|
122
|
+
| `reporter` | Yes | string | User name (from config.yaml `user_name`) |
|
|
123
|
+
| `type` | Yes | string | One of: `missed-capability`, `missed-gap`, `severity-adjustment`, `other` |
|
|
124
|
+
| `description` | Yes | string | User's feedback in their own words |
|
|
125
|
+
| `domain` | Yes | string | One of: `observability`, `deployment`, `reliability`, `security`, `general` |
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Artifact Locations
|
|
130
|
+
|
|
131
|
+
| File | Purpose | Updated By |
|
|
132
|
+
|------|---------|------------|
|
|
133
|
+
| `.gyre/capabilities.yaml` | Amendment flags on capabilities | Coach (step-03-apply-amendments) |
|
|
134
|
+
| `.gyre/feedback.yaml` | Missed-gap reports and feedback | Coach (step-04-capture-feedback) |
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Downstream Consumption
|
|
139
|
+
|
|
140
|
+
| Consumer | Mechanism | Purpose |
|
|
141
|
+
|----------|-----------|---------|
|
|
142
|
+
| **Atlas** (model-curator) | Amendment flags in GC2 | Respect `removed`/`amended` flags on regeneration — never re-add removed capabilities, preserve edits |
|
|
143
|
+
| **Atlas** (model-curator) | Feedback file | Incorporate missed-capability and missed-gap feedback into future model generation |
|
|
144
|
+
|
|
145
|
+
### Atlas Regeneration Rules
|
|
146
|
+
|
|
147
|
+
When Atlas regenerates the model (model-generation workflow):
|
|
148
|
+
|
|
149
|
+
1. Load existing `.gyre/capabilities.yaml` if present
|
|
150
|
+
2. For each capability with `removed: true` — do NOT regenerate, preserve the removal entry
|
|
151
|
+
3. For each capability with `amended: true` — preserve user's edits, do not overwrite
|
|
152
|
+
4. For each `missed-capability` feedback entry — consider generating a matching capability
|
|
153
|
+
5. For each `missed-gap` feedback entry — consider adding a relevant capability
|
|
154
|
+
6. New capabilities from regeneration are added alongside preserved amendments
|
|
155
|
+
|
|
156
|
+
---
|
|
157
|
+
|
|
158
|
+
## Example
|
|
159
|
+
|
|
160
|
+
### Feedback File Example
|
|
161
|
+
|
|
162
|
+
```yaml
|
|
163
|
+
---
|
|
164
|
+
contract: GC4
|
|
165
|
+
type: artifact
|
|
166
|
+
source_agent: coach
|
|
167
|
+
target_agents: [atlas]
|
|
168
|
+
created: 2026-03-22
|
|
169
|
+
updated: 2026-03-22
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
feedback:
|
|
173
|
+
- timestamp: "2026-03-22T15:30:00Z"
|
|
174
|
+
reporter: "Alice"
|
|
175
|
+
type: "missed-capability"
|
|
176
|
+
description: "We use SLO-based alerting with burn rate windows — the model should include SLO tracking as a capability"
|
|
177
|
+
domain: "observability"
|
|
178
|
+
- timestamp: "2026-03-22T15:32:00Z"
|
|
179
|
+
reporter: "Alice"
|
|
180
|
+
type: "severity-adjustment"
|
|
181
|
+
description: "OBS-003 (structured logging) should be a blocker, not recommended — we've had incidents from unstructured logs"
|
|
182
|
+
domain: "observability"
|
|
183
|
+
- timestamp: "2026-03-22T15:35:00Z"
|
|
184
|
+
reporter: "Alice"
|
|
185
|
+
type: "missed-gap"
|
|
186
|
+
description: "No finding about database connection pooling — we don't have it and it's causing issues under load"
|
|
187
|
+
domain: "reliability"
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
## Validation Rules
|
|
193
|
+
|
|
194
|
+
A valid GC4 feedback file must:
|
|
195
|
+
|
|
196
|
+
1. Have all required frontmatter fields present and correctly typed
|
|
197
|
+
2. Have every feedback entry with all required fields present and non-empty
|
|
198
|
+
3. Have `type` as one of: `missed-capability`, `missed-gap`, `severity-adjustment`, `other`
|
|
199
|
+
4. Have `domain` as one of: `observability`, `deployment`, `reliability`, `security`, `general`
|
|
200
|
+
5. Have `timestamp` in ISO-8601 format
|
|
201
|
+
6. Have `updated` date >= `created` date
|
|
202
|
+
7. Not contain source code, file contents, or secrets (NFR9)
|
|
203
|
+
|
|
204
|
+
Amendment flags in GC2 must:
|
|
205
|
+
|
|
206
|
+
1. Have `removed_at` present when `removed: true`
|
|
207
|
+
2. Have `amended_at` present when `amended: true`
|
|
208
|
+
3. Have at least one `original_*` field when `amended: true` (unless `source: "user-added"`)
|
|
209
|
+
4. Have unique capability IDs (user-added capabilities use `[category]-custom-NNN` pattern)
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# Atlas 📐 User Guide
|
|
2
|
+
|
|
3
|
+
**(model-curator.md)**
|
|
4
|
+
|
|
5
|
+
- **Version:** 1.0.0
|
|
6
|
+
- **Module:** Gyre Pattern (Production Readiness)
|
|
7
|
+
- **Last Updated:** 2026-03-24
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Quick Start
|
|
12
|
+
|
|
13
|
+
**Who is Atlas?** Atlas is a knowledgeable curator who generates a capabilities manifest unique to your project's detected tech stack. Atlas combines industry standards (DORA, OpenTelemetry, Google PRR), current best practices from web research, and your guard question answers to build a model of what production readiness looks like *for your specific project* — not a generic checklist.
|
|
14
|
+
|
|
15
|
+
**When to use Atlas:**
|
|
16
|
+
|
|
17
|
+
- Scout has produced a Stack Profile and you need a capabilities model
|
|
18
|
+
- You want to regenerate the model after amending it through Coach
|
|
19
|
+
- You need to validate model accuracy against a known stack
|
|
20
|
+
|
|
21
|
+
**Atlas vs Other Gyre Agents:**
|
|
22
|
+
|
|
23
|
+
| If you want to... | Use... |
|
|
24
|
+
|---|---|
|
|
25
|
+
| Know what tech stack a project uses | **Scout** 🔎 |
|
|
26
|
+
| Generate a capabilities model for that stack | **Atlas** 📐 |
|
|
27
|
+
| Find what's missing from the project | **Lens** 🔬 |
|
|
28
|
+
| Review and refine the findings | **Coach** 🏋️ |
|
|
29
|
+
|
|
30
|
+
**What you'll get:** A Capabilities Manifest (`.gyre/capabilities.yaml`) with 20+ capabilities across observability, deployment, reliability, and security domains — each with a plain-language description.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## How to Invoke
|
|
35
|
+
|
|
36
|
+
**Claude Code (skills) — recommended:**
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
/bmad-agent-bme-model-curator
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**Claude Code (terminal) / Other AI assistants:**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
cat _bmad/bme/_gyre/agents/model-curator.md
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
**Claude.ai:**
|
|
49
|
+
|
|
50
|
+
Open `_bmad/bme/_gyre/agents/model-curator.md` and paste its contents into your conversation.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Menu Options
|
|
55
|
+
|
|
56
|
+
| # | Code | Description |
|
|
57
|
+
|---|------|-------------|
|
|
58
|
+
| 1 | **MH** | Redisplay Menu Help |
|
|
59
|
+
| 2 | **CH** | Chat with Atlas about capabilities and models |
|
|
60
|
+
| 3 | **GM** | Generate Model — build a capabilities manifest from the Stack Profile |
|
|
61
|
+
| 4 | **AV** | Accuracy Validation — validate model quality against test repos |
|
|
62
|
+
| 5 | **FA** | Full Analysis — run the complete Gyre pipeline |
|
|
63
|
+
| 6 | **PM** | Start Party Mode |
|
|
64
|
+
| 7 | **DA** | Dismiss Agent |
|
|
65
|
+
|
|
66
|
+
Select by number, code, or fuzzy text match.
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Workflows
|
|
71
|
+
|
|
72
|
+
### [GM] Generate Model
|
|
73
|
+
|
|
74
|
+
Loads the Stack Profile (GC1) and generates a contextual capabilities manifest tailored to your project's tech stack.
|
|
75
|
+
|
|
76
|
+
- **Prerequisite:** `.gyre/stack-profile.yaml` must exist (run Scout first)
|
|
77
|
+
- **Output:** `.gyre/capabilities.yaml` (GC2 contract)
|
|
78
|
+
- **When to use:** After stack detection, or when regenerating the model
|
|
79
|
+
|
|
80
|
+
**How Atlas generates capabilities:**
|
|
81
|
+
|
|
82
|
+
1. **Load profile** — reads Stack Profile and checks for existing amendments from Coach (GC4)
|
|
83
|
+
2. **Generate capabilities** — uses stack context + industry standards (DORA metrics, OpenTelemetry, Google PRR) to produce domain-specific capabilities
|
|
84
|
+
3. **Web enrichment** — searches for current best practices relevant to your stack
|
|
85
|
+
4. **Write manifest** — produces the final capabilities.yaml
|
|
86
|
+
|
|
87
|
+
**Capability domains:** observability (6-10 capabilities), deployment (5-8), reliability (4-6), security (3-5).
|
|
88
|
+
|
|
89
|
+
**Capability sources:**
|
|
90
|
+
|
|
91
|
+
- **standard** — derived from industry standards (DORA, OTel, PRR)
|
|
92
|
+
- **practice** — discovered via web search for current best practices
|
|
93
|
+
- **reasoning** — inferred from stack context by Atlas
|
|
94
|
+
|
|
95
|
+
**Limited coverage warning:** If fewer than 20 capabilities are generated, Atlas surfaces a warning and offers you the choice to continue or abort.
|
|
96
|
+
|
|
97
|
+
**Amendment respect:** When regenerating, Atlas preserves your previous Coach amendments — removed capabilities stay removed, edited descriptions stay edited.
|
|
98
|
+
|
|
99
|
+
### [AV] Accuracy Validation
|
|
100
|
+
|
|
101
|
+
Validates model quality by scoring capabilities against synthetic ground truth across multiple stack archetypes.
|
|
102
|
+
|
|
103
|
+
- **Output:** Accuracy report with per-archetype scores
|
|
104
|
+
- **When to use:** Quality gate before trusting the model for gap analysis
|
|
105
|
+
|
|
106
|
+
**Scoring:**
|
|
107
|
+
|
|
108
|
+
- 1.0 = Relevant (appropriate for this stack)
|
|
109
|
+
- 0.5 = Partially relevant (tangential or poorly described)
|
|
110
|
+
- 0.0 = Irrelevant (no relation to stack)
|
|
111
|
+
|
|
112
|
+
**Gate:** Must achieve ≥70% accuracy across ≥3 stack archetypes. If any archetype falls below 70%, Atlas iterates.
|
|
113
|
+
|
|
114
|
+
### [FA] Full Analysis
|
|
115
|
+
|
|
116
|
+
Same as Scout's Full Analysis — runs the complete pipeline. Atlas handles step 3 (model generation).
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Philosophy
|
|
121
|
+
|
|
122
|
+
- **Context over generic** — Every capability is relevant to *this* stack. Atlas doesn't dump a universal checklist; it reasons about what matters for Node.js on Kubernetes differently than Python on ECS.
|
|
123
|
+
- **Standards inform, they don't dictate** — DORA and OpenTelemetry are starting points, not requirements. Atlas adapts to your project's actual architecture.
|
|
124
|
+
- **Transparency** — Each capability shows its source (standard, practice, or reasoning) so you know where it came from and can judge accordingly.
|
|
125
|
+
- **Team ownership** — The capabilities manifest belongs to your team. Amendments persist. The model improves with use.
|
|
126
|
+
|
|
127
|
+
---
|
|
128
|
+
|
|
129
|
+
## Chat with Atlas
|
|
130
|
+
|
|
131
|
+
Use **[CH]** to discuss model generation topics:
|
|
132
|
+
|
|
133
|
+
- "Why did you include distributed tracing for my project?"
|
|
134
|
+
- "What DORA metrics are relevant to my stack?"
|
|
135
|
+
- "Can you explain the difference between standard and practice sources?"
|
|
136
|
+
- "My project is a CLI tool, not a web service — should I regenerate?"
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## Troubleshooting
|
|
141
|
+
|
|
142
|
+
**"GC1 not found" error**
|
|
143
|
+
|
|
144
|
+
Atlas requires a Stack Profile to generate the model. Run Scout's **[DS]** workflow first, then return to Atlas.
|
|
145
|
+
|
|
146
|
+
**Model seems too generic**
|
|
147
|
+
|
|
148
|
+
Check that Scout's guard answers are accurate — Atlas uses them to tune the model. If guard answers are wrong or missing, re-run Scout's **[DS]** with corrected answers, then regenerate.
|
|
149
|
+
|
|
150
|
+
**Fewer than 20 capabilities generated**
|
|
151
|
+
|
|
152
|
+
Atlas surfaces a limited-coverage warning. This can happen with unusual or very simple stacks. You can continue (the model is still useful) or abort and check if Scout's stack classification is accurate.
|
|
153
|
+
|
|
154
|
+
**Amendments disappeared after regeneration**
|
|
155
|
+
|
|
156
|
+
Atlas reads GC4 (Coach amendments) before regenerating. If amendments are missing, check that `.gyre/capabilities.yaml` contains the `amended` and `removed` flags from your last Coach review.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## Tips
|
|
161
|
+
|
|
162
|
+
- **Don't skip Scout.** Atlas needs the Stack Profile as input. Running Atlas without it produces an error, not a generic model.
|
|
163
|
+
- **Web search results are fresh.** Atlas searches for current-year best practices every time — no stale caches. This means models improve naturally over time.
|
|
164
|
+
- **Regeneration preserves your work.** Coach amendments survive regeneration. You don't lose your customizations when the model updates.
|
|
165
|
+
- **Capabilities.yaml IS the cache.** In anticipation mode, Atlas's model is reused rather than regenerated. This is by design — the model is stable until you explicitly regenerate.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Credits
|
|
170
|
+
|
|
171
|
+
- **Agent:** Atlas (Model Curator)
|
|
172
|
+
- **Module:** Gyre Pattern v1.0.0
|
|
173
|
+
- **Pattern:** Convoke Agent Architecture
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
*Scout finds the facts. Atlas builds the model. Lens finds the gaps. Coach helps you act on them.*
|