convoke-agents 3.0.4 → 3.1.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 +29 -0
- package/README.md +14 -13
- package/_bmad/bme/_gyre/guides/GYRE-TEAM-GUIDE.md +506 -0
- package/_bmad/bme/_vortex/config.yaml +1 -1
- package/_bmad/bme/_vortex/guides/VORTEX-TEAM-GUIDE.md +441 -0
- package/package.json +7 -3
- package/scripts/archive.js +26 -45
- package/scripts/convoke-check.js +88 -0
- package/scripts/convoke-doctor.js +132 -4
- package/scripts/lib/artifact-utils.js +1674 -0
- package/scripts/lib/portfolio/formatters/markdown-formatter.js +40 -0
- package/scripts/lib/portfolio/formatters/terminal-formatter.js +56 -0
- package/scripts/lib/portfolio/portfolio-engine.js +305 -0
- package/scripts/lib/portfolio/rules/artifact-chain-rule.js +126 -0
- package/scripts/lib/portfolio/rules/conflict-resolver.js +77 -0
- package/scripts/lib/portfolio/rules/frontmatter-rule.js +42 -0
- package/scripts/lib/portfolio/rules/git-recency-rule.js +69 -0
- package/scripts/lib/types.js +122 -0
- package/scripts/migrate-artifacts.js +380 -0
- package/scripts/update/lib/migration-runner.js +1 -1
- package/scripts/update/lib/taxonomy-merger.js +138 -0
- package/scripts/update/migrations/2.0.x-to-3.1.0.js +50 -0
- package/scripts/update/migrations/3.0.x-to-3.1.0.js +41 -0
- package/scripts/update/migrations/registry.js +14 -0
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
---
|
|
9
9
|
|
|
10
|
+
## [3.1.0] - 2026-04-06
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Artifact Governance Migration** (`convoke-migrate-artifacts`) — Full transactional migration pipeline that renames artifacts to `{initiative}-{type}[-qualifier][-date].md` convention, injects frontmatter metadata, updates internal links, and generates a governance ADR. Supports dry-run (default), `--apply` with interactive confirmation, `--force` for automation, `--include` for scope control, and `--verbose` for cross-references.
|
|
15
|
+
- **Portfolio Intelligence** (`convoke-portfolio`) — Read-only initiative portfolio showing phase, status, next action, and context for every initiative. Features 4 inference rules (frontmatter, artifact-chain, git-recency, conflict-resolver), degraded mode for ungoverned artifacts, governance health score, WIP overload radar, `--filter` prefix filtering, `--sort last-activity`, `--verbose` inference trace, and terminal + markdown output formats.
|
|
16
|
+
- **Taxonomy Configuration** (`_bmad/_config/taxonomy.yaml`) — Single source of truth for initiative IDs, artifact types, and historical name aliases. Created automatically by `convoke-update` (migration 2.0.x/3.0.x-to-3.1.0) or `convoke-migrate-artifacts`.
|
|
17
|
+
- **convoke-doctor taxonomy validation** — 6 new health checks: file exists, valid YAML, structure, ID format, no duplicates, no initiative/type collisions.
|
|
18
|
+
- **convoke-update taxonomy merger** — Automatic taxonomy creation on upgrade from pre-3.1.0. Merges platform entries without overwriting user additions. Promotes user initiative IDs to platform when they become official (FR42).
|
|
19
|
+
- **convoke-check** (`npm run check`) — Local CI mirror that runs lint + unit + integration + Jest lib tests before push. Prevents CI failures from reaching GitHub Actions.
|
|
20
|
+
- **Workflow frontmatter adoption** — `bmad-create-prd` and `bmad-create-epics-and-stories` templates now include governance frontmatter fields (initiative, artifact_type, status, created, schema_version). Graceful degradation when taxonomy absent.
|
|
21
|
+
- **BMAD portfolio skill** (`.claude/skills/bmad-portfolio-status/`) — Thin wrapper invoking `convoke-portfolio --markdown` for chat/skill context.
|
|
22
|
+
- **Artifact rename map** — `artifact-rename-map.md` generated during migration with old-to-new filename mapping.
|
|
23
|
+
- **Governance ADR** — Migration generates `adr-artifact-governance-convention-{date}.md` documenting the naming convention and supersedes the previous repo organization ADR.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
|
|
27
|
+
- **Frontmatter schema v1** — All governed artifacts include: `initiative`, `artifact_type`, `created` (ISO date), `schema_version: 1`. Optional: `status` (draft/validated/superseded/active).
|
|
28
|
+
- **Shell injection prevention** — All `execSync` calls migrated to `execFileSync` with argument arrays across `artifact-utils.js` and `ensureCleanTree`.
|
|
29
|
+
- **convoke-doctor** — Now exports `checkTaxonomy` for testability; uses `require.main === module` guard.
|
|
30
|
+
|
|
31
|
+
### Infrastructure
|
|
32
|
+
|
|
33
|
+
- **320+ tests** across unit (Node built-in), integration, and Jest lib suites
|
|
34
|
+
- **50 FRs and 22 NFRs** addressed across 18 stories in 5 epics
|
|
35
|
+
- **5 retrospectives** with compounding process improvements
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
10
39
|
## [3.0.0] - 2026-03-25
|
|
11
40
|
|
|
12
41
|
### Added
|
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
Agent teams for complex systems
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
-
[](https://github.com/amalik/convoke-agents)
|
|
14
14
|
[](LICENSE)
|
|
15
15
|
|
|
16
16
|
</div>
|
|
@@ -260,22 +260,25 @@ The [Enhance Guide](_bmad/bme/_enhance/guides/ENHANCE-GUIDE.md) documents the co
|
|
|
260
260
|
**Everything (Vortex + Gyre):**
|
|
261
261
|
|
|
262
262
|
```bash
|
|
263
|
-
npm install convoke-agents
|
|
263
|
+
npm install convoke-agents@latest
|
|
264
|
+
npx convoke-install
|
|
264
265
|
```
|
|
265
266
|
|
|
266
267
|
**Vortex only:**
|
|
267
268
|
|
|
268
269
|
```bash
|
|
269
|
-
npm install convoke-agents
|
|
270
|
+
npm install convoke-agents@latest
|
|
271
|
+
npx convoke-install-vortex
|
|
270
272
|
```
|
|
271
273
|
|
|
272
274
|
**Gyre only:**
|
|
273
275
|
|
|
274
276
|
```bash
|
|
275
|
-
npm install convoke-agents
|
|
277
|
+
npm install convoke-agents@latest
|
|
278
|
+
npx convoke-install-gyre
|
|
276
279
|
```
|
|
277
280
|
|
|
278
|
-
Something not working? Run `npx
|
|
281
|
+
Something not working? Run `npx convoke-doctor` or check the [FAQ](docs/faq.md).
|
|
279
282
|
|
|
280
283
|
### Personalize
|
|
281
284
|
|
|
@@ -382,18 +385,16 @@ Teams and Skills are peer module types — both installable, both independent. C
|
|
|
382
385
|
## Updating
|
|
383
386
|
|
|
384
387
|
```bash
|
|
385
|
-
|
|
386
|
-
npx
|
|
387
|
-
npx
|
|
388
|
-
npx
|
|
388
|
+
npm install convoke-agents@latest # Get the latest package
|
|
389
|
+
npx convoke-version # Check current version
|
|
390
|
+
npx convoke-update --dry-run # Preview changes
|
|
391
|
+
npx convoke-update # Apply update (auto-backup)
|
|
392
|
+
npx convoke-doctor # Diagnose issues
|
|
389
393
|
```
|
|
390
394
|
|
|
391
395
|
Your data in `_bmad-output/` and `.gyre/` is never touched. Automatic backups are created before every update.
|
|
392
396
|
|
|
393
|
-
> **
|
|
394
|
-
> ```bash
|
|
395
|
-
> npx -p convoke-agents@latest convoke-update --yes
|
|
396
|
-
> ```
|
|
397
|
+
> **Important:** `npm install convoke-agents` (without `@latest`) won't cross major version boundaries. If you're on v2.x, you must use `npm install convoke-agents@latest` to get v3.x.
|
|
397
398
|
|
|
398
399
|
See [UPDATE-GUIDE.md](UPDATE-GUIDE.md) for migration paths and troubleshooting.
|
|
399
400
|
|
|
@@ -0,0 +1,506 @@
|
|
|
1
|
+
# The Gyre Deep Dive — Production Readiness Discovery
|
|
2
|
+
|
|
3
|
+
**Team:** Gyre Pattern (4 Agents, 7 Workflows, 4 Handoff Contracts)
|
|
4
|
+
**Module:** Convoke (bme)
|
|
5
|
+
**Version:** 1.0.0
|
|
6
|
+
**Last Updated:** 2026-04-05
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## What This Guide Covers
|
|
11
|
+
|
|
12
|
+
The per-agent user guides tell you *how to use Scout, Atlas, Lens, and Coach individually*. This guide tells you *how the team works together* — the pipeline logic, what flows between agents, what good artifacts look like, how modes change the experience, and where teams get stuck.
|
|
13
|
+
|
|
14
|
+
If you've read the individual user guides, you're ready for this.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## The Gyre at a Glance
|
|
19
|
+
|
|
20
|
+
Gyre is a production readiness discovery system. It analyzes your codebase to find **what's missing before you ship** — not bugs, not code quality, but absence. Missing health checks. Missing rollback strategies. Missing observability that would have caught last week's outage.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
Scout 🔎 Atlas 📐 Lens 🔬 Coach 🏋️
|
|
24
|
+
Detect → Model → Analyze → Review
|
|
25
|
+
(stack) (capabilities) (absences) (feedback)
|
|
26
|
+
▲ │
|
|
27
|
+
└──────── GC4 feedback ────────┘
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
**The big idea:** You can't find what's missing unless you first know what *should* exist. Scout identifies your stack. Atlas generates a capabilities model tailored to that stack. Lens compares the model against your codebase and reports absences. Coach helps you review, customize, and improve the model over time.
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## How to Read This Guide
|
|
35
|
+
|
|
36
|
+
This guide is organized around five layers:
|
|
37
|
+
|
|
38
|
+
1. **The Pipeline** — How artifacts flow from one agent to the next
|
|
39
|
+
2. **Walkthrough: A Complete Gyre Analysis** — Step-by-step through a realistic scenario
|
|
40
|
+
3. **Artifact Examples** — What good output looks like at each stage
|
|
41
|
+
4. **Scenarios & Entry Points** — Where to start depending on your situation
|
|
42
|
+
5. **Anti-Patterns** — Where teams go wrong and how to avoid it
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Part 1: The Pipeline
|
|
47
|
+
|
|
48
|
+
### Forward Flow (GC1-GC3)
|
|
49
|
+
|
|
50
|
+
The core pipeline moves artifacts forward through three handoff contracts:
|
|
51
|
+
|
|
52
|
+
| Contract | From | To | What Flows | In Plain English |
|
|
53
|
+
|----------|------|-----|-----------|------------------|
|
|
54
|
+
| **GC1** | Scout 🔎 | Atlas 📐, Lens 🔬 | Stack Profile — technology categories, archetype, confidence | "Here's what your project is built with" |
|
|
55
|
+
| **GC2** | Atlas 📐 | Lens 🔬, Coach 🏋️ | Capabilities Manifest — 20+ capabilities relevant to this stack | "Here's what a project like yours should have" |
|
|
56
|
+
| **GC3** | Lens 🔬 | Coach 🏋️ | Findings Report — absences with severity, confidence, evidence | "Here's what's missing, ranked by how much it matters" |
|
|
57
|
+
|
|
58
|
+
### Feedback Loop (GC4)
|
|
59
|
+
|
|
60
|
+
| Contract | From | To | What Flows | In Plain English |
|
|
61
|
+
|----------|------|-----|-----------|------------------|
|
|
62
|
+
| **GC4** | Coach 🏋️ | Atlas 📐 | Amendment flags + missed-gap feedback | "The user corrected the model — respect these changes next time" |
|
|
63
|
+
|
|
64
|
+
### The Privacy Boundary
|
|
65
|
+
|
|
66
|
+
A critical design principle: **artifacts contain categories, not contents.**
|
|
67
|
+
|
|
68
|
+
- GC1 (Stack Profile) records "Node.js, Express, Kubernetes" — never file paths, version numbers, or dependency names
|
|
69
|
+
- GC2 (Capabilities Manifest) records what *should* exist — never what *does* exist
|
|
70
|
+
- GC3 (Findings Report) records what's *absent* with evidence summaries — never source code
|
|
71
|
+
|
|
72
|
+
This means `.gyre/` artifacts are safe to commit to your repo. The model is shareable.
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Part 2: Walkthrough — A Complete Gyre Analysis
|
|
77
|
+
|
|
78
|
+
Let's walk through analyzing a Node.js Express API deployed on AWS EKS via GitHub Actions. Your team is preparing for the first production launch and wants to know what you're missing.
|
|
79
|
+
|
|
80
|
+
### Stage 1: Scout — Detect the Stack
|
|
81
|
+
|
|
82
|
+
**What you do:** Invoke Scout and run **[FA] Full Analysis** (recommended for first time) or **[DS] Detect Stack** (standalone detection).
|
|
83
|
+
|
|
84
|
+
Scout scans your project filesystem looking for technology indicators:
|
|
85
|
+
|
|
86
|
+
| What Scout Looks For | Files Examined |
|
|
87
|
+
|---------------------|---------------|
|
|
88
|
+
| Primary language/framework | `package.json`, `go.mod`, `requirements.txt`, `Cargo.toml`, `pom.xml` |
|
|
89
|
+
| Container orchestration | `Dockerfile`, `docker-compose.yaml`, Kubernetes manifests, ECS task definitions |
|
|
90
|
+
| CI/CD platform | `.github/workflows/`, `.gitlab-ci.yml`, `Jenkinsfile` |
|
|
91
|
+
| Observability tooling | OpenTelemetry configs, Prometheus configs, Datadog agent configs |
|
|
92
|
+
| Cloud provider | Terraform files, CloudFormation templates, Pulumi programs |
|
|
93
|
+
| Communication protocols | gRPC protos, REST controllers, message queue configs |
|
|
94
|
+
|
|
95
|
+
**Guard questions:** After detection, Scout asks up to 3 targeted questions to resolve ambiguities. These aren't a generic questionnaire — they're derived from what Scout *couldn't* determine from the filesystem alone.
|
|
96
|
+
|
|
97
|
+
Example guard questions for our scenario:
|
|
98
|
+
- "I found both a Dockerfile and Kubernetes manifests. Is this container-based deployment or do you also use serverless?" → *container-based*
|
|
99
|
+
- "I see Express routes but no gRPC protos. Is HTTP/REST your primary communication protocol?" → *yes*
|
|
100
|
+
|
|
101
|
+
**Monorepo handling:** If Scout detects multiple service boundaries (e.g., `/api/`, `/worker/`, `/frontend/`), it asks you to select which service to analyze. Each service gets its own `.gyre/` directory.
|
|
102
|
+
|
|
103
|
+
**What you get (GC1):**
|
|
104
|
+
|
|
105
|
+
```yaml
|
|
106
|
+
stack_profile:
|
|
107
|
+
primary_language: "Node.js"
|
|
108
|
+
primary_framework: "Express"
|
|
109
|
+
secondary_stacks: []
|
|
110
|
+
container_orchestration: "Kubernetes"
|
|
111
|
+
ci_cd_platform: "GitHub Actions"
|
|
112
|
+
observability_tooling: ["OpenTelemetry", "Prometheus"]
|
|
113
|
+
cloud_provider: "AWS"
|
|
114
|
+
communication_protocol: "HTTP/REST"
|
|
115
|
+
guard_answers:
|
|
116
|
+
deployment_model: "container-based"
|
|
117
|
+
detection_confidence: "high"
|
|
118
|
+
detection_summary: "Node.js Express web service deployed on AWS EKS
|
|
119
|
+
via GitHub Actions. Instrumented with OpenTelemetry and Prometheus.
|
|
120
|
+
REST API."
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Stage 2: Atlas — Generate the Capabilities Model
|
|
124
|
+
|
|
125
|
+
**What you do:** In Full Analysis mode, Atlas runs automatically after Scout. Standalone: invoke Atlas and run **[GM] Generate Model**.
|
|
126
|
+
|
|
127
|
+
Atlas loads the GC1 Stack Profile and generates a capabilities manifest — a list of everything a production-grade project *like yours* should have. Atlas draws from:
|
|
128
|
+
|
|
129
|
+
- **Industry standards:** DORA metrics, OpenTelemetry, Google PRR checklist
|
|
130
|
+
- **Web search:** Current best practices for your specific stack combination
|
|
131
|
+
- **Contextual reasoning:** Inferences from your stack profile (e.g., "gRPC + Kubernetes = gRPC health checking protocol is relevant")
|
|
132
|
+
|
|
133
|
+
**What matters here:** Atlas generates capabilities across four domains:
|
|
134
|
+
|
|
135
|
+
| Domain | What It Covers | Typical Count |
|
|
136
|
+
|--------|---------------|:------------:|
|
|
137
|
+
| **Observability** | Logging, tracing, metrics, health checks, alerting | 6-10 |
|
|
138
|
+
| **Deployment** | CI/CD, containers, orchestration, rollback, IaC | 5-8 |
|
|
139
|
+
| **Reliability** | Graceful shutdown, circuit breakers, rate limiting, fault tolerance | 4-6 |
|
|
140
|
+
| **Security** | Secrets management, vulnerability scanning, network policies, auth | 3-5 |
|
|
141
|
+
|
|
142
|
+
Each capability has a `source` tag explaining where it came from:
|
|
143
|
+
|
|
144
|
+
| Source | Meaning | Example |
|
|
145
|
+
|--------|---------|---------|
|
|
146
|
+
| `standard` | From a named industry framework | "Kubernetes liveness probe" from Google PRR |
|
|
147
|
+
| `practice` | Common industry practice | "Multi-stage Docker builds" |
|
|
148
|
+
| `reasoning` | Atlas inferred this from your stack | "gRPC health checking protocol" inferred from gRPC + Kubernetes |
|
|
149
|
+
|
|
150
|
+
**The 20-capability threshold:** Atlas aims for 20+ capabilities. If it generates fewer, it sets `limited_coverage: true` in the manifest and warns you. This typically happens with unusual or niche stacks where fewer established practices exist.
|
|
151
|
+
|
|
152
|
+
**What you get (GC2):** A capabilities manifest at `.gyre/capabilities.yaml` with 20-30 capabilities, each explaining what it is, why it matters for *your specific stack*, and where the recommendation came from.
|
|
153
|
+
|
|
154
|
+
### Stage 3: Lens — Find What's Missing
|
|
155
|
+
|
|
156
|
+
**What you do:** In Full Analysis, Lens runs automatically. Standalone: invoke Lens and run **[AG] Analyze Gaps**.
|
|
157
|
+
|
|
158
|
+
Lens loads the GC2 Capabilities Manifest and systematically checks each capability against your actual codebase. For each capability, Lens:
|
|
159
|
+
|
|
160
|
+
1. **Searches for evidence** using Glob (file patterns), Grep (content patterns), and Read (config inspection)
|
|
161
|
+
2. **Classifies the result:** present (evidence found), absent (no evidence), or partial (config exists but incomplete)
|
|
162
|
+
3. **Tags each finding** with source, confidence, and severity
|
|
163
|
+
|
|
164
|
+
**The two finding sources:**
|
|
165
|
+
|
|
166
|
+
| Source | Meaning | Example |
|
|
167
|
+
|--------|---------|---------|
|
|
168
|
+
| `static-analysis` | File-level evidence (found or absent) | "Grep for 'healthz', 'liveness': no matches" |
|
|
169
|
+
| `contextual-model` | Inferred from the capabilities manifest | "No explicit rollback strategy detected" |
|
|
170
|
+
|
|
171
|
+
**Severity levels:**
|
|
172
|
+
|
|
173
|
+
| Severity | Meaning | Example |
|
|
174
|
+
|----------|---------|---------|
|
|
175
|
+
| `blocker` | Must fix before production | No Kubernetes liveness probe on EKS |
|
|
176
|
+
| `recommended` | Should fix, significant risk reduction | No rollback mechanism in deployment config |
|
|
177
|
+
| `nice-to-have` | Good practice, low risk if absent | Custom Prometheus metrics dashboard |
|
|
178
|
+
|
|
179
|
+
**Cross-domain correlation — the compound findings:**
|
|
180
|
+
|
|
181
|
+
This is where Gyre gets interesting. After analyzing each domain independently, Lens looks for *compound patterns* — two absences from different domains that amplify each other's risk.
|
|
182
|
+
|
|
183
|
+
Example: "No health checks" (observability) + "No rollback strategy" (deployment) = **unrecoverable deployment failure risk**. Neither finding alone is catastrophic, but together they mean a bad deployment goes undetected AND can't be reversed.
|
|
184
|
+
|
|
185
|
+
**Sanity check:** Lens runs a sanity check on its own findings. If more than 80% of capabilities are flagged as absent, something is probably wrong with the model (not the project). Lens warns you and suggests reviewing the capabilities manifest with Coach.
|
|
186
|
+
|
|
187
|
+
**What you get (GC3):** A findings report at `.gyre/findings.yaml` with:
|
|
188
|
+
- Individual findings sorted by severity (blockers first)
|
|
189
|
+
- Compound findings that reveal cross-domain risk amplification
|
|
190
|
+
- Evidence summaries explaining what was searched and what was found/absent
|
|
191
|
+
- A summary with counts: X blockers, Y recommended, Z nice-to-have
|
|
192
|
+
|
|
193
|
+
### Stage 4: Coach — Review and Customize
|
|
194
|
+
|
|
195
|
+
**What you do:** In Full Analysis, Coach runs as the final stage. Standalone: invoke Coach and run **[RF] Review Findings** or **[RM] Review Model**.
|
|
196
|
+
|
|
197
|
+
Coach walks you through two review activities:
|
|
198
|
+
|
|
199
|
+
**Findings Review:** Coach presents each finding severity-first (blockers, then recommended, then nice-to-have) and asks for your assessment. You know your stack better than any model — a "blocker" might be handled by a system Coach can't see, or a "nice-to-have" might be critical for your compliance requirements.
|
|
200
|
+
|
|
201
|
+
**Model Review:** Coach walks you through each capability and asks: keep, remove, edit, or skip? Your amendments are written directly to `capabilities.yaml` with flags:
|
|
202
|
+
|
|
203
|
+
| Action | What Happens | Persistence |
|
|
204
|
+
|--------|-------------|-------------|
|
|
205
|
+
| **Keep** | Capability stays as-is | Default state |
|
|
206
|
+
| **Remove** | `removed: true` flag added | Persists across regeneration — Atlas will never re-add it |
|
|
207
|
+
| **Edit** | `amended: true` flag + original values preserved | Persists across regeneration — Atlas preserves your edits |
|
|
208
|
+
| **Add** | New capability with `source: "user-added"` | Persists across regeneration |
|
|
209
|
+
|
|
210
|
+
**Missed-gap feedback:** After review, Coach asks: "Did Gyre miss anything you know about?" Your answers go into `.gyre/feedback.yaml` and inform Atlas on the next regeneration.
|
|
211
|
+
|
|
212
|
+
**The commit workflow:** Coach explains that committing `.gyre/` artifacts shares the model with your team. Amendments and feedback improve the model for everyone — it's a collaborative knowledge base.
|
|
213
|
+
|
|
214
|
+
---
|
|
215
|
+
|
|
216
|
+
## Part 3: Artifact Examples
|
|
217
|
+
|
|
218
|
+
### Stack Profile (Scout's GC1 Output)
|
|
219
|
+
|
|
220
|
+
```yaml
|
|
221
|
+
---
|
|
222
|
+
contract: GC1
|
|
223
|
+
type: artifact
|
|
224
|
+
source_agent: scout
|
|
225
|
+
source_workflow: stack-detection
|
|
226
|
+
target_agents: [atlas, lens]
|
|
227
|
+
input_artifacts: []
|
|
228
|
+
created: 2026-04-05
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
stack_profile:
|
|
232
|
+
primary_language: "Node.js"
|
|
233
|
+
primary_framework: "Express"
|
|
234
|
+
secondary_stacks: []
|
|
235
|
+
container_orchestration: "Kubernetes"
|
|
236
|
+
ci_cd_platform: "GitHub Actions"
|
|
237
|
+
observability_tooling: ["OpenTelemetry", "Prometheus"]
|
|
238
|
+
cloud_provider: "AWS"
|
|
239
|
+
communication_protocol: "HTTP/REST"
|
|
240
|
+
guard_answers:
|
|
241
|
+
deployment_model: "container-based"
|
|
242
|
+
detection_confidence: "high"
|
|
243
|
+
detection_summary: "Node.js Express web service deployed on AWS EKS
|
|
244
|
+
via GitHub Actions. Instrumented with OpenTelemetry and Prometheus.
|
|
245
|
+
REST API."
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Notice what's NOT here: no file paths, no version numbers, no dependency names. Just technology categories.
|
|
249
|
+
|
|
250
|
+
### Capabilities Manifest (Atlas's GC2 Output — Excerpt)
|
|
251
|
+
|
|
252
|
+
```yaml
|
|
253
|
+
gyre_manifest:
|
|
254
|
+
version: "1.0"
|
|
255
|
+
generated_at: "2026-04-05T14:30:00Z"
|
|
256
|
+
stack_summary: "Node.js Express web service on AWS EKS via GitHub Actions"
|
|
257
|
+
capability_count: 24
|
|
258
|
+
limited_coverage: false
|
|
259
|
+
capabilities:
|
|
260
|
+
- id: "structured-logging"
|
|
261
|
+
category: "observability"
|
|
262
|
+
name: "Structured JSON Logging"
|
|
263
|
+
description: "Application logs in structured JSON format with
|
|
264
|
+
correlation IDs for request tracing. Essential for EKS workloads
|
|
265
|
+
where CloudWatch Logs Insights is used for analysis."
|
|
266
|
+
source: "standard"
|
|
267
|
+
relevance: "Node.js services on EKS need structured logs for
|
|
268
|
+
CloudWatch Logs Insights queries and cross-service correlation."
|
|
269
|
+
amended: false
|
|
270
|
+
removed: false
|
|
271
|
+
|
|
272
|
+
- id: "health-check-liveness"
|
|
273
|
+
category: "observability"
|
|
274
|
+
name: "Kubernetes Liveness Probe"
|
|
275
|
+
description: "HTTP endpoint (typically /healthz) that Kubernetes
|
|
276
|
+
uses to detect stuck containers and restart them."
|
|
277
|
+
source: "standard"
|
|
278
|
+
relevance: "EKS requires liveness probes to auto-heal unresponsive
|
|
279
|
+
pods. Express apps need a lightweight /healthz endpoint."
|
|
280
|
+
amended: false
|
|
281
|
+
removed: false
|
|
282
|
+
|
|
283
|
+
- id: "graceful-shutdown"
|
|
284
|
+
category: "reliability"
|
|
285
|
+
name: "Graceful Shutdown Handler"
|
|
286
|
+
description: "Process handles SIGTERM by draining connections,
|
|
287
|
+
completing in-flight requests, and closing DB pools before exit."
|
|
288
|
+
source: "practice"
|
|
289
|
+
relevance: "Kubernetes sends SIGTERM before killing pods. Without
|
|
290
|
+
graceful shutdown, active requests are dropped mid-response."
|
|
291
|
+
amended: false
|
|
292
|
+
removed: false
|
|
293
|
+
provenance:
|
|
294
|
+
standards_referenced: ["DORA", "OpenTelemetry", "Google PRR"]
|
|
295
|
+
web_search_performed: true
|
|
296
|
+
web_search_date: "2026-04-05"
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
Each capability explains *why it matters for your specific stack* — not just what it is in general.
|
|
300
|
+
|
|
301
|
+
### Findings Report (Lens's GC3 Output — Excerpt)
|
|
302
|
+
|
|
303
|
+
```yaml
|
|
304
|
+
gyre_findings:
|
|
305
|
+
version: "1.0"
|
|
306
|
+
analyzed_at: "2026-04-05T15:00:00Z"
|
|
307
|
+
mode: "crisis"
|
|
308
|
+
stack_summary: "Node.js Express web service on AWS EKS via GitHub Actions"
|
|
309
|
+
summary:
|
|
310
|
+
blockers: 2
|
|
311
|
+
recommended: 5
|
|
312
|
+
nice_to_have: 3
|
|
313
|
+
total: 10
|
|
314
|
+
novelty_ratio: "7 of 10 contextual"
|
|
315
|
+
findings:
|
|
316
|
+
- id: "OBS-001"
|
|
317
|
+
domain: "observability"
|
|
318
|
+
severity: "blocker"
|
|
319
|
+
source: "static-analysis"
|
|
320
|
+
confidence: "high"
|
|
321
|
+
capability_ref: "health-check-liveness"
|
|
322
|
+
description: "No Kubernetes liveness probe detected. EKS pods will
|
|
323
|
+
not be auto-healed when unresponsive."
|
|
324
|
+
evidence_summary: "Glob for **/health*, **/liveness*: no files found.
|
|
325
|
+
Grep for 'healthz', 'liveness': no matches in source files. No
|
|
326
|
+
HEALTHCHECK in Dockerfile."
|
|
327
|
+
severity_rationale: "EKS requires liveness probes for auto-healing.
|
|
328
|
+
Without them, stuck pods persist until manual intervention."
|
|
329
|
+
- id: "DEP-003"
|
|
330
|
+
domain: "deployment"
|
|
331
|
+
severity: "recommended"
|
|
332
|
+
source: "static-analysis"
|
|
333
|
+
confidence: "medium"
|
|
334
|
+
capability_ref: "rollback-strategy"
|
|
335
|
+
description: "No rollback mechanism detected in deployment config."
|
|
336
|
+
evidence_summary: "Grep for 'rollback', 'revision', 'undo' in k8s/
|
|
337
|
+
and .github/workflows/: no matches."
|
|
338
|
+
severity_rationale: "Rolling updates without explicit rollback
|
|
339
|
+
increase recovery time from failed deployments."
|
|
340
|
+
compound_findings:
|
|
341
|
+
- id: "COMPOUND-001"
|
|
342
|
+
domain: "cross-domain"
|
|
343
|
+
severity: "blocker"
|
|
344
|
+
source: "contextual-model"
|
|
345
|
+
confidence: "high"
|
|
346
|
+
capability_ref: ["health-check-liveness", "rollback-strategy"]
|
|
347
|
+
description: "No health checks combined with no rollback creates
|
|
348
|
+
unrecoverable deployment failure risk."
|
|
349
|
+
evidence_summary: "Combines OBS-001 (no liveness probe) with DEP-003
|
|
350
|
+
(no rollback). Failed deployments cannot be detected by K8s and
|
|
351
|
+
cannot be reversed."
|
|
352
|
+
related_findings: ["OBS-001", "DEP-003"]
|
|
353
|
+
combined_impact: "Without liveness probes, K8s cannot detect that a
|
|
354
|
+
new deployment is unhealthy. Without rollback, the failed deployment
|
|
355
|
+
persists. Together: a bad deploy goes undetected and unrecoverable
|
|
356
|
+
until manual intervention."
|
|
357
|
+
sanity_check:
|
|
358
|
+
passed: true
|
|
359
|
+
warnings: []
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
The `novelty_ratio` ("7 of 10 contextual") tells you how many findings come from the contextual model vs. generic static analysis. A high contextual ratio means Gyre is earning its keep — it's not just running a linter.
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## Part 4: Scenarios & Entry Points
|
|
367
|
+
|
|
368
|
+
### "First time running Gyre on this project"
|
|
369
|
+
|
|
370
|
+
**Start with:** Scout 🔎 → **[FA] Full Analysis**
|
|
371
|
+
**What happens:** The full pipeline runs end-to-end (Scout → Atlas → Lens → Coach). Gyre detects *Crisis mode* (no `.gyre/` directory exists) and runs everything from scratch.
|
|
372
|
+
|
|
373
|
+
This is the recommended starting point. You get a complete picture in one session.
|
|
374
|
+
|
|
375
|
+
### "I ran Gyre before and want to check progress"
|
|
376
|
+
|
|
377
|
+
**Start with:** Scout 🔎 → **[FA] Full Analysis** or Lens 🔬 → **[AG] Analyze Gaps**
|
|
378
|
+
**What happens:** Gyre detects *Anticipation mode* (`.gyre/` exists). Model generation is skipped (the capabilities manifest serves as cache). Only gap analysis and review run — faster and focused on what changed.
|
|
379
|
+
|
|
380
|
+
### "I want to regenerate the model from scratch"
|
|
381
|
+
|
|
382
|
+
**Start with:** Atlas 📐 → **[GM] Generate Model** in *Regeneration mode*
|
|
383
|
+
**What happens:** Fresh model generation replaces the cached manifest. Atlas still respects your GC4 amendments — removed capabilities stay removed, edited capabilities persist.
|
|
384
|
+
|
|
385
|
+
### "I changed my stack significantly"
|
|
386
|
+
|
|
387
|
+
**Start with:** Scout 🔎 → **[DS] Detect Stack**
|
|
388
|
+
**What happens:** Scout re-scans and produces a new GC1 Stack Profile. Then run Atlas → Lens → Coach to get updated findings.
|
|
389
|
+
|
|
390
|
+
Use this after adding Kubernetes, switching CI providers, adopting a new observability stack, or any major infrastructure change.
|
|
391
|
+
|
|
392
|
+
### "I just want to review and customize the model"
|
|
393
|
+
|
|
394
|
+
**Start with:** Coach 🏋️ → **[RM] Review Model**
|
|
395
|
+
**What happens:** Coach loads the existing capabilities manifest and walks you through it. Keep, remove, edit, or add capabilities. Your changes persist across future Gyre runs.
|
|
396
|
+
|
|
397
|
+
### "I want to see what changed since last analysis"
|
|
398
|
+
|
|
399
|
+
**Start with:** Lens 🔬 → **[DR] Delta Report**
|
|
400
|
+
**What happens:** Lens compares the current findings against `.gyre/findings.previous.yaml` and shows you what's new, what's resolved, and what changed severity.
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## Part 5: Anti-Patterns
|
|
405
|
+
|
|
406
|
+
### 1. "Running Gyre Without Reading the Findings"
|
|
407
|
+
|
|
408
|
+
**The mistake:** Running Full Analysis, seeing "2 blockers, 5 recommended, 3 nice-to-have," and moving on without reviewing with Coach.
|
|
409
|
+
|
|
410
|
+
**Why it fails:** Gyre's model is a hypothesis about what your stack needs. Without Coach's review, you're trusting the model blindly. The model might flag something your team intentionally omitted, or miss something only you know about.
|
|
411
|
+
|
|
412
|
+
**The fix:** Always run Coach's review after analysis. It takes 10-15 minutes and dramatically improves model accuracy for future runs. Your amendments persist — this is an investment, not a chore.
|
|
413
|
+
|
|
414
|
+
### 2. "Treating Severity as Absolute"
|
|
415
|
+
|
|
416
|
+
**The mistake:** Treating every "blocker" as a launch-blocking issue and every "nice-to-have" as ignorable.
|
|
417
|
+
|
|
418
|
+
**Why it fails:** Severity is contextual. A "blocker" finding about missing Kubernetes liveness probes is irrelevant if you're deploying to Lambda. A "nice-to-have" finding about structured logging becomes critical if you're under a compliance audit.
|
|
419
|
+
|
|
420
|
+
**The fix:** Use Coach's review to adjust severity based on your context. Lens assigns severity based on general best practices; you assign severity based on your reality.
|
|
421
|
+
|
|
422
|
+
### 3. "Ignoring Compound Findings"
|
|
423
|
+
|
|
424
|
+
**The mistake:** Reading individual findings one by one and missing the compound patterns.
|
|
425
|
+
|
|
426
|
+
**Why it fails:** Individual findings tell you what's absent. Compound findings tell you what's *dangerous* — they surface risk amplification that single-domain analysis can't see. "No health checks" is a problem. "No health checks AND no rollback" is a crisis.
|
|
427
|
+
|
|
428
|
+
**The fix:** Read compound findings first. They're the highest-signal items in the report because they represent the intersection of two weaknesses.
|
|
429
|
+
|
|
430
|
+
### 4. "Deleting `.gyre/` to Start Over"
|
|
431
|
+
|
|
432
|
+
**The mistake:** Deleting the `.gyre/` directory every time you want a fresh analysis.
|
|
433
|
+
|
|
434
|
+
**Why it fails:** `.gyre/` contains your amendments (GC4). Deleting it throws away every keep/remove/edit decision you made during Coach review. Gyre has to start from zero.
|
|
435
|
+
|
|
436
|
+
**The fix:** If you want a fresh model, use Atlas's Regeneration mode. It rebuilds the model while respecting your amendments. If you truly need to start from scratch (e.g., wrong project), then deletion is appropriate — but know what you're losing.
|
|
437
|
+
|
|
438
|
+
### 5. "Using Gyre as a Linter"
|
|
439
|
+
|
|
440
|
+
**The mistake:** Expecting Gyre to find code quality issues, bugs, or style violations.
|
|
441
|
+
|
|
442
|
+
**Why it fails:** Gyre does *absence detection*, not code analysis. It finds what's missing (no health check endpoint), not what's wrong (health check endpoint returns 200 when database is down). These are complementary but different tools.
|
|
443
|
+
|
|
444
|
+
**The fix:** Use Gyre for production readiness gaps. Use linters, SAST tools, and code review for code quality. Gyre answers "are we ready to ship?" not "is our code good?"
|
|
445
|
+
|
|
446
|
+
### 6. "Not Committing `.gyre/` Artifacts"
|
|
447
|
+
|
|
448
|
+
**The mistake:** Adding `.gyre/` to `.gitignore` or never committing the artifacts.
|
|
449
|
+
|
|
450
|
+
**Why it fails:** Gyre artifacts are designed to be shared. When one team member reviews and customizes the model (amendments + feedback), those improvements benefit everyone. Without committing, each team member starts from scratch.
|
|
451
|
+
|
|
452
|
+
**The fix:** Commit `.gyre/` to your repo. The privacy boundary ensures no sensitive data is included. Model amendments and feedback become shared team knowledge.
|
|
453
|
+
|
|
454
|
+
### 7. "Skipping Guard Questions"
|
|
455
|
+
|
|
456
|
+
**The mistake:** Rushing through Scout's guard questions with default answers.
|
|
457
|
+
|
|
458
|
+
**Why it fails:** Guard answers flow downstream to Atlas and Lens. If you tell Scout your deployment model is "container-based" when it's actually serverless, Atlas generates irrelevant capabilities (Kubernetes probes for a Lambda function) and Lens searches for things that don't apply.
|
|
459
|
+
|
|
460
|
+
**The fix:** Answer guard questions accurately. They're asked because Scout genuinely couldn't determine the answer from the filesystem. Your 30 seconds of accuracy save 30 minutes of irrelevant findings.
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
## Gyre + Vortex: Inter-Module Routing
|
|
465
|
+
|
|
466
|
+
Gyre findings can feed into Vortex product discovery when readiness gaps have strategic implications:
|
|
467
|
+
|
|
468
|
+
| If Gyre Finds... | Consider in Vortex... | Agent | Why |
|
|
469
|
+
|---|---|---|---|
|
|
470
|
+
| Critical readiness gaps blocking launch | Product Vision or Contextualize Scope | Emma 🎯 | Readiness gaps may redefine product scope |
|
|
471
|
+
| Findings that challenge assumptions | Hypothesis Engineering | Liam 💡 | Readiness findings are testable hypotheses |
|
|
472
|
+
| Feedback suggesting missing capabilities | User Interview | Isla 🔍 | Validate missed gaps with real users |
|
|
473
|
+
|
|
474
|
+
This routing is advisory — you decide whether a Gyre finding warrants Vortex action.
|
|
475
|
+
|
|
476
|
+
---
|
|
477
|
+
|
|
478
|
+
## Quick Reference: Agent Cheat Sheet
|
|
479
|
+
|
|
480
|
+
| Agent | Stream | Core Question | Primary Workflows | Key Output |
|
|
481
|
+
|-------|--------|--------------|-------------------|------------|
|
|
482
|
+
| Scout 🔎 | Detect | What's this project built with? | Stack Detection, Full Analysis | GC1 Stack Profile |
|
|
483
|
+
| Atlas 📐 | Model | What should a project like this have? | Model Generation, Accuracy Validation | GC2 Capabilities Manifest |
|
|
484
|
+
| Lens 🔬 | Analyze | What's missing? | Gap Analysis, Delta Report | GC3 Findings Report |
|
|
485
|
+
| Coach 🏋️ | Review | Is the model right for *our* stack? | Model Review (findings + capabilities) | GC4 Amendments + Feedback |
|
|
486
|
+
|
|
487
|
+
## Three Modes of Operation
|
|
488
|
+
|
|
489
|
+
| Mode | Trigger | What Runs | When to Use |
|
|
490
|
+
|------|---------|-----------|-------------|
|
|
491
|
+
| **Crisis** | No `.gyre/` directory | Full pipeline from scratch | First run on a project |
|
|
492
|
+
| **Anticipation** | `.gyre/` exists | Gap analysis + review only (model cached) | Routine check-ins |
|
|
493
|
+
| **Regeneration** | Explicit user request | Fresh model generation + full pipeline | After stack changes or when model feels stale |
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
|
|
497
|
+
## Further Reading
|
|
498
|
+
|
|
499
|
+
- **Per-agent guides:** See `SCOUT-USER-GUIDE.md` through `COACH-USER-GUIDE.md` in this directory for invocation details, menu options, and troubleshooting
|
|
500
|
+
- **Compass Routing Reference:** `_bmad/bme/_gyre/compass-routing-reference.md` — the authoritative routing table
|
|
501
|
+
- **Handoff Contract Schemas:** `_bmad/bme/_gyre/contracts/` — the exact artifact formats
|
|
502
|
+
- **`.gyre/` directory:** Your project's artifacts — safe to commit, designed to be shared
|
|
503
|
+
|
|
504
|
+
---
|
|
505
|
+
|
|
506
|
+
*Gyre doesn't tell you what's wrong with your code. It tells you what's missing from your operations — and gives you the model to track it.*
|