create-quiver 0.14.1 → 0.15.1
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/CHANGELOG.md +22 -0
- package/README.md +35 -0
- package/README_FOR_AI.md +15 -4
- package/ROADMAP.md +13 -2
- package/docs/AI_CONTEXT.md.template +4 -0
- package/docs/AI_ONBOARDING_PROMPT.md.template +8 -0
- package/docs/CLI_UX_GUIDE.md +79 -4
- package/docs/COMMANDS.md.template +21 -5
- package/docs/TROUBLESHOOTING.md +70 -0
- package/docs/TROUBLESHOOTING.md.template +20 -0
- package/docs/getting-started/installation.md +86 -0
- package/docs/reference/commands.md +33 -1
- package/package.json +1 -1
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/EVIDENCE_REPORT.md +213 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/EXECUTION_PLAN.md +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/SPEC.md +213 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/STATUS.md +31 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/pr.md +103 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-00-spec-foundation/slice.json +71 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-01-cli-ux-runtime-progress-engine/slice.json +69 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-02-agent-profile-selection-selectors/slice.json +81 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/EXECUTION_BRIEF.md +54 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-03-provider-model-selection-contract/slice.json +75 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-04-planner-ia-progress-flows/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-05-executor-pr-progress-flows/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-06-doctor-visual-json-contract/slice.json +81 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-07-interactive-init-spec-create/slice.json +85 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/CLOSURE_BRIEF.md +34 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/EXECUTION_BRIEF.md +59 -0
- package/specs/quiver-v30-interactive-cli-ux-agent-selection/slices/slice-08-tests-docs-cross-platform-release/slice.json +95 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/EVIDENCE_REPORT.md +185 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/EXECUTION_PLAN.md +85 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/SPEC.md +337 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/STATUS.md +30 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/pr.md +98 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/CLOSURE_BRIEF.md +30 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/EXECUTION_BRIEF.md +51 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/slice.json +62 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/EXECUTION_BRIEF.md +53 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-01-model-catalog-alias-normalization/slice.json +72 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-02-interactive-agent-set-selectors/slice.json +78 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/CLOSURE_BRIEF.md +36 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/EXECUTION_BRIEF.md +57 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-03-agent-doctor-repair/slice.json +77 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/CLOSURE_BRIEF.md +35 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/EXECUTION_BRIEF.md +55 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-04-shared-preflight-provider-errors/slice.json +84 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/EXECUTION_BRIEF.md +52 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-05-ai-models-list/slice.json +72 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/CLOSURE_BRIEF.md +33 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/EXECUTION_BRIEF.md +58 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-06-docs-templates-alignment/slice.json +84 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/CLOSURE_BRIEF.md +32 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/EXECUTION_BRIEF.md +59 -0
- package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-07-tests-smokes-release-readiness/slice.json +94 -0
- package/specs/quiver-v32-npx-installation-guidance/EVIDENCE_REPORT.md +26 -0
- package/specs/quiver-v32-npx-installation-guidance/SPEC.md +55 -0
- package/specs/quiver-v32-npx-installation-guidance/STATUS.md +23 -0
- package/specs/quiver-v32-npx-installation-guidance/pr.md +72 -0
- package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/CLOSURE_BRIEF.md +31 -0
- package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/EXECUTION_BRIEF.md +56 -0
- package/specs/quiver-v32-npx-installation-guidance/slices/slice-00-installation-docs/slice.json +75 -0
- package/src/create-quiver/commands/ai.js +797 -99
- package/src/create-quiver/commands/flow.js +2 -2
- package/src/create-quiver/commands/spec.js +106 -6
- package/src/create-quiver/index.js +557 -78
- package/src/create-quiver/lib/agent-profiles.js +440 -11
- package/src/create-quiver/lib/ai/execution-plan.js +111 -8
- package/src/create-quiver/lib/ai/executor.js +291 -28
- package/src/create-quiver/lib/ai/model-catalog.js +333 -0
- package/src/create-quiver/lib/ai/providers.js +211 -2
- package/src/create-quiver/lib/cli/selectors.js +160 -0
- package/src/create-quiver/lib/cli/theme.js +5 -2
- package/src/create-quiver/lib/cli/ux-flags.js +18 -0
- package/src/create-quiver/lib/cli/ux.js +100 -5
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
## Title
|
|
2
|
+
|
|
3
|
+
Quiver v31: AI model catalog and guided agent setup
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
- Adds a local Quiver model catalog for Codex, Claude, and Gemini.
|
|
8
|
+
- Separates technical model ids from human display names.
|
|
9
|
+
- Adds guided provider/model selection for agent profiles.
|
|
10
|
+
- Adds diagnostics and repair dry-run for existing profile misconfigurations.
|
|
11
|
+
- Improves live AI command preflight and provider error messages.
|
|
12
|
+
|
|
13
|
+
## Scope
|
|
14
|
+
|
|
15
|
+
- Local model catalog and alias normalization.
|
|
16
|
+
- Interactive `ai agent set <role>` provider/model flow.
|
|
17
|
+
- `ai models list`.
|
|
18
|
+
- `ai agent doctor`.
|
|
19
|
+
- `ai agent repair --dry-run`.
|
|
20
|
+
- Shared model preflight for live AI commands.
|
|
21
|
+
- Better invalid-model/provider error extraction.
|
|
22
|
+
- Documentation, templates, tests, smokes, and package readiness.
|
|
23
|
+
|
|
24
|
+
## Files
|
|
25
|
+
|
|
26
|
+
Expected areas:
|
|
27
|
+
|
|
28
|
+
- `src/create-quiver/lib/ai/model-catalog.js`
|
|
29
|
+
- `src/create-quiver/lib/agent-profiles.js`
|
|
30
|
+
- `src/create-quiver/lib/ai/providers.js`
|
|
31
|
+
- `src/create-quiver/lib/cli/selectors.js`
|
|
32
|
+
- `src/create-quiver/commands/ai.js`
|
|
33
|
+
- `docs/**`
|
|
34
|
+
- `README.md`
|
|
35
|
+
- `README_FOR_AI.md`
|
|
36
|
+
- `ROADMAP.md`
|
|
37
|
+
- `tests/**`
|
|
38
|
+
- `specs/quiver-v31-ai-model-catalog-agent-selection/**`
|
|
39
|
+
|
|
40
|
+
## How to Test (DETAILED - REQUIRED)
|
|
41
|
+
|
|
42
|
+
### Required Environment
|
|
43
|
+
|
|
44
|
+
- Node.js and npm.
|
|
45
|
+
- Optional provider CLIs for live validation smoke tests.
|
|
46
|
+
- A terminal that can run both TTY and no-TTY command checks.
|
|
47
|
+
|
|
48
|
+
### Worktree Access
|
|
49
|
+
|
|
50
|
+
- One dedicated branch/worktree for `quiver-v31-ai-model-catalog-agent-selection`.
|
|
51
|
+
- One commit per slice.
|
|
52
|
+
|
|
53
|
+
### Run the Project
|
|
54
|
+
|
|
55
|
+
This is a CLI framework change. Run command-level tests and smoke commands from the Quiver repo root.
|
|
56
|
+
|
|
57
|
+
### Use Cases
|
|
58
|
+
|
|
59
|
+
- Configure a planner interactively with Codex and a known model.
|
|
60
|
+
- Configure an executor with `custom`.
|
|
61
|
+
- Run `ai agent doctor` against legacy profile fixtures.
|
|
62
|
+
- Run `ai agent repair --dry-run` against `model: "GPT 5.5"`.
|
|
63
|
+
- Run `ai models list` and `ai models list --json`.
|
|
64
|
+
- Run `ai prepare-context --with-planner` with a bad display alias and verify Quiver blocks before Codex execution.
|
|
65
|
+
- Verify no-TTY and JSON outputs do not prompt or colorize.
|
|
66
|
+
|
|
67
|
+
### Technical Verification
|
|
68
|
+
|
|
69
|
+
- `node --test tests/**/*.test.js`
|
|
70
|
+
- `npm run smoke:create-quiver`
|
|
71
|
+
- `npm run smoke:doctor-fixtures`
|
|
72
|
+
- `npm run smoke:guided-workflow`
|
|
73
|
+
- `npm run package:quiver`
|
|
74
|
+
- `npm pack --dry-run`
|
|
75
|
+
- `git diff --check`
|
|
76
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v31-ai-model-catalog-agent-selection`
|
|
77
|
+
|
|
78
|
+
## Evidence
|
|
79
|
+
|
|
80
|
+
- `node --test tests/**/*.test.js` passed: 482 tests.
|
|
81
|
+
- `npm run smoke:create-quiver` passed.
|
|
82
|
+
- `npm run smoke:doctor-fixtures` passed: 13 fixture states.
|
|
83
|
+
- `npm run smoke:guided-workflow` passed.
|
|
84
|
+
- `npm run package:quiver` passed.
|
|
85
|
+
- `npm pack --dry-run` passed.
|
|
86
|
+
- `git diff --check` passed.
|
|
87
|
+
- `node bin/create-quiver.js spec validate specs/quiver-v31-ai-model-catalog-agent-selection` passed.
|
|
88
|
+
|
|
89
|
+
## Rollback
|
|
90
|
+
|
|
91
|
+
Revert slice commits in reverse order. Free-form custom model support and non-interactive profile setup must remain available during rollback.
|
|
92
|
+
|
|
93
|
+
## Risks / Notes
|
|
94
|
+
|
|
95
|
+
- Catalog models are known by Quiver, not guaranteed available for every account.
|
|
96
|
+
- Live validation can consume tokens and must be opt-in.
|
|
97
|
+
- Provider CLI behavior can change across versions.
|
|
98
|
+
- Existing profiles can contain legitimate custom values and must not be overwritten without explicit confirmation.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-00 Spec foundation and source-of-truth sync
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Created the approved v31 spec package and synchronized source-of-truth docs to record the planned AI model catalog and guided agent setup work.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- [x] Spec package exists and validates.
|
|
10
|
+
- [x] Source-of-truth docs mention v31 as planned.
|
|
11
|
+
- [x] No product code was modified.
|
|
12
|
+
- [x] Evidence report updated.
|
|
13
|
+
|
|
14
|
+
## Relevant Changes
|
|
15
|
+
|
|
16
|
+
- Added `specs/quiver-v31-ai-model-catalog-agent-selection/**`.
|
|
17
|
+
- Updated `README_FOR_AI.md`.
|
|
18
|
+
- Updated `ROADMAP.md`.
|
|
19
|
+
|
|
20
|
+
## Pending
|
|
21
|
+
|
|
22
|
+
- Implement `slice-01-model-catalog-alias-normalization`.
|
|
23
|
+
|
|
24
|
+
## Remaining Risks
|
|
25
|
+
|
|
26
|
+
- Local `main` is ahead of `origin/main` by the prior `v0.15.0` release commit. This is unrelated to v31 implementation but should be resolved before the next package release.
|
|
27
|
+
|
|
28
|
+
## Future Recommendations
|
|
29
|
+
|
|
30
|
+
Execute implementation slices only after this documentary foundation is committed.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-00 Spec foundation and source-of-truth sync
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
The v31 requirements and technical plan were approved to improve AI agent model selection after a real Codex failure caused by `model: "GPT 5.5"` instead of `model: "gpt-5.5"`.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Publish the approved v31 spec package and synchronize source-of-truth docs without implementing product code.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `specs/quiver-v31-ai-model-catalog-agent-selection/**`
|
|
14
|
+
- `README_FOR_AI.md`
|
|
15
|
+
- `ROADMAP.md`
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- The v31 spec package exists and validates.
|
|
20
|
+
- Every slice has `slice.json`, `EXECUTION_BRIEF.md`, and `CLOSURE_BRIEF.md`.
|
|
21
|
+
- Source-of-truth docs mention v31 as planned.
|
|
22
|
+
- No product code is modified.
|
|
23
|
+
|
|
24
|
+
## Technical Plan Summary
|
|
25
|
+
|
|
26
|
+
Create the documentation foundation first so later executors can work from bounded slice handoffs.
|
|
27
|
+
|
|
28
|
+
## Suggested Steps
|
|
29
|
+
|
|
30
|
+
1. Review this spec package for completeness.
|
|
31
|
+
2. Update `README_FOR_AI.md` and `ROADMAP.md` to mark v31 as planned.
|
|
32
|
+
3. Run spec validation.
|
|
33
|
+
4. Update `EVIDENCE_REPORT.md`, `STATUS.md`, and this closure brief.
|
|
34
|
+
|
|
35
|
+
## Restrictions
|
|
36
|
+
|
|
37
|
+
- Do not implement product code.
|
|
38
|
+
- Do not change package version.
|
|
39
|
+
- Do not claim npm publication.
|
|
40
|
+
|
|
41
|
+
## Risks
|
|
42
|
+
|
|
43
|
+
- Source-of-truth docs can drift if v31 is not mentioned.
|
|
44
|
+
- The local repo may contain a pending release commit; do not alter it unless explicitly requested.
|
|
45
|
+
|
|
46
|
+
## Completion Checklist
|
|
47
|
+
|
|
48
|
+
- [ ] Source-of-truth docs synchronized.
|
|
49
|
+
- [ ] Spec validation passes.
|
|
50
|
+
- [ ] Evidence recorded.
|
|
51
|
+
- [ ] No product code changed.
|
package/specs/quiver-v31-ai-model-catalog-agent-selection/slices/slice-00-spec-foundation/slice.json
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-00-spec-foundation",
|
|
3
|
+
"ticket": "QUIVER-31-00",
|
|
4
|
+
"type": "documentation",
|
|
5
|
+
"title": "Spec foundation and source-of-truth sync",
|
|
6
|
+
"objective": "Publish the approved v31 spec package and synchronize source-of-truth docs before implementation.",
|
|
7
|
+
"description": "Creates the spec, execution plan, PR body, evidence report, slice definitions, and handoffs for AI model catalog and guided agent setup.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v31-ai-model-catalog-agent-selection",
|
|
12
|
+
"branch_name": "feature/QUIVER-31-v31-ai-model-catalog-agent-selection"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"README_FOR_AI.md",
|
|
16
|
+
"ROADMAP.md",
|
|
17
|
+
"specs/quiver-v31-ai-model-catalog-agent-selection/**"
|
|
18
|
+
],
|
|
19
|
+
"expected_read_paths": [
|
|
20
|
+
"README_FOR_AI.md",
|
|
21
|
+
"ROADMAP.md",
|
|
22
|
+
"specs/quiver-v31-ai-model-catalog-agent-selection/SPEC.md"
|
|
23
|
+
],
|
|
24
|
+
"allowed_write_paths": [
|
|
25
|
+
"README_FOR_AI.md",
|
|
26
|
+
"ROADMAP.md",
|
|
27
|
+
"specs/quiver-v31-ai-model-catalog-agent-selection/**"
|
|
28
|
+
],
|
|
29
|
+
"depends_on": [],
|
|
30
|
+
"parallel_safe": "no",
|
|
31
|
+
"parallel_safe_reason": "The documentary foundation must land before every implementation slice.",
|
|
32
|
+
"must": [
|
|
33
|
+
"Commit the approved v31 spec package.",
|
|
34
|
+
"Ensure every slice has slice.json, EXECUTION_BRIEF.md, and CLOSURE_BRIEF.md.",
|
|
35
|
+
"Mark v31 as planned in source-of-truth docs without claiming implementation or npm publication.",
|
|
36
|
+
"Run spec validation and diff checks."
|
|
37
|
+
],
|
|
38
|
+
"not_included": [
|
|
39
|
+
"Implementing product code.",
|
|
40
|
+
"Publishing npm.",
|
|
41
|
+
"Changing package version."
|
|
42
|
+
],
|
|
43
|
+
"acceptance": [
|
|
44
|
+
"The v31 spec package exists and validates.",
|
|
45
|
+
"Source-of-truth docs mention v31 as planned.",
|
|
46
|
+
"No product code is modified.",
|
|
47
|
+
"Evidence report records documentation validation."
|
|
48
|
+
],
|
|
49
|
+
"tests": [
|
|
50
|
+
"git diff --check",
|
|
51
|
+
"node bin/create-quiver.js spec validate specs/quiver-v31-ai-model-catalog-agent-selection"
|
|
52
|
+
],
|
|
53
|
+
"validation_hints": [
|
|
54
|
+
"Confirm README_FOR_AI.md does not say v31 is implemented.",
|
|
55
|
+
"Confirm ROADMAP.md does not say v31 is shipped."
|
|
56
|
+
],
|
|
57
|
+
"estimated_hours": 2,
|
|
58
|
+
"status": "completed",
|
|
59
|
+
"blocked_reason": null,
|
|
60
|
+
"actual_hours": 2,
|
|
61
|
+
"completed_at": "2026-05-27"
|
|
62
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-01 Local model catalog and alias normalization
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented the local AI model catalog and connected known alias normalization to agent profile creation.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- [x] Catalog entries added.
|
|
10
|
+
- [x] Alias normalization implemented.
|
|
11
|
+
- [x] Custom models still allowed.
|
|
12
|
+
- [x] Legacy profile compatibility preserved.
|
|
13
|
+
|
|
14
|
+
## Relevant Changes
|
|
15
|
+
|
|
16
|
+
- Added `src/create-quiver/lib/ai/model-catalog.js`.
|
|
17
|
+
- Updated `src/create-quiver/lib/agent-profiles.js`.
|
|
18
|
+
- Added `tests/lib/model-catalog.test.js`.
|
|
19
|
+
- Updated `tests/lib/agent-profiles.test.js`.
|
|
20
|
+
|
|
21
|
+
## Pending
|
|
22
|
+
|
|
23
|
+
- Interactive setup, doctor/repair, live preflight, models list, and docs remain for later slices.
|
|
24
|
+
|
|
25
|
+
## Remaining Risks
|
|
26
|
+
|
|
27
|
+
- Catalog freshness remains a known operational risk until a future remote catalog exists.
|
|
28
|
+
- Live provider availability is not guaranteed by catalog presence.
|
|
29
|
+
|
|
30
|
+
## Future Recommendations
|
|
31
|
+
|
|
32
|
+
Keep the catalog as the single source of truth until a remote catalog API exists.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-01 Local model catalog and alias normalization
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Quiver currently stores free-form model labels. Users can accidentally save display names as provider model ids, causing live provider failures.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Create Quiver's local model catalog and shared alias normalization helpers.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `src/create-quiver/lib/ai/model-catalog.js`
|
|
14
|
+
- `src/create-quiver/lib/agent-profiles.js`
|
|
15
|
+
- related unit tests
|
|
16
|
+
|
|
17
|
+
## Acceptance Criteria
|
|
18
|
+
|
|
19
|
+
- Required Codex, Claude, and Gemini entries exist.
|
|
20
|
+
- Catalog includes version and last updated date.
|
|
21
|
+
- Aliases normalize case-insensitively and tolerate spaces/dashes.
|
|
22
|
+
- `GPT 5.5`, `gpt 5.5`, `Gpt-5.5`, and `gpt-5.5` resolve to `gpt-5.5`.
|
|
23
|
+
- Existing v2 profiles remain readable.
|
|
24
|
+
- Custom models remain allowed.
|
|
25
|
+
|
|
26
|
+
## Technical Plan Summary
|
|
27
|
+
|
|
28
|
+
Add pure catalog/model-resolution helpers first. Later slices consume these helpers for prompts, doctor, repair, and live command preflight.
|
|
29
|
+
|
|
30
|
+
## Suggested Steps
|
|
31
|
+
|
|
32
|
+
1. Add `model-catalog.js`.
|
|
33
|
+
2. Add helpers for listing providers/models, defaults by role, alias matching, and normalization.
|
|
34
|
+
3. Extend profile building to use normalization where safe.
|
|
35
|
+
4. Add tests for catalog shape and aliases.
|
|
36
|
+
|
|
37
|
+
## Restrictions
|
|
38
|
+
|
|
39
|
+
- Do not add prompts.
|
|
40
|
+
- Do not execute provider CLIs.
|
|
41
|
+
- Do not add remote catalog calls.
|
|
42
|
+
|
|
43
|
+
## Risks
|
|
44
|
+
|
|
45
|
+
- Catalog entries can become stale.
|
|
46
|
+
- Alias collisions must not silently choose a model.
|
|
47
|
+
|
|
48
|
+
## Completion Checklist
|
|
49
|
+
|
|
50
|
+
- [ ] Catalog helpers implemented.
|
|
51
|
+
- [ ] Alias normalization tested.
|
|
52
|
+
- [ ] Legacy profile compatibility tested.
|
|
53
|
+
- [ ] `git diff --check` passes.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-01-model-catalog-alias-normalization",
|
|
3
|
+
"ticket": "QUIVER-31-01",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Local model catalog and alias normalization",
|
|
6
|
+
"objective": "Create Quiver's local provider/model catalog and shared model resolution helpers.",
|
|
7
|
+
"description": "Adds the source of truth for known providers, model ids, display names, aliases, role recommendations, metadata, and normalization.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v31-model-catalog-alias-normalization",
|
|
12
|
+
"branch_name": "feature/QUIVER-31-01-v31-model-catalog-alias-normalization"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/lib/ai/model-catalog.js",
|
|
16
|
+
"src/create-quiver/lib/agent-profiles.js",
|
|
17
|
+
"tests/lib/model-catalog.test.js",
|
|
18
|
+
"tests/lib/agent-profiles.test.js"
|
|
19
|
+
],
|
|
20
|
+
"expected_read_paths": [
|
|
21
|
+
"SPEC.md",
|
|
22
|
+
"src/create-quiver/lib/ai/providers.js",
|
|
23
|
+
"src/create-quiver/lib/agent-profiles.js",
|
|
24
|
+
"tests/lib/ai-providers.test.js",
|
|
25
|
+
"tests/lib/agent-profiles.test.js"
|
|
26
|
+
],
|
|
27
|
+
"allowed_write_paths": [
|
|
28
|
+
"src/create-quiver/lib/ai/model-catalog.js",
|
|
29
|
+
"src/create-quiver/lib/agent-profiles.js",
|
|
30
|
+
"tests/lib/model-catalog.test.js",
|
|
31
|
+
"tests/lib/agent-profiles.test.js",
|
|
32
|
+
"specs/quiver-v31-ai-model-catalog-agent-selection/**"
|
|
33
|
+
],
|
|
34
|
+
"depends_on": [
|
|
35
|
+
"slice-00-spec-foundation"
|
|
36
|
+
],
|
|
37
|
+
"parallel_safe": "no",
|
|
38
|
+
"parallel_safe_reason": "Catalog helpers are foundational for later selectors, doctor, repair, and preflight slices.",
|
|
39
|
+
"must": [
|
|
40
|
+
"Add a versioned catalog with catalogVersion and lastUpdated.",
|
|
41
|
+
"Include Codex, Claude, and Gemini models required by the spec.",
|
|
42
|
+
"Support aliases, role recommendations, cost/quality/stability metadata, and custom entries.",
|
|
43
|
+
"Normalize aliases case-insensitively and with tolerant spacing/dashes.",
|
|
44
|
+
"Keep existing v2 agent profiles readable.",
|
|
45
|
+
"Expose pure helpers that can be unit-tested without a TTY."
|
|
46
|
+
],
|
|
47
|
+
"not_included": [
|
|
48
|
+
"Interactive prompts.",
|
|
49
|
+
"Live provider execution.",
|
|
50
|
+
"Remote catalog API."
|
|
51
|
+
],
|
|
52
|
+
"acceptance": [
|
|
53
|
+
"All required model entries are available through the catalog.",
|
|
54
|
+
"`GPT 5.5`, `gpt 5.5`, `Gpt-5.5`, and `gpt-5.5` resolve to `gpt-5.5` for Codex.",
|
|
55
|
+
"Ambiguous aliases do not silently choose a model.",
|
|
56
|
+
"Custom models remain allowed with metadata indicating they are not catalog-validated.",
|
|
57
|
+
"Tests cover catalog shape, defaults, aliases, and legacy profile compatibility."
|
|
58
|
+
],
|
|
59
|
+
"tests": [
|
|
60
|
+
"node --test tests/lib/model-catalog.test.js tests/lib/agent-profiles.test.js",
|
|
61
|
+
"git diff --check"
|
|
62
|
+
],
|
|
63
|
+
"validation_hints": [
|
|
64
|
+
"Test pure functions directly instead of prompt flows.",
|
|
65
|
+
"Do not call provider CLIs in this slice."
|
|
66
|
+
],
|
|
67
|
+
"estimated_hours": 6,
|
|
68
|
+
"status": "completed",
|
|
69
|
+
"blocked_reason": null,
|
|
70
|
+
"actual_hours": 5,
|
|
71
|
+
"completed_at": "2026-05-27"
|
|
72
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-02 Interactive agent set provider and model selectors
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented guided provider/model resolution for `ai agent set <role>`.
|
|
6
|
+
The command now supports interactive provider/model selectors when TTY prompts are available, requires explicit `--provider` and `--model` in non-interactive mode, supports existing profile actions, custom model ids, and a write summary before saving.
|
|
7
|
+
|
|
8
|
+
## Validation Against Acceptance Criteria
|
|
9
|
+
|
|
10
|
+
- [x] Interactive setup works through injectable selector helpers.
|
|
11
|
+
- [x] No-TTY guardrails fail clearly without hanging.
|
|
12
|
+
- [x] Existing profiles can be updated, extended, switched as default, or canceled before writes.
|
|
13
|
+
- [x] Custom model flow captures technical id and display name.
|
|
14
|
+
- [x] Known catalog selections write technical model ids and human display names.
|
|
15
|
+
|
|
16
|
+
## Relevant Changes
|
|
17
|
+
|
|
18
|
+
- Added reusable `promptText` support to CLI selectors.
|
|
19
|
+
- Added provider/model selector resolution to `ai agent set`.
|
|
20
|
+
- Added provider CLI status hints for provider choices.
|
|
21
|
+
- Added role-ordered model choices from the local catalog.
|
|
22
|
+
- Made `ai agent` dispatch async-safe.
|
|
23
|
+
- Added tests for selector helpers, no-TTY behavior, interactive provider/model selection, custom models, and named profile creation.
|
|
24
|
+
|
|
25
|
+
## Pending
|
|
26
|
+
|
|
27
|
+
- Live validation and repair remain deferred to later slices.
|
|
28
|
+
|
|
29
|
+
## Remaining Risks
|
|
30
|
+
|
|
31
|
+
- Provider install status is best-effort and only detects CLI availability, not whether the selected account can run the chosen model.
|
|
32
|
+
- Interactive prompt rendering itself is covered through injected selectors rather than a real terminal e2e test.
|
|
33
|
+
|
|
34
|
+
## Future Recommendations
|
|
35
|
+
|
|
36
|
+
Add richer live provider validation only after the selector flow is stable.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-02 Interactive agent set provider and model selectors
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Agent setup currently requires users to know provider ids and exact model ids. v30 added selector primitives; v31 uses them to guide agent model setup.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Make `ai agent set <role>` interactive in TTY mode when provider/model data is missing.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `src/create-quiver/commands/ai.js`
|
|
14
|
+
- `src/create-quiver/lib/cli/selectors.js`
|
|
15
|
+
- `src/create-quiver/lib/agent-profiles.js`
|
|
16
|
+
- related tests
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- TTY setup shows provider and model selectors.
|
|
21
|
+
- No-TTY/CI without required flags fails clearly.
|
|
22
|
+
- Existing profiles are summarized before changes.
|
|
23
|
+
- Users can update current, create new, change default, or cancel.
|
|
24
|
+
- Custom model flow collects technical id and display name.
|
|
25
|
+
- Cancellation writes no files.
|
|
26
|
+
|
|
27
|
+
## Technical Plan Summary
|
|
28
|
+
|
|
29
|
+
Reuse catalog helpers from slice-01 and selector helpers from v30. Keep prompt logic injectable for tests.
|
|
30
|
+
|
|
31
|
+
## Suggested Steps
|
|
32
|
+
|
|
33
|
+
1. Add a resolver for interactive agent setup options.
|
|
34
|
+
2. Add provider selector with CLI install status.
|
|
35
|
+
3. Add model selector ordered by role recommendations.
|
|
36
|
+
4. Add summary before writes.
|
|
37
|
+
5. Add no-TTY guardrails.
|
|
38
|
+
6. Add tests for TTY, no-TTY, cancellation, and custom.
|
|
39
|
+
|
|
40
|
+
## Restrictions
|
|
41
|
+
|
|
42
|
+
- Do not implement agent doctor/repair here.
|
|
43
|
+
- Do not force live validation.
|
|
44
|
+
- Do not break scripted `--provider --model` usage.
|
|
45
|
+
|
|
46
|
+
## Risks
|
|
47
|
+
|
|
48
|
+
- Interactive tests can be brittle if logic is not separated from rendering.
|
|
49
|
+
- Existing profile overwrite must be explicit.
|
|
50
|
+
|
|
51
|
+
## Completion Checklist
|
|
52
|
+
|
|
53
|
+
- [ ] TTY flow implemented.
|
|
54
|
+
- [ ] No-TTY safety tested.
|
|
55
|
+
- [ ] Existing profile flow tested.
|
|
56
|
+
- [ ] Custom model flow tested.
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
{
|
|
2
|
+
"slice_id": "slice-02-interactive-agent-set-selectors",
|
|
3
|
+
"ticket": "QUIVER-31-02",
|
|
4
|
+
"type": "feature",
|
|
5
|
+
"title": "Interactive agent set provider and model selectors",
|
|
6
|
+
"objective": "Make `ai agent set <role>` guide users through provider and model selection in TTY mode.",
|
|
7
|
+
"description": "Adds a guided setup flow that shows providers, CLI install status, known models ordered by role, custom model input, summaries, cancellation, and no-TTY safeguards.",
|
|
8
|
+
"git": {
|
|
9
|
+
"branch_type": "feature",
|
|
10
|
+
"base_branch": "main",
|
|
11
|
+
"branch_slug": "v31-interactive-agent-set-selectors",
|
|
12
|
+
"branch_name": "feature/QUIVER-31-02-v31-interactive-agent-set-selectors"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"src/create-quiver/commands/ai.js",
|
|
16
|
+
"src/create-quiver/lib/cli/selectors.js",
|
|
17
|
+
"src/create-quiver/lib/agent-profiles.js",
|
|
18
|
+
"tests/commands/ai-agent.test.js",
|
|
19
|
+
"tests/lib/cli-selectors.test.js"
|
|
20
|
+
],
|
|
21
|
+
"expected_read_paths": [
|
|
22
|
+
"SPEC.md",
|
|
23
|
+
"src/create-quiver/lib/ai/model-catalog.js",
|
|
24
|
+
"src/create-quiver/lib/cli/selectors.js",
|
|
25
|
+
"src/create-quiver/lib/agent-profiles.js",
|
|
26
|
+
"tests/commands/ai-agent.test.js"
|
|
27
|
+
],
|
|
28
|
+
"allowed_write_paths": [
|
|
29
|
+
"src/create-quiver/commands/ai.js",
|
|
30
|
+
"src/create-quiver/lib/cli/selectors.js",
|
|
31
|
+
"src/create-quiver/lib/agent-profiles.js",
|
|
32
|
+
"tests/commands/ai-agent.test.js",
|
|
33
|
+
"tests/lib/cli-selectors.test.js",
|
|
34
|
+
"specs/quiver-v31-ai-model-catalog-agent-selection/**"
|
|
35
|
+
],
|
|
36
|
+
"depends_on": [
|
|
37
|
+
"slice-01-model-catalog-alias-normalization"
|
|
38
|
+
],
|
|
39
|
+
"parallel_safe": "yes",
|
|
40
|
+
"parallel_safe_reason": "Can run in parallel with ai models list if command-file conflicts are coordinated.",
|
|
41
|
+
"must": [
|
|
42
|
+
"Open interactive setup automatically only in TTY when required flags are missing.",
|
|
43
|
+
"Fail clearly in no-TTY/CI when required flags are missing.",
|
|
44
|
+
"Show existing profiles before changes.",
|
|
45
|
+
"Support update current, create new, change default, and cancel.",
|
|
46
|
+
"Show provider CLI install status.",
|
|
47
|
+
"Order model choices by the requested role.",
|
|
48
|
+
"Support custom model id and display name.",
|
|
49
|
+
"Show a write summary before saving.",
|
|
50
|
+
"Do not write on cancellation."
|
|
51
|
+
],
|
|
52
|
+
"not_included": [
|
|
53
|
+
"Agent doctor and repair.",
|
|
54
|
+
"Live validation execution unless a small reusable hook is needed and remains disabled by default.",
|
|
55
|
+
"Remote model catalog."
|
|
56
|
+
],
|
|
57
|
+
"acceptance": [
|
|
58
|
+
"`ai agent set planner` in TTY shows provider/model selectors.",
|
|
59
|
+
"No-TTY command without flags fails without hanging.",
|
|
60
|
+
"Known model selection writes technical `model` and human `displayName`.",
|
|
61
|
+
"Custom selection writes a technical id and a default display name if none is provided.",
|
|
62
|
+
"Cancellation writes no profile changes.",
|
|
63
|
+
"Duplicate display names are distinguishable in selectors."
|
|
64
|
+
],
|
|
65
|
+
"tests": [
|
|
66
|
+
"node --test tests/commands/ai-agent.test.js tests/lib/cli-selectors.test.js",
|
|
67
|
+
"git diff --check"
|
|
68
|
+
],
|
|
69
|
+
"validation_hints": [
|
|
70
|
+
"Test prompt logic through injectable selector helpers.",
|
|
71
|
+
"Do not require a real interactive terminal in unit tests."
|
|
72
|
+
],
|
|
73
|
+
"estimated_hours": 8,
|
|
74
|
+
"status": "completed",
|
|
75
|
+
"blocked_reason": null,
|
|
76
|
+
"actual_hours": 6,
|
|
77
|
+
"completed_at": "2026-05-27"
|
|
78
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# CLOSURE_BRIEF - slice-03 Agent profile doctor and repair dry-run
|
|
2
|
+
|
|
3
|
+
## Summary
|
|
4
|
+
|
|
5
|
+
Implemented `ai agent doctor` and `ai agent repair --dry-run` for existing agent profile diagnostics and safe repair previews.
|
|
6
|
+
|
|
7
|
+
## Validation Against Acceptance Criteria
|
|
8
|
+
|
|
9
|
+
- [x] Doctor checks every configured profile, not only defaults.
|
|
10
|
+
- [x] Severity and exit codes behave correctly; errors set exit code 1.
|
|
11
|
+
- [x] Repair dry-run shows proposed changes only and writes no files.
|
|
12
|
+
- [x] Human and JSON output contracts pass.
|
|
13
|
+
- [x] Unsupported providers are errors.
|
|
14
|
+
- [x] Display aliases in `model` are detected and repairable.
|
|
15
|
+
- [x] Custom unvalidated models are warnings.
|
|
16
|
+
|
|
17
|
+
## Relevant Changes
|
|
18
|
+
|
|
19
|
+
- Added pure doctor report and repair-plan builders in `agent-profiles.js`.
|
|
20
|
+
- Added `ai agent doctor` with human and JSON output.
|
|
21
|
+
- Added `ai agent repair --dry-run` with before/after repair previews.
|
|
22
|
+
- Updated help text to expose `ai agent doctor` and `ai agent repair`.
|
|
23
|
+
- Added CLI and library tests for invalid legacy profiles, alias repair, JSON output, and no-write repair behavior.
|
|
24
|
+
|
|
25
|
+
## Pending
|
|
26
|
+
|
|
27
|
+
- Write-mode repair remains intentionally unavailable.
|
|
28
|
+
|
|
29
|
+
## Remaining Risks
|
|
30
|
+
|
|
31
|
+
- Provider CLI checks are best-effort and do not prove account/model entitlement.
|
|
32
|
+
- Repair currently only normalizes safe catalog alias issues; unsupported providers and custom models still require human action.
|
|
33
|
+
|
|
34
|
+
## Future Recommendations
|
|
35
|
+
|
|
36
|
+
Consider write-mode repair only after dry-run behavior is dogfooded.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# EXECUTION_BRIEF - slice-03 Agent profile doctor and repair dry-run
|
|
2
|
+
|
|
3
|
+
## Context
|
|
4
|
+
|
|
5
|
+
Projects can already have misconfigured profiles. New selectors only help future setup, so existing profiles need diagnostics and safe repair previews.
|
|
6
|
+
|
|
7
|
+
## Objective
|
|
8
|
+
|
|
9
|
+
Add `ai agent doctor` and `ai agent repair --dry-run`.
|
|
10
|
+
|
|
11
|
+
## Scope
|
|
12
|
+
|
|
13
|
+
- `src/create-quiver/commands/ai.js`
|
|
14
|
+
- `src/create-quiver/lib/agent-profiles.js`
|
|
15
|
+
- `src/create-quiver/lib/ai/model-catalog.js`
|
|
16
|
+
- related tests
|
|
17
|
+
|
|
18
|
+
## Acceptance Criteria
|
|
19
|
+
|
|
20
|
+
- Doctor evaluates all profiles and identifies defaults.
|
|
21
|
+
- Findings use `error`, `warning`, and `info`.
|
|
22
|
+
- Unsupported providers are errors.
|
|
23
|
+
- Custom unvalidated models are warnings.
|
|
24
|
+
- Display aliases stored in `model` are detected.
|
|
25
|
+
- Repair dry-run shows before/after changes without writes.
|
|
26
|
+
- Human output uses `Checks` and `Suggested fixes`; JSON is clean.
|
|
27
|
+
|
|
28
|
+
## Technical Plan Summary
|
|
29
|
+
|
|
30
|
+
Build profile diagnostics as pure data first, then render human/JSON outputs from that shared report.
|
|
31
|
+
|
|
32
|
+
## Suggested Steps
|
|
33
|
+
|
|
34
|
+
1. Add profile issue classifier.
|
|
35
|
+
2. Add doctor report builder.
|
|
36
|
+
3. Add human and JSON renderers.
|
|
37
|
+
4. Add repair proposal builder.
|
|
38
|
+
5. Wire commands.
|
|
39
|
+
6. Add fixture tests for legacy bad profiles.
|
|
40
|
+
|
|
41
|
+
## Restrictions
|
|
42
|
+
|
|
43
|
+
- Do not auto-write repairs by default.
|
|
44
|
+
- Do not install provider CLIs.
|
|
45
|
+
- Do not mark catalog models as available without live validation.
|
|
46
|
+
|
|
47
|
+
## Risks
|
|
48
|
+
|
|
49
|
+
- Doctor can become noisy if severities are weak.
|
|
50
|
+
- Repair must preserve legitimate custom values.
|
|
51
|
+
|
|
52
|
+
## Completion Checklist
|
|
53
|
+
|
|
54
|
+
- [ ] Doctor command implemented.
|
|
55
|
+
- [ ] Repair dry-run implemented.
|
|
56
|
+
- [ ] JSON outputs tested.
|
|
57
|
+
- [ ] Legacy bad-profile fixture tested.
|