Skip to content

Commit cd9b71a

Browse files
davidmatousekclaude
andcommitted
docs: close Feature 084 — update all documentation
Product: PRD INDEX (Delivered), User Stories, OKRs (PM) Architecture: Tech Stack, ADR-020 MAESTRO classification (Architect) DevOps: No changes needed (content-only feature) KB: KB-021 — taxonomy overlay propagation pattern Delivery: retrospective, metrics, delivery.md Cleanup: branch deleted, tasks verified, BACKLOG.md regenerated Co-Authored-By: Claude <noreply@anthropic.com>
1 parent ac2ca0e commit cd9b71a

File tree

9 files changed

+254
-18
lines changed

9 files changed

+254
-18
lines changed

CLAUDE.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,12 @@ When invoked as a subagent (via Agent tool), return ONLY:
9898
- Review `agent-assignments.md` for workload distribution
9999

100100
## Recent Changes
101+
- **Feature 084**: MAESTRO Layer Mapping (CSA seven-layer taxonomy for agentic AI)
102+
- New `maestro_layer` field in `schemas/finding.yaml` (schema_version 1.1 to 1.2)
103+
- Orchestrator Phase 1 keyword classification, finding inheritance, SARIF tags
104+
- Downstream propagation: risk-scorer, control-analyzer, threat-report
105+
- New shared reference: `.claude/skills/tachi-shared/references/maestro-layers-shared.md`
106+
- All 6 example outputs regenerated with MAESTRO layer columns
101107
- **Feature 086**: Automated Release Tagging via GitHub Actions
102108
- release-please workflow for version tagging and CHANGELOG generation on merge to main
103109
- New files: `.github/workflows/release-please.yml`, `release-please-config.json`, `.release-please-manifest.json`

docs/INSTITUTIONAL_KNOWLEDGE.md

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
**Project**: tachi - Automated threat modeling toolkit extending STRIDE with AI-specific threat agents for agentic applications
44
**Purpose**: Capture learnings, patterns, and solutions to prevent repeated mistakes
55
**Created**: {{PROJECT_START_DATE}}
6-
**Last Updated**: 2026-04-06
6+
**Last Updated**: 2026-04-08
77

8-
**Entry Count**: 20 / 20 (KB System Upgrade triggers at 20 — schedule review)
8+
**Entry Count**: 21 / 20 (KB System Upgrade triggers at 20 — schedule review)
99
**Last Review**: 2026-03-30
1010
**Status**: ✅ Manual mode (file-based)
1111

@@ -410,6 +410,29 @@ Captured during structured delivery retrospective. Smooth sailing — everything
410410

411411
---
412412

413+
### KB-021: Taxonomy Overlay Features Propagate Smoothly Through Finding IR
414+
415+
**Date**: 2026-04-08
416+
**Category**: Architecture
417+
**Source**: Feature 084 retrospective
418+
**Severity**: Informational
419+
420+
**Problem**: Uncertainty about whether adding a new classification dimension (MAESTRO layers) to the existing pipeline would require significant refactoring of downstream agents and output formats.
421+
422+
**Root Cause**: The finding IR was designed with optional extensible fields, and downstream agents already follow a passive propagation pattern — they include whatever fields exist in the finding without gating on them. This architecture makes taxonomy overlays a natural fit.
423+
424+
**Solution**: Feature 084 added `maestro_layer` as an optional field in the finding schema, classified components in Phase 1 via keyword matching, and let the field flow passively to all downstream outputs. No agent detection logic, scoring formulas, or dispatch rules required changes. All 22 tasks completed in 2 days across 5 waves.
425+
426+
**Result**: Implementation was smoother and faster than the 2-3 day estimate. The keyword-based classification achieved 95.2% accuracy on existing examples. Example regeneration validated the full pipeline end-to-end in a single pass.
427+
428+
**When to Apply**: Any future feature that adds a classification dimension to findings (e.g., compliance framework mapping, kill-chain phase tagging). Follow the same pattern: define taxonomy in shared reference, classify in Phase 1, extend schema with optional field, let downstream agents propagate passively.
429+
430+
**Tags**: #retrospective #architecture #taxonomy #pipeline #maestro
431+
432+
**Quality Score**: 8/10
433+
434+
---
435+
413436
## Bug Fixes
414437

415438
*No entries yet. Use `/kb-create` to add the first bug fix.*

docs/architecture/00_Tech_Stack/README.md

Lines changed: 9 additions & 9 deletions
Large diffs are not rendered by default.
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# ADR-020: MAESTRO Layer Classification for Threat Findings
2+
3+
**Status**: Accepted
4+
**Date**: 2026-04-08
5+
**Deciders**: Architect
6+
**Feature**: 084 (MAESTRO Layer Mapping)
7+
8+
---
9+
10+
## Context
11+
12+
tachi's threat model pipeline classifies components by DFD element type (External Entity, Process, Data Store, Data Flow) during Phase 1 (Scope), then dispatches STRIDE and AI threat agents accordingly. However, the pipeline had no awareness of where components sit within an agentic AI architecture stack. This limited the ability to:
13+
14+
1. **Identify architectural concentration risk**: Threats clustered at one layer (e.g., many threats against Foundation Model components) were invisible without manual review.
15+
2. **Align with industry taxonomy**: Security teams using CSA's MAESTRO framework could not map tachi findings to their existing layer-based security controls.
16+
3. **Enable layer-based risk aggregation**: The Risk Summary section could not break down findings by architectural layer, making it harder to prioritize remediation across system tiers.
17+
18+
**Constraints**:
19+
- Classification must not require user-provided layer annotations -- it must be automatic.
20+
- Classification must be deterministic and auditable (no LLM-based classification of component types).
21+
- The new field must propagate through the entire pipeline without breaking existing consumers.
22+
- Classification must handle components that do not fit any layer gracefully (no errors for unclassifiable components).
23+
24+
---
25+
26+
## Decision
27+
28+
We will adopt the **CSA MAESTRO seven-layer taxonomy** as the architectural layer classification framework, implemented via **keyword-based substring matching** during Phase 1 with ordered evaluation (L1 through L7, first match wins).
29+
30+
The implementation adds:
31+
1. A shared reference file (`maestro-layers-shared.md`) with the canonical keyword-to-layer mapping table.
32+
2. An optional `maestro_layer` field on the finding IR schema (`schemas/finding.yaml`, schema_version 1.1 to 1.2).
33+
3. Phase 1 classification: after DFD type assignment, each component is classified by matching its name, description, and DFD type against layer keywords.
34+
4. Phase 3 inheritance: each finding inherits `maestro_layer` from its target component.
35+
5. Passive propagation through downstream agents (risk-scorer, control-analyzer, threat-report).
36+
37+
---
38+
39+
## Rationale
40+
41+
**Reasons**:
42+
1. **Industry alignment**: CSA MAESTRO is the only published seven-layer taxonomy specifically designed for agentic AI architectures. Using it provides a shared vocabulary with the broader security community.
43+
2. **Keyword matching reuses proven pattern**: The AI dispatch mechanism (Feature 007) already uses case-insensitive keyword matching to classify components. MAESTRO classification follows the same pattern, reducing implementation risk.
44+
3. **Deterministic and auditable**: Keyword matching produces the same result every run for the same input, unlike LLM-based classification which could vary between invocations. The keyword table is inspectable and versioned.
45+
4. **Non-breaking schema extension**: The `maestro_layer` field defaults to "Unclassified", making it backward-compatible with existing threat models and consumers that do not use it.
46+
5. **Shared reference prevents drift**: Following ADR-019 (shared definitions), the keyword table lives in `tachi-shared` as a single source of truth consumed by all agents that need layer awareness.
47+
48+
---
49+
50+
## Alternatives Considered
51+
52+
### Alternative 1: LLM-Based Component Classification
53+
**Pros**:
54+
- Could handle ambiguous component names more intelligently
55+
- No keyword table maintenance
56+
57+
**Cons**:
58+
- Non-deterministic: same component could be classified differently across runs
59+
- Not auditable: no inspectable mapping table
60+
- Adds inference cost and latency to Phase 1
61+
- Conflicts with tachi's deterministic pipeline design principle
62+
63+
**Why Not Chosen**: Determinism and auditability are critical for security tooling. Keyword matching provides both while handling the vast majority of real-world component names correctly.
64+
65+
### Alternative 2: User-Provided Layer Annotations
66+
**Pros**:
67+
- Most accurate classification possible
68+
- No false positives from keyword matching
69+
70+
**Cons**:
71+
- Adds mandatory input burden on every threat model run
72+
- Breaks the current zero-configuration input contract
73+
- Users unfamiliar with MAESTRO would produce inaccurate annotations
74+
75+
**Why Not Chosen**: Automatic classification with graceful fallback ("Unclassified") delivers value without requiring users to learn a new taxonomy.
76+
77+
### Alternative 3: Custom Layer Taxonomy
78+
**Pros**:
79+
- Could be tailored exactly to tachi's needs
80+
- No dependency on external framework updates
81+
82+
**Cons**:
83+
- Reinvents an existing standard without adding value
84+
- No shared vocabulary with the security community
85+
- Additional maintenance burden to keep custom taxonomy current
86+
87+
**Why Not Chosen**: CSA MAESTRO is well-aligned with tachi's target domain (agentic AI). A custom taxonomy would duplicate effort without meaningful benefit.
88+
89+
---
90+
91+
## Consequences
92+
93+
### Positive
94+
- Threat models now include architectural layer context for every component and finding
95+
- Risk Summary includes a "Risk by MAESTRO Layer" breakdown enabling layer-based prioritization
96+
- SARIF output tags findings with MAESTRO layer for downstream tooling integration
97+
- Aligns tachi with CSA's industry-standard framework for agentic AI security
98+
99+
### Negative
100+
- Keyword matching can misclassify components with ambiguous names (e.g., "API Gateway" could be L4 or L7)
101+
- Evaluation order (L1-L7) is load-bearing -- reordering keywords changes classification
102+
- Adding new layers or modifying keywords requires regression testing against all example outputs
103+
104+
### Mitigation
105+
- Evaluation order follows a specificity gradient (most specific first) to minimize ambiguity
106+
- "Unclassified" default ensures graceful degradation for unrecognized components
107+
- All 6 example outputs were regenerated and validated after implementation
108+
- Keyword table changes are documented with a warning about ordering sensitivity
109+
110+
---
111+
112+
## Related Decisions
113+
114+
- [ADR-019](ADR-019-shared-definitions-and-model-field-governance.md): Shared definitions pattern that governs where the MAESTRO keyword table lives
115+
- [ADR-003](ADR-003-stride-per-element-dispatch.md): STRIDE-per-Element dispatch pattern that MAESTRO classification extends
116+
117+
---
118+
119+
## References
120+
121+
- `.claude/skills/tachi-shared/references/maestro-layers-shared.md` -- Canonical keyword-to-layer mapping
122+
- `schemas/finding.yaml` -- Finding IR schema with `maestro_layer` field (v1.2)
123+
- Cloud Security Alliance, "MAESTRO: Multi-Agent Environment Security Toolkit for Reasoning and Orchestration", February 2025

docs/product/02_PRD/INDEX.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
# PRD Index
22

3-
**Last Updated**: 2026-04-07
3+
**Last Updated**: 2026-04-08
44

55

66
| # | Feature | PM | Architect | Team-Lead | Status | Date |
77
|---|---------|----|-----------|-----------| -------|------|
8-
| 084 | [MAESTRO Layer Mapping](084-maestro-layer-mapping-2026-04-07.md) | | | | Approved | 2026-04-07 |
8+
| 084 | [MAESTRO Layer Mapping](084-maestro-layer-mapping-2026-04-07.md) | | | | Delivered | 2026-04-08 |
99
| 086 | [Automated Release Tagging via GitHub Actions](086-automated-release-tagging-via-github-actions-2026-04-06.md) |||| Delivered | 2026-04-06 |
1010
| 066 | [Install Script and Version Tagging](066-install-script-and-version-tagging-2026-04-06.md) |||| Delivered | 2026-04-06 |
1111
| 078 | [Agent Context Optimization](078-agent-context-optimization-2026-04-01.md) |||| Delivered | 2026-04-02 |

docs/product/05_User_Stories/README.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# User Stories - tachi
22

3-
**Last Updated**: 2026-04-02
3+
**Last Updated**: 2026-04-08
44
**Owner**: Product Manager (product-manager)
55
**Status**: Template - Complete after MVP launch
66

@@ -373,3 +373,13 @@ Each PRD should include relevant user stories:
373373
- **US-078-3** (P1): Model Field Assignment - All 17 tachi agent definitions updated with explicit model fields for optimal delegation routing across agent tiers (Leaf, Report, Methodology)
374374
- **US-078-4** (P1): Best Practices Documentation Update - Shared _TACHI_AGENT_BEST_PRACTICES.md updated with restructuring patterns, skill reference conventions, and compliance verification for all 17 agents
375375
- **US-078-5** (P0): Zero Regression Validation - All restructured agents validated against example threat models with equivalent output structure, severity counts, and SARIF compliance preserved
376+
377+
### Feature 084: MAESTRO Layer Mapping
378+
379+
**PRD**: [084-maestro-layer-mapping](../02_PRD/084-maestro-layer-mapping-2026-04-07.md)
380+
**Delivered**: 2026-04-08 | **PR**: #92 | **Tasks**: 22/22 complete | **Stories**: 4/4 passing
381+
382+
- **US-084-1** (P0): Layer-Tagged Threat Findings - Each finding in STRIDE and AI threat tables includes a MAESTRO Layer column, derived from component classification in Phase 1 with "Unclassified" default for unmatched components
383+
- **US-084-2** (P0): Phase 1 Component Classification - Orchestrator classifies each component by MAESTRO layer using keyword matching against name, description, and DFD type during Phase 1 (Scope), with dispatch table showing MAESTRO Layer column
384+
- **US-084-3** (P0): SARIF Layer Tags - SARIF results include `maestro-layer:{layer-name}` in properties.tags array and `maestro-layer` key in properties for security tooling filtering
385+
- **US-084-4** (P1): Layer-Based Risk Summary - Risk summary in threats.md includes "Risk by MAESTRO Layer" subsection showing finding count and highest severity per layer, omitting layers with zero findings

docs/product/06_OKRs/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# OKRs (Objectives and Key Results) - tachi
22

3-
**Last Updated**: 2026-04-02
3+
**Last Updated**: 2026-04-08
44
**Owner**: Product Manager (product-manager)
55
**Status**: Template - Complete after MVP launch
66

@@ -164,3 +164,4 @@ OKRs align the team around measurable goals. They answer:
164164
| 2026-04-01 | F-074: Baseline-Aware Pipeline | [074](../02_PRD/074-baseline-aware-pipeline-2026-03-31.md) | Baseline-aware threat detection pipeline with 4-phase orchestration (carry-forward, isolated discovery, merge/dedup, coverage gate). Correlates findings across runs with stable IDs via SARIF fingerprints. Delta annotations (`[NEW]`, `[UNCHANGED]`, `[UPDATED]`, `[RESOLVED]`) on all outputs. Coverage checklists per STRIDE category. Extended orchestrator, risk-scorer, and control-analyzer agents. New coverage-checklists schema. Updated all output templates and SARIF properties. Unblocks #55 (Security Progression Summary). |
165165
| 2026-04-02 | F-078: Agent Context Optimization | [078](../02_PRD/078-agent-context-optimization-2026-04-01.md) | Restructured 6 tachi agents (orchestrator, risk-scorer, control-analyzer, report-assembler, threat-report, threat-infographic) from monolithic prompts to lean definitions with on-demand skill references. Created 4 skill directories (tachi-orchestration, tachi-risk-scoring, tachi-report-assembly, tachi-shared) with 25+ granular reference files. Added explicit model fields to all 17 agent definitions. Reduced agent prompt sizes by 40-60%. Zero regression on threat model outputs. |
166166
| 2026-04-06 | F-086: Automated Release Tagging via GitHub Actions | [086](../02_PRD/086-automated-release-tagging-via-github-actions-2026-04-06.md) | Google release-please GitHub Action for automated version tagging from conventional commits. Deliverables: release-please.yml workflow, release-please-config.json, .release-please-manifest.json (baseline v4.0.0), README Releases section. Eliminates manual `git tag` commands; maintainer controls release timing via Release PR merge. |
167+
| 2026-04-08 | F-084: MAESTRO Layer Mapping | [084](../02_PRD/084-maestro-layer-mapping-2026-04-07.md) | CSA MAESTRO seven-layer taxonomy overlay for all threat findings. New schema field, shared reference, orchestrator keyword classification in Phase 1, SARIF tags, downstream agent propagation, layer-based risk summary. All 6 example outputs regenerated. 4 user stories delivered. |

docs/product/_backlog/BACKLOG.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Backlog
22

3-
> Auto-generated from GitHub Issues on 2026-04-07T23:22:23Z.
3+
> Auto-generated from GitHub Issues on 2026-04-08T15:15:56Z.
44
> Source of truth: GitHub Issues with `stage:*` labels.
55
> Regenerate: `/aod.status` or `.aod/scripts/bash/backlog-regenerate.sh`
66
@@ -37,15 +37,14 @@
3737

3838
| # | Title | Delivered | Retro | Updated |
3939
|---|-------|-----------|-------|---------|
40-
| | *No items in this stage* | | |
40+
| #84 | MAESTRO layer mapping — CSA seven-layer taxonomy overlay for threat findings | 2026-04-08 || 2026-04-08 |
4141

4242
## Untracked
4343

4444
> These issues have no `stage:*` label. Add a label to track them in the lifecycle.
4545
4646
| # | Title | State | Updated |
4747
|---|-------|-------|---------|
48-
| #84 | MAESTRO layer mapping — CSA seven-layer taxonomy overlay for threat findings | OPEN | 2026-04-07 |
4948
| #27 | Developer Guide: Automated Threat Modeling for Your Architecture | CLOSED | 2026-03-24 |
5049
| #18 | Feature: Threat Infographic Agent | CLOSED | 2026-03-23 |
5150
| #15 | Feature 007: Threat Report Agent & Attack Trees | CLOSED | 2026-03-23 |
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# Delivery Report — Feature 084: MAESTRO Layer Mapping
2+
3+
**Feature**: 084 — MAESTRO Layer Mapping
4+
**Branch**: `084-maestro-layer-mapping`
5+
**PR**: #92 (squash-merged)
6+
**Delivered**: 2026-04-08
7+
**Issue**: #84
8+
9+
---
10+
11+
## Delivery Metrics
12+
13+
| Metric | Value |
14+
|--------|-------|
15+
| Tasks completed | 22/22 |
16+
| Execution waves | 5 |
17+
| Estimated duration | 2-3 days |
18+
| Actual duration | 2 days (2026-04-07 → 2026-04-08) |
19+
| Checkpoints passed | P0 ✅, P1 ✅, P2 ✅ |
20+
21+
## Validation Results
22+
23+
| Criterion | Result |
24+
|-----------|--------|
25+
| SC-001: Classification rate | 95.2% — PASS (>90%) |
26+
| SC-003: Non-MAESTRO diffs | Zero — PASS |
27+
| Architect review | APPROVED_WITH_CONCERNS (1 low — resolved) |
28+
| Code review | APPROVED (after fixes) |
29+
| Security scan | Skipped (no code or manifest files changed) |
30+
31+
## Key Deliverables
32+
33+
1. **Shared reference**: `.claude/skills/tachi-shared/references/maestro-layers-shared.md` — canonical MAESTRO taxonomy with keyword mappings
34+
2. **Schema extension**: `schemas/finding.yaml` — new `maestro_layer` field, schema_version 1.1 → 1.2
35+
3. **Orchestrator classification**: Phase 1 MAESTRO keyword matching + finding inheritance
36+
4. **SARIF tags**: `maestro-layer:{layer}` in `properties.tags[]`
37+
5. **Downstream propagation**: risk-scorer, control-analyzer, threat-report all propagate MAESTRO layer
38+
6. **Example outputs**: All 6 example architectures regenerated with MAESTRO layer columns
39+
7. **Output schema template**: `templates/tachi/output-schemas/threats.md` updated
40+
41+
## User Stories Delivered
42+
43+
| Story | Priority | Status |
44+
|-------|----------|--------|
45+
| US-1: Layer-Tagged Threat Findings | P0 | ✅ Delivered |
46+
| US-2: Phase 1 Component Classification | P0 | ✅ Delivered |
47+
| US-3: SARIF Layer Tags | P0 | ✅ Delivered |
48+
| US-4: Layer-Based Risk Summary | P1 | ✅ Delivered |
49+
50+
## Surprise Log
51+
52+
**Smoother than expected** — Implementation went faster than anticipated. The taxonomy overlay pattern (optional field + passive propagation) proved to be a natural fit for the existing finding IR architecture. Keyword-based classification was deterministic and required no model changes. Downstream agents needed only column additions, not logic changes.
53+
54+
## Lessons Learned
55+
56+
**KB-021**: Taxonomy overlay features propagate smoothly through the finding IR. The optional-field + passive-propagation pattern makes adding new classification dimensions (MAESTRO layers, compliance mappings, kill-chain phases) straightforward. Future taxonomy features should follow the same approach: shared reference → Phase 1 classification → schema extension → passive propagation.
57+
58+
## Documentation Updates
59+
60+
| Domain | Agent | Files Updated |
61+
|--------|-------|---------------|
62+
| Product | PM | PRD INDEX, User Stories, OKRs |
63+
| Architecture | Architect | Tech Stack, ADR-020 (new), CLAUDE.md, system design (pre-existing) |
64+
| DevOps | DevOps | No changes needed (content-only feature) |
65+
| KB || INSTITUTIONAL_KNOWLEDGE.md (KB-021) |
66+
67+
## Triad Sign-offs
68+
69+
| Role | Artifact | Status | Date |
70+
|------|----------|--------|------|
71+
| PM | spec.md | APPROVED | 2026-04-07 |
72+
| PM | tasks.md | APPROVED | 2026-04-07 |
73+
| Architect | tasks.md | APPROVED_WITH_CONCERNS | 2026-04-07 |
74+
| Team Lead | tasks.md | APPROVED | 2026-04-07 |

0 commit comments

Comments
 (0)