baldart 4.19.0 → 4.21.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 +39 -0
- package/README.md +15 -9
- package/VERSION +1 -1
- package/framework/.claude/agents/REGISTRY.md +3 -2
- package/framework/.claude/agents/api-perf-cost-auditor.md +2 -3
- package/framework/.claude/agents/code-reviewer.md +2 -2
- package/framework/.claude/agents/codebase-architect.md +31 -52
- package/framework/.claude/agents/coder.md +1 -2
- package/framework/.claude/agents/doc-graph-aligner.md +72 -0
- package/framework/.claude/agents/doc-reviewer.md +3 -39
- package/framework/.claude/agents/plan-auditor.md +2 -3
- package/framework/.claude/agents/prd-card-writer.md +1 -1
- package/framework/.claude/agents/qa-sentinel.md +1 -2
- package/framework/.claude/agents/security-reviewer.md +2 -3
- package/framework/.claude/agents/senior-researcher.md +2 -3
- package/framework/.claude/agents/wiki-curator.md +19 -74
- package/framework/.claude/commands/codexreview.md +5 -6
- package/framework/.claude/skills/bug/SKILL.md +9 -8
- package/framework/.claude/skills/capture/SKILL.md +12 -14
- package/framework/.claude/skills/context-primer/SKILL.md +21 -69
- package/framework/.claude/skills/graph-align/SKILL.md +80 -0
- package/framework/.claude/skills/graphify-bootstrap/SKILL.md +125 -0
- package/framework/.claude/skills/issue-review/SKILL.md +1 -1
- package/framework/.claude/skills/new/SKILL.md +1 -1
- package/framework/.claude/skills/new/references/implement.md +1 -1
- package/framework/.claude/skills/prd/SKILL.md +11 -10
- package/framework/.claude/skills/prd/references/discovery-phase.md +4 -5
- package/framework/.claude/skills/simplify/SKILL.md +3 -0
- package/framework/agents/code-graph-protocol.md +108 -0
- package/framework/agents/code-search-protocol.md +27 -21
- package/framework/agents/index.md +4 -2
- package/framework/agents/llm-wiki-methodology.md +42 -78
- package/framework/docs/CODE-GRAPH-LAYER.md +104 -0
- package/framework/docs/LSP-LAYER.md +6 -6
- package/framework/docs/MCP-INTEGRATION.md +4 -4
- package/framework/docs/PROJECT-CONFIGURATION.md +11 -0
- package/framework/routines/doc-graph-align.routine.yml +53 -0
- package/framework/routines/index.yml +14 -4
- package/framework/routines/wiki-review.routine.yml +8 -5
- package/framework/templates/baldart.config.template.yml +32 -5
- package/package.json +1 -1
- package/src/commands/configure.js +67 -1
- package/src/commands/doctor.js +91 -0
- package/src/commands/update.js +6 -0
- package/src/utils/graphify-installer.js +239 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,45 @@ All notable changes to BALDART will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [4.21.0] - 2026-06-09
|
|
9
|
+
|
|
10
|
+
**Code knowledge graph layer (Graphify) + Karpathy wiki rebind + nightly doc-alignment command.** Introduce [Graphify](https://github.com/safishamsi/graphify) as the new retrieval engine replacing the removed RAG (v4.20.0): a single language-agnostic tool (tree-sitter, 28 langs, local/offline, native Leiden communities; pip `graphifyy`, CLI `graphify` + `graphify-mcp`). Opt-in, runtime-detected, silent fallback to LSP→Grep→Git. **MINOR** (additive; new agent + 2 skills + 1 routine + 1 protocol module; new config key `features.has_code_graph` + `graph.*` propagated end-to-end per the schema-change rule).
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **`features.has_code_graph` + `graph:` block** (`framework/templates/baldart.config.template.yml`) — `graph.{output_dir, auto_rebuild_hook, register_mcp}` (scalars only). Propagated: configure autodetect + prompt + interactive install (`src/commands/configure.js`), update schema-drift detector **extended to diff nested top-level blocks** like `graph:` (`src/commands/update.js`), doctor diagnostic + actions (`src/commands/doctor.js`).
|
|
15
|
+
- **`src/utils/graphify-installer.js`** — thin wrapper over Graphify's NATIVE commands (no per-language adapter registry): `detect/install/verify/buildGraph/installGitHook/installAlwaysOn/registerMcp/isStale`. Composes `pipx install graphifyy`, `graphify update` (offline build), `graphify hook install` (auto-rebuild), `graphify <tool> install` (always-on), `graphify-mcp` (MCP).
|
|
16
|
+
- **`framework/agents/code-graph-protocol.md`** — new protocol module: when to prefer the graph (structural/relational) vs LSP (symbol) vs Grep (text) vs Git; CLI-first, MCP optional; budget; silent fallback. Wired into `code-search-protocol.md`, `index.md`, `codebase-architect`, and the exploration skills (`context-primer`, `bug`, `prd`, `new`, `simplify`) — all gated on `has_code_graph`.
|
|
17
|
+
- **Karpathy wiki rebind** — the LLM-wiki auto-learning loop (removed with RAG in v4.20.0) is re-activated on Graphify's native `GRAPH_REPORT.md` (god nodes / Leiden communities / suggested questions → synthesis candidates), offline. Updated `llm-wiki-methodology.md`, `wiki-curator.md`, `wiki-review.routine.yml`, `capture/SKILL.md`. Gated; dormant when `has_code_graph: false` (no regression).
|
|
18
|
+
- **Nightly doc-alignment command** — new agent `doc-graph-aligner` (rebuild graph → cross-check graph vs docs: uncovered core code, stale docs, registry drift → report + synthesis candidates; propose-only), routine `doc-graph-align.routine.yml` (+ `routines/index.yml`, `optional: true`), interactive skill `/graph-align`, and install skill `/graphify-bootstrap`.
|
|
19
|
+
- **`framework/docs/CODE-GRAPH-LAYER.md`** — operator guide (lifecycle, schema, native commands, invariants, CI behavior). MCP-INTEGRATION.md + PROJECT-CONFIGURATION.md updated.
|
|
20
|
+
|
|
21
|
+
### Notes
|
|
22
|
+
|
|
23
|
+
- **CI install is deliberate**: a Python tool is never installed silently in `--yes`/non-interactive runs — `configure` writes the flag, `baldart doctor` (`graph-install`/`graph-rebuild`/`graph-hook`) and `/graphify-bootstrap` backfill.
|
|
24
|
+
- **`graphify-out/`** added to `.gitignore` (generated artifact). **`package.json`** version is unrelated drift (tracked separately from `VERSION`).
|
|
25
|
+
|
|
26
|
+
## [4.20.0] - 2026-06-09
|
|
27
|
+
|
|
28
|
+
**Rimozione del motore RAG (strato A); wiki overlay preservato dormiente.** Il layer RAG (`doc-rag` MCP, `search_docs`, loop auto-learning con tap-point `wiki_log`) non era attivo in nessun consumer ed era un costo di istruzioni morto in ~20 file tra agenti, skill e moduli protocollo. Rimosso completamente; il retrieval del codice si riduce a **LSP → Grep → Git**. Il wiki overlay (loop di Karpathy: `/capture`, `wiki-curator`, `paths.wiki_dir`, `has_wiki_overlay`) resta nel framework ma **dormiente**, scollegato dal motore — engine-agnostic e riutilizzabile in futuro su un nuovo motore di retrieval. **MINOR** (nessun agente/skill/comando rimosso, nessun cambio di layout d'install; rimossa la sola chiave config `paths.wiki_log`, non usata da alcun consumer).
|
|
29
|
+
|
|
30
|
+
### Removed
|
|
31
|
+
|
|
32
|
+
- **Motore RAG (strato A) da tutti gli agenti, skill e moduli protocollo.** `mcp__doc-rag__search_docs` / `search_docs` / `mode:"hybrid"`, i verdetti `rag_telemetry` (`useful/weak/empty/fallback_degraded`), il tier "RAG hybrid" in `code-search-protocol.md`, l'Investigation Protocol "RAG-first" di `codebase-architect`, il tap-point di instrumentazione `wiki_log`, e la community detection GraphRAG (`search_synthesis`, `mode:"drift"`). File toccati: `framework/agents/{code-search-protocol,llm-wiki-methodology,index}.md`; `framework/.claude/agents/{codebase-architect,doc-reviewer,wiki-curator,code-reviewer,security-reviewer,senior-researcher,plan-auditor,qa-sentinel,coder,api-perf-cost-auditor,prd-card-writer}.md`; `framework/.claude/skills/{context-primer,bug,capture,prd}/` + `prd/references/discovery-phase.md`; `framework/.claude/skills/issue-review/SKILL.md`; `framework/.claude/commands/codexreview.md`.
|
|
33
|
+
- **Chiave config `paths.wiki_log`** da `framework/templates/baldart.config.template.yml` + autodetect in `src/commands/configure.js`. `paths.wiki_dir` e `features.has_wiki_overlay` restano (infrastruttura wiki viva).
|
|
34
|
+
- **Sezione "Documentation retrieval (RAG)"** da `framework/docs/MCP-INTEGRATION.md`; riferimenti doc-rag Required/optional aggiornati.
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
|
|
38
|
+
- **Retrieval hierarchy → LSP → Grep → Git** (era RAG → LSP → Grep → Git) in `code-search-protocol.md` e nell'Investigation Protocol di `codebase-architect` (ora "Canonical router FIRST" via `ssot-registry.md`).
|
|
39
|
+
- **`wiki-curator` ridotto** a drift / anchor / frontmatter validation + synthesis-candidate da ADR/PRD (engine-agnostic); rimosse § "RAG Instrumentation" e § "Graph Community Synthesis".
|
|
40
|
+
- **Routine `wiki-review`** ripulita dallo scan dei verdetti RAG; resta safety-net strutturale. `routines/index.yml` e README riformulati ("maintenance" invece di "auto-learning loop").
|
|
41
|
+
- **`/capture`** scrive ancora la synthesis page; il logging passa da helper `wiki_log` a bullet markdown manuale in `${paths.wiki_dir}/log.md`.
|
|
42
|
+
|
|
43
|
+
### Backup
|
|
44
|
+
|
|
45
|
+
- **`docs/archive/rag-layer/`** — backup integrale recuperabile: `README.md` (cos'era / perché / come ripristinare), `snapshot/` (copie pre-modifica dei file toccati), `rebind-to-graphify.md` (come ricablare il loop di Karpathy su un code knowledge graph con community detection nativa). `doc-writing-for-rag` (skill di densità documentale) **non** rimossa — è engine-agnostic.
|
|
46
|
+
|
|
8
47
|
## [4.19.0] - 2026-06-08
|
|
9
48
|
|
|
10
49
|
**`/prd`: cross-check di completezza della discovery con Codex (shift-left).** Aggiunge un singolo passaggio cross-model **al termine della discovery**, prima del design — il punto a più alto ritorno per Codex in `/prd`. **MINOR** (additivo/opt-in: scatta solo se il companion Codex è risolto a runtime; nessuna chiave `baldart.config.yml` → schema-propagation N/A).
|
package/README.md
CHANGED
|
@@ -85,7 +85,7 @@ No additional activation steps needed — once installed, Claude Code (and Codex
|
|
|
85
85
|
- **agents/**: 17 domain modules (architecture, workflows, testing, security, etc.)
|
|
86
86
|
- **Routing**: If you touch X, read Y - minimize context loading
|
|
87
87
|
|
|
88
|
-
### AI Agents (
|
|
88
|
+
### AI Agents (28 specialized agents)
|
|
89
89
|
|
|
90
90
|
**Core (required for every project)**
|
|
91
91
|
1. **codebase-architect**: MANDATORY before planning/implementation - understands codebase structure
|
|
@@ -93,7 +93,7 @@ No additional activation steps needed — once installed, Claude Code (and Codex
|
|
|
93
93
|
3. **code-reviewer**: Reviews for bugs, security, quality, maintainability — confidence-based filtering + Findings Schema
|
|
94
94
|
4. **security-reviewer**: Dedicated AppSec auditor for auth/secrets/multi-tenant/infra
|
|
95
95
|
5. **doc-reviewer**: Audits and writes documentation, SSOT sync, doc debt tracking, design-system drift detection
|
|
96
|
-
6. **wiki-curator**: Maintains the derived LLM wiki overlay (`docs/wiki/`)
|
|
96
|
+
6. **wiki-curator**: Maintains the derived LLM wiki overlay (`docs/wiki/`) — synthesis candidates, anchor + frontmatter validation
|
|
97
97
|
7. **prd**: Creates PRDs, implementation plans, and backlog cards with autonomous tech decisions
|
|
98
98
|
8. **prd-card-writer**: Generates atomic backlog cards with traceability + parallel groups from approved PRDs
|
|
99
99
|
9. **plan-auditor**: MANDATORY after planning — 4-persona plan review + High-Risk Path triggers + Specialist Auto-Spawn
|
|
@@ -208,13 +208,13 @@ Skills always-ask when required keys are missing — never silently default.
|
|
|
208
208
|
never overwrites your file. Full guide:
|
|
209
209
|
[`framework/docs/PROJECT-CONFIGURATION.md`](framework/docs/PROJECT-CONFIGURATION.md).
|
|
210
210
|
|
|
211
|
-
### Skills (
|
|
211
|
+
### Skills (32 portable skills)
|
|
212
212
|
|
|
213
213
|
Skills live under `.claude/skills/` and are auto-discovered by Claude Code.
|
|
214
214
|
Bundled skills:
|
|
215
215
|
|
|
216
216
|
- **Workflow**: `new`, `new2` (v4.16.0 — EXPERIMENTAL workflow-hosted `/new`, Claude-only, for A/B testing context economy), `prd`, `prd-add`, `bug`, `simplify`, `worktree-manager`, `issue-review`, `context-primer`
|
|
217
|
-
- **Code quality**: `skill-creator`, `find-skills`, `webapp-testing`, `playwright-skill`, `lsp-bootstrap` (v3.10.0), `e2e-review` (v3.18.0)
|
|
217
|
+
- **Code quality**: `skill-creator`, `find-skills`, `webapp-testing`, `playwright-skill`, `lsp-bootstrap` (v3.10.0), `graphify-bootstrap` (v4.21.0 — code knowledge graph), `graph-align` (v4.21.0 — doc↔graph alignment), `e2e-review` (v3.18.0)
|
|
218
218
|
- **Design**: `frontend-design`, `ui-design`, `motion-design`, `gamification-design`, `design-system-init` (v3.11.0)
|
|
219
219
|
- **Product**: `seo-audit`, `copywriting`, `api-design-principles`
|
|
220
220
|
- **Knowledge**: `doc-writing-for-rag`, `capture` (LLM wiki overlay)
|
|
@@ -241,6 +241,10 @@ The `ui-expert` agent is upgraded from a generic baseline to a world-class UI/UX
|
|
|
241
241
|
|
|
242
242
|
When `features.has_lsp_layer: true`, `codebase-architect` and the code-exploration skills (`context-primer`, `bug`, `prd`, `new`, `simplify`) prefer LSP `find-references` / `go-to-definition` over Grep for identifier-shaped queries — the filtering happens **before** Claude reads files, so a common function name no longer dumps thousands of textual matches into context. Opt-in at `baldart configure`; BALDART installs the matching language servers (global npm install for TypeScript/Python — the binary must be on `$PATH` because Claude Code's LSP tool spawns it by name; system commands printed for Go/Rust/Ruby). Grep remains the fallback for free-text queries and degraded states. See [`framework/agents/code-search-protocol.md`](framework/agents/code-search-protocol.md).
|
|
243
243
|
|
|
244
|
+
### Code Knowledge Graph Layer (new in v4.21.0)
|
|
245
|
+
|
|
246
|
+
When `features.has_code_graph: true`, agents prefer the [Graphify](https://github.com/safishamsi/graphify) code knowledge graph (tree-sitter, local/offline, native Leiden communities) for **structural / relational** queries — "what connects X to Y", blast-radius of a change, which modules cluster — via `graphify query`/`path`/`explain`/`affected`. The same graph **re-activates the LLM-wiki auto-learning loop** (dormant since the RAG removal in v4.20.0): `wiki-curator`, `/capture`, and the nightly `doc-graph-align` routine feed synthesis candidates from Graphify's native `GRAPH_REPORT.md` (god nodes, communities, suggested questions) — entirely offline. Graphify is a single language-agnostic tool (`pipx install graphifyy`); install via `baldart configure` or `/graphify-bootstrap` (never silent in CI — `baldart doctor` backfills). Falls back silently to LSP→Grep→Git. See [`framework/agents/code-graph-protocol.md`](framework/agents/code-graph-protocol.md) and [`framework/docs/CODE-GRAPH-LAYER.md`](framework/docs/CODE-GRAPH-LAYER.md).
|
|
247
|
+
|
|
244
248
|
### Commands
|
|
245
249
|
|
|
246
250
|
- **/new**: Batch orchestrator with QA validation, production readiness checklist, and context recovery (also available as a skill)
|
|
@@ -251,9 +255,10 @@ When `features.has_lsp_layer: true`, `codebase-architect` and the code-explorati
|
|
|
251
255
|
|
|
252
256
|
### LLM Wiki Overlay (new in v2.0.0)
|
|
253
257
|
|
|
254
|
-
A derived, non-canonical knowledge layer (`docs/wiki/`)
|
|
255
|
-
|
|
256
|
-
|
|
258
|
+
A derived, non-canonical knowledge layer (`docs/wiki/`) maintained on two
|
|
259
|
+
paths: a nightly `wiki-curator` sweep (synthesis candidates from recent
|
|
260
|
+
ADRs/PRDs, anchor + frontmatter validation) and on-demand `/capture` from live
|
|
261
|
+
conversations. See `framework/agents/llm-wiki-methodology.md` for the full
|
|
257
262
|
methodology and adoption checklist.
|
|
258
263
|
|
|
259
264
|
### Migrating an Existing Install (v1.x / v2.x → v3.x)
|
|
@@ -292,14 +297,15 @@ Safe to re-run; if there's nothing to do, it reports so and exits.
|
|
|
292
297
|
|
|
293
298
|
### Scheduled Routines (new in v2.1.0)
|
|
294
299
|
|
|
295
|
-
The framework now ships **scheduled routines** that make its
|
|
300
|
+
The framework now ships **scheduled routines** that make its maintenance and
|
|
296
301
|
drift-detection loops actually run. Ship-bundled routines:
|
|
297
302
|
|
|
298
303
|
| Routine | Cadence | Agent | Purpose |
|
|
299
304
|
|---------|---------|-------|---------|
|
|
300
|
-
| `wiki-review` | nightly 02:00 UTC | wiki-curator |
|
|
305
|
+
| `wiki-review` | nightly 02:00 UTC | wiki-curator | Maintains the LLM-wiki overlay (candidates, anchors, frontmatter) |
|
|
301
306
|
| `doc-review` | nightly 00:00 UTC | doc-reviewer | Audits doc changes, flags SSOT drift |
|
|
302
307
|
| `code-review` | nightly 01:00 UTC | code-reviewer | Reviews last-24h commits |
|
|
308
|
+
| `doc-graph-align` | nightly 04:00 UTC | doc-graph-aligner | Aligns docs with the Graphify code graph — uncovered core code, stale docs, registry drift (optional, needs `has_code_graph`) |
|
|
303
309
|
| `skill-improve` | weekly Sun 02:00 UTC | skill-improver | Refines skills/agents from review patterns |
|
|
304
310
|
| `ds-drift` | weekly Mon 03:00 UTC | doc-reviewer | Design-system drift check (optional) |
|
|
305
311
|
| `full-sweep` | weekly Sun 03:00 UTC | doc-reviewer | Full SSOT audit (optional) |
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.
|
|
1
|
+
4.21.0
|
|
@@ -10,10 +10,11 @@ Quick-reference for all custom agents. Use this to route tasks to the right spec
|
|
|
10
10
|
|
|
11
11
|
| Agent | Category | When to Use | Specialization | Can Edit Code | Key Tools |
|
|
12
12
|
|-------|----------|-------------|----------------|---------------|-----------|
|
|
13
|
-
| **codebase-architect** | Architecture | **MANDATORY** before planning/implementing changes | Platform analysis, system design, canonical-source resolution via Linking Protocol v1, LSP symbol resolution (when `features.has_lsp_layer: true`) | No | Code navigation, pattern tracing, LSP find-references / go-to-definition |
|
|
13
|
+
| **codebase-architect** | Architecture | **MANDATORY** before planning/implementing changes | Platform analysis, system design, canonical-source resolution via Linking Protocol v1, LSP symbol resolution (when `features.has_lsp_layer: true`), code-graph structural queries (when `features.has_code_graph: true`) | No | Code navigation, pattern tracing, LSP find-references / go-to-definition, Graphify query/path/affected |
|
|
14
14
|
| **plan-auditor** | Architecture | Review implementation plans before coding begins | Risk assessment, gap detection | Yes | Multi-persona review (eng/security/SRE) |
|
|
15
15
|
| **doc-reviewer** | Architecture | Audit/write docs after feature implementation | Macro feature identification, SSOT sync, linking-protocol resolution, doc debt tracking, gap analysis | Yes | Doc writing, TaskCreate (doc debt), token optimization |
|
|
16
|
-
| **wiki-curator** | Documentation | Maintain the derived LLM wiki overlay under `${paths.wiki_dir}/` (concept pages, syntheses, dashboards, reading guides) without creating new canonicals. See `agents/llm-wiki-methodology.md`. | Synthesis
|
|
16
|
+
| **wiki-curator** | Documentation | Maintain the derived LLM wiki overlay under `${paths.wiki_dir}/` (concept pages, syntheses, dashboards, reading guides) without creating new canonicals. See `agents/llm-wiki-methodology.md`. | Synthesis candidates (from ADRs/PRDs + Graphify GRAPH_REPORT.md when `features.has_code_graph: true`), provenance hygiene, freshness, anchor + frontmatter validation | Yes | `${paths.wiki_dir}/`, wiki lint |
|
|
17
|
+
| **doc-graph-aligner** | Documentation | Align docs with real code structure via the Graphify code graph (nightly `doc-graph-align` routine + `/graph-align` skill). Gated on `features.has_code_graph`. | Uncovered core code (god nodes/communities), stale-doc detection, registry drift; proposes synthesis candidates (never authors canonicals). | No (propose-only — hands drift to `doc-reviewer`) | `graphify update/query/path/affected`, GRAPH_REPORT.md |
|
|
17
18
|
| **coder** | Code | Write, modify, or refactor production code | Features, bugs, optimizations | Yes | Build tools, testing, Playwright |
|
|
18
19
|
| **code-reviewer** | Code | Review code post-implementation for bugs/quality | Security analysis, code quality, registry-first UI compliance (when `features.has_design_system: true`) — flags re-implemented primitives and bypassed tokens as HIGH per `framework/agents/design-system-protocol.md`. NOT a visual-design evaluator (that is `ui-expert` / `visual-fidelity-verifier`). | No (review-only role — emits findings; fixes are applied by `coder`. The `bypassPermissions` tool-mode all agents run under is execution access, not an implementer role) | Static analysis, security audit |
|
|
19
20
|
| **security-reviewer** | Code | Review security-sensitive code, configs, auth, secrets, and infra changes | AppSec audit, threat modeling, hardening guidance | No | Security review, trust-boundary analysis |
|
|
@@ -36,7 +36,6 @@ Before applying analysis rules, consult MEMORY:
|
|
|
36
36
|
To prevent context bloat:
|
|
37
37
|
- Max **15 file Reads** (use grep + targeted reads, not full-tree).
|
|
38
38
|
- Max **25 Bash/grep calls**.
|
|
39
|
-
- Max **5 search_docs MCP calls**.
|
|
40
39
|
- Never read files outside `git diff --name-only` (or scope passed by orchestrator) unless tracing a callgraph that proves a regression.
|
|
41
40
|
|
|
42
41
|
## Project Context (read from `baldart.config.yml`)
|
|
@@ -98,7 +97,7 @@ Your audit scope is STRICTLY limited to **changed files only** unless the orches
|
|
|
98
97
|
|
|
99
98
|
## First Read
|
|
100
99
|
|
|
101
|
-
|
|
100
|
+
Locate API and data-model references via `${paths.references_dir}/ssot-registry.md` and `rg` over `${paths.references_dir}/`, `${paths.adrs_dir}/`, and `${paths.backlog_dir}/` before reading files directly. Verify implementation and stateful claims against repo docs/code.
|
|
102
101
|
|
|
103
102
|
Read when relevant:
|
|
104
103
|
- `AGENTS.md` (NFR Performance section)
|
|
@@ -297,7 +296,7 @@ Already in the suppressed-findings collapsible block in § Detected Issues.
|
|
|
297
296
|
|
|
298
297
|
- [ ] Memory Retrieval Step executed (known pitfalls listed)
|
|
299
298
|
- [ ] Prompt Injection Guard scan completed
|
|
300
|
-
- [ ] Tool budget respected (≤15 reads, ≤25 greps
|
|
299
|
+
- [ ] Tool budget respected (≤15 reads, ≤25 greps)
|
|
301
300
|
- [ ] Every issue has `quantified_impact`
|
|
302
301
|
- [ ] Load Simulation Pass executed (single-request + 10 req/s + 100 req/s + cold-start + tail latency + cost)
|
|
303
302
|
- [ ] Challenge Pass executed; suppressed findings recorded
|
|
@@ -213,7 +213,7 @@ If you spot a missing doc invariant, emit it as a `category: docs` finding for t
|
|
|
213
213
|
|
|
214
214
|
When documentation is part of your evidence set, review with the retrieval layer:
|
|
215
215
|
|
|
216
|
-
1.
|
|
216
|
+
1. For doc-heavy questions, route through `${paths.references_dir}/ssot-registry.md` and `rg` over `${paths.docs_dir}/`, `${paths.backlog_dir}/`, `.claude/`.
|
|
217
217
|
2. Start from domain routers / canonical reference docs before large PRDs/specs.
|
|
218
218
|
3. If a root canonical declares `max_safe_read_scope: root-summary-only`, treat it as router-first and descend into the linked child doc.
|
|
219
219
|
4. Prefer canonical references over product-intent docs unless the question is about requirements.
|
|
@@ -226,7 +226,7 @@ Use these metadata hints: `canonicality`, `owner`, `last_verified_from_code`, `r
|
|
|
226
226
|
To avoid context bloat:
|
|
227
227
|
- Max 15 file Reads per review (use grep + targeted reads, not full-tree).
|
|
228
228
|
- Max 25 Bash/grep calls.
|
|
229
|
-
-
|
|
229
|
+
- Start from canonical routers before walking the doc tree manually.
|
|
230
230
|
- Never read files outside `git diff --name-only` unless cross-checking a regression hypothesis.
|
|
231
231
|
|
|
232
232
|
## Challenge Pass (MANDATORY — before reporting)
|
|
@@ -41,10 +41,8 @@ This codebase follows strict protocols defined in AGENTS.md. Key architectural r
|
|
|
41
41
|
|
|
42
42
|
See [framework/docs/MCP-INTEGRATION.md](../../docs/MCP-INTEGRATION.md) for the BALDART MCP integration contract and the rationale behind this section.
|
|
43
43
|
|
|
44
|
-
**Required** (this agent's primary investigation protocol assumes them; degraded operation only):
|
|
45
|
-
- `mcp__doc-rag__search_docs` — semantic + knowledge-graph search across project docs. This is the **first** call in the Investigation Protocol; without it the agent falls back to broad `rg` sweeps that blow the token budget and miss canonical sources. If the MCP is unavailable the agent must announce the degrade explicitly and switch to targeted `rg` over `docs/`, `${paths.backlog_dir}/`, and `.claude/agents/` (see § Investigation Protocol step 1).
|
|
46
|
-
|
|
47
44
|
**Optional** (the agent benefits if present, has a documented fallback):
|
|
45
|
+
- Graphify code knowledge graph (gated by [features.has_code_graph](../../templates/baldart.config.template.yml)) — preferred for **structural / relational** queries (what connects X to Y, blast-radius, clusters) via `graphify query`/`path`/`explain`/`affected` (CLI, or the `graphify-mcp` server when registered). Cap: 3 graph commands per task. Fallback: silent degrade to LSP/Grep, per [code-graph-protocol.md](../../agents/code-graph-protocol.md).
|
|
48
46
|
- LSP find-references / go-to-definition (whichever LSP MCP / plugin is wired by [features.has_lsp_layer](../../templates/baldart.config.template.yml)) — preferred over `rg` for symbol queries (cap: 3 LSP calls per task, then escalate to direct file reads). Fallback: silent degrade to Grep, per [code-search-protocol.md](../../agents/code-search-protocol.md).
|
|
49
47
|
- `mcp__plugin_firebase_firebase__firestore_*` (or equivalent DB MCP) — only when the architectural analysis needs to inspect runtime DB state (rare for an architect agent). Fallback: read schema docs in `${paths.references_dir}` and rely on declared structure.
|
|
50
48
|
|
|
@@ -115,7 +113,7 @@ trusting it as authoritative:
|
|
|
115
113
|
4. **Retrieval risk** — if a doc exceeds repo thresholds from `AGENTS.md` (for example:
|
|
116
114
|
reference docs >400 lines, API docs >800 lines, PRDs/specs >800 lines), read headings
|
|
117
115
|
and targeted sections first instead of defaulting to a full read
|
|
118
|
-
5. **
|
|
116
|
+
5. **Router fit** — when `ssot-registry.md` maps the feature to a canonical doc, prefer
|
|
119
117
|
that route over ad hoc broad scans
|
|
120
118
|
|
|
121
119
|
Include this block in every analysis that materially depends on docs:
|
|
@@ -127,7 +125,7 @@ Include this block in every analysis that materially depends on docs:
|
|
|
127
125
|
- Freshness status: [fresh | stale | unknown] (git evidence)
|
|
128
126
|
- Link quality: [ok | PATH_HEAVY: ...]
|
|
129
127
|
- Retrieval risk: [ok | OVERSIZE_DOC: ...]
|
|
130
|
-
-
|
|
128
|
+
- Router fit: [ok | WEAK_ROUTER_MATCH: ...]
|
|
131
129
|
```
|
|
132
130
|
|
|
133
131
|
**Investigation Protocol (MUST follow before any analysis):**
|
|
@@ -135,48 +133,28 @@ Include this block in every analysis that materially depends on docs:
|
|
|
135
133
|
Before providing any architectural guidance or implementation advice, follow this
|
|
136
134
|
**token-efficient** investigation sequence. Target: **under 20K tokens total**.
|
|
137
135
|
|
|
138
|
-
1. **
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
- `weak` or `fallback_degraded` → supplement with steps 2-3.
|
|
148
|
-
- `empty` → fall back to full manual search (steps 2-3-4).
|
|
149
|
-
If MCP is unavailable, fall back to targeted canonical docs plus `rg` over
|
|
150
|
-
`docs/`, `${paths.backlog_dir}/`, and `.claude/agents/`.
|
|
151
|
-
|
|
152
|
-
**Wiki log instrumentation (auto-learning loop tap point — MONITORING
|
|
153
|
-
SIGNAL, non-blocking):** After every `search_docs` call, if
|
|
154
|
-
`rag_telemetry.verdict` is `weak`, `empty`, or `fallback_degraded`, append
|
|
155
|
-
one entry to the wiki log. The tap point is the config key **`paths.wiki_log`**
|
|
156
|
-
(the helper module + its log file; default documented as
|
|
157
|
-
`tools/doc-rag/wiki_log.py` writing `docs/wiki/log.md`):
|
|
158
|
-
```python
|
|
159
|
-
from wiki_log import append_entry
|
|
160
|
-
append_entry(entry_type="query", title=<query_short>,
|
|
161
|
-
agent="codebase-architect", # or the override from caller
|
|
162
|
-
context={"verdict": verdict, "top_score": top_score,
|
|
163
|
-
"count": count},
|
|
164
|
-
refs=[], outcome=verdict)
|
|
165
|
-
```
|
|
166
|
-
**Behaviour when `paths.wiki_log` is unset or the module is absent
|
|
167
|
-
(MANDATORY):** do NOT silently no-op. Emit a SINGLE WARNING line to stderr —
|
|
168
|
-
`wiki_log unavailable: <reason> (set paths.wiki_log to enable the
|
|
169
|
-
auto-learning loop)` — and CONTINUE your primary task. NEVER abort planning,
|
|
170
|
-
never retry, never let the exception bubble. This agent is on the
|
|
171
|
-
MUST-invoke path before every plan — a telemetry failure must not break plan
|
|
172
|
-
mode repo-wide.
|
|
173
|
-
|
|
174
|
-
2. **Git log** (only if RAG was weak/empty): `git log --oneline -20 --grep="<feature>"`
|
|
136
|
+
1. **Canonical router FIRST** — resolve the feature to its canonical source
|
|
137
|
+
before reading code. Read `${paths.references_dir}/ssot-registry.md` (and the
|
|
138
|
+
backlog card `links.*` if you were given a card) to route to the owning
|
|
139
|
+
reference doc / ADR. This is cheaper than scanning code and gives you the
|
|
140
|
+
authoritative contract. Then read only the matched canonical section(s).
|
|
141
|
+
If the router gives no match, fall back to targeted `rg` over `docs/`,
|
|
142
|
+
`${paths.backlog_dir}/`, and `.claude/agents/`.
|
|
143
|
+
|
|
144
|
+
2. **Git log** (when the router is thin): `git log --oneline -20 --grep="<feature>"`
|
|
175
145
|
Limit to 20 results. Don't search `--all` unless the feature branch is unknown.
|
|
176
146
|
|
|
177
|
-
3. **Targeted grep
|
|
147
|
+
3. **Targeted grep**: grep for 2-3 specific identifiers
|
|
178
148
|
(function names, file patterns), NOT broad keyword sweeps across the entire codebase.
|
|
179
149
|
|
|
150
|
+
**Code graph escalation (since v4.21.0):** when `features.has_code_graph: true`
|
|
151
|
+
AND the question is **structural/relational** (what connects X to Y,
|
|
152
|
+
blast-radius of a change, which modules cluster together), prefer the Graphify
|
|
153
|
+
code graph (`graphify query`/`path`/`explain`/`affected`, or read
|
|
154
|
+
`graphify-out/GRAPH_REPORT.md` for god nodes/communities) over LSP/Grep. Cap 3
|
|
155
|
+
graph commands; silent fallback to LSP/Grep when the graph is absent. See
|
|
156
|
+
`framework/agents/code-graph-protocol.md`.
|
|
157
|
+
|
|
180
158
|
**LSP escalation (since v3.10.0):** when `features.has_lsp_layer: true` in
|
|
181
159
|
`baldart.config.yml` AND the query is a symbol/identifier (function, type, class,
|
|
182
160
|
variable name), prefer LSP `find-references` / `go-to-definition` over Grep — it
|
|
@@ -188,7 +166,7 @@ Before providing any architectural guidance or implementation advice, follow thi
|
|
|
188
166
|
4. **Targeted verification** — DO NOT read entire files. Instead:
|
|
189
167
|
- For files **<200 lines**: read in full.
|
|
190
168
|
- For files **200-500 lines**: read the first 50 lines (imports + exports) + the
|
|
191
|
-
specific section
|
|
169
|
+
specific section the router/grep pointed you to (use `offset` + `limit`).
|
|
192
170
|
- For files **>500 lines**: read headings only (`grep "^##\|^export\|^function\|^class"`)
|
|
193
171
|
then targeted sections. Say explicitly when you sampled instead of reading fully.
|
|
194
172
|
- For agent memory files: **NEVER read full files >20KB**. Only read memory files
|
|
@@ -217,9 +195,8 @@ component discovery.
|
|
|
217
195
|
**Steps:**
|
|
218
196
|
|
|
219
197
|
1. **Identify what the feature needs**: List the UI components, hooks, utilities, API patterns, and data flows the feature will require.
|
|
220
|
-
2. **Search for existing matches
|
|
221
|
-
-
|
|
222
|
-
- Only if RAG missed: check `${paths.references_dir}/component-registry.md` (read the
|
|
198
|
+
2. **Search for existing matches**:
|
|
199
|
+
- Check `${paths.references_dir}/component-registry.md` (read the
|
|
223
200
|
relevant table section only, not the full file).
|
|
224
201
|
- Grep only for 2-3 specific component names, not broad semantic sweeps.
|
|
225
202
|
3. **Classify each candidate**:
|
|
@@ -263,12 +240,14 @@ If no reuse candidates exist, output the section with "No reusable components fo
|
|
|
263
240
|
|
|
264
241
|
**Your Approach:**
|
|
265
242
|
|
|
266
|
-
**Token budget awareness**: aim for under 20K tokens per invocation.
|
|
267
|
-
broad file
|
|
243
|
+
**Token budget awareness**: aim for under 20K tokens per invocation. Targeted
|
|
244
|
+
reads off the canonical router replace broad file scans — don't re-read what a
|
|
245
|
+
canonical doc already told you.
|
|
268
246
|
|
|
269
|
-
1. **
|
|
270
|
-
|
|
271
|
-
claims you need to act on. Do NOT
|
|
247
|
+
1. **Router First**: Start from `ssot-registry.md` and the matched canonical
|
|
248
|
+
doc/ADR. Trust the canonical contract for architectural summaries and only
|
|
249
|
+
read specific source files to verify claims you need to act on. Do NOT
|
|
250
|
+
re-read files a canonical doc already summarized.
|
|
272
251
|
|
|
273
252
|
2. **Targeted reads**: For oversized docs (>400 lines), read headings and routing
|
|
274
253
|
sections first, then exact subsections. NEVER read agent memory files >20KB in
|
|
@@ -80,8 +80,7 @@ Never skip a conditional requirement or mark it `done` without evidence of one o
|
|
|
80
80
|
|
|
81
81
|
When implementation depends on documentation, consume the retrieval layer before broad scans:
|
|
82
82
|
|
|
83
|
-
1.
|
|
84
|
-
fall back to targeted canonical docs plus `rg` over `docs/`, `${paths.backlog_dir}/`, and `.claude/`.
|
|
83
|
+
1. When the task is doc-heavy, route through `${paths.references_dir}/ssot-registry.md` and `rg` over `docs/`, `${paths.backlog_dir}/`, and `.claude/`. Verify implementation and stateful claims against repo docs/code.
|
|
85
84
|
2. Start from the highest-ranked domain router or canonical result.
|
|
86
85
|
3. If a doc advertises `max_safe_read_scope: root-summary-only`, treat it as a router-first
|
|
87
86
|
canonical: read the root summary, then jump to the linked child doc.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: doc-graph-aligner
|
|
3
|
+
description: "Align documentation with the actual code structure using the Graphify code knowledge graph. Use for nightly/scheduled documentation-alignment routines (and the /graph-align skill): rebuild the graph offline, then cross-check graph structure against canonical docs + the wiki overlay to surface (1) core code (god nodes / communities) with no doc coverage, (2) docs that reference code no longer in the graph (stale), (3) drift vs the SSOT registry. Emits a report + synthesis candidates. Gated on features.has_code_graph; degrades to an explicit no-op when Graphify is absent."
|
|
4
|
+
model: sonnet
|
|
5
|
+
color: cyan
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
You are the Doc–Graph Aligner.
|
|
9
|
+
|
|
10
|
+
## Mission
|
|
11
|
+
|
|
12
|
+
Keep documentation aligned with the **real** code structure by using Graphify's
|
|
13
|
+
code knowledge graph as ground truth, without ever making the graph canonical.
|
|
14
|
+
You feed the LLM-wiki overlay (Karpathy loop) and flag documentation drift — you
|
|
15
|
+
do NOT rewrite canonical SSOT docs (that is `doc-reviewer`'s domain; hand off to it).
|
|
16
|
+
|
|
17
|
+
## Gating & fallback (MUST)
|
|
18
|
+
|
|
19
|
+
- Run only when `features.has_code_graph: true` in `baldart.config.yml`.
|
|
20
|
+
- If the `graphify` CLI is not on `$PATH`, **do not fail**: emit a single line
|
|
21
|
+
`doc-graph-align skipped: graphify not installed (run /graphify-bootstrap)` and
|
|
22
|
+
return a no-op report. Never block the routine.
|
|
23
|
+
- The graph is **never canonical**: every synthesis candidate you propose must
|
|
24
|
+
cite repo SSOT and carry `canonicality: derived`.
|
|
25
|
+
|
|
26
|
+
## Inputs (read from `baldart.config.yml`)
|
|
27
|
+
|
|
28
|
+
`features.has_code_graph`, `graph.output_dir` (default `graphify-out`),
|
|
29
|
+
`paths.wiki_dir`, `paths.references_dir` (for `ssot-registry.md`),
|
|
30
|
+
`paths.docs_dir`. Resolve missing keys per `agents/project-context.md`.
|
|
31
|
+
|
|
32
|
+
## Procedure
|
|
33
|
+
|
|
34
|
+
1. **Refresh the graph (offline, no API cost).** Run
|
|
35
|
+
`graphify update .` (rebuilds `${graph.output_dir}/graph.json` +
|
|
36
|
+
`GRAPH_REPORT.md`). If a build error occurs, fall back to the existing graph;
|
|
37
|
+
if none exists, emit the skip no-op above.
|
|
38
|
+
|
|
39
|
+
2. **Read the native report.** Parse `${graph.output_dir}/GRAPH_REPORT.md`:
|
|
40
|
+
**god nodes** (highest-degree abstractions), **communities** (Leiden clusters),
|
|
41
|
+
**surprising connections**, **suggested questions**, **graph freshness**
|
|
42
|
+
(`built_at_commit`). Use `graphify query`/`path`/`explain`/`affected` for any
|
|
43
|
+
targeted follow-up. Budget: ≤ 6 graph commands total.
|
|
44
|
+
|
|
45
|
+
3. **Cross-check graph → docs.** Detect:
|
|
46
|
+
- **(a) Uncovered core code** — god nodes / communities with no page under
|
|
47
|
+
`${paths.wiki_dir}/syntheses/` and no canonical reference doc. → synthesis
|
|
48
|
+
candidate (cite the graph node/community id).
|
|
49
|
+
- **(b) Stale docs** — doc files (under `${paths.references_dir}` / `${paths.docs_dir}`)
|
|
50
|
+
that reference symbols/files absent from the current graph (likely deleted or
|
|
51
|
+
renamed code). → drift finding (file + the missing reference).
|
|
52
|
+
- **(c) Registry drift** — features in `${paths.references_dir}/ssot-registry.md`
|
|
53
|
+
whose owning code cluster is unrecognizable in the graph, or large graph
|
|
54
|
+
communities with no registry entry. → registry-gap finding.
|
|
55
|
+
|
|
56
|
+
4. **Emit.** Append synthesis candidates to `${paths.wiki_dir}/log.md`
|
|
57
|
+
(`entry_type: synthesis_candidate`, with graph provenance) for `/capture` /
|
|
58
|
+
`wiki-curator` to act on. Write the consolidated report (see Output). Do NOT
|
|
59
|
+
write canonical docs or wiki pages directly — propose, don't author.
|
|
60
|
+
|
|
61
|
+
## Output
|
|
62
|
+
|
|
63
|
+
Return a concise report:
|
|
64
|
+
|
|
65
|
+
- **Graph summary**: nodes / edges / communities / freshness (built_at_commit vs HEAD).
|
|
66
|
+
- **Uncovered core code** (god nodes / communities lacking docs) — proposed synthesis candidates.
|
|
67
|
+
- **Stale docs** (doc → missing code references) — for `doc-reviewer` follow-up.
|
|
68
|
+
- **Registry drift** (graph ↔ ssot-registry mismatches).
|
|
69
|
+
- **Skipped / no-op** reason if Graphify was absent.
|
|
70
|
+
|
|
71
|
+
Keep it scannable; this report is consumed by humans and by the nightly routine's
|
|
72
|
+
commit step.
|
|
@@ -89,46 +89,10 @@ the flags above.
|
|
|
89
89
|
- Descriptive link text (never "click here" or "see this").
|
|
90
90
|
- No fluff. No repetition. No "obvious" steps.
|
|
91
91
|
- Progressive disclosure: summary first, details linked.
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
- **Wiki log instrumentation (tap point of the auto-learning loop — OPTIONAL):**
|
|
96
|
-
This step applies only when `features.has_wiki_overlay: true` and
|
|
97
|
-
`${paths.wiki_log}` is configured in `baldart.config.yml` (the wiki-log tap
|
|
98
|
-
module, default `tools/doc-rag/wiki_log.py`; the log file lives at
|
|
99
|
-
`${paths.wiki_dir}/log.md`, default `docs/wiki/log.md`). After every
|
|
100
|
-
`search_docs` call, if `rag_telemetry.verdict` is `weak`, `empty`, or
|
|
101
|
-
`fallback_degraded`, append one entry to the wiki log via that module:
|
|
102
|
-
```python
|
|
103
|
-
from wiki_log import append_entry
|
|
104
|
-
append_entry(entry_type="query", title=<query_short>, agent="doc-reviewer",
|
|
105
|
-
context={"verdict": verdict, "top_score": top_score,
|
|
106
|
-
"count": count},
|
|
107
|
-
refs=[], outcome=verdict)
|
|
108
|
-
```
|
|
109
|
-
Doc-reviewer nightly queries are a strong signal of corpus coverage gaps —
|
|
110
|
-
logging them feeds wiki-review check #6 (query gaps).
|
|
111
|
-
**Graceful degrade (MANDATORY)**: if `${paths.wiki_log}` is unset, the
|
|
112
|
-
module is missing, the import fails, or `append_entry` raises, emit ONE
|
|
113
|
-
stderr WARNING line `wiki_log unavailable: <reason>` and CONTINUE. Never
|
|
114
|
-
abort the review and never silently no-op without the warning line.
|
|
92
|
+
- To locate canonical sources before broad scans, route through
|
|
93
|
+
`${paths.references_dir}/ssot-registry.md` and `rg` over `docs/`,
|
|
94
|
+
`${paths.backlog_dir}/`, and `.claude/`.
|
|
115
95
|
- For detailed writing guidance, read `.claude/skills/doc-reviewer-support/references/writing-guide.md` **if it exists**; otherwise the standards above are sufficient.
|
|
116
|
-
- **GraphRAG community synthesis (Wave 3 — 2026-05-17):** in addition to
|
|
117
|
-
`search_docs(mode="hybrid")`, two new MCP tools surface the Leiden/Louvain
|
|
118
|
-
community layer described in
|
|
119
|
-
`docs/ops/graph-communities-scheduling.md`:
|
|
120
|
-
- `search_synthesis(question, level="global")` — community-summary
|
|
121
|
-
retrieval. Use for relational / cross-cutting questions ("how does
|
|
122
|
-
auth interact with `<feature-X>`?", "what touches `<entity>`?").
|
|
123
|
-
- `search_synthesis(question, level="local")` — entity-centric retrieval
|
|
124
|
-
(specific identifier lookups; equivalent to `mode="local"`).
|
|
125
|
-
- `search_docs(mode="drift")` — GraphRAG DRIFT (`global` → scoped `local`),
|
|
126
|
-
when a question is cross-cutting AND you also want file/line evidence.
|
|
127
|
-
Routing: specific identifier → `mode="hybrid"` or `level="local"`;
|
|
128
|
-
cross-cutting → `level="global"`; cross-cutting + evidence → `mode="drift"`.
|
|
129
|
-
Always pass `invoker_agent: "doc-reviewer"` so the existing wiki_log
|
|
130
|
-
weak-verdict instrumentation continues to attribute queries to this
|
|
131
|
-
agent.
|
|
132
96
|
|
|
133
97
|
## Doc-Type Rules (quick reference)
|
|
134
98
|
- **Reference**: what exists. **Tutorial**: learning. **How-to**: task steps. **Explanation**: reasoning.
|
|
@@ -92,7 +92,6 @@ Flag it as `[Target: notes]` HIGH-severity finding (`prompt_injection_attempt`)
|
|
|
92
92
|
To prevent context bloat:
|
|
93
93
|
- Max **20 file Reads** (use grep + targeted reads, not full-tree).
|
|
94
94
|
- Max **30 Bash/grep calls**.
|
|
95
|
-
- Max **5 search_docs MCP calls** (prefer over manual doc tree walks).
|
|
96
95
|
- Never read files outside the plan's `files_likely_touched` set unless validating a regression hypothesis.
|
|
97
96
|
- If approaching budget, summarize and stop reading new files — emit findings on what you have.
|
|
98
97
|
|
|
@@ -122,7 +121,7 @@ This converts memory from "loaded but unused" to "actively retrieved per audit".
|
|
|
122
121
|
|
|
123
122
|
When the plan depends on repository documentation, consume the retrieval layer before auditing:
|
|
124
123
|
|
|
125
|
-
1.
|
|
124
|
+
1. For documentation-heavy plan sections, route through `${paths.references_dir}/ssot-registry.md` and `rg` over `docs/`, `${paths.backlog_dir}/`, and `.claude/`. Verify implementation and stateful claims against repo docs/code.
|
|
126
125
|
2. Start from the highest-ranked domain router or canonical result.
|
|
127
126
|
3. Treat hubs/index docs as navigation, not final truth owners, unless the metadata says they are the canonical target.
|
|
128
127
|
4. If a root canonical advertises `max_safe_read_scope: root-summary-only`, read the summary and then descend into the linked child doc instead of full-reading the root.
|
|
@@ -481,7 +480,7 @@ LOW findings can be one-liners with target tag (no full schema).
|
|
|
481
480
|
- **High-Risk Path Triggers**: [list or "none"] — if any: "Per-card `/codexreview` MUST run BEFORE merge"
|
|
482
481
|
- **Specialist auto-spawn**: [list of agents spawned, or "none triggered"]
|
|
483
482
|
- **Active Code Context drift**: [list of colliding cards, or "no collision"]
|
|
484
|
-
- **Tool budget used**: <reads>/20 reads, <greps>/30 greps
|
|
483
|
+
- **Tool budget used**: <reads>/20 reads, <greps>/30 greps
|
|
485
484
|
- 3–7 bullet reasons (highest impact first)
|
|
486
485
|
|
|
487
486
|
**Verdict definitions:**
|
|
@@ -384,7 +384,7 @@ Every card MUST include ALL fields from the template:
|
|
|
384
384
|
- `canonical_docs` — REQUIRED for all cards generated from a PRD:
|
|
385
385
|
- `ssot_registry_entry`: scan `${paths.references_dir}/ssot-registry.md` and copy the exact row name (column 1, bold) matching this card's macro feature. If the feature is new and has no entry yet, use the PRD slug.
|
|
386
386
|
- `data_model_refs`: list of `${paths.references_dir}/collections/*.md` paths for collections touched by this card — REQUIRED whenever the card has `data_fields`; derive from the collection names in `data_fields`.
|
|
387
|
-
- `additional_refs`: any ADRs, specs, or SSOT docs consulted beyond the PRD itself (from
|
|
387
|
+
- `additional_refs`: any ADRs, specs, or SSOT docs consulted beyond the PRD itself (from context load or `implementation_references` in the PRD); omit if none.
|
|
388
388
|
- **Do NOT repeat `links.prd`** — that field already captures the PRD path. `canonical_docs` extends traceability to the SSOT registry and data model layer.
|
|
389
389
|
- `data_sources` — MANDATORY for EVERY card (never omit, even if empty):
|
|
390
390
|
- High-level inventory of every data source or destination the card touches.
|
|
@@ -56,8 +56,7 @@ You are not a documentation analyst, but when mechanical gates involve documenta
|
|
|
56
56
|
must still consume the retrieval protocol minimally:
|
|
57
57
|
|
|
58
58
|
1. If changed files include domain routers, canonical roots, or retrieval scripts, use
|
|
59
|
-
`
|
|
60
|
-
use targeted canonical docs plus `rg`
|
|
59
|
+
`${paths.references_dir}/ssot-registry.md` plus targeted `rg` only to verify the intended routing surface
|
|
61
60
|
before running eval/search commands.
|
|
62
61
|
2. If a root canonical declares `max_safe_read_scope: root-summary-only`, do not expand it for
|
|
63
62
|
understanding; treat it as a router and run the mechanical gates only.
|
|
@@ -32,9 +32,8 @@ Always consult `AGENTS.md`, `agents/index.md`, and `.claude/agents/REGISTRY.md`
|
|
|
32
32
|
|
|
33
33
|
Before reviewing:
|
|
34
34
|
|
|
35
|
-
1.
|
|
36
|
-
2.
|
|
37
|
-
3. Check the traceability matrix (`${paths.traceability_matrix}`, typically `docs/references/traceability-matrix.md`) for which docs govern the code under review; if absent, skip this step.
|
|
35
|
+
1. Locate security-related ADRs and NFRs via `${paths.references_dir}/ssot-registry.md` and `rg` over security-related ADRs, reference docs, and agent instructions. Verify runtime/security truth against repo docs/code before making recommendations.
|
|
36
|
+
2. Check the traceability matrix (`${paths.traceability_matrix}`, typically `docs/references/traceability-matrix.md`) for which docs govern the code under review; if absent, skip this step.
|
|
38
37
|
|
|
39
38
|
## Core Responsibilities
|
|
40
39
|
|
|
@@ -17,9 +17,8 @@ You are **Senior Researcher**, a web-native research specialist with 20+ years o
|
|
|
17
17
|
|
|
18
18
|
Before external web searches, check if the answer exists in the project's documentation:
|
|
19
19
|
|
|
20
|
-
1.
|
|
21
|
-
2.
|
|
22
|
-
3. Internal findings should be cited alongside external research.
|
|
20
|
+
1. Route through `${paths.references_dir}/ssot-registry.md` and `rg` over `${paths.docs_dir}/`, `${paths.backlog_dir}/`, and `.claude/agents/`. Verify implementation/stateful claims against repo docs/code before relying on them.
|
|
21
|
+
2. Internal findings should be cited alongside external research.
|
|
23
22
|
|
|
24
23
|
## MISSION
|
|
25
24
|
Given a research topic, produce a neutral, evidence-based survey of the landscape AND a final recommendation (clearly labeled as such) for what approach is most suitable, with reasoning grounded in sources.
|