@tgoodington/intuition 8.1.3 → 9.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/docs/v9/decision-framework-direction.md +142 -0
- package/docs/v9/decision-framework-implementation.md +114 -0
- package/docs/v9/domain-adaptive-team-architecture.md +1016 -0
- package/docs/v9/test/SESSION_SUMMARY.md +117 -0
- package/docs/v9/test/TEST_PLAN.md +119 -0
- package/docs/v9/test/blueprints/legal-analyst.md +166 -0
- package/docs/v9/test/output/07_cover_letter.md +41 -0
- package/docs/v9/test/phase2/mock_plan.md +89 -0
- package/docs/v9/test/phase2/producers.json +32 -0
- package/docs/v9/test/phase2/specialists/database-architect.specialist.md +10 -0
- package/docs/v9/test/phase2/specialists/financial-analyst.specialist.md +10 -0
- package/docs/v9/test/phase2/specialists/legal-analyst.specialist.md +10 -0
- package/docs/v9/test/phase2/specialists/technical-writer.specialist.md +10 -0
- package/docs/v9/test/phase2/team_assignment.json +61 -0
- package/docs/v9/test/phase3/blueprints/legal-analyst.md +840 -0
- package/docs/v9/test/phase3/legal-analyst-full.specialist.md +111 -0
- package/docs/v9/test/phase3/project_context/nh_landlord_tenant_notes.md +35 -0
- package/docs/v9/test/phase3/project_context/property_facts.md +32 -0
- package/docs/v9/test/phase3b/blueprints/legal-analyst.md +1715 -0
- package/docs/v9/test/phase3b/legal-analyst.specialist.md +153 -0
- package/docs/v9/test/phase3b/scratch/legal-analyst-stage1.md +270 -0
- package/docs/v9/test/phase4/TEST_PLAN.md +32 -0
- package/docs/v9/test/phase4/blueprints/financial-analyst-T2.md +538 -0
- package/docs/v9/test/phase4/blueprints/legal-analyst-T4.md +253 -0
- package/docs/v9/test/phase4/cross-blueprint-check.md +280 -0
- package/docs/v9/test/phase4/scratch/financial-analyst-T2-stage1.md +67 -0
- package/docs/v9/test/phase4/scratch/legal-analyst-T4-stage1.md +54 -0
- package/docs/v9/test/phase4/specialists/financial-analyst.specialist.md +156 -0
- package/docs/v9/test/phase4/specialists/legal-analyst.specialist.md +153 -0
- package/docs/v9/test/phase5/TEST_PLAN.md +35 -0
- package/docs/v9/test/phase5/blueprints/code-architect-hw-vetter.md +375 -0
- package/docs/v9/test/phase5/output/04_compliance_checklist.md +149 -0
- package/docs/v9/test/phase5/output/hardware-vetter-SKILL-v2.md +561 -0
- package/docs/v9/test/phase5/output/hardware-vetter-SKILL.md +459 -0
- package/docs/v9/test/phase5/producers/code-writer.producer.md +49 -0
- package/docs/v9/test/phase5/producers/document-writer.producer.md +62 -0
- package/docs/v9/test/phase5/regression-comparison-v2.md +60 -0
- package/docs/v9/test/phase5/regression-comparison.md +197 -0
- package/docs/v9/test/phase5/review-5A-specialist.md +213 -0
- package/docs/v9/test/phase5/specialist-test/TEST_PLAN.md +60 -0
- package/docs/v9/test/phase5/specialist-test/blueprint-comparison.md +252 -0
- package/docs/v9/test/phase5/specialist-test/blueprints/code-architect-hw-vetter.md +916 -0
- package/docs/v9/test/phase5/specialist-test/scratch/code-architect-stage1.md +427 -0
- package/docs/v9/test/phase5/specialists/code-architect.specialist.md +168 -0
- package/docs/v9/test/phase5b/TEST_PLAN.md +219 -0
- package/docs/v9/test/phase5b/blueprints/5B-10-stage2-with-decisions.md +286 -0
- package/docs/v9/test/phase5b/decisions/5B-2-accept-all-decisions.json +68 -0
- package/docs/v9/test/phase5b/decisions/5B-3-promote-decisions.json +70 -0
- package/docs/v9/test/phase5b/decisions/5B-4-individual-decisions.json +68 -0
- package/docs/v9/test/phase5b/decisions/5B-5-triage-decisions.json +110 -0
- package/docs/v9/test/phase5b/decisions/5B-6-fallback-decisions.json +40 -0
- package/docs/v9/test/phase5b/decisions/5B-8-partial-decisions.json +46 -0
- package/docs/v9/test/phase5b/decisions/5B-9-complete-decisions.json +54 -0
- package/docs/v9/test/phase5b/scratch/code-architect-stage1.md +133 -0
- package/docs/v9/test/phase5b/specialists/code-architect.specialist.md +202 -0
- package/docs/v9/test/phase5b/stage1-many-decisions.md +139 -0
- package/docs/v9/test/phase5b/stage1-no-assumptions.md +70 -0
- package/docs/v9/test/phase5b/stage1-with-assumptions.md +86 -0
- package/docs/v9/test/phase5b/test-5B-1-results.md +157 -0
- package/docs/v9/test/phase5b/test-5B-10-results.md +130 -0
- package/docs/v9/test/phase5b/test-5B-2-results.md +75 -0
- package/docs/v9/test/phase5b/test-5B-3-results.md +104 -0
- package/docs/v9/test/phase5b/test-5B-4-results.md +114 -0
- package/docs/v9/test/phase5b/test-5B-5-results.md +126 -0
- package/docs/v9/test/phase5b/test-5B-6-results.md +60 -0
- package/docs/v9/test/phase5b/test-5B-7-results.md +141 -0
- package/docs/v9/test/phase5b/test-5B-8-results.md +115 -0
- package/docs/v9/test/phase5b/test-5B-9-results.md +76 -0
- package/docs/v9/test/producers/document-writer.producer.md +62 -0
- package/docs/v9/test/specialists/legal-analyst.specialist.md +58 -0
- package/package.json +4 -2
- package/producers/code-writer/code-writer.producer.md +86 -0
- package/producers/data-file-writer/data-file-writer.producer.md +116 -0
- package/producers/document-writer/document-writer.producer.md +117 -0
- package/producers/form-filler/form-filler.producer.md +99 -0
- package/producers/presentation-creator/presentation-creator.producer.md +109 -0
- package/producers/spreadsheet-builder/spreadsheet-builder.producer.md +107 -0
- package/scripts/install-skills.js +88 -7
- package/scripts/uninstall-skills.js +3 -0
- package/skills/intuition-agent-advisor/SKILL.md +107 -0
- package/skills/intuition-assemble/SKILL.md +261 -0
- package/skills/intuition-build/SKILL.md +211 -151
- package/skills/intuition-debugger/SKILL.md +4 -4
- package/skills/intuition-design/SKILL.md +7 -3
- package/skills/intuition-detail/SKILL.md +377 -0
- package/skills/intuition-engineer/SKILL.md +8 -4
- package/skills/intuition-handoff/SKILL.md +251 -213
- package/skills/intuition-handoff/references/handoff_core.md +16 -16
- package/skills/intuition-initialize/SKILL.md +20 -5
- package/skills/intuition-initialize/references/state_template.json +16 -1
- package/skills/intuition-plan/SKILL.md +139 -59
- package/skills/intuition-plan/references/magellan_core.md +8 -8
- package/skills/intuition-plan/references/templates/plan_template.md +5 -5
- package/skills/intuition-prompt/SKILL.md +89 -27
- package/skills/intuition-start/SKILL.md +42 -9
- package/skills/intuition-start/references/start_core.md +12 -12
- package/skills/intuition-test/SKILL.md +345 -0
- package/specialists/api-designer/api-designer.specialist.md +291 -0
- package/specialists/business-analyst/business-analyst.specialist.md +270 -0
- package/specialists/copywriter/copywriter.specialist.md +268 -0
- package/specialists/database-architect/database-architect.specialist.md +275 -0
- package/specialists/devops-infrastructure/devops-infrastructure.specialist.md +314 -0
- package/specialists/financial-analyst/financial-analyst.specialist.md +269 -0
- package/specialists/frontend-component/frontend-component.specialist.md +293 -0
- package/specialists/instructional-designer/instructional-designer.specialist.md +285 -0
- package/specialists/legal-analyst/legal-analyst.specialist.md +260 -0
- package/specialists/marketing-strategist/marketing-strategist.specialist.md +281 -0
- package/specialists/project-manager/project-manager.specialist.md +266 -0
- package/specialists/research-analyst/research-analyst.specialist.md +273 -0
- package/specialists/security-auditor/security-auditor.specialist.md +354 -0
- package/specialists/technical-writer/technical-writer.specialist.md +275 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Stage 1 Exploration: Task 5 — Build the API Integration Testing Skill
|
|
2
|
+
|
|
3
|
+
## Research Findings
|
|
4
|
+
|
|
5
|
+
Research subagents examined the following project context:
|
|
6
|
+
|
|
7
|
+
- `src/api/routes/` — 14 route files covering auth, users, projects, billing, notifications, search, admin
|
|
8
|
+
- `src/api/middleware/` — 6 middleware files (auth, rate-limit, cors, logging, validation, error-handler)
|
|
9
|
+
- `tests/api/` — 23 existing test files, mostly unit tests on individual route handlers
|
|
10
|
+
- `config/test.env` — test environment configuration with mock service URLs
|
|
11
|
+
- `docs/api-spec.yaml` — OpenAPI 3.0 specification covering 42 endpoints
|
|
12
|
+
|
|
13
|
+
Key findings:
|
|
14
|
+
1. Existing tests are unit-level — no integration tests that exercise the full middleware stack
|
|
15
|
+
2. OpenAPI spec is comprehensive but some endpoints are undocumented (admin routes)
|
|
16
|
+
3. Auth middleware uses JWT with refresh tokens — integration tests need token management
|
|
17
|
+
4. Rate limiting is per-IP in production, needs different handling in tests
|
|
18
|
+
5. 3 external service dependencies: payment processor, email service, search index
|
|
19
|
+
6. No test database seeding — tests currently use mocked data stores
|
|
20
|
+
|
|
21
|
+
## ECD Analysis
|
|
22
|
+
|
|
23
|
+
### Elements
|
|
24
|
+
- **Endpoints**: 42 documented + ~6 undocumented admin endpoints
|
|
25
|
+
- **Middleware stack**: 6 layers that transform requests/responses
|
|
26
|
+
- **External services**: 3 dependencies requiring mocks or stubs
|
|
27
|
+
- **Test database**: Needs seeding strategy for integration tests
|
|
28
|
+
- **Auth flows**: JWT issue, refresh, revoke — all need test coverage
|
|
29
|
+
- **OpenAPI spec**: Source of truth for expected request/response shapes
|
|
30
|
+
|
|
31
|
+
### Connections
|
|
32
|
+
- Routes → Middleware: each route passes through the full stack
|
|
33
|
+
- Auth middleware → All protected routes: token validation required
|
|
34
|
+
- External services → Route handlers: payment, email, search called from handlers
|
|
35
|
+
- OpenAPI spec → Test assertions: response shapes validate against spec
|
|
36
|
+
- Test DB → Route handlers: data layer needs realistic seeded state
|
|
37
|
+
|
|
38
|
+
### Dynamics
|
|
39
|
+
- Test setup: seed database, start mock services, configure auth tokens
|
|
40
|
+
- Test execution: HTTP requests through the full stack (not bypassing middleware)
|
|
41
|
+
- Assertion: response status, body shape (vs OpenAPI), headers, side effects
|
|
42
|
+
- Teardown: clean database, verify no leaked state between tests
|
|
43
|
+
- Edge cases: expired tokens, rate limit triggers, service timeouts, malformed requests
|
|
44
|
+
|
|
45
|
+
## Assumptions
|
|
46
|
+
|
|
47
|
+
### A1: Test Framework
|
|
48
|
+
- **Default**: Use Jest with supertest (already in devDependencies)
|
|
49
|
+
- **Rationale**: Project already uses Jest for unit tests; supertest is the standard HTTP assertion library for Node.js integration testing
|
|
50
|
+
|
|
51
|
+
### A2: Single-File Skill Structure
|
|
52
|
+
- **Default**: Implement as a single SKILL.md file
|
|
53
|
+
- **Rationale**: Platform constraint — Claude Code skills must be single SKILL.md files
|
|
54
|
+
|
|
55
|
+
### A3: Model Selection
|
|
56
|
+
- **Default**: Use `sonnet` as the execution model
|
|
57
|
+
- **Rationale**: Test generation is pattern-heavy, doesn't require opus-level reasoning
|
|
58
|
+
|
|
59
|
+
## Key Decisions
|
|
60
|
+
|
|
61
|
+
### D1: Test Scope — Which Endpoints
|
|
62
|
+
- **Options**:
|
|
63
|
+
- A) All 42 documented endpoints — recommended
|
|
64
|
+
- B) Critical paths only (auth, billing, core CRUD) — ~15 endpoints
|
|
65
|
+
- C) All 48 including undocumented admin routes
|
|
66
|
+
- **Recommendation**: A, because the OpenAPI spec provides a clear boundary and admin routes lack documentation to test against
|
|
67
|
+
- **Risk if wrong**: All 42 is a large test suite; critical-only misses coverage; including admin routes means inventing expected behavior
|
|
68
|
+
|
|
69
|
+
### D2: External Service Mocking Strategy
|
|
70
|
+
- **Options**:
|
|
71
|
+
- A) In-process mocks (nock/msw) — intercept HTTP calls — recommended
|
|
72
|
+
- B) Sidecar mock servers — separate processes that mimic services
|
|
73
|
+
- C) Real staging services — use actual test instances
|
|
74
|
+
- **Recommendation**: A, because in-process mocks are fastest, most deterministic, and don't require infrastructure
|
|
75
|
+
- **Risk if wrong**: In-process mocks can mask real HTTP issues; sidecar is more realistic but harder to set up
|
|
76
|
+
|
|
77
|
+
### D3: Database Strategy
|
|
78
|
+
- **Options**:
|
|
79
|
+
- A) SQLite in-memory for tests — fast, isolated — recommended
|
|
80
|
+
- B) Dockerized test database (matching production)
|
|
81
|
+
- C) Shared test database with transaction rollback
|
|
82
|
+
- **Recommendation**: A, because speed and isolation matter most for integration tests that run frequently
|
|
83
|
+
- **Risk if wrong**: SQLite may have dialect differences from production DB; Docker is slower but more faithful
|
|
84
|
+
|
|
85
|
+
### D4: Auth Token Management
|
|
86
|
+
- **Options**:
|
|
87
|
+
- A) Pre-generated static tokens with known payloads — recommended
|
|
88
|
+
- B) Full auth flow per test (login → get token → use token)
|
|
89
|
+
- C) Bypass auth middleware in test environment
|
|
90
|
+
- **Recommendation**: A, because static tokens are fastest and most deterministic for non-auth tests
|
|
91
|
+
- **Risk if wrong**: Static tokens don't test the auth flow itself; bypassing auth misses middleware bugs
|
|
92
|
+
|
|
93
|
+
### D5: Test Organization
|
|
94
|
+
- **Options**:
|
|
95
|
+
- A) One test file per route file (14 files) — recommended
|
|
96
|
+
- B) One test file per endpoint (42 files)
|
|
97
|
+
- C) Grouped by domain (auth, billing, etc.) — ~6 files
|
|
98
|
+
- **Recommendation**: A, because it mirrors the source structure and keeps related endpoint tests together
|
|
99
|
+
- **Risk if wrong**: Large route files produce large test files; per-endpoint is more granular but creates file sprawl
|
|
100
|
+
|
|
101
|
+
### D6: Response Validation Depth
|
|
102
|
+
- **Options**:
|
|
103
|
+
- A) Schema validation against OpenAPI spec + key field assertions — recommended
|
|
104
|
+
- B) Full response body deep-equal matching
|
|
105
|
+
- C) Status code + content-type only
|
|
106
|
+
- **Recommendation**: A, because schema validation catches structural issues while key field assertions verify business logic
|
|
107
|
+
- **Risk if wrong**: Deep-equal is brittle (breaks on any field addition); status-only misses body bugs
|
|
108
|
+
|
|
109
|
+
### D7: Error Case Coverage
|
|
110
|
+
- **Options**:
|
|
111
|
+
- A) All documented error codes per endpoint — recommended
|
|
112
|
+
- B) Common errors only (400, 401, 404, 500)
|
|
113
|
+
- C) Happy path only, errors in a follow-up task
|
|
114
|
+
- **Recommendation**: A, because error handling is where most integration bugs hide
|
|
115
|
+
- **Risk if wrong**: Full error coverage is time-intensive; common-only misses domain-specific error cases
|
|
116
|
+
|
|
117
|
+
### D8: Rate Limiting Test Approach
|
|
118
|
+
- **Options**:
|
|
119
|
+
- A) Configurable rate limits — lower limits in test env for fast triggering — recommended
|
|
120
|
+
- B) Real rate limits — send enough requests to trigger
|
|
121
|
+
- C) Skip rate limit testing
|
|
122
|
+
- **Recommendation**: A, because real limits make tests slow and flaky; skipping misses a critical middleware
|
|
123
|
+
- **Risk if wrong**: Configurable limits might not catch production-specific rate limit bugs
|
|
124
|
+
|
|
125
|
+
### D9: Test Data Seeding Strategy
|
|
126
|
+
- **Options**:
|
|
127
|
+
- A) Fixture files loaded per test suite — recommended
|
|
128
|
+
- B) Factory functions that generate random data
|
|
129
|
+
- C) Shared seed script that populates a standard dataset
|
|
130
|
+
- **Recommendation**: A, because fixtures are deterministic and reviewable; per-suite gives isolation
|
|
131
|
+
- **Risk if wrong**: Fixtures can become stale; factories add complexity; shared seeds create test interdependencies
|
|
132
|
+
|
|
133
|
+
### D10: CI Integration
|
|
134
|
+
- **Options**:
|
|
135
|
+
- A) Separate CI job for integration tests (run on PR, not on every commit) — recommended
|
|
136
|
+
- B) Combined with unit tests in the same job
|
|
137
|
+
- C) Manual trigger only
|
|
138
|
+
- **Recommendation**: A, because integration tests are slower and shouldn't block every commit
|
|
139
|
+
- **Risk if wrong**: Separate job means integration failures discovered later; combined job slows all commits
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Stage 1 Exploration: Task 4 — Build the Dependency Audit Skill
|
|
2
|
+
|
|
3
|
+
## Research Findings
|
|
4
|
+
|
|
5
|
+
Research subagents examined the following project context:
|
|
6
|
+
|
|
7
|
+
- `package.json` — 12 dependencies, 8 devDependencies
|
|
8
|
+
- `package-lock.json` — full dependency tree with 340 transitive dependencies
|
|
9
|
+
- `config/audit-policy.json` — does not exist (no current audit configuration)
|
|
10
|
+
- `reports/` — no existing audit reports
|
|
11
|
+
|
|
12
|
+
Key findings:
|
|
13
|
+
1. No existing audit tooling in the project
|
|
14
|
+
2. `npm audit` available as baseline but produces verbose, hard-to-read output
|
|
15
|
+
3. Several dependencies are 2+ major versions behind
|
|
16
|
+
4. No license compliance checking currently
|
|
17
|
+
|
|
18
|
+
## ECD Analysis
|
|
19
|
+
|
|
20
|
+
### Elements
|
|
21
|
+
- **Direct dependencies**: 20 packages declared in package.json
|
|
22
|
+
- **Transitive dependencies**: 340 packages in the full tree
|
|
23
|
+
- **Vulnerability database**: npm advisory database (via `npm audit`)
|
|
24
|
+
- **License types**: Mix of MIT, Apache-2.0, ISC across the tree
|
|
25
|
+
- **Audit report**: Markdown summary of findings
|
|
26
|
+
|
|
27
|
+
### Connections
|
|
28
|
+
- Direct deps → Transitive deps: each direct dep pulls in a subtree
|
|
29
|
+
- Vulnerability DB → Dep versions: advisories match specific version ranges
|
|
30
|
+
- License types → Compliance policy: some licenses may conflict with project goals
|
|
31
|
+
- Audit report → User action: findings need clear next-step recommendations
|
|
32
|
+
|
|
33
|
+
### Dynamics
|
|
34
|
+
- Skill runs `npm audit --json` to get vulnerability data
|
|
35
|
+
- Parses output into severity categories (critical, high, moderate, low)
|
|
36
|
+
- Checks each dependency's license against an allow-list
|
|
37
|
+
- Produces a ranked report: critical issues first, then version staleness, then license concerns
|
|
38
|
+
- Edge case: private registry packages may not have advisory data
|
|
39
|
+
|
|
40
|
+
## Key Decisions
|
|
41
|
+
|
|
42
|
+
### D1: Scope of Audit
|
|
43
|
+
- **Options**:
|
|
44
|
+
- A) Vulnerabilities only — focus on security advisories — recommended
|
|
45
|
+
- B) Vulnerabilities + license compliance
|
|
46
|
+
- C) Vulnerabilities + license compliance + version staleness
|
|
47
|
+
- **Recommendation**: A, because it's the highest-value check and keeps the skill focused
|
|
48
|
+
- **Risk if wrong**: Missing license issues could cause compliance problems; missing staleness info means outdated deps go unnoticed
|
|
49
|
+
|
|
50
|
+
### D2: Transitive Dependency Depth
|
|
51
|
+
- **Options**:
|
|
52
|
+
- A) Full tree — audit all 340 transitive dependencies — recommended
|
|
53
|
+
- B) Direct only — audit only the 20 declared dependencies
|
|
54
|
+
- **Recommendation**: A, because vulnerabilities in transitive deps are the most common attack vector
|
|
55
|
+
- **Risk if wrong**: Full tree is slower and noisier; direct-only misses the majority of real vulnerabilities
|
|
56
|
+
|
|
57
|
+
### D3: Output Verbosity
|
|
58
|
+
- **Options**:
|
|
59
|
+
- A) Summary with expandable details — top-level counts + per-issue breakdown — recommended
|
|
60
|
+
- B) Full verbose — every advisory for every package
|
|
61
|
+
- C) Executive summary only — just counts by severity
|
|
62
|
+
- **Recommendation**: A, because it balances actionability with readability
|
|
63
|
+
- **Risk if wrong**: Too verbose and users skip it; too brief and users can't act on it
|
|
64
|
+
|
|
65
|
+
### D4: Remediation Suggestions
|
|
66
|
+
- **Options**:
|
|
67
|
+
- A) Include fix commands — `npm update package@version` for each issue — recommended
|
|
68
|
+
- B) Flag issues only — user figures out the fix
|
|
69
|
+
- **Recommendation**: A, because actionable output is more valuable than just flagging
|
|
70
|
+
- **Risk if wrong**: Suggested commands might not account for breaking changes in major version bumps
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# Stage 1 Exploration: Task 3 — Build the Model Recommendation Engine
|
|
2
|
+
|
|
3
|
+
## Research Findings
|
|
4
|
+
|
|
5
|
+
Research subagents examined the following project context:
|
|
6
|
+
|
|
7
|
+
- `models/catalog.json` — 47 model entries with fields: `ollama_id`, `name`, `parameter_count`, `quantization`, `context_length`, `ram_requirement_gb`, `gpu_vram_gb`
|
|
8
|
+
- `config/hardware-profile.json` — user hardware: `ram_gb: 32`, `gpu_model: "RTX 4070"`, `gpu_vram_gb: 12`, `storage_available_gb: 200`
|
|
9
|
+
- `reports/model_eval_2026-02-15_llama3.md` — existing evaluation report showing current output format
|
|
10
|
+
- `skills/model-recommender/SKILL.md` — does not exist yet (greenfield task)
|
|
11
|
+
|
|
12
|
+
Key findings:
|
|
13
|
+
1. The catalog uses `ram_requirement_gb` (not `ram_gb`) as the field name for model RAM needs
|
|
14
|
+
2. Context length varies from 2048 to 128000 — significant factor for recommendation
|
|
15
|
+
3. Hardware profile has no CPU field — CPU-based inference not trackable
|
|
16
|
+
4. Existing evaluation reports use a 3-tier rating: "excellent_fit", "acceptable_fit", "poor_fit"
|
|
17
|
+
5. No existing recommendation logic — all current evaluations are manual
|
|
18
|
+
|
|
19
|
+
## ECD Analysis
|
|
20
|
+
|
|
21
|
+
### Elements
|
|
22
|
+
- **Model entries**: 47 models with varying resource requirements
|
|
23
|
+
- **Hardware profile**: Single JSON describing user's machine capabilities
|
|
24
|
+
- **Recommendation output**: Markdown report ranking models by fit
|
|
25
|
+
- **Fit score**: Composite metric weighing RAM, VRAM, and context requirements
|
|
26
|
+
- **Use-case tags**: Models tagged with capabilities (chat, code, creative, reasoning)
|
|
27
|
+
|
|
28
|
+
### Connections
|
|
29
|
+
- Model requirements → Hardware profile: comparison determines feasibility
|
|
30
|
+
- Use-case tags → User intent: filters the candidate list before scoring
|
|
31
|
+
- Fit score → Ranking: determines output order
|
|
32
|
+
- Existing report format → New output: should maintain consistency
|
|
33
|
+
|
|
34
|
+
### Dynamics
|
|
35
|
+
- User provides a use-case query ("I need a coding model")
|
|
36
|
+
- Skill filters catalog by use-case tags
|
|
37
|
+
- Remaining models scored against hardware profile
|
|
38
|
+
- Top N models presented with fit explanations
|
|
39
|
+
- Edge case: no models match the use-case → fallback to general recommendations
|
|
40
|
+
|
|
41
|
+
## Assumptions
|
|
42
|
+
|
|
43
|
+
### A1: Output Format Consistency
|
|
44
|
+
- **Default**: Use the existing 3-tier rating system ("excellent_fit", "acceptable_fit", "poor_fit") from current evaluation reports
|
|
45
|
+
- **Rationale**: Established convention in the project, no reason to introduce a new scale
|
|
46
|
+
|
|
47
|
+
### A2: Single-File Skill Structure
|
|
48
|
+
- **Default**: Implement as a single SKILL.md file
|
|
49
|
+
- **Rationale**: Platform constraint — Claude Code skills must be single SKILL.md files with all instructions inline
|
|
50
|
+
|
|
51
|
+
### A3: Model Selection for Execution
|
|
52
|
+
- **Default**: Use `sonnet` as the execution model
|
|
53
|
+
- **Rationale**: Standard model for task-type skills; recommendation logic doesn't require opus-level reasoning
|
|
54
|
+
|
|
55
|
+
### A4: Hardware Profile Path
|
|
56
|
+
- **Default**: Read hardware profile from `config/hardware-profile.json`
|
|
57
|
+
- **Rationale**: Only hardware profile in the project, no alternative location
|
|
58
|
+
|
|
59
|
+
### A5: Report Naming Convention
|
|
60
|
+
- **Default**: `model_rec_YYYY-MM-DD_[use-case-slug].md`
|
|
61
|
+
- **Rationale**: Matches the existing `model_eval_YYYY-MM-DD_[slug].md` pattern with appropriate prefix change
|
|
62
|
+
|
|
63
|
+
## Key Decisions
|
|
64
|
+
|
|
65
|
+
### D1: Scoring Formula Approach
|
|
66
|
+
- **Options**:
|
|
67
|
+
- A) Weighted percentage — RAM fit (40%), VRAM fit (40%), context fit (20%) — recommended
|
|
68
|
+
- B) Binary pass/fail per dimension, then rank by headroom
|
|
69
|
+
- C) Single composite ratio (available/required) averaged across dimensions
|
|
70
|
+
- **Recommendation**: A, because weighted percentage lets us tune importance per dimension and produces a continuous score for ranking
|
|
71
|
+
- **Risk if wrong**: Wrong weights could rank a model with plenty of RAM but insufficient VRAM above a model that actually runs well
|
|
72
|
+
|
|
73
|
+
### D2: Use-Case Filtering Strategy
|
|
74
|
+
- **Options**:
|
|
75
|
+
- A) Strict tag match — only show models tagged with the requested use-case — recommended
|
|
76
|
+
- B) Fuzzy match — show tagged models first, then "might also work" models without the tag
|
|
77
|
+
- **Recommendation**: A, because fuzzy matching risks confusing recommendations and the catalog tags are comprehensive
|
|
78
|
+
- **Risk if wrong**: Strict filtering might miss capable models that lack tags (catalog completeness issue)
|
|
79
|
+
|
|
80
|
+
### D3: Top-N Presentation Count
|
|
81
|
+
- **Options**:
|
|
82
|
+
- A) Top 5 models — recommended
|
|
83
|
+
- B) Top 3 models
|
|
84
|
+
- C) All models that score above "acceptable_fit" threshold
|
|
85
|
+
- **Recommendation**: A, because 5 gives enough variety without overwhelming, and the user can always ignore lower-ranked results
|
|
86
|
+
- **Risk if wrong**: Too many results dilute the recommendation quality; too few might miss a good option
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Test 5B-1: Assumptions/Decisions Split Format Compliance
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-02-27
|
|
4
|
+
**Verdict:** PASS
|
|
5
|
+
**Specialist Profile:** `code-architect.specialist.md` (phase5b updated version)
|
|
6
|
+
**Task:** Task 2 — Build the Hardware Vetter Claude Code Skill
|
|
7
|
+
**Output File:** `phase5b/scratch/code-architect-stage1.md`
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Criterion-by-Criterion Evaluation
|
|
12
|
+
|
|
13
|
+
### 1. `## Assumptions` section exists with `### A1:`, `### A2:` entries
|
|
14
|
+
|
|
15
|
+
**PASS**
|
|
16
|
+
|
|
17
|
+
The output contains `## Assumptions` at the correct heading level (H2) with 7 entries numbered `### A1:` through `### A7:`, each at H3 level. Numbering is sequential and consistent.
|
|
18
|
+
|
|
19
|
+
### 2. `## Key Decisions` section exists with `### D1:`, `### D2:` entries
|
|
20
|
+
|
|
21
|
+
**PASS**
|
|
22
|
+
|
|
23
|
+
The output contains `## Key Decisions` at H2 level with 3 entries numbered `### D1:` through `### D3:`, each at H3 level. Numbering is sequential and consistent.
|
|
24
|
+
|
|
25
|
+
### 3. Each assumption has `**Default**:` and `**Rationale**:` fields
|
|
26
|
+
|
|
27
|
+
**PASS**
|
|
28
|
+
|
|
29
|
+
All 7 assumptions (A1-A7) contain both `**Default**:` and `**Rationale**:` fields with substantive content. Verified each:
|
|
30
|
+
|
|
31
|
+
| Entry | **Default** present | **Rationale** present |
|
|
32
|
+
|-------|--------------------|-----------------------|
|
|
33
|
+
| A1 | Yes | Yes |
|
|
34
|
+
| A2 | Yes | Yes |
|
|
35
|
+
| A3 | Yes | Yes |
|
|
36
|
+
| A4 | Yes | Yes |
|
|
37
|
+
| A5 | Yes | Yes |
|
|
38
|
+
| A6 | Yes | Yes |
|
|
39
|
+
| A7 | Yes | Yes |
|
|
40
|
+
|
|
41
|
+
### 4. Each decision has `**Options**:`, `**Recommendation**:`, `**Risk if wrong**:` fields
|
|
42
|
+
|
|
43
|
+
**PASS**
|
|
44
|
+
|
|
45
|
+
All 3 decisions (D1-D3) contain all three required fields with substantive content. Verified each:
|
|
46
|
+
|
|
47
|
+
| Entry | **Options** present | **Recommendation** present | **Risk if wrong** present |
|
|
48
|
+
|-------|--------------------|-----------------------------|---------------------------|
|
|
49
|
+
| D1 | Yes (3 options) | Yes | Yes |
|
|
50
|
+
| D2 | Yes (2 options) | Yes | Yes |
|
|
51
|
+
| D3 | Yes (2 options) | Yes | Yes |
|
|
52
|
+
|
|
53
|
+
Options follow the specified format with lettered sub-items (A, B, C) and the recommended option marked.
|
|
54
|
+
|
|
55
|
+
### 5. Classification is reasonable (clear best practices as assumptions, genuine choices as decisions)
|
|
56
|
+
|
|
57
|
+
**PASS**
|
|
58
|
+
|
|
59
|
+
**Assumptions — all are clear best practices or obvious defaults:**
|
|
60
|
+
- A1 (single-file structure): Mandated by platform constraint (Reference File Problem). No alternative.
|
|
61
|
+
- A2 (fix `total_ram_gb`): Objectively wrong field name. Only one correct answer.
|
|
62
|
+
- A3 (fix `gpu_vram_gb_fp16`): Nonexistent field. Only one correct answer.
|
|
63
|
+
- A4 (preserve report format): Existing precedent, no reason to change.
|
|
64
|
+
- A5 (match via `ollama_id`): Already working correctly. No alternative needed.
|
|
65
|
+
- A6 (keep sonnet model): Standard model selection for the task type.
|
|
66
|
+
- A7 (lightweight validation): Platform constraint makes deep validation infeasible.
|
|
67
|
+
|
|
68
|
+
**Decisions — all have genuinely multiple valid approaches:**
|
|
69
|
+
- D1 (scope: fix only vs enhancement): Real trade-off between minimal changes and adding features. Three distinct options with different risk/scope profiles.
|
|
70
|
+
- D2 (remove/keep Glob tool): Minor but genuine choice with a non-obvious "keep and add use case" alternative.
|
|
71
|
+
- D3 (patch vs rewrite): Classic engineering trade-off with real arguments on both sides.
|
|
72
|
+
|
|
73
|
+
### 6. No items that obviously belong in the other category
|
|
74
|
+
|
|
75
|
+
**PASS**
|
|
76
|
+
|
|
77
|
+
No classification errors found. Reviewed each item:
|
|
78
|
+
|
|
79
|
+
- No assumption has multiple valid approaches that warrant user input. Each has a single obvious default.
|
|
80
|
+
- No decision is a clear best practice that should be assumed. Each involves a genuine trade-off.
|
|
81
|
+
- D2 (Glob tool) is borderline — it is low-stakes enough to be an assumption — but it does have two distinct approaches, so classification as a decision is defensible. Not flagged as an error.
|
|
82
|
+
|
|
83
|
+
### 7. Format compliance: exact heading levels and field labels as specified
|
|
84
|
+
|
|
85
|
+
**PASS**
|
|
86
|
+
|
|
87
|
+
Verified against Section 9.8.1 specification:
|
|
88
|
+
|
|
89
|
+
| Element | Spec | Output | Match |
|
|
90
|
+
|---------|------|--------|-------|
|
|
91
|
+
| Top heading | `# Stage 1 Exploration: [Task Title]` | `# Stage 1 Exploration: Task 2 — Build the Hardware Vetter Claude Code Skill` | Yes |
|
|
92
|
+
| Research section | `## Research Findings` | `## Research Findings` | Yes |
|
|
93
|
+
| ECD section | `## ECD Analysis` | `## ECD Analysis` | Yes |
|
|
94
|
+
| ECD subsections | `### Elements`, `### Connections`, `### Dynamics` | All three present at H3 | Yes |
|
|
95
|
+
| Assumptions section | `## Assumptions` | `## Assumptions` | Yes |
|
|
96
|
+
| Assumption entries | `### A1: [Title]` | `### A1: Single-File Skill Structure` etc. | Yes |
|
|
97
|
+
| Assumption fields | `**Default**:`, `**Rationale**:` | Present in all entries | Yes |
|
|
98
|
+
| Decisions section | `## Key Decisions` | `## Key Decisions` | Yes |
|
|
99
|
+
| Decision entries | `### D1: [Title]` | `### D1: Scope of Changes — Fix Only vs Enhancement` etc. | Yes |
|
|
100
|
+
| Decision fields | `**Options**:`, `**Recommendation**:`, `**Risk if wrong**:` | Present in all entries | Yes |
|
|
101
|
+
| Options sub-format | Lettered `A)`, `B)`, `C)` with recommended marked | Yes, with "— recommended" tag | Yes |
|
|
102
|
+
| Risks section | `## Risks Identified` | `## Risks Identified` | Yes |
|
|
103
|
+
| Approach section | `## Recommended Approach` | `## Recommended Approach` | Yes |
|
|
104
|
+
|
|
105
|
+
Section order matches spec: Research Findings → ECD Analysis → Assumptions → Key Decisions → Risks Identified → Recommended Approach.
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## Items Produced and Their Classifications
|
|
110
|
+
|
|
111
|
+
### Assumptions (7 items)
|
|
112
|
+
|
|
113
|
+
| ID | Title | Default | Classification Correctness |
|
|
114
|
+
|----|-------|---------|---------------------------|
|
|
115
|
+
| A1 | Single-File Skill Structure | Keep as single SKILL.md | Correct — platform constraint, no alternative |
|
|
116
|
+
| A2 | Fix `total_ram_gb` Field Name Mismatch | Change to `ram_gb` | Correct — objectively wrong, single fix |
|
|
117
|
+
| A3 | Fix `gpu_vram_gb_fp16` Reference | Remove/correct the dead reference | Correct — nonexistent field, must fix |
|
|
118
|
+
| A4 | Preserve Existing Report Format | Keep `hardware_eval_YYYY-MM-DD_[slug].md` | Correct — established convention |
|
|
119
|
+
| A5 | Match via `ollama_id` Field | Continue using `ollama_id` for matching | Correct — already working, no alternative |
|
|
120
|
+
| A6 | Keep `sonnet` as Execution Model | Retain `model: sonnet` | Correct — standard model for task type |
|
|
121
|
+
| A7 | Lightweight Schema Validation | Existence checks only, no deep validation | Correct — platform constraint |
|
|
122
|
+
|
|
123
|
+
### Key Decisions (3 items)
|
|
124
|
+
|
|
125
|
+
| ID | Title | Options Count | Classification Correctness |
|
|
126
|
+
|----|-------|---------------|---------------------------|
|
|
127
|
+
| D1 | Scope of Changes — Fix Only vs Enhancement | 3 (fix only / +unified memory / +concurrent loading) | Correct — genuine scope trade-off |
|
|
128
|
+
| D2 | Remove or Keep Unused `Glob` Tool | 2 (remove / keep+add use case) | Correct (borderline — low stakes, but two valid approaches) |
|
|
129
|
+
| D3 | Review-and-Patch vs Rewrite | 2 (patch / rewrite) | Correct — classic engineering trade-off |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
## Classification Errors
|
|
134
|
+
|
|
135
|
+
**None found.**
|
|
136
|
+
|
|
137
|
+
D2 is the weakest classification — removing an unused tool is close to a best practice. However, the "keep and add a use case" option is a genuinely different approach (adding functionality rather than removing surface area), so the decision classification is defensible.
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## Format Compliance Issues
|
|
142
|
+
|
|
143
|
+
**None found.**
|
|
144
|
+
|
|
145
|
+
All heading levels, field labels, section ordering, and entry numbering match the Section 9.8.1 specification exactly. The output would be parseable by a foreground skill scanning for `## Assumptions`, `### A\d+:`, `## Key Decisions`, `### D\d+:` patterns.
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Recommendations for Specialist Profile
|
|
150
|
+
|
|
151
|
+
1. **No critical changes needed.** The updated profile's Stage 1 protocol successfully guided production of correctly formatted output with reasonable classifications.
|
|
152
|
+
|
|
153
|
+
2. **Consider adding a guideline for borderline items.** D2 (Glob tool) is borderline between assumption and decision. The current "if uncertain, classify as decision" rule handled this correctly, but an additional heuristic could help: "If the item has low risk regardless of choice AND one option is clearly simpler, classify as assumption."
|
|
154
|
+
|
|
155
|
+
3. **Consider adding a count guideline.** The spec does not say how many assumptions vs decisions to expect. For this task, 7 assumptions and 3 decisions is a reasonable split, but for tasks with more unknowns, the ratio could flip. A note like "Most well-researched tasks will have more assumptions than decisions; if you have more decisions than assumptions, verify you're not over-asking" could improve calibration.
|
|
156
|
+
|
|
157
|
+
4. **Options format worked well.** The "— recommended" tag inline with the option text is clearer than having it only in the Recommendation field. Consider making this a documented convention in the spec.
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Test 5B-10: Stage 2 Honoring decisions.json
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-02-28
|
|
4
|
+
**Verdict:** PASS
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Objective
|
|
9
|
+
|
|
10
|
+
Validate that a Stage 2 subagent correctly consumes decisions.json and produces a blueprint that honors all user overrides, promotions, and custom "Other" inputs.
|
|
11
|
+
|
|
12
|
+
## Input
|
|
13
|
+
|
|
14
|
+
- **stage1.md**: `stage1-with-assumptions.md` (5 assumptions + 3 decisions)
|
|
15
|
+
- **decisions.json**: `decisions/5B-3-promote-decisions.json` — the richest test case:
|
|
16
|
+
- A3 promoted: sonnet → opus
|
|
17
|
+
- A5 promoted: date-based naming → `recommendation_[use-case-slug].md`
|
|
18
|
+
- D1: recommended option (A — weighted percentage)
|
|
19
|
+
- D2: "Other" with custom text ("strict tag match but also include models tagged as 'general'")
|
|
20
|
+
- D3: non-recommended option (C — all above threshold, not top-5)
|
|
21
|
+
|
|
22
|
+
## Compliance Check
|
|
23
|
+
|
|
24
|
+
### Promoted Assumption A3: Model Selection → opus
|
|
25
|
+
|
|
26
|
+
| Location | Expected | Found | Match |
|
|
27
|
+
|----------|----------|-------|-------|
|
|
28
|
+
| Section 4 Decisions table | `opus` noted as promoted override | "**Use `opus`** (not sonnet) — **Promoted**" | Yes |
|
|
29
|
+
| Section 5.2 YAML frontmatter | `model: opus` | `model: opus` | Yes |
|
|
30
|
+
| Section 9 Producer Handoff | `opus` | "Execution Model: `opus` (per A3 user override)" | Yes |
|
|
31
|
+
|
|
32
|
+
**PASS** — opus appears in all three locations where model selection matters. The default "sonnet" does not appear as the selected model anywhere in the blueprint.
|
|
33
|
+
|
|
34
|
+
### Promoted Assumption A5: Naming Convention → `recommendation_[use-case-slug].md`
|
|
35
|
+
|
|
36
|
+
| Location | Expected | Found | Match |
|
|
37
|
+
|----------|----------|-------|-------|
|
|
38
|
+
| Section 4 Decisions table | Override naming noted | "**Use `recommendation_[use-case-slug].md`** (no date prefix) — **Promoted**" | Yes |
|
|
39
|
+
| Section 5.4 Output data contract | `recommendation_[use-case-slug].md` | "reports/recommendation_[use-case-slug].md" | Yes |
|
|
40
|
+
| Section 5.8 Report generation | Uses override naming | Report written to `reports/recommendation_[slug].md` | Yes |
|
|
41
|
+
| Section 1 Acceptance Criteria AC6 | Override naming | "`recommendation_[use-case-slug].md` convention" | Yes |
|
|
42
|
+
|
|
43
|
+
**PASS** — The date-based `model_rec_YYYY-MM-DD_[slug].md` pattern does not appear anywhere. Override naming used consistently.
|
|
44
|
+
|
|
45
|
+
### Decision D1: Scoring Formula → Weighted Percentage (Option A)
|
|
46
|
+
|
|
47
|
+
| Location | Expected | Found | Match |
|
|
48
|
+
|----------|----------|-------|-------|
|
|
49
|
+
| Section 3 Approach | Weighted percentage referenced | "RAM fit 40%, VRAM fit 40%, context fit 20% (per D1)" | Yes |
|
|
50
|
+
| Section 5.6 Scoring Formula | Full formula with 40/40/20 weights | Complete formula with `ram_ratio * 0.40 + vram_ratio * 0.40 + context_ratio * 0.20` | Yes |
|
|
51
|
+
| Section 6 Acceptance Mapping AC2 | Formula referenced | "Complete formula with per-dimension calculation, capping, and edge cases" | Yes |
|
|
52
|
+
|
|
53
|
+
**PASS** — Scoring formula exactly matches the user's choice. Weights are 40/40/20 as specified.
|
|
54
|
+
|
|
55
|
+
### Decision D2: Filtering → "Other" (strict match + general tag inclusion)
|
|
56
|
+
|
|
57
|
+
| Location | Expected | Found | Match |
|
|
58
|
+
|----------|----------|-------|-------|
|
|
59
|
+
| Section 3 Approach | Custom filtering referenced | "always including models tagged 'general' regardless of query (per D2 user override)" | Yes |
|
|
60
|
+
| Section 5.5 Filtering Logic | Pseudocode implements both paths | Strict tag match PLUS `else if model.use_case_tags contains "general"` | Yes |
|
|
61
|
+
| Section 8 Open Items | "general" tag existence flagged | "D2 user override assumes models have a 'general' tag. Stage 1 did not confirm 'general' exists" | Yes |
|
|
62
|
+
|
|
63
|
+
**PASS** — The user's custom "Other" input was correctly interpreted and implemented. Both the strict match AND the general-tag inclusion appear in the filtering pseudocode. Critically, the blueprint also flagged an open item: Stage 1 never confirmed "general" exists as an actual tag in the catalog. This is exactly the kind of research gap that Stage 2 should surface.
|
|
64
|
+
|
|
65
|
+
### Decision D3: Presentation → All Above Threshold (Option C)
|
|
66
|
+
|
|
67
|
+
| Location | Expected | Found | Match |
|
|
68
|
+
|----------|----------|-------|-------|
|
|
69
|
+
| Section 3 Approach | All above threshold referenced | "all models at or above 'acceptable_fit' (per D3)" | Yes |
|
|
70
|
+
| Section 5.8 Report Generation | No top-N cap | "all models that score at or above the 'acceptable_fit' threshold (fit_score >= 0.55)" | Yes |
|
|
71
|
+
| Section 1 AC4 | Option C language | "all models above the 'acceptable_fit' threshold" | Yes |
|
|
72
|
+
|
|
73
|
+
**PASS** — No trace of "top 5" anywhere in the blueprint. The specialist's original recommendation (option A) was correctly overridden.
|
|
74
|
+
|
|
75
|
+
### Accepted Assumptions (A1, A2, A4) — Defaults Preserved
|
|
76
|
+
|
|
77
|
+
| Assumption | Default | Found in Blueprint | Match |
|
|
78
|
+
|------------|---------|-------------------|-------|
|
|
79
|
+
| A1: 3-tier rating | excellent_fit, acceptable_fit, poor_fit | Section 5.7 Tier Classification uses all three tiers | Yes |
|
|
80
|
+
| A2: Single SKILL.md | Single file | Section 5.1 "single Markdown file", Section 5.10 structure | Yes |
|
|
81
|
+
| A4: Hardware path | config/hardware-profile.json | Section 5.4 data contract | Yes |
|
|
82
|
+
|
|
83
|
+
**PASS** — All three accepted defaults correctly used without modification.
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## Research Grounding Evaluation
|
|
88
|
+
|
|
89
|
+
Checked against the D23 grounding rule: every design choice traceable to (a) Stage 1 research, (b) user decision, or (c) named domain standard.
|
|
90
|
+
|
|
91
|
+
| Design Choice | Grounded To | Grounding Quality |
|
|
92
|
+
|---------------|-------------|-------------------|
|
|
93
|
+
| RAM field name `ram_requirement_gb` | Stage 1 finding #1 | Correct — used the exact field name from research |
|
|
94
|
+
| Scoring formula weights | D1 (user confirmed option A) | Correct |
|
|
95
|
+
| Filtering logic with "general" tag | D2 (user "Other" input) | Correct |
|
|
96
|
+
| All-above-threshold presentation | D3 (user chose option C) | Correct |
|
|
97
|
+
| Tier thresholds 0.85/0.55 | NOT in Stage 1 or decisions | **Correctly flagged as Open Item** |
|
|
98
|
+
| "general" tag existence | NOT confirmed by Stage 1 | **Correctly flagged as Open Item** |
|
|
99
|
+
| `use_case_tags` field name | NOT confirmed by Stage 1 | **Correctly flagged as Open Item** |
|
|
100
|
+
|
|
101
|
+
**PASS** — All three ungrounded design choices were properly surfaced in Open Items. Stage 2 did not silently invent thresholds or assume field names without flagging them.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Summary
|
|
106
|
+
|
|
107
|
+
Stage 2 correctly honored all 8 items from decisions.json:
|
|
108
|
+
- 2 promoted assumptions with overrides → both reflected throughout the blueprint
|
|
109
|
+
- 1 "Other" decision with custom text → interpreted and implemented correctly, with open item flagged
|
|
110
|
+
- 1 non-recommended option → specialist's recommendation correctly overridden
|
|
111
|
+
- 1 recommended option → confirmed and implemented
|
|
112
|
+
- 3 accepted assumptions → defaults preserved without modification
|
|
113
|
+
|
|
114
|
+
The research grounding rule worked as intended: 3 design choices not covered by Stage 1 or user decisions were surfaced in Open Items rather than silently invented.
|
|
115
|
+
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Protocol Validation
|
|
119
|
+
|
|
120
|
+
This test closes the last gap in the Stage 1 → gate → Stage 2 pipeline validation:
|
|
121
|
+
|
|
122
|
+
| Test | What it validated |
|
|
123
|
+
|------|------------------|
|
|
124
|
+
| S1 | Stage 1 produces quality research |
|
|
125
|
+
| 5B-1 | Stage 1 produces correct assumptions/decisions format |
|
|
126
|
+
| 5B-2 through 5B-9 | Gate protocol correctly parses, presents, collects, persists, recovers |
|
|
127
|
+
| S2/S3 | Stage 2 produces a buildable blueprint |
|
|
128
|
+
| **5B-10** | **Stage 2 correctly consumes decisions.json with overrides** |
|
|
129
|
+
|
|
130
|
+
The complete pipeline is validated end-to-end at the protocol design level.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# Test 5B-2: Gate Phase 1 — Accept All Assumptions
|
|
2
|
+
|
|
3
|
+
**Date:** 2026-02-27
|
|
4
|
+
**Verdict:** PASS
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Simulation Walkthrough
|
|
9
|
+
|
|
10
|
+
**Input:** `stage1-with-assumptions.md` — 5 assumptions (A1-A5) + 3 decisions (D1-D3).
|
|
11
|
+
|
|
12
|
+
### Step 1: Gate reads stage1.md, finds `## Assumptions` with 5 entries
|
|
13
|
+
|
|
14
|
+
Gate extracts A1-A5 with titles and defaults.
|
|
15
|
+
|
|
16
|
+
### Step 2: Phase 1 — Present assumptions as group
|
|
17
|
+
|
|
18
|
+
Gate displays:
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
The specialist proposes these defaults:
|
|
22
|
+
|
|
23
|
+
A1: Output Format Consistency — Use existing 3-tier rating system (established convention)
|
|
24
|
+
A2: Single-File Skill Structure — Implement as a single SKILL.md file (platform constraint)
|
|
25
|
+
A3: Model Selection for Execution — Use sonnet (standard for task-type skills)
|
|
26
|
+
A4: Hardware Profile Path — Read from config/hardware-profile.json (only location)
|
|
27
|
+
A5: Report Naming Convention — model_rec_YYYY-MM-DD_[use-case-slug].md (matches existing pattern)
|
|
28
|
+
|
|
29
|
+
Accept all, or tell me which ones you want to weigh in on.
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
AskUserQuestion options:
|
|
33
|
+
- "Accept all assumptions (Recommended)"
|
|
34
|
+
- "I want to review some of these"
|
|
35
|
+
|
|
36
|
+
### Step 3: User selects "Accept all assumptions"
|
|
37
|
+
|
|
38
|
+
All 5 assumptions written to decisions.json with `"status": "accepted"`, `"user_override": null`.
|
|
39
|
+
|
|
40
|
+
### Step 4: Gate moves to Phase 2
|
|
41
|
+
|
|
42
|
+
Presents D1, D2, D3 individually via AskUserQuestion.
|
|
43
|
+
|
|
44
|
+
Simulated responses:
|
|
45
|
+
- D1: Accepts recommended (A — Weighted percentage)
|
|
46
|
+
- D2: Picks non-recommended (B — Fuzzy match)
|
|
47
|
+
- D3: Accepts recommended (A — Top 5)
|
|
48
|
+
|
|
49
|
+
### Step 5: decisions.json complete
|
|
50
|
+
|
|
51
|
+
See `decisions/5B-2-accept-all-decisions.json`.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Criterion-by-Criterion Evaluation
|
|
56
|
+
|
|
57
|
+
### 1. decisions.json has all 5 assumptions with `"status": "accepted"`, `"user_override": null`
|
|
58
|
+
|
|
59
|
+
**PASS** — All 5 assumptions present with correct status and null override.
|
|
60
|
+
|
|
61
|
+
### 2. Gate moves directly to Phase 2 decisions
|
|
62
|
+
|
|
63
|
+
**PASS** — After "Accept all", no individual assumption questions. Gate proceeds to D1 immediately.
|
|
64
|
+
|
|
65
|
+
### 3. No assumptions are presented as decisions
|
|
66
|
+
|
|
67
|
+
**PASS** — A1-A5 appear only in the `assumptions` array. D1-D3 appear only in the `decisions` array. No cross-contamination.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## Protocol Validation Notes
|
|
72
|
+
|
|
73
|
+
1. The "accept all" fast path works as designed — one click resolves all 5 assumptions.
|
|
74
|
+
2. The group presentation format is compact enough to scan quickly. One-line rationale in parentheses is sufficient context.
|
|
75
|
+
3. Phase 2 proceeds with exactly 3 decisions — no assumptions leaked into the decision flow.
|