feat(#2500): enrich gsd-codebase-mapper arch-focus ARCHITECTURE.md with ASCII diagrams, data flow traces, and constraints (#2715)
* feat(#2500): enrich gsd-codebase-mapper arch-focus ARCHITECTURE.md template The codebase mapper's arch-focus template was a sparse structural inventory. After major refactors, the research/ARCHITECTURE.md (created at /gsd-new-project and never refreshable) went stale while the refreshable codebase version lacked the visual richness that makes architecture docs useful for planning. Add to the ARCHITECTURE.md template: - <!-- refreshed: {date} --> marker at the top (maintainer request) - ASCII system overview diagram with component boxes and flow arrows - Component responsibility table (Component / Responsibility / File) - Primary request path traces with numbered steps and code references - Architectural constraints section (threading, global state, circular imports) - Anti-patterns section with codebase-specific patterns and correct alternatives All existing sections (Pattern Overview, Layers, Key Abstractions, Entry Points, Error Handling, Cross-Cutting Concerns) are preserved. 7 new tests in tests/enh-2500-codebase-mapper-arch-rich-format.test.cjs verify each required section is present in the deployed template. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(#2500): resolve CodeRabbit review findings - Add 'text' language tag to bare ASCII diagram fenced block (markdownlint MD040) - Tighten data flow test: require '### Primary Request Path' heading, 3+ numbered steps, and file:line reference pattern — prevents loose-match false positives - Tighten constraints test: require '## Architectural Constraints' heading AND Threading / Global state / Circular imports tokens — prevents broad keyword matches masking regressions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -339,10 +339,42 @@ Ready for orchestrator summary.
|
||||
## ARCHITECTURE.md Template (arch focus)
|
||||
|
||||
```markdown
|
||||
<!-- refreshed: [YYYY-MM-DD] -->
|
||||
# Architecture
|
||||
|
||||
**Analysis Date:** [YYYY-MM-DD]
|
||||
|
||||
## System Overview
|
||||
|
||||
```text
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ [Top Layer Name] │
|
||||
├──────────────────┬──────────────────┬───────────────────────┤
|
||||
│ [Component A] │ [Component B] │ [Component C] │
|
||||
│ `[path/to/a]` │ `[path/to/b]` │ `[path/to/c]` │
|
||||
└────────┬─────────┴────────┬─────────┴──────────┬────────────┘
|
||||
│ │ │
|
||||
▼ ▼ ▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ [Middle Layer Name] │
|
||||
│ `[path/to/layer]` │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────────────────────────────────────────────────┐
|
||||
│ [Store / Output / External] │
|
||||
│ `[path/to/store]` │
|
||||
└─────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Component Responsibilities
|
||||
|
||||
| Component | Responsibility | File |
|
||||
|-----------|----------------|------|
|
||||
| [Name] | [What it owns] | `[path]` |
|
||||
| [Name] | [What it owns] | `[path]` |
|
||||
| [Name] | [What it owns] | `[path]` |
|
||||
|
||||
## Pattern Overview
|
||||
|
||||
**Overall:** [Pattern name]
|
||||
@@ -363,7 +395,13 @@ Ready for orchestrator summary.
|
||||
|
||||
## Data Flow
|
||||
|
||||
**[Flow Name]:**
|
||||
### Primary Request Path
|
||||
|
||||
1. [Step 1 — entry point] (`[file:line]`)
|
||||
2. [Step 2 — processing] (`[file:line]`)
|
||||
3. [Step 3 — output/response] (`[file:line]`)
|
||||
|
||||
### [Secondary Flow Name]
|
||||
|
||||
1. [Step 1]
|
||||
2. [Step 2]
|
||||
@@ -386,6 +424,27 @@ Ready for orchestrator summary.
|
||||
- Triggers: [What invokes it]
|
||||
- Responsibilities: [What it does]
|
||||
|
||||
## Architectural Constraints
|
||||
|
||||
- **Threading:** [Threading model — e.g., single-threaded event loop, worker threads used for X]
|
||||
- **Global state:** [Any module-level singletons or shared mutable state — list files]
|
||||
- **Circular imports:** [Known circular dependency chains, if any]
|
||||
- **[Other constraint]:** [Description]
|
||||
|
||||
## Anti-Patterns
|
||||
|
||||
### [Anti-Pattern Name]
|
||||
|
||||
**What happens:** [The incorrect pattern observed in this codebase]
|
||||
**Why it's wrong:** [The problem it causes here]
|
||||
**Do this instead:** [The correct pattern with file reference]
|
||||
|
||||
### [Anti-Pattern Name]
|
||||
|
||||
**What happens:** [The incorrect pattern observed in this codebase]
|
||||
**Why it's wrong:** [The problem it causes here]
|
||||
**Do this instead:** [The correct pattern with file reference]
|
||||
|
||||
## Error Handling
|
||||
|
||||
**Strategy:** [Approach]
|
||||
|
||||
Reference in New Issue
Block a user