@a-company/paradigm 6.1.0 → 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.
@@ -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.