@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.
- package/dist/arch-5UVPSOG2.js +3 -0
- package/dist/{chunk-MOVDVBU7.js → chunk-UMC4RC66.js} +80 -49
- package/dist/index.js +6 -6
- package/dist/mcp.js +1 -1
- 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
|
@@ -11,7 +11,7 @@ symbols: []
|
|
|
11
11
|
difficulty: advanced
|
|
12
12
|
passThreshold: 0.9
|
|
13
13
|
timeLimit: 5400
|
|
14
|
-
totalSlots:
|
|
14
|
+
totalSlots: 133
|
|
15
15
|
exam:
|
|
16
16
|
kind: proctored
|
|
17
17
|
category: paradigm-core
|
|
@@ -2907,3 +2907,128 @@ questions:
|
|
|
2907
2907
|
E: Score = 1.0 — all four dimensions fire because admin is security-related
|
|
2908
2908
|
correct: C
|
|
2909
2909
|
explanation: 'The scoring uses max() across four dimensions, not an average. symbolMatch: ''#admin-routes'' does not end with ''-auth'' or ''-middleware'' and does not start with ''^'', so 0. pathMatch: ''src/routes/admin.ts'' does not match ''auth/**'' or ''middleware/**'', so 0. conceptMatch: keywords [''new endpoint'', ''admin panel'', ''user management''] do not contain ''permission'', ''JWT'', ''RBAC'', ''XSS'', or ''injection'', so 0. signalMatch: the event type ''route-created'' matches the signal { type: ''route-created'' }, so 1.0. Final score: max(0, 0, 0, 1.0) = 1.0. The security agent self-nominates — new route creation is exactly the kind of event that warrants security review.'
|
|
2910
|
+
- id: plsat-129
|
|
2911
|
+
scenario: A project has `.paradigm/arch.yaml` with three tiers (frontend, backend, database). After a two-week sprint, Atlas reports drift.unassigned contains 7 symbols and drift.missing_purpose contains 3 symbols. The team asks what the correct resolution steps are.
|
|
2912
|
+
question: What should the team do to resolve both drift categories?
|
|
2913
|
+
choices:
|
|
2914
|
+
A: Delete arch.yaml and re-run paradigm scan to regenerate it automatically
|
|
2915
|
+
B: For unassigned (7 symbols in index but not in tiers), add them to the correct tier's components array in arch.yaml. For missing_purpose (3 symbols declared in arch.yaml but not in the index), either re-create the missing components or remove the stale entries from arch.yaml.
|
|
2916
|
+
C: Run paradigm_reindex — it will automatically assign unassigned components to the nearest tier
|
|
2917
|
+
D: Call paradigm_arch_status --fix to apply automatic drift resolution
|
|
2918
|
+
E: Unassigned drift can only be resolved by the architect agent running in the background
|
|
2919
|
+
correct: B
|
|
2920
|
+
explanation: Drift resolution is a manual, human-driven process. For drift.unassigned (7 components indexed but not in any tier), the team adds each component to the appropriate tier's components array in arch.yaml. For drift.missing_purpose (3 components declared in arch.yaml tiers but absent from the index), the team either creates the missing components (if they were planned but not built) or removes the stale entries from arch.yaml (if the components were renamed or deleted). There is no auto-fix flag — Atlas reports drift, humans resolve it.
|
|
2921
|
+
slot: slot-129
|
|
2922
|
+
section: para-701
|
|
2923
|
+
variants:
|
|
2924
|
+
- id: plsat-129b
|
|
2925
|
+
scenario: A team has 4 items in drift.missing_purpose after running paradigm_arch_status. They confirm that all 4 components were renamed as part of a refactor two months ago. The new names are indexed and assigned to tiers. What is the minimal correct resolution?
|
|
2926
|
+
question: How should the team resolve the 4 stale missing_purpose entries?
|
|
2927
|
+
choices:
|
|
2928
|
+
A: Run paradigm_reindex — it automatically removes stale arch.yaml entries
|
|
2929
|
+
B: Remove the 4 old component IDs from their tier's components array in arch.yaml and optionally add the new component IDs if they are not already assigned
|
|
2930
|
+
C: Create stub components with the old names to make them appear in the index again
|
|
2931
|
+
D: Delete and recreate arch.yaml from scratch
|
|
2932
|
+
E: The entries are harmless and can be left indefinitely without action
|
|
2933
|
+
correct: B
|
|
2934
|
+
explanation: The minimal resolution is to remove the 4 stale component IDs from the tier's components array in arch.yaml. This eliminates the missing_purpose drift. If the renamed components are already assigned to tiers (because someone added them after the rename), no further action is needed. If they are unassigned, adding them to the correct tier's components array in the same edit is efficient. Creating stub components would be the wrong approach — it papering over stale map entries rather than updating the map.
|
|
2935
|
+
- id: plsat-130
|
|
2936
|
+
scenario: A project uses `paradigm_orchestrate_inline` with mode="plan". The task is "review the current architectural layer structure and identify components that need tier reassignment." Atlas is on the project roster. At what point in the orchestration pipeline does Atlas fire?
|
|
2937
|
+
question: When does Atlas (cartographer) run in a standard post-build orchestration pipeline?
|
|
2938
|
+
choices:
|
|
2939
|
+
A: Atlas runs in stage 1, before the architect, to map the territory before planning begins
|
|
2940
|
+
B: Atlas runs in parallel with the builder during implementation
|
|
2941
|
+
C: Atlas runs after the Builder stage completes and before or alongside the Documentor — he checks whether newly built components have been assigned to architectural tiers
|
|
2942
|
+
D: Atlas always runs last, after the Documentor completes .purpose updates
|
|
2943
|
+
E: Atlas only fires when the user explicitly adds "cartographer" to the agent list in paradigm_orchestrate_inline
|
|
2944
|
+
correct: C
|
|
2945
|
+
explanation: In the standard orchestration pipeline, Atlas fires after the Builder stage. The Builder produces new components; Atlas checks whether those components are assigned to tiers in arch.yaml. The Documentor runs to update .purpose files. Atlas and the Documentor are both post-Builder agents — Atlas focuses on tier-level architectural drift while the Documentor handles symbol-level coverage. Atlas does not run before the architect (he has no planning role) and does not require explicit invocation when he is on the roster and arch.yaml exists.
|
|
2946
|
+
slot: slot-130
|
|
2947
|
+
section: para-701
|
|
2948
|
+
variants:
|
|
2949
|
+
- id: plsat-130b
|
|
2950
|
+
scenario: A developer is building a small utility library. There is no .paradigm/arch.yaml. They call paradigm_orchestrate_inline with mode="plan". Will Atlas appear in the orchestration plan?
|
|
2951
|
+
question: Does Atlas participate in orchestration when arch.yaml does not exist?
|
|
2952
|
+
choices:
|
|
2953
|
+
A: Yes — Atlas always participates because architectural oversight is always valuable
|
|
2954
|
+
B: Yes — Atlas participates and creates arch.yaml as its first action
|
|
2955
|
+
C: No — Atlas's attention patterns include .paradigm/arch.yaml as a path pattern. Without the file, his attention scoring for this task is near-zero and he will not be nominated
|
|
2956
|
+
D: No — Atlas is a tier-1 agent and tier-1 agents are excluded from small library projects
|
|
2957
|
+
E: Yes — Atlas participates but produces an empty drift report when arch.yaml is missing
|
|
2958
|
+
correct: C
|
|
2959
|
+
explanation: Atlas's attention configuration includes `.paradigm/arch.yaml` as a path pattern and architectural concepts as concept triggers. When arch.yaml does not exist, the path match contributes zero to his attention score. For a small utility library task with no architectural keywords in the task description, his conceptMatch is also likely below threshold. His attention threshold is 0.35 — low enough to catch architectural tasks, but the complete absence of arch.yaml means the task has no architectural mapping signals. He will not self-nominate and will not appear in the plan.
|
|
2960
|
+
- id: plsat-131
|
|
2961
|
+
scenario: A developer generates a Mermaid diagram using `paradigm_arch_diagram` and notices that some tier edges show no label, while others show labels like "REST API" and "message queue." They want to add labels to the unlabeled edges.
|
|
2962
|
+
question: How do Mermaid edge labels get added to arch.yaml links, and what field controls them?
|
|
2963
|
+
choices:
|
|
2964
|
+
A: Edge labels are automatically inferred from the framework names in each tier's tech field
|
|
2965
|
+
B: Edge labels require a separate `labels.yaml` file in .paradigm/
|
|
2966
|
+
C: The `via` field on each link in the links array provides the edge label. Links without a `via` field render without a label. To add a label, add `via: "label text"` to the link entry in arch.yaml.
|
|
2967
|
+
D: Edge labels can only be set via the paradigm_arch_diagram tool's input parameters
|
|
2968
|
+
E: Edge labels are set in the tier's `tech.libraries` array using the format "label:target-tier"
|
|
2969
|
+
correct: C
|
|
2970
|
+
explanation: "The `via` field on a link entry is the only mechanism for edge labels. When `via` is present, generateMermaid() renders the edge as `from -->|\"via text\"| to`. When `via` is absent, the edge renders as `from --> to` with no label. To add labels to currently unlabeled edges, the developer edits arch.yaml and adds `via: \"label text\"` to each link entry they want labeled. The tool's input has no label parameter — labels are part of the arch.yaml data, not the tool call."
|
|
2971
|
+
slot: slot-131
|
|
2972
|
+
section: para-701
|
|
2973
|
+
variants:
|
|
2974
|
+
- id: plsat-131b
|
|
2975
|
+
scenario: A team's arch.yaml has this link entry -- `from: api-gateway, to: user-service, via: gRPC`. The same team has another link -- `from: api-gateway, to: notification-service` with no via field. What will the generated Mermaid diagram show for each edge?
|
|
2976
|
+
question: What does the Mermaid output look like for these two links?
|
|
2977
|
+
choices:
|
|
2978
|
+
A: Both edges render with no label — via is ignored in diagram generation
|
|
2979
|
+
B: The first edge renders as `api-gateway -->|"gRPC"| user-service` and the second renders as `api-gateway --> notification-service` with no label
|
|
2980
|
+
C: The second edge renders as `api-gateway -->|"undefined"| notification-service`
|
|
2981
|
+
D: Both edges require via — the second link causes a parse error
|
|
2982
|
+
E: The first edge renders as `api-gateway -- gRPC --> user-service` using Mermaid's alternate edge syntax
|
|
2983
|
+
correct: B
|
|
2984
|
+
explanation: 'generateMermaid() branches on the presence of link.via. When via is set, it produces `from -->|"via text"| to`. When via is absent (undefined or not provided), it produces `from --> to` with no label. The first link produces `api-gateway -->|"gRPC"| user-service`. The second produces `api-gateway --> notification-service`. There is no "undefined" label for missing via — the code explicitly checks `if (link.via)` and omits the label syntax entirely when false.'
|
|
2985
|
+
- id: plsat-132
|
|
2986
|
+
scenario: An agent needs to get both the architectural summary data (tier names, component counts, drift) AND a Mermaid diagram string in one session. The developer asks whether they should call one tool or two.
|
|
2987
|
+
question: What is the correct tool call strategy to get both tier summary data and the Mermaid diagram?
|
|
2988
|
+
choices:
|
|
2989
|
+
A: Call paradigm_arch_status with format="mermaid" to get both in one response
|
|
2990
|
+
B: Call paradigm_arch_diagram — it includes the full tier summary along with the diagram
|
|
2991
|
+
C: Call both paradigm_arch_status (for tier metadata and drift) and paradigm_arch_diagram (for the diagram string) — they serve distinct purposes and neither includes the other's output
|
|
2992
|
+
D: Call paradigm_arch_status and extract the diagram from the `tiers` array
|
|
2993
|
+
E: There is a single paradigm_arch_full tool that returns both
|
|
2994
|
+
correct: C
|
|
2995
|
+
explanation: paradigm_arch_status and paradigm_arch_diagram are complementary tools with distinct outputs. paradigm_arch_status returns tier metadata (id, label, responsibility, framework, componentCount, components list) and the drift object (unassigned, missing_purpose, clean flag). It does not include a Mermaid diagram. paradigm_arch_diagram returns a JSON object with format and diagram fields — a Mermaid graph string. It does not include tier metadata or drift. To get both, call both tools. Combined token cost is approximately 350 tokens — well within typical budgets.
|
|
2996
|
+
slot: slot-132
|
|
2997
|
+
section: para-701
|
|
2998
|
+
variants:
|
|
2999
|
+
- id: plsat-132b
|
|
3000
|
+
scenario: A developer is writing a CI script that checks whether the architectural map is clean after each build. They want a JSON output they can parse. They are using the Paradigm CLI.
|
|
3001
|
+
question: Which CLI command produces JSON output suitable for programmatic parsing of drift status?
|
|
3002
|
+
choices:
|
|
3003
|
+
A: paradigm arch diagram --json
|
|
3004
|
+
B: paradigm arch status | jq .drift
|
|
3005
|
+
C: paradigm arch status --json
|
|
3006
|
+
D: paradigm status --arch
|
|
3007
|
+
E: paradigm arch --output json
|
|
3008
|
+
correct: C
|
|
3009
|
+
explanation: '`paradigm arch status --json` outputs the full arch.yaml summary as a JSON object, including the drift field with unassigned and missing_purpose arrays and the clean boolean. This is directly parseable by jq, Python json.loads(), or any JSON parser. `paradigm arch status` without --json outputs human-friendly formatted text with headers and key-value pairs — not JSON. The --json flag on the status subcommand is the explicit programmatic interface for CI integration.'
|
|
3010
|
+
- id: plsat-133
|
|
3011
|
+
scenario: A startup is three weeks into development. They have a monorepo with 2 services and a React frontend. They have 22 indexed components but no arch.yaml. A senior engineer asks when the team should create arch.yaml.
|
|
3012
|
+
question: At what point should a project create `.paradigm/arch.yaml`?
|
|
3013
|
+
choices:
|
|
3014
|
+
A: Immediately — arch.yaml must be created before running paradigm init
|
|
3015
|
+
B: Only when the project has more than 100 components — smaller projects do not benefit
|
|
3016
|
+
C: arch.yaml is optional and created when the team wants tier-level documentation, drift detection, or diagrams. A reasonable trigger is when cross-tier architectural decisions are being discussed or when onboarding new team members who need a system map.
|
|
3017
|
+
D: arch.yaml should be created only by the architect agent, never by a human
|
|
3018
|
+
E: arch.yaml is created automatically by `paradigm shift` and should not be edited manually
|
|
3019
|
+
correct: C
|
|
3020
|
+
explanation: arch.yaml is entirely optional — it is additive metadata, not required for any core Paradigm feature. The right time to create it is when it adds value that justifies the maintenance cost. Common triggers include (1) cross-tier architectural planning where tier structure needs to be explicit, (2) onboarding where new engineers need a visual map of the system, (3) architectural review where stakeholders want diagrams, or (4) large refactors where the target architecture should be declared before work begins so drift is detectable. A three-week project with 22 components and an active senior engineer discussing cross-tier work is a reasonable point to create it. The 100-component rule is a myth — value comes from clarity, not scale.
|
|
3021
|
+
slot: slot-133
|
|
3022
|
+
section: para-701
|
|
3023
|
+
variants:
|
|
3024
|
+
- id: plsat-133b
|
|
3025
|
+
scenario: A team created arch.yaml at project inception. Now, 8 months later, the file shows 15 unassigned components and 8 missing_purpose entries. They are debating whether to delete arch.yaml and start fresh or update it incrementally.
|
|
3026
|
+
question: What is the better approach for a heavily drifted arch.yaml?
|
|
3027
|
+
choices:
|
|
3028
|
+
A: Delete arch.yaml — a file with this much drift is actively misleading and should be removed
|
|
3029
|
+
B: Update it incrementally — assign the 15 unassigned components to their correct tiers, remove the 8 stale missing_purpose entries. The architectural context (tier labels, responsibilities, links) is still valuable even if component lists are stale.
|
|
3030
|
+
C: Archive arch.yaml and regenerate it from scratch using the symbol index
|
|
3031
|
+
D: Leave it as-is — drift is cosmetic and does not affect any Paradigm functionality
|
|
3032
|
+
E: Ask Atlas to auto-resolve the drift by analyzing component names
|
|
3033
|
+
correct: B
|
|
3034
|
+
explanation: Incremental update is almost always preferable to deletion or regeneration. The tier structure (ids, labels, responsibilities, tech stacks, links) likely still reflects the actual architecture — only the component lists have drifted. Updating the component lists (15 additions, 8 removals) is a focused edit that preserves architectural context. Deleting and regenerating loses tier metadata that was manually authored. Atlas never auto-resolves drift. Leaving heavy drift signals uncleaned creates confusion about which components belong where. The incremental update path gives the highest value-to-effort ratio.
|