@a-company/paradigm 6.0.5 → 6.2.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/dist/active-remediations-OVJJIBNR.js +2 -0
- package/dist/arch-5UVPSOG2.js +3 -0
- package/dist/chunk-THAMRY4J.js +4 -0
- package/dist/{chunk-MOVDVBU7.js → chunk-UMC4RC66.js} +80 -49
- package/dist/index.js +5 -5
- package/dist/mcp.js +1 -1
- package/dist/override-UBST2TPS.js +4 -0
- package/dist/{tools-VNDXOFXR.js → tools-F34P22PW.js} +1 -1
- package/dist/university-content/notes/.purpose +14 -0
- package/dist/university-content/notes/N-para-701-arch-mcp-tools.md +149 -0
- package/dist/university-content/notes/N-para-701-arch-yaml-format.md +123 -0
- package/dist/university-content/notes/N-para-701-atlas-agent.md +83 -0
- package/dist/university-content/paths/.purpose +12 -0
- package/dist/university-content/paths/LP-para-701.yaml +15 -0
- package/dist/university-content/quizzes/.purpose +14 -0
- package/dist/university-content/quizzes/Q-para-701-arch-mcp-tools.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-arch-yaml-format.yaml +66 -0
- package/dist/university-content/quizzes/Q-para-701-atlas-agent.yaml +66 -0
- package/dist/university-content/quizzes/Q-plsat-v3.yaml +126 -1
- package/package.json +1 -1
- package/dist/active-remediations-EBLHRMNN.js +0 -5
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-arch-mcp-tools
|
|
3
|
+
title: 'Lesson 13: The arch MCP Tools'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-28'
|
|
7
|
+
updated: '2026-04-28'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- arch-tools
|
|
12
|
+
- mcp-tools
|
|
13
|
+
symbols: []
|
|
14
|
+
difficulty: intermediate
|
|
15
|
+
estimatedMinutes: 5
|
|
16
|
+
prerequisites:
|
|
17
|
+
- N-para-701-atlas-agent
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-701.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Overview
|
|
24
|
+
|
|
25
|
+
Paradigm exposes two MCP tools for architectural map queries. Both are read-only and operate on `.paradigm/arch.yaml`. They are available whenever the `arch.yaml` file exists — the tool registry auto-detects the file and activates the arch tool module.
|
|
26
|
+
|
|
27
|
+
The two tools are:
|
|
28
|
+
- `paradigm_arch_status` — tier summary + drift report
|
|
29
|
+
- `paradigm_arch_diagram` — Mermaid diagram string
|
|
30
|
+
|
|
31
|
+
There is also a CLI interface with the same functionality: `paradigm arch status` and `paradigm arch diagram`.
|
|
32
|
+
|
|
33
|
+
## paradigm_arch_status
|
|
34
|
+
|
|
35
|
+
**Purpose:** Get a complete summary of the architectural map, including tier details and drift report.
|
|
36
|
+
|
|
37
|
+
**Token cost:** ~200 tokens
|
|
38
|
+
|
|
39
|
+
**Input:** No required fields. The tool reads `arch.yaml` from the project root automatically.
|
|
40
|
+
|
|
41
|
+
**Output when arch.yaml exists:**
|
|
42
|
+
```json
|
|
43
|
+
{
|
|
44
|
+
"exists": true,
|
|
45
|
+
"version": "1.0",
|
|
46
|
+
"tierCount": 3,
|
|
47
|
+
"tiers": [
|
|
48
|
+
{
|
|
49
|
+
"id": "frontend",
|
|
50
|
+
"label": "Frontend",
|
|
51
|
+
"responsibility": "User interface and client-side logic",
|
|
52
|
+
"framework": "React",
|
|
53
|
+
"componentCount": 8,
|
|
54
|
+
"components": ["#auth-form", "#dashboard-view", "..."]
|
|
55
|
+
}
|
|
56
|
+
],
|
|
57
|
+
"links": [
|
|
58
|
+
{ "from": "frontend", "to": "backend", "via": "REST API" }
|
|
59
|
+
],
|
|
60
|
+
"drift": {
|
|
61
|
+
"unassigned": ["#analytics-service", "#export-worker"],
|
|
62
|
+
"missing_purpose": ["#legacy-gateway"],
|
|
63
|
+
"clean": false
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Output when arch.yaml is missing:**
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"exists": false,
|
|
72
|
+
"message": "No arch.yaml found. Create .paradigm/arch.yaml to start mapping your architecture."
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
**When to call it:**
|
|
77
|
+
- At the start of an architectural review session
|
|
78
|
+
- After a large feature build to check for tier drift
|
|
79
|
+
- When a stakeholder asks for an architecture overview
|
|
80
|
+
- As part of a Context Brief when the task involves cross-tier work
|
|
81
|
+
|
|
82
|
+
## paradigm_arch_diagram
|
|
83
|
+
|
|
84
|
+
**Purpose:** Render the architectural map as a Mermaid diagram string.
|
|
85
|
+
|
|
86
|
+
**Token cost:** ~150 tokens
|
|
87
|
+
|
|
88
|
+
**Input:** Optional `format` field (only `"mermaid"` is supported; default: `"mermaid"`).
|
|
89
|
+
|
|
90
|
+
**Output when arch.yaml exists:**
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"format": "mermaid",
|
|
94
|
+
"diagram": "graph TD\n frontend[\"Frontend\\n(User interface)\"]\n backend[\"Backend\\n(Business logic)\"]\n database[\"Database\\n(Persistence)\"]\n frontend -->|\"REST API\"| backend\n backend -->|\"Prisma ORM\"| database"
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
**Output when arch.yaml is missing:**
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"error": "No arch.yaml found. Cannot render diagram."
|
|
102
|
+
}
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**When to call it:**
|
|
106
|
+
- To generate a diagram for inclusion in a pull request description
|
|
107
|
+
- When onboarding a new team member who needs a visual of the system
|
|
108
|
+
- When preparing architecture documentation
|
|
109
|
+
- After adding new tiers or links to verify the diagram renders correctly
|
|
110
|
+
|
|
111
|
+
## Choosing the Right Tool
|
|
112
|
+
|
|
113
|
+
| Goal | Tool to Use |
|
|
114
|
+
|---|---|
|
|
115
|
+
| "How many tiers do we have, and what are they?" | `paradigm_arch_status` |
|
|
116
|
+
| "Which new components are not yet in a tier?" | `paradigm_arch_status` → check `drift.unassigned` |
|
|
117
|
+
| "Which components in arch.yaml no longer exist?" | `paradigm_arch_status` → check `drift.missing_purpose` |
|
|
118
|
+
| "Generate a diagram I can paste into Confluence" | `paradigm_arch_diagram` |
|
|
119
|
+
| "Is the architecture clean (no drift)?" | `paradigm_arch_status` → check `drift.clean` |
|
|
120
|
+
|
|
121
|
+
Call `paradigm_arch_status` first in any architectural session. Call `paradigm_arch_diagram` when you need a visual. There is no need to call both unless you want both the summary data and the diagram string.
|
|
122
|
+
|
|
123
|
+
## The CLI Interface
|
|
124
|
+
|
|
125
|
+
The same functionality is available from the terminal:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Show tier summary (default subcommand)
|
|
129
|
+
paradigm arch status
|
|
130
|
+
paradigm arch # same as above
|
|
131
|
+
|
|
132
|
+
# Output as JSON for scripting
|
|
133
|
+
paradigm arch status --json
|
|
134
|
+
|
|
135
|
+
# Print Mermaid diagram to stdout
|
|
136
|
+
paradigm arch diagram
|
|
137
|
+
paradigm arch diagram | pbcopy # macOS: copy to clipboard
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
The CLI is useful for quick checks, for integrating into CI scripts that report on architectural health, and for generating diagrams in automated documentation workflows.
|
|
141
|
+
|
|
142
|
+
## Tool Detection
|
|
143
|
+
|
|
144
|
+
Both tools are registered in the `feature` tier of the MCP tool registry. They activate automatically when `.paradigm/arch.yaml` exists in the project root. If the file does not exist, the tools are not listed in the tool registry and do not consume token budget in tool-list payloads.
|
|
145
|
+
|
|
146
|
+
This means:
|
|
147
|
+
- Projects without `arch.yaml` will never see arch tools in their tool list
|
|
148
|
+
- Projects with `arch.yaml` always have both tools available without any configuration
|
|
149
|
+
- Creating `arch.yaml` is the only setup required to activate Atlas's full toolset
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-arch-yaml-format
|
|
3
|
+
title: 'Lesson 11: The arch.yaml Format'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-28'
|
|
7
|
+
updated: '2026-04-28'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- arch-yaml
|
|
12
|
+
- architectural-map
|
|
13
|
+
symbols: []
|
|
14
|
+
difficulty: intermediate
|
|
15
|
+
estimatedMinutes: 5
|
|
16
|
+
prerequisites:
|
|
17
|
+
- N-para-701-agent-roster
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-701.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## What Is arch.yaml?
|
|
24
|
+
|
|
25
|
+
The file `.paradigm/arch.yaml` is an optional architectural layer map. When it exists, Paradigm knows the intended tier structure of a project — which components belong to which layer, what each layer is responsible for, and how layers connect to each other. It is the source of truth for macro-level architecture.
|
|
26
|
+
|
|
27
|
+
The file is optional. Projects without it still work — symbol indexing, orchestration, and all other Paradigm features function normally. You create `arch.yaml` when you want to:
|
|
28
|
+
|
|
29
|
+
- Document the intended architectural layers of a project (frontend, backend, database, infrastructure)
|
|
30
|
+
- Detect drift between declared architecture and the live symbol index
|
|
31
|
+
- Render architecture diagrams for onboarding or architectural review
|
|
32
|
+
- Give Atlas (the cartographer agent) a map to audit against
|
|
33
|
+
|
|
34
|
+
## The Schema
|
|
35
|
+
|
|
36
|
+
```yaml
|
|
37
|
+
version: '1.0'
|
|
38
|
+
|
|
39
|
+
tiers:
|
|
40
|
+
- id: frontend
|
|
41
|
+
label: Frontend
|
|
42
|
+
responsibility: User interface and client-side logic
|
|
43
|
+
tech:
|
|
44
|
+
framework: React
|
|
45
|
+
libraries:
|
|
46
|
+
- zustand
|
|
47
|
+
- react-query
|
|
48
|
+
components:
|
|
49
|
+
- '#auth-form'
|
|
50
|
+
- '#dashboard-view'
|
|
51
|
+
- '#settings-panel'
|
|
52
|
+
|
|
53
|
+
- id: backend
|
|
54
|
+
label: Backend
|
|
55
|
+
responsibility: Business logic and API layer
|
|
56
|
+
tech:
|
|
57
|
+
framework: Express
|
|
58
|
+
libraries:
|
|
59
|
+
- zod
|
|
60
|
+
- prisma
|
|
61
|
+
components:
|
|
62
|
+
- '#auth-middleware'
|
|
63
|
+
- '#user-service'
|
|
64
|
+
- '#billing-service'
|
|
65
|
+
|
|
66
|
+
- id: database
|
|
67
|
+
label: Database
|
|
68
|
+
responsibility: Persistence and data access
|
|
69
|
+
tech:
|
|
70
|
+
framework: PostgreSQL
|
|
71
|
+
libraries:
|
|
72
|
+
- prisma
|
|
73
|
+
components:
|
|
74
|
+
- '#user-schema'
|
|
75
|
+
- '#billing-schema'
|
|
76
|
+
|
|
77
|
+
links:
|
|
78
|
+
- from: frontend
|
|
79
|
+
to: backend
|
|
80
|
+
via: REST API
|
|
81
|
+
- from: backend
|
|
82
|
+
to: database
|
|
83
|
+
via: Prisma ORM
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Fields Reference
|
|
87
|
+
|
|
88
|
+
**version** (required) — Schema version string. Use `'1.0'`.
|
|
89
|
+
|
|
90
|
+
**tiers** (required) — Array of architectural tiers. Each tier has:
|
|
91
|
+
|
|
92
|
+
- `id` (required) — Machine-readable identifier. Use kebab-case. Referenced by `links`.
|
|
93
|
+
- `label` (required) — Human-readable name shown in diagrams and summaries.
|
|
94
|
+
- `responsibility` (required) — One sentence describing what this tier owns.
|
|
95
|
+
- `tech` (optional) — Technology stack for this tier. `framework` is the primary runtime; `libraries` is a list of key dependencies.
|
|
96
|
+
- `components` (required) — List of Paradigm symbol IDs (prefixed with `#`) that belong to this tier.
|
|
97
|
+
|
|
98
|
+
**links** (required, can be empty array `[]`) — Array of directed edges between tiers. Each link has:
|
|
99
|
+
|
|
100
|
+
- `from` (required) — Tier ID of the caller or dependent.
|
|
101
|
+
- `to` (required) — Tier ID of the callee or dependency.
|
|
102
|
+
- `via` (optional) — Human-readable label for the connection (e.g., "REST API", "message queue", "gRPC"). Renders as an edge label in Mermaid diagrams.
|
|
103
|
+
|
|
104
|
+
## When to Create arch.yaml
|
|
105
|
+
|
|
106
|
+
Create `.paradigm/arch.yaml` when:
|
|
107
|
+
|
|
108
|
+
1. **Onboarding new team members** — a written tier map removes ambiguity about which code belongs where
|
|
109
|
+
2. **Planning a large refactor** — declaring the target architecture before refactoring makes drift detectable
|
|
110
|
+
3. **Architectural review** — stakeholders can read the YAML or view the rendered Mermaid diagram
|
|
111
|
+
4. **Drift detection** — once declared, Atlas can flag components that appear in the symbol index but are not assigned to any tier (unassigned), or components declared in a tier but not present in the index (missing_purpose)
|
|
112
|
+
|
|
113
|
+
You do NOT need `arch.yaml` for orchestration, symbol tracking, gate checking, or any other Paradigm feature. It is purely additive metadata.
|
|
114
|
+
|
|
115
|
+
## Drift Detection
|
|
116
|
+
|
|
117
|
+
Atlas computes two drift categories by comparing `arch.yaml` to the live symbol index:
|
|
118
|
+
|
|
119
|
+
**Unassigned** — Component symbols in the index that are not listed in any tier's `components` array. These components exist and are documented, but the architectural map has not categorized them. Common cause: new components added after the arch.yaml was last updated.
|
|
120
|
+
|
|
121
|
+
**Missing Purpose** — Component IDs listed in a tier's `components` array that do not appear in the symbol index. These components were planned or once existed, but are no longer indexed. Common cause: renamed or deleted components whose arch.yaml entry was not updated.
|
|
122
|
+
|
|
123
|
+
Neither drift category blocks the build. Atlas reports them as advisory findings so the team can update the map at their own pace.
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-para-701-atlas-agent
|
|
3
|
+
title: 'Lesson 12: Atlas — The Cartographer Agent'
|
|
4
|
+
type: note
|
|
5
|
+
author: paradigm
|
|
6
|
+
created: '2026-04-28'
|
|
7
|
+
updated: '2026-04-28'
|
|
8
|
+
tags:
|
|
9
|
+
- course
|
|
10
|
+
- para-701
|
|
11
|
+
- atlas
|
|
12
|
+
- cartographer
|
|
13
|
+
symbols: []
|
|
14
|
+
difficulty: intermediate
|
|
15
|
+
estimatedMinutes: 5
|
|
16
|
+
prerequisites:
|
|
17
|
+
- N-para-701-arch-yaml-format
|
|
18
|
+
category: paradigm-core
|
|
19
|
+
origin: imported
|
|
20
|
+
source: courses/para-701.json
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Who Is Atlas?
|
|
24
|
+
|
|
25
|
+
Atlas is the Cartographer agent — archetype ID `cartographer`. He is agent #67 in the Paradigm roster, a tier-1 specialist whose single responsibility is architectural mapping. When a project has a `.paradigm/arch.yaml`, Atlas reads it, computes drift against the live symbol index, and renders diagrams. He does not implement code, does not write .purpose files, and does not block builds.
|
|
26
|
+
|
|
27
|
+
Atlas is advisory-only. His job is to make architectural drift visible, not to enforce it. The team decides when and how to resolve drift.
|
|
28
|
+
|
|
29
|
+
## Atlas's Personality
|
|
30
|
+
|
|
31
|
+
Atlas is **methodical** and **conservative**. He does not take risks with interpretation — if arch.yaml is ambiguous, he reports what he found rather than guessing intent. His verbosity is **concise**: tier summaries, a drift count, and the Mermaid diagram string. He does not produce lengthy analysis.
|
|
32
|
+
|
|
33
|
+
Model tier: **tier-1 (opus)**. Architectural reasoning requires deep understanding of symbol relationships and the ability to explain drift in context. Atlas earns his tier-1 slot by analyzing not just whether drift exists, but what it means for the project.
|
|
34
|
+
|
|
35
|
+
## When Atlas Fires
|
|
36
|
+
|
|
37
|
+
Atlas is triggered at two points in the orchestration lifecycle:
|
|
38
|
+
|
|
39
|
+
**After the Builder stage** — When the Builder completes implementation, Atlas checks whether new components introduced by the build have been assigned to a tier. If the project has `arch.yaml`, Atlas runs automatically as part of the post-build review pipeline and surfaces unassigned components before the Documentor runs.
|
|
40
|
+
|
|
41
|
+
**On-demand** — Any time the user or another agent calls `paradigm_arch_status` or `paradigm_arch_diagram`, Atlas fires. This is the most common path: an engineer asks for an architecture overview at the start of a planning session, or requests a diagram for a pull request description.
|
|
42
|
+
|
|
43
|
+
Atlas does **not** fire on every tool call. His attention threshold is low (0.35) because architectural drift is cheap to report and expensive to accumulate silently. His attention patterns match `#*` symbols and the `.paradigm/arch.yaml` path.
|
|
44
|
+
|
|
45
|
+
## Atlas vs. Documentor
|
|
46
|
+
|
|
47
|
+
Both Atlas and the Documentor run after builders complete. They have different responsibilities:
|
|
48
|
+
|
|
49
|
+
| Dimension | Atlas (Cartographer) | Documentor |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| What it reads | `.paradigm/arch.yaml`, symbol index | Source files, existing .purpose files |
|
|
52
|
+
| What it writes | Nothing | `.purpose` files, `portal.yaml` |
|
|
53
|
+
| What it reports | Architectural drift (tier-level) | Coverage gaps (symbol-level) |
|
|
54
|
+
| Blocking? | Never | Never (advisory) |
|
|
55
|
+
| Tier | 1 (opus) | 3 (haiku) |
|
|
56
|
+
|
|
57
|
+
The Documentor works at symbol granularity — "this directory has no .purpose file" or "this component is missing its description." Atlas works at tier granularity — "these 8 components were added but have not been assigned to any architectural layer."
|
|
58
|
+
|
|
59
|
+
They complement each other: the Documentor ensures every symbol is documented, Atlas ensures documented symbols are architecturally located.
|
|
60
|
+
|
|
61
|
+
## What Atlas Never Does
|
|
62
|
+
|
|
63
|
+
Atlas has strict constraints encoded in his agent profile:
|
|
64
|
+
|
|
65
|
+
- **Never blocks a build** — drift is informational. A project can ship with unassigned components.
|
|
66
|
+
- **Never writes source code** — he is read-only on `src/**`.
|
|
67
|
+
- **Never modifies .purpose files** — that is the Documentor's job.
|
|
68
|
+
- **Never modifies portal.yaml** — that is Aegis's domain.
|
|
69
|
+
- **Never modifies arch.yaml directly** — he reads it and reports on it. A human or the architect agent updates the map.
|
|
70
|
+
|
|
71
|
+
These constraints are deliberate. An advisory agent that occasionally blocks builds would undermine trust. Atlas stays in his lane so the team can rely on his reports without worrying about side effects.
|
|
72
|
+
|
|
73
|
+
## Resolving Drift
|
|
74
|
+
|
|
75
|
+
When Atlas reports drift, the team has three options:
|
|
76
|
+
|
|
77
|
+
1. **Update arch.yaml** — add unassigned components to the correct tier, remove missing_purpose entries for deleted components. This is the most common resolution.
|
|
78
|
+
|
|
79
|
+
2. **Ignore it** — Atlas does not block. If a component is intentionally unclassified (e.g., a utility shared across tiers), the team can leave it unassigned.
|
|
80
|
+
|
|
81
|
+
3. **Create arch.yaml entries for new tiers** — if new components don't fit existing tiers, the architect may declare a new tier. Atlas will then show the new tier in future runs.
|
|
82
|
+
|
|
83
|
+
Resolution is a human decision. Atlas surfaces the information; the architect makes the call.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Auto-generated .purpose stub — created by Cid (captain debrief)
|
|
2
|
+
# Delegate to Scribe (Documentor) for rich documentation
|
|
3
|
+
name: paths
|
|
4
|
+
description: "TODO: describe what this directory/module does"
|
|
5
|
+
context:
|
|
6
|
+
- "Stub created by Cid during coverage audit — update with real context"
|
|
7
|
+
# Key files touched:
|
|
8
|
+
# - LP-para-701.yaml
|
|
9
|
+
components:
|
|
10
|
+
paths:
|
|
11
|
+
description: "TODO: describe this component"
|
|
12
|
+
tags: []
|
|
@@ -62,3 +62,18 @@ steps:
|
|
|
62
62
|
- content: Q-para-701-agent-pods-nevrland
|
|
63
63
|
required: true
|
|
64
64
|
passRequired: true
|
|
65
|
+
- content: N-para-701-arch-yaml-format
|
|
66
|
+
required: true
|
|
67
|
+
- content: Q-para-701-arch-yaml-format
|
|
68
|
+
required: true
|
|
69
|
+
passRequired: true
|
|
70
|
+
- content: N-para-701-atlas-agent
|
|
71
|
+
required: true
|
|
72
|
+
- content: Q-para-701-atlas-agent
|
|
73
|
+
required: true
|
|
74
|
+
passRequired: true
|
|
75
|
+
- content: N-para-701-arch-mcp-tools
|
|
76
|
+
required: true
|
|
77
|
+
- content: Q-para-701-arch-mcp-tools
|
|
78
|
+
required: true
|
|
79
|
+
passRequired: true
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Auto-generated .purpose stub — created by Cid (captain debrief)
|
|
2
|
+
# Delegate to Scribe (Documentor) for rich documentation
|
|
3
|
+
name: quizzes
|
|
4
|
+
description: "TODO: describe what this directory/module does"
|
|
5
|
+
context:
|
|
6
|
+
- "Stub created by Cid during coverage audit — update with real context"
|
|
7
|
+
# Key files touched:
|
|
8
|
+
# - Q-para-701-arch-yaml-format.yaml
|
|
9
|
+
# - Q-para-701-atlas-agent.yaml
|
|
10
|
+
# - Q-para-701-arch-mcp-tools.yaml
|
|
11
|
+
components:
|
|
12
|
+
quizzes:
|
|
13
|
+
description: "TODO: describe this component"
|
|
14
|
+
tags: []
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-701-arch-mcp-tools
|
|
2
|
+
title: 'PARA 701: Agent Mastery — Lesson 13: The arch MCP Tools'
|
|
3
|
+
description: 'Quiz for lesson: Lesson 13: The arch MCP Tools'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-28'
|
|
6
|
+
updated: '2026-04-28'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-701
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: intermediate
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-701.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: A developer wants to know which newly-added components are not yet assigned to any architectural tier. Which tool should they call, and which field in the response answers the question?
|
|
19
|
+
choices:
|
|
20
|
+
A: paradigm_arch_diagram — the diagram visually shows unassigned nodes
|
|
21
|
+
B: paradigm_arch_status — check drift.unassigned for component symbols that exist in the index but are not in any tier
|
|
22
|
+
C: paradigm_status — it includes drift information in the main status response
|
|
23
|
+
D: paradigm_arch_status — check drift.missing_purpose for components not in any tier
|
|
24
|
+
E: paradigm_search — search for components with type "unassigned"
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: paradigm_arch_status returns a drift object with two arrays. drift.unassigned contains component symbols that are indexed (documented) but not listed in any tier's components array — these are the newly-added components with no tier assignment. drift.missing_purpose is the inverse: components declared in arch.yaml that do not appear in the index. paradigm_arch_diagram renders the declared tiers but does not show drift; paradigm_status does not include arch.yaml drift.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: A project does not have a `.paradigm/arch.yaml` file. A developer calls `paradigm_arch_status`. What happens?
|
|
29
|
+
choices:
|
|
30
|
+
A: The tool throws an error and the MCP session crashes
|
|
31
|
+
B: The tool returns a JSON object with exists=false and a message explaining that arch.yaml was not found, with guidance on how to create it
|
|
32
|
+
C: The tool is not listed in the tool registry at all — it cannot be called on projects without arch.yaml
|
|
33
|
+
D: The tool returns an empty tier list with zero drift
|
|
34
|
+
E: The tool automatically creates a minimal arch.yaml and returns its contents
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: "The tool handles the missing-file case gracefully: it returns {\"exists\": false, \"message\": \"No arch.yaml found. Create .paradigm/arch.yaml to start mapping your architecture.\"}. However, the tool detection note adds nuance: the arch module registers with a `detect` function that checks for arch.yaml. If the file doesn't exist, the tools are not included in the tool list. A developer who calls the tool directly (knowing its name) after the file was deleted would get the graceful JSON response. The session does not crash either way."
|
|
37
|
+
- id: q3
|
|
38
|
+
question: An engineer wants to generate a Mermaid diagram to paste into a pull request description. Which of the following is the correct approach?
|
|
39
|
+
choices:
|
|
40
|
+
A: Call paradigm_arch_status and extract the diagram field from the response
|
|
41
|
+
B: Call paradigm_arch_diagram — it returns a JSON object with a `diagram` field containing the Mermaid graph string, or use `paradigm arch diagram` from the CLI
|
|
42
|
+
C: Call paradigm_arch_status with format="mermaid" to get the diagram
|
|
43
|
+
D: Manually write the Mermaid diagram by reading arch.yaml — the tools do not generate diagrams
|
|
44
|
+
E: Call paradigm_arch_diagram with output="clipboard" to copy it automatically
|
|
45
|
+
correct: B
|
|
46
|
+
explanation: "paradigm_arch_diagram is the dedicated diagram tool. It returns {\"format\": \"mermaid\", \"diagram\": \"graph TD\\n ...\"} where the diagram field is the Mermaid string ready for copy-paste. The CLI equivalent is `paradigm arch diagram` — on macOS, piping to `pbcopy` copies it to the clipboard. paradigm_arch_status does not include a diagram field; it focuses on tier metadata and drift. There is no `format` parameter on paradigm_arch_status."
|
|
47
|
+
- id: q4
|
|
48
|
+
question: A project has `.paradigm/arch.yaml`. An agent calls `paradigm_arch_status` and receives `drift.clean: false` with `drift.unassigned` containing 5 symbols and `drift.missing_purpose` containing 2 symbols. What is the correct interpretation?
|
|
49
|
+
choices:
|
|
50
|
+
A: The build is blocked — drift.clean must be true before deployment
|
|
51
|
+
B: 5 components are in the index but not assigned to any tier; 2 components are declared in arch.yaml tiers but do not appear in the index. Neither condition blocks anything — this is advisory information.
|
|
52
|
+
C: 5 components have no .purpose files; 2 components have missing portal.yaml gate declarations
|
|
53
|
+
D: The arch.yaml file has 5 syntax errors and 2 missing required fields
|
|
54
|
+
E: drift.clean: false means the previous build introduced breaking changes
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: "drift.clean: false means at least one drift category is non-empty. drift.unassigned (5 items) means 5 component symbols exist in the symbol index but have no tier assignment in arch.yaml — likely new components added after arch.yaml was last updated. drift.missing_purpose (2 items) means 2 component IDs in arch.yaml tiers cannot be found in the index — likely renamed or deleted components. Neither is a blocker. Atlas reports this information so the team can decide whether to update arch.yaml."
|
|
57
|
+
- id: q5
|
|
58
|
+
question: Why are the arch tools registered in the `feature` tier of the MCP registry rather than the `core` tier?
|
|
59
|
+
choices:
|
|
60
|
+
A: Feature-tier tools cost fewer tokens to list than core-tier tools
|
|
61
|
+
B: Feature-tier tools are auto-detected — the arch module uses a `detect` function that checks for arch.yaml. If the file doesn't exist, the tools are not listed, saving token budget for projects that don't use architectural mapping
|
|
62
|
+
C: Feature-tier tools require manual activation via paradigm_tool_activate before they can be called
|
|
63
|
+
D: Core-tier tools are reserved for Anthropic-approved tools only
|
|
64
|
+
E: The arch tools are in the feature tier because they were added after the core tier was finalized
|
|
65
|
+
correct: B
|
|
66
|
+
explanation: The feature tier supports auto-detection via a `detect` function. For arch tools, detect checks whether `.paradigm/arch.yaml` exists. If it does, both arch tools are included in the tool list. If not, they are omitted entirely. This keeps the tool list lean for projects that have not declared an architectural map. Advanced-tier tools require manual `paradigm_tool_activate` to load; feature-tier tools are automatic based on detection. Core-tier tools are always loaded regardless of project state.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-701-arch-yaml-format
|
|
2
|
+
title: 'PARA 701: Agent Mastery — Lesson 11: The arch.yaml Format'
|
|
3
|
+
description: 'Quiz for lesson: Lesson 11: The arch.yaml Format'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-28'
|
|
6
|
+
updated: '2026-04-28'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-701
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: intermediate
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-701.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: A team adds a new component `#notification-service` to the backend. Their `.paradigm/arch.yaml` was last updated six months ago and does not list this component in any tier. When Atlas runs, how will this component appear in the drift report?
|
|
19
|
+
choices:
|
|
20
|
+
A: As a "missing_purpose" entry — the component is listed in arch.yaml but not in the index
|
|
21
|
+
B: As an "unassigned" entry — the component exists in the symbol index but is not assigned to any tier
|
|
22
|
+
C: Atlas will not report it because arch.yaml does not need to be updated
|
|
23
|
+
D: Atlas will automatically add it to the backend tier
|
|
24
|
+
E: The drift report only includes gate symbols, not components
|
|
25
|
+
correct: B
|
|
26
|
+
explanation: "Unassigned drift means: component exists in the symbol index but is not listed in any tier's components array. The component was indexed (via .purpose coverage) but arch.yaml was not updated to include it. Missing_purpose is the inverse: declared in arch.yaml but not found in the index. Atlas never auto-assigns components — it reports drift as advisory findings for the team to resolve."
|
|
27
|
+
- id: q2
|
|
28
|
+
question: Which of the following arch.yaml configurations is valid?
|
|
29
|
+
choices:
|
|
30
|
+
A: A tier with no `id` field but a `label` field
|
|
31
|
+
B: A `links` array with an entry that has `from` and `to` pointing to tier IDs, and an optional `via` label
|
|
32
|
+
C: A `components` array containing `$checkout-flow` (a flow symbol)
|
|
33
|
+
D: Omitting the `links` key entirely from the file
|
|
34
|
+
E: Using camelCase for tier IDs (e.g., `id: frontEnd`)
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: "Links require `from` and `to` (both referencing tier IDs) and accept an optional `via` label for edge labeling in Mermaid diagrams. Tier `id` is required — a label alone is not sufficient. The `components` array holds `#component` symbols only, not `$flows`. The `links` key is required (though it can be an empty array `[]`). Tier IDs should use kebab-case per Paradigm conventions."
|
|
37
|
+
- id: q3
|
|
38
|
+
question: A startup is three months into development. They have 40 components, 6 flows, and 12 gates indexed by Paradigm. Should they create `.paradigm/arch.yaml`?
|
|
39
|
+
choices:
|
|
40
|
+
A: Yes — arch.yaml is required for gate checking to work
|
|
41
|
+
B: Yes — without it, the symbol index will not build
|
|
42
|
+
C: No — arch.yaml is required only for projects with more than 100 components
|
|
43
|
+
D: It depends — arch.yaml is optional additive metadata. They should create it if they want tier-level architecture documentation, drift detection, or diagrams. It is not required for any core Paradigm feature.
|
|
44
|
+
E: No — arch.yaml is only for enterprise projects
|
|
45
|
+
correct: D
|
|
46
|
+
explanation: "arch.yaml is entirely optional. All core Paradigm features — orchestration, symbol indexing, gate checking, notebook learning, lore recording — work without it. The file is additive metadata that enables tier-level documentation, drift detection via Atlas, and Mermaid diagram rendering. A three-month project with 40 components may benefit from declaring their tier structure, but there is no requirement to do so."
|
|
47
|
+
- id: q4
|
|
48
|
+
question: A project's arch.yaml declares `#legacy-payment-gateway` in the backend tier. Six months later, the team deprecated and deleted that component. What drift will Atlas report?
|
|
49
|
+
choices:
|
|
50
|
+
A: Unassigned — the component was removed from the index
|
|
51
|
+
B: Missing Purpose — the component is listed in arch.yaml but no longer exists in the symbol index
|
|
52
|
+
C: No drift — deleted components are automatically removed from arch.yaml
|
|
53
|
+
D: Critical error — Atlas will block the build
|
|
54
|
+
E: Unassigned and Missing Purpose simultaneously
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: "Missing Purpose drift means: a component is declared in a tier's components array in arch.yaml, but it cannot be found in the live symbol index. When a component is deleted (its .purpose entry removed and paradigm scan run), it disappears from the index. The arch.yaml entry remains until manually updated. Atlas reports this as missing_purpose so the team knows the map is stale. Atlas never blocks — it is advisory-only."
|
|
57
|
+
- id: q5
|
|
58
|
+
question: What does the `via` field on a link do?
|
|
59
|
+
choices:
|
|
60
|
+
A: It declares which gate must be satisfied when crossing from one tier to another
|
|
61
|
+
B: It specifies the network protocol (HTTP, gRPC, WebSocket) for rate-limiting purposes
|
|
62
|
+
C: It provides a human-readable edge label that appears in the Mermaid diagram output
|
|
63
|
+
D: It is required for all links — omitting it causes a parse error
|
|
64
|
+
E: It declares the intermediate tier a message passes through before reaching the destination
|
|
65
|
+
correct: C
|
|
66
|
+
explanation: "The `via` field is an optional human-readable label placed on the edge between two tiers in the generated Mermaid diagram. For example, `via: REST API` renders as `frontend -->|\"REST API\"| backend` in Mermaid syntax. It has no functional effect on orchestration, gate checking, or drift detection — it is purely for diagram readability. Omitting it is valid; the edge renders without a label."
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
id: Q-para-701-atlas-agent
|
|
2
|
+
title: 'PARA 701: Agent Mastery — Lesson 12: Atlas — The Cartographer Agent'
|
|
3
|
+
description: 'Quiz for lesson: Lesson 12: Atlas — The Cartographer Agent'
|
|
4
|
+
author: paradigm
|
|
5
|
+
created: '2026-04-28'
|
|
6
|
+
updated: '2026-04-28'
|
|
7
|
+
tags:
|
|
8
|
+
- course
|
|
9
|
+
- para-701
|
|
10
|
+
symbols: []
|
|
11
|
+
difficulty: intermediate
|
|
12
|
+
passThreshold: 0.7
|
|
13
|
+
category: paradigm-core
|
|
14
|
+
origin: imported
|
|
15
|
+
source: courses/para-701.json
|
|
16
|
+
questions:
|
|
17
|
+
- id: q1
|
|
18
|
+
question: A Builder agent has just completed implementing a new `#analytics-service` component. The project has a `.paradigm/arch.yaml` with three declared tiers. In the standard orchestration pipeline, when does Atlas run relative to the Documentor?
|
|
19
|
+
choices:
|
|
20
|
+
A: Atlas runs before the Builder, to predict what components will be created
|
|
21
|
+
B: Atlas and the Documentor run simultaneously in parallel
|
|
22
|
+
C: Atlas runs after the Builder stage and before (or alongside) the Documentor — he surfaces unassigned components from the new build before the Documentor writes .purpose updates
|
|
23
|
+
D: Atlas only runs when explicitly called by the user — he never fires automatically in orchestration
|
|
24
|
+
E: Atlas runs after the Documentor, so he can use the updated .purpose files as input
|
|
25
|
+
correct: C
|
|
26
|
+
explanation: Atlas fires after the Builder completes and before (or alongside) the Documentor in the post-build review pipeline. When arch.yaml exists, Atlas checks whether the newly built components have been assigned to tiers. The Documentor focuses on .purpose coverage. Both are post-Builder agents, but Atlas surfaces tier-level drift while the Documentor handles symbol-level gaps. Running Atlas before the Documentor ensures architectural drift is visible before .purpose work begins.
|
|
27
|
+
- id: q2
|
|
28
|
+
question: Why is Atlas a tier-1 (opus) agent rather than a tier-3 (haiku) agent?
|
|
29
|
+
choices:
|
|
30
|
+
A: Tier-1 means Atlas runs first in every orchestration, not that he uses a more capable model
|
|
31
|
+
B: Atlas is tier-1 because architectural reasoning — explaining what drift means and how to resolve it in context — requires deep understanding of symbol relationships, which benefits from a more capable model
|
|
32
|
+
C: All agents that deal with YAML files are tier-1 by convention
|
|
33
|
+
D: Atlas was assigned tier-1 because cartography is a premium feature
|
|
34
|
+
E: Atlas is tier-1 because he has write access to source files
|
|
35
|
+
correct: B
|
|
36
|
+
explanation: Tier assignment reflects the cognitive complexity of the agent's work. Tier-1 (opus) is for decision-makers and agents whose reasoning depth directly affects output quality. Atlas earns tier-1 because his value is not in parsing YAML (any model can do that), but in explaining what architectural drift means in the context of a specific project — why certain components ended up unassigned, what that implies for the team, and how to prioritize resolution. Shallow analysis here produces misleading or useless drift reports.
|
|
37
|
+
- id: q3
|
|
38
|
+
question: A project's arch.yaml has 5 tiers. Atlas reports 12 unassigned components after a large feature build. What should the team do?
|
|
39
|
+
choices:
|
|
40
|
+
A: Immediately fix the build — Atlas's report means the deployment pipeline is blocked
|
|
41
|
+
B: Ignore the report permanently — Atlas only reports cosmetic information
|
|
42
|
+
C: Evaluate the drift at their own pace — they can update arch.yaml to assign components to tiers, leave genuinely cross-cutting utilities unassigned, or declare a new tier if the build introduced a distinct new layer
|
|
43
|
+
D: Ask Atlas to automatically assign the components to the most likely tier
|
|
44
|
+
E: Delete arch.yaml to stop Atlas from running
|
|
45
|
+
correct: C
|
|
46
|
+
explanation: "Atlas is advisory-only — he never blocks. The team has three valid paths: (1) update arch.yaml to assign components to the correct tiers, (2) intentionally leave cross-cutting utilities unassigned if they genuinely don't belong to one tier, or (3) declare a new tier if the 12 new components represent a distinct architectural layer. The architect typically drives this decision. Atlas surfaces the information; humans make the call."
|
|
47
|
+
- id: q4
|
|
48
|
+
question: What is the key distinction between what Atlas reports and what the Documentor reports?
|
|
49
|
+
choices:
|
|
50
|
+
A: Atlas reports security drift; the Documentor reports performance drift
|
|
51
|
+
B: Atlas reports tier-level architectural drift (which components are unassigned to tiers or stale in the map), while the Documentor reports symbol-level coverage gaps (missing .purpose files, undocumented components)
|
|
52
|
+
C: Atlas and the Documentor report the same information from different perspectives
|
|
53
|
+
D: Atlas reports drift in portal.yaml; the Documentor reports drift in arch.yaml
|
|
54
|
+
E: Atlas reports on test coverage; the Documentor reports on code comments
|
|
55
|
+
correct: B
|
|
56
|
+
explanation: "Atlas and the Documentor operate at different granularities. Atlas works at tier granularity: given the architectural map, which components lack a tier assignment? Which declared components no longer exist? The Documentor works at symbol granularity: which directories lack a .purpose file? Which components have no description? They complement each other — the Documentor ensures symbols are documented, Atlas ensures documented symbols are architecturally located."
|
|
57
|
+
- id: q5
|
|
58
|
+
question: A developer asks Atlas to update `.paradigm/arch.yaml` to add the three new components he just built. What will Atlas do?
|
|
59
|
+
choices:
|
|
60
|
+
A: Atlas will update arch.yaml immediately — this is his primary function
|
|
61
|
+
B: Atlas will ask for confirmation before writing to arch.yaml
|
|
62
|
+
C: Atlas will decline — he is read-only on arch.yaml. He reports drift but never modifies the map. The developer or architect must update arch.yaml manually.
|
|
63
|
+
D: Atlas will delegate the update to the Documentor
|
|
64
|
+
E: Atlas will update arch.yaml only if the developer has the `^architect` gate
|
|
65
|
+
correct: C
|
|
66
|
+
explanation: Atlas never modifies arch.yaml. His agent profile restricts write access on all source files, .purpose files, portal.yaml, and arch.yaml itself. He is read-only. The design is intentional — an advisory agent that modifies files would create side effects that undermine trust. The developer or architect updates arch.yaml; Atlas reports on what he finds.
|