Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
106 commits
Select commit Hold shift + click to select a range
0e97dc5
docs: start milestone v0.17.0 Copy/Move Test Cases Between Projects
therealbrad Mar 20, 2026
227da64
docs: complete project research for v0.17.0 copy/move test cases
therealbrad Mar 20, 2026
38bcbc3
docs: define milestone v0.17.0 requirements
therealbrad Mar 20, 2026
dc0c784
docs: create milestone v0.17.0 roadmap (5 phases)
therealbrad Mar 20, 2026
1e65674
docs(28): smart discuss context
therealbrad Mar 20, 2026
96cad8e
docs(phase-28): add validation strategy
therealbrad Mar 20, 2026
2679bbe
docs(28-queue-and-worker): create phase plan
therealbrad Mar 20, 2026
42ccfd4
feat(28-01): register copy-move BullMQ queue infrastructure
therealbrad Mar 20, 2026
de8b993
feat(28-01): implement copyMoveWorker processor for cross-project cop…
therealbrad Mar 20, 2026
3ffb0ba
docs(28-01): complete queue-and-worker plan 01 summary and state updates
therealbrad Mar 20, 2026
52f8f71
test(28-02): add comprehensive unit tests for copy-move worker processor
therealbrad Mar 20, 2026
6bad540
docs(28-02): complete copy-move worker unit test plan
therealbrad Mar 20, 2026
ca68204
docs(phase-28): complete phase execution
therealbrad Mar 20, 2026
39a7c46
docs(29): smart discuss context
therealbrad Mar 20, 2026
c1e0705
docs(phase-29): add validation strategy
therealbrad Mar 20, 2026
e4f9f49
docs(29): create phase plan for API endpoints and access control
therealbrad Mar 20, 2026
bba6092
feat(29-01): create shared Zod schemas and TypeScript types for copy-…
therealbrad Mar 20, 2026
81758fd
feat(29-02): create status polling endpoint for copy-move jobs
therealbrad Mar 20, 2026
ef8d5f8
test(29-01): add failing tests for preflight endpoint
therealbrad Mar 20, 2026
4549efb
feat(29-01): implement preflight endpoint for copy-move compatibility…
therealbrad Mar 20, 2026
a2a7377
docs(29-01): complete preflight API endpoint plan
therealbrad Mar 20, 2026
d4eca33
feat(29-02): create cancel endpoint for copy-move jobs
therealbrad Mar 20, 2026
d56817c
docs(29-02): complete status and cancel endpoints plan
therealbrad Mar 20, 2026
189f558
feat(29-03): add project admin access rules to TemplateProjectAssignment
therealbrad Mar 20, 2026
318d713
test(29-03): add failing tests for submit endpoint (RED)
therealbrad Mar 20, 2026
3f2cfc2
feat(29-03): implement submit endpoint with permission checks and job…
therealbrad Mar 20, 2026
c1d7bd1
docs(29-03): complete submit endpoint plan
therealbrad Mar 20, 2026
954f282
docs(phase-29): complete phase execution
therealbrad Mar 20, 2026
7149c34
docs(30): smart discuss context
therealbrad Mar 20, 2026
849919a
docs(phase-30): add validation strategy
therealbrad Mar 20, 2026
995a172
docs(30): create phase plan
therealbrad Mar 20, 2026
ed86eb1
docs: reassign DLGSEL-01/02 from Phase 30 to Phase 31
therealbrad Mar 20, 2026
e3f6c56
feat(30-01): add useCopyMoveJob hook and COPY_MOVE_COMPLETE notificat…
therealbrad Mar 20, 2026
11138da
feat(30-01): send COPY_MOVE_COMPLETE notification and render in Notif…
therealbrad Mar 20, 2026
ed4b58b
docs(30-01): complete useCopyMoveJob hook and notification delivery plan
therealbrad Mar 20, 2026
77885c9
feat(30-02): build CopyMoveDialog three-step wizard component
therealbrad Mar 20, 2026
552c4f8
test(30-02): add CopyMoveDialog component tests
therealbrad Mar 20, 2026
b91ab69
fix(30): use soft-delete permission check, AsyncCombobox for pickers,…
therealbrad Mar 20, 2026
3a43a3e
docs(30-02): complete CopyMoveDialog wizard plan
therealbrad Mar 20, 2026
db9978f
docs(phase-30): complete phase execution
therealbrad Mar 20, 2026
d14d833
docs(31): smart discuss context
therealbrad Mar 20, 2026
251faa1
docs(31-entry-points): create phase plan
therealbrad Mar 20, 2026
d7f44ee
feat(31-01): wire CopyMoveDialog into toolbar and context menu entry …
therealbrad Mar 20, 2026
52be0f8
feat(31-01): add Copy/Move button to BulkEditModal footer
therealbrad Mar 20, 2026
c1d6763
docs(31-01): complete entry-points plan — CopyMoveDialog wired into a…
therealbrad Mar 20, 2026
82d2bec
docs(phase-31): complete phase execution
therealbrad Mar 20, 2026
717ef30
docs(32): smart discuss context
therealbrad Mar 20, 2026
9a5e63b
docs(32): create phase plan for testing and documentation
therealbrad Mar 20, 2026
d3fda4b
docs(32-02): create user documentation for copy/move test cases
therealbrad Mar 20, 2026
a78447c
feat(32-01): add E2E API tests for copy-move endpoints
therealbrad Mar 20, 2026
822e63c
docs(32-02): complete copy/move documentation plan
therealbrad Mar 20, 2026
227cb8b
docs(32-01): complete E2E tests for copy-move API plan
therealbrad Mar 20, 2026
ba1bc1f
docs(phase-32): complete phase execution
therealbrad Mar 20, 2026
bf9b025
fix: enforce conflictResolution in worker and fix stateId field name …
therealbrad Mar 20, 2026
d57cf46
docs: milestone v0.17.0 audit — passed (31/31 requirements)
therealbrad Mar 20, 2026
7463254
docs: add copy/move test cases to sidebar under Repository
therealbrad Mar 21, 2026
b34f57f
fix: use correct templateName field and resolve actual template names…
therealbrad Mar 21, 2026
6e77034
fix: use RepositoryCaseSource enum type for collision detection query
therealbrad Mar 21, 2026
e5ccc71
chore: shorten Copy/Move button text
therealbrad Mar 21, 2026
7695db5
feat: add inline folder creation in CopyMoveDialog
therealbrad Mar 21, 2026
bc56820
fix: use relation connect for folder creation instead of scalar FK
therealbrad Mar 21, 2026
a9a8d58
fix: use parent relation connect for folder parentId
therealbrad Mar 21, 2026
1fa30d4
fix: include folder node in View in target project link
therealbrad Mar 21, 2026
d23d3bf
style: add spacing between project and folder pickers
therealbrad Mar 21, 2026
00e1e05
fix: resolve TypeScript errors in CopyMoveDialog and worker tests
therealbrad Mar 21, 2026
8adc179
feat: show destination project/folder summary on Step 2
therealbrad Mar 21, 2026
5dfd6a1
fix: handle NULL className in collision detection and use incrementin…
therealbrad Mar 21, 2026
7b48e5b
feat: add export templates functionality and copy/move project feature
therealbrad Mar 21, 2026
0af07ed
docs: add Phase 33 — Folder Tree Copy/Move with TREE-01 through TREE-…
therealbrad Mar 21, 2026
6ff8357
docs(33): discuss context for folder tree copy/move
therealbrad Mar 21, 2026
0107609
docs(33): create phase plan for folder tree copy/move
therealbrad Mar 21, 2026
8c9ddcb
feat(33-01): extend copy-move worker with folder tree recreation logic
therealbrad Mar 21, 2026
9203c58
test(33-01): add unit tests for folder tree worker logic
therealbrad Mar 21, 2026
f028553
docs(33-01): complete folder-tree-worker-support plan
therealbrad Mar 21, 2026
24d56c7
feat(33-02): add translation key and extend useCopyMoveJob with folde…
therealbrad Mar 21, 2026
6855218
feat(33-02): extend CopyMoveDialog for folder mode, add TreeView entr…
therealbrad Mar 21, 2026
3725590
docs(33-02): complete folder-copy-move-ui-entry-point plan
therealbrad Mar 21, 2026
ccd3b3b
docs(phase-33): complete phase execution
therealbrad Mar 21, 2026
1eb9007
style: match folder copy/move menu item to toolbar button
therealbrad Mar 21, 2026
7f719bd
docs: update Copy/Move dialog instructions for consistency
therealbrad Mar 21, 2026
295edbd
fix: remove orphaned DropdownMenuItem causing JSX parse error in Tree…
therealbrad Mar 21, 2026
bcf5f22
chore: use proper placeholder text for project and folder pickers
therealbrad Mar 21, 2026
e04d202
fix: reuse existing i18n keys for project/folder placeholders, remove…
therealbrad Mar 21, 2026
253ec39
feat: add folder tree E2E tests and documentation
therealbrad Mar 21, 2026
15886b8
docs: fix folder menu description — three-dot menu, not right-click
therealbrad Mar 21, 2026
ea11265
docs: clarify what data is and is not carried over in copy/move
therealbrad Mar 21, 2026
ebae6a4
blog: add v0.17.0 Copy/Move Test Cases announcement post
therealbrad Mar 21, 2026
ce41493
feat: only show copy/move when user has write access and multiple pro…
therealbrad Mar 21, 2026
358a6f8
feat: add v0.17.0 upgrade notification for Copy/Move feature
therealbrad Mar 21, 2026
b5da8ea
fix: correct upgrade notification — folder menu, not right-click
therealbrad Mar 21, 2026
3486bbb
fix: move useCountProjects hook before early returns (Rules of Hooks)
therealbrad Mar 21, 2026
4923901
docs: update terminology for automated test results in copy/move docu…
therealbrad Mar 21, 2026
0ae28ea
feat: add audit logging for copy/move operations
therealbrad Mar 21, 2026
14e17fd
refactor: enhance UI interactions and improve accessibility
therealbrad Mar 21, 2026
12f227c
Merge branch 'features/copy-move-test-cases-between-projects' into v0…
therealbrad Mar 21, 2026
7789c94
feat(260321-fk3): add audit logging to testmoImportWorker
therealbrad Mar 21, 2026
849bdf3
feat(260321-fk3): add audit logging to syncWorker and forecastWorker
therealbrad Mar 21, 2026
7b37bff
fix(260321-fk3): correct jobId reference in testmoImportWorker audit …
therealbrad Mar 21, 2026
60e1704
docs(260321-fk3): complete add-audit-logging-to-workers plan
therealbrad Mar 21, 2026
1176b97
docs(quick-260321-fk3): Fix issue #143 — add audit logging to workers
therealbrad Mar 21, 2026
3e28ecf
fix: add useCountProjects mock to Cases.test.tsx
therealbrad Mar 21, 2026
b1c6e61
perf: skip forecast DB writes when values have not changed
therealbrad Mar 21, 2026
dfde02b
Fixes/worker audit logging (#144)
therealbrad Mar 21, 2026
40eb71a
Merge branch 'v0.17.0' of github.com:TestPlanIt/testplanit into v0.17.0
therealbrad Mar 21, 2026
435f9f7
Feature/comprehensive test coverage (#145)
therealbrad Mar 21, 2026
d3a4cee
Feature/per prompt llm config (#146)
therealbrad Mar 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
working-directory: packages/api

- name: Install CLI dependencies
run: pnpm install --frozen-lockfile
run: pnpm install --frozen-lockfile --ignore-scripts
working-directory: cli

- name: Run CLI unit tests
Expand Down
107 changes: 71 additions & 36 deletions .planning/REQUIREMENTS.md
Original file line number Diff line number Diff line change
@@ -1,63 +1,98 @@
# Requirements: Per-Project Export Template Assignment
# Requirements: TestPlanIt

**Defined:** 2026-03-18
**Defined:** 2026-03-21
**Core Value:** Teams can plan, execute, and track testing across manual and automated workflows in one place — with AI assistance to reduce repetitive work.
**Issue:** GitHub #85

## v2.1 Requirements
## v0.17.0 Requirements

Requirements for per-project export template assignment. Each maps to roadmap phases.
Requirements for per-prompt LLM configuration (issue #128). Each maps to roadmap phases.

### Schema

- [x] **SCHEMA-01**: CaseExportTemplateProjectAssignment join model links CaseExportTemplate to Project (already exists)
- [x] **SCHEMA-02**: Project has a default case export template relation
- [x] **SCHEMA-01**: PromptConfigPrompt supports an optional `llmIntegrationId` foreign key to LlmIntegration
- [x] **SCHEMA-02**: PromptConfigPrompt supports an optional `modelOverride` string field
- [x] **SCHEMA-03**: Database migration adds both fields with proper FK constraint and index

### Prompt Resolution

- [x] **RESOLVE-01**: PromptResolver returns per-prompt LLM integration ID and model override when set
- [x] **RESOLVE-02**: When no per-prompt LLM is set, system falls back to project default integration (existing behavior preserved)
- [x] **RESOLVE-03**: Resolution chain enforced: project LlmFeatureConfig > PromptConfigPrompt assignment > project default integration

### Admin UI

- [x] **ADMIN-01**: Admin can assign/unassign export templates to a project in project settings
- [x] **ADMIN-02**: Admin can set a default export template for a project
- [x] **ADMIN-01**: Admin prompt editor shows per-feature LLM integration selector dropdown alongside existing prompt fields
- [x] **ADMIN-02**: Admin prompt editor shows per-feature model override selector (models from selected integration)
- [x] **ADMIN-03**: Prompt config list/table shows summary indicator when prompts use mixed LLM integrations

### Project Settings UI

- [x] **PROJ-01**: Project AI Models page allows project admins to override per-prompt LLM assignments per feature via LlmFeatureConfig
- [x] **PROJ-02**: Project AI Models page displays the effective resolution chain per feature (which LLM will actually be used and why)

### Export/Import

- [x] **EXPORT-01**: Per-prompt LLM assignments (integration reference + model override) are included in prompt config export/import

### Export Dialog
### Compatibility

- [x] **EXPORT-01**: Export dialog only shows templates assigned to the current project
- [x] **EXPORT-02**: Project default template is pre-selected in the export dialog
- [x] **EXPORT-03**: If no templates are assigned to a project, all enabled templates are shown (backward compatible)
- [x] **COMPAT-01**: Existing projects and prompt configs without per-prompt LLM assignments continue to work without changes

### Testing

- [x] **TEST-01**: Unit tests cover PromptResolver 3-tier resolution chain (per-prompt, project override, project default fallback)
- [x] **TEST-02**: Unit tests cover LlmFeatureConfig override behavior
- [x] **TEST-03**: E2E tests cover admin prompt editor LLM integration selector workflow
- [x] **TEST-04**: E2E tests cover project AI Models per-feature override workflow

### Documentation

- [x] **DOCS-01**: User-facing documentation for configuring per-prompt LLM integrations in admin prompt editor
- [x] **DOCS-02**: User-facing documentation for project-level per-feature LLM overrides on AI Models settings page

## Future Requirements

None — this is a self-contained feature.
None — issue #128 is fully scoped above.

## Out of Scope

| Feature | Reason |
|---------------------------------------|-----------------------------------------------------------------|
| Per-user template preferences | Not in issue #85, could be future enhancement |
| Template creation from project settings | Templates are managed globally in admin; projects only assign existing ones |
| Template ordering per project | Unnecessary complexity for v2.1 |
| Feature | Reason |
|---------|--------|
| Named LLM "roles" (high_quality, fast, balanced) | Over-engineered for current needs — issue #128 Alternative Option 2, could layer on top later |
| Per-prompt temperature/maxTokens override at project level | LlmFeatureConfig already has these fields; wiring them is separate work |
| Shared cross-project test case library | Larger architectural change, out of scope per issue #79 |

## Traceability

Which phases cover which requirements. Updated during roadmap creation.

| Requirement | Phase | Status |
|-------------|----------|------------------|
| SCHEMA-01 | — | Complete (exists) |
| SCHEMA-02 | Phase 25 | Complete |
| ADMIN-01 | Phase 26 | Complete |
| ADMIN-02 | Phase 26 | Complete |
| EXPORT-01 | Phase 27 | Complete |
| EXPORT-02 | Phase 27 | Complete |
| EXPORT-03 | Phase 27 | Complete |
| Requirement | Phase | Status |
|-------------|-------|--------|
| SCHEMA-01 | Phase 34 | Complete |
| SCHEMA-02 | Phase 34 | Complete |
| SCHEMA-03 | Phase 34 | Complete |
| RESOLVE-01 | Phase 35 | Complete |
| RESOLVE-02 | Phase 35 | Complete |
| RESOLVE-03 | Phase 35 | Complete |
| COMPAT-01 | Phase 35 | Complete |
| ADMIN-01 | Phase 36 | Complete |
| ADMIN-02 | Phase 36 | Complete |
| ADMIN-03 | Phase 36 | Complete |
| PROJ-01 | Phase 37 | Complete |
| PROJ-02 | Phase 37 | Complete |
| EXPORT-01 | Phase 38 | Complete |
| TEST-01 | Phase 38 | Complete |
| TEST-02 | Phase 38 | Complete |
| TEST-03 | Phase 38 | Complete |
| TEST-04 | Phase 38 | Complete |
| DOCS-01 | Phase 39 | Complete |
| DOCS-02 | Phase 39 | Complete |

**Coverage:**

- v2.1 requirements: 7 total
- Already complete: 1 (SCHEMA-01)
- Remaining: 6
- Mapped: 6/6
- v0.17.0 requirements: 19 total
- Mapped to phases: 19
- Unmapped: 0 ✓

---

*Requirements defined: 2026-03-18*
*Last updated: 2026-03-18 after roadmap creation (Phases 25-27)*
*Requirements defined: 2026-03-21*
*Last updated: 2026-03-21 after initial definition*
147 changes: 137 additions & 10 deletions .planning/ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,9 @@
- ✅ **v1.0 AI Bulk Auto-Tagging** - Phases 1-4 (shipped 2026-03-08)
- ✅ **v1.1 ZenStack Upgrade Regression Tests** - Phases 5-8 (shipped 2026-03-17)
- 📋 **v2.0 Comprehensive Test Coverage** - Phases 9-24 (planned)
- 🚧 **v2.1 Per-Project Export Template Assignment** - Phases 25-27 (in progress)
- ✅ **v2.1 Per-Project Export Template Assignment** - Phases 25-27 (shipped 2026-03-19)
- ✅ **v0.17.0-copy-move Copy/Move Test Cases Between Projects** - Phases 28-33 (shipped 2026-03-21)
- 🚧 **v0.17.0 Per-Prompt LLM Configuration** - Phases 34-39 (in progress)

## Phases

Expand Down Expand Up @@ -48,13 +50,37 @@
- [ ] **Phase 23: General Components** - Shared UI components tested with edge cases and accessibility
- [ ] **Phase 24: Hooks, Notifications, and Workers** - Custom hooks, notification flows, and workers unit tested

### 🚧 v2.1 Per-Project Export Template Assignment (Phases 25-27)
<details>
<summary>✅ v2.1 Per-Project Export Template Assignment (Phases 25-27) - SHIPPED 2026-03-19</summary>

- [x] **Phase 25: Default Template Schema** - Project model extended with optional default export template relation
- [x] **Phase 26: Admin Assignment UI** - Admin can assign, unassign, and set a default export template per project
- [x] **Phase 27: Export Dialog Filtering** - Export dialog shows only project-assigned templates with project default pre-selected

</details>

<details>
<summary>✅ v0.17.0-copy-move Copy/Move Test Cases Between Projects (Phases 28-33) - SHIPPED 2026-03-21</summary>

- [x] **Phase 28: Copy/Move Schema and Worker Foundation** - BullMQ worker and schema support async copy/move operations
- [x] **Phase 29: Preflight Compatibility Checks** - Compatibility checks prevent invalid cross-project copies
- [x] **Phase 30: Folder Tree Copy/Move** - Folder hierarchies are preserved during copy/move operations
- [x] **Phase 31: Copy/Move UI Entry Points** - Users can initiate copy/move from cases and folder tree
- [x] **Phase 32: Progress and Result Feedback** - Users see real-time progress and outcome for copy/move jobs
- [x] **Phase 33: Copy/Move Test Coverage** - Copy/move flows are verified end-to-end and via unit tests

</details>

### 🚧 v0.17.0 Per-Prompt LLM Configuration (Phases 34-37)

**Milestone Goal:** Allow admins to assign specific Case Export Templates to individual projects and set a per-project default, so users only see relevant templates when exporting.
**Milestone Goal:** Allow each prompt within a PromptConfig to use a different LLM integration, so teams can optimize cost, speed, and quality per AI feature. Resolution chain: Project LlmFeatureConfig > PromptConfigPrompt > Project default.

- [x] **Phase 25: Default Template Schema** - Project model extended with optional default export template relation (completed 2026-03-19)
- [x] **Phase 26: Admin Assignment UI** - Admin can assign, unassign, and set a default export template per project (completed 2026-03-19)
- [x] **Phase 27: Export Dialog Filtering** - Export dialog shows only project-assigned templates with project default pre-selected (completed 2026-03-19)
- [x] **Phase 34: Schema and Migration** - PromptConfigPrompt supports per-prompt LLM assignment with DB migration (completed 2026-03-21)
- [x] **Phase 35: Resolution Chain** - PromptResolver and LlmManager implement the full three-level LLM resolution chain with backward compatibility (completed 2026-03-21)
- [x] **Phase 36: Admin Prompt Editor LLM Selector** - Admin can assign an LLM integration and model override to each prompt, with mixed-integration indicator (completed 2026-03-21)
- [x] **Phase 37: Project AI Models Overrides** - Project admins can set per-feature LLM overrides with resolution chain display (completed 2026-03-21)
- [x] **Phase 38: Export/Import and Testing** - Per-prompt LLM fields in export/import, unit tests for resolution chain, E2E tests for admin and project UI (completed 2026-03-21)
- [x] **Phase 39: Documentation** - User-facing docs for per-prompt LLM configuration and project-level overrides (completed 2026-03-21)

## Phase Details

Expand Down Expand Up @@ -352,10 +378,99 @@ Plans:

---

### Phase 34: Schema and Migration
**Goal**: PromptConfigPrompt supports per-prompt LLM assignment with proper database migration
**Depends on**: Phase 33
**Requirements**: SCHEMA-01, SCHEMA-02, SCHEMA-03
**Success Criteria** (what must be TRUE):
1. PromptConfigPrompt has optional llmIntegrationId FK and modelOverride string fields in schema.zmodel; ZenStack generation succeeds
2. Database migration adds both columns with proper FK constraint to LlmIntegration and index on llmIntegrationId
3. A PromptConfigPrompt record can be saved with a specific LLM integration and retrieved with the relation included
4. LlmFeatureConfig model confirmed to have correct fields and access rules for project admins
**Plans**: 1 plan

Plans:
- [ ] 34-01-PLAN.md -- Add llmIntegrationId and modelOverride to PromptConfigPrompt in schema.zmodel, generate migration, validate

### Phase 35: Resolution Chain
**Goal**: The LLM selection logic applies the correct integration for every AI feature call using a three-level fallback chain with full backward compatibility
**Depends on**: Phase 34
**Requirements**: RESOLVE-01, RESOLVE-02, RESOLVE-03, COMPAT-01
**Success Criteria** (what must be TRUE):
1. PromptResolver returns per-prompt LLM integration ID and model override when set on the resolved prompt
2. Resolution chain enforced: project LlmFeatureConfig > PromptConfigPrompt.llmIntegrationId > project default integration
3. When neither per-prompt nor project override exists, the project default LLM integration is used (existing behavior preserved)
4. Existing projects and prompt configs without per-prompt LLM assignments continue to work without any changes
**Plans**: 1 plan

Plans:
- [ ] 35-01-PLAN.md -- Extend PromptResolver to surface per-prompt LLM info and update LlmManager to apply the resolution chain

### Phase 36: Admin Prompt Editor LLM Selector
**Goal**: Admins can assign an LLM integration and optional model override to each prompt directly in the prompt config editor, with visual indicator for mixed configs
**Depends on**: Phase 35
**Requirements**: ADMIN-01, ADMIN-02, ADMIN-03
**Success Criteria** (what must be TRUE):
1. Each feature accordion in the admin prompt config editor shows an LLM integration selector populated with all available integrations
2. Admin can select an LLM integration and model override for a prompt; the selection is saved when the prompt config is submitted
3. On returning to the editor, the previously saved per-prompt LLM assignment is pre-selected in the selector
4. Prompt config list/table shows a summary indicator when prompts within a config use mixed LLM integrations
**Plans**: 2 plans

Plans:
- [ ] 36-01-PLAN.md -- Add LLM integration and model override selectors to PromptFeatureSection accordion and wire save/load
- [ ] 36-02-PLAN.md -- Add mixed-integration indicator to prompt config list/table

### Phase 37: Project AI Models Overrides
**Goal**: Project admins can configure per-feature LLM overrides from the project AI Models settings page with clear resolution chain display
**Depends on**: Phase 35
**Requirements**: PROJ-01, PROJ-02
**Success Criteria** (what must be TRUE):
1. The Project AI Models settings page shows a per-feature override section listing all 7 LLM features with an integration selector for each
2. Project admin can assign a specific LLM integration to a feature; the assignment is saved as a LlmFeatureConfig record
3. Project admin can clear a per-feature override; the feature falls back to prompt-level assignment or project default
4. The effective resolution chain is displayed per feature (which LLM will actually be used and why — override, prompt-level, or default)
**Plans**: 1 plan

Plans:
- [ ] 37-01-PLAN.md -- Build per-feature override UI on AI Models settings page with resolution chain display and LlmFeatureConfig CRUD

### Phase 38: Export/Import and Testing
**Goal**: Per-prompt LLM fields are portable via export/import, and all new functionality is verified with unit and E2E tests
**Depends on**: Phase 36, Phase 37
**Requirements**: EXPORT-01, TEST-01, TEST-02, TEST-03, TEST-04
**Success Criteria** (what must be TRUE):
1. Per-prompt LLM assignments (integration reference + model override) are included in prompt config export and correctly restored on import
2. Unit tests pass for PromptResolver 3-tier resolution chain covering all fallback levels independently
3. Unit tests pass for LlmFeatureConfig override behavior (create, update, delete, fallback)
4. E2E tests pass for admin prompt editor LLM integration selector workflow (select, save, reload, clear)
5. E2E tests pass for project AI Models per-feature override workflow (assign, clear, verify effective LLM)
**Plans**: 3 plans

Plans:
- [ ] 38-01-PLAN.md -- Add per-prompt LLM fields to prompt config export/import
- [ ] 38-02-PLAN.md -- Unit tests for resolution chain and LlmFeatureConfig
- [ ] 38-03-PLAN.md -- E2E tests for admin prompt editor and project AI Models overrides

### Phase 39: Documentation
**Goal**: User-facing documentation covers per-prompt LLM configuration and project-level overrides
**Depends on**: Phase 38
**Requirements**: DOCS-01, DOCS-02
**Success Criteria** (what must be TRUE):
1. Documentation explains how admins configure per-prompt LLM integrations in the admin prompt editor
2. Documentation explains how project admins set per-feature LLM overrides on the AI Models settings page
3. Documentation describes the resolution chain precedence (project override > prompt-level > project default)
**Plans**: 1 plan

Plans:
- [x] 39-01-PLAN.md -- Write user-facing documentation for per-prompt LLM configuration and project-level overrides

---

## Progress

**Execution Order:**
Phases execute in numeric order: 91011 → 12 → 13 → 1415 → 16 → 17 → 18 → 19 → 20 → 21 → 22 → 23 → 24 → 25 → 26 → 27
Phases execute in numeric order: 343536 + 37 (parallel) → 3839

| Phase | Milestone | Plans Complete | Status | Completed |
|-------|-----------|----------------|--------|-----------|
Expand Down Expand Up @@ -383,6 +498,18 @@ Phases execute in numeric order: 9 → 10 → 11 → 12 → 13 → 14 → 15 →
| 22. Custom API Route Tests | v2.0 | 0/TBD | Not started | - |
| 23. General Components | v2.0 | 0/TBD | Not started | - |
| 24. Hooks, Notifications, and Workers | v2.0 | 0/TBD | Not started | - |
| 25. Default Template Schema | 1/1 | Complete | 2026-03-19 | - |
| 26. Admin Assignment UI | 2/2 | Complete | 2026-03-19 | - |
| 27. Export Dialog Filtering | 1/1 | Complete | 2026-03-19 | - |
| 25. Default Template Schema | v2.1 | 1/1 | Complete | 2026-03-19 |
| 26. Admin Assignment UI | v2.1 | 2/2 | Complete | 2026-03-19 |
| 27. Export Dialog Filtering | v2.1 | 1/1 | Complete | 2026-03-19 |
| 28. Copy/Move Schema and Worker Foundation | v0.17.0-copy-move | TBD | Complete | 2026-03-21 |
| 29. Preflight Compatibility Checks | v0.17.0-copy-move | TBD | Complete | 2026-03-21 |
| 30. Folder Tree Copy/Move | v0.17.0-copy-move | TBD | Complete | 2026-03-21 |
| 31. Copy/Move UI Entry Points | v0.17.0-copy-move | TBD | Complete | 2026-03-21 |
| 32. Progress and Result Feedback | v0.17.0-copy-move | TBD | Complete | 2026-03-21 |
| 33. Copy/Move Test Coverage | v0.17.0-copy-move | TBD | Complete | 2026-03-21 |
| 34. Schema and Migration | 1/1 | Complete | 2026-03-21 | - |
| 35. Resolution Chain | 1/1 | Complete | 2026-03-21 | - |
| 36. Admin Prompt Editor LLM Selector | 2/2 | Complete | 2026-03-21 | - |
| 37. Project AI Models Overrides | 1/1 | Complete | 2026-03-21 | - |
| 38. Export/Import and Testing | 3/3 | Complete | 2026-03-21 | - |
| 39. Documentation | 1/1 | Complete | 2026-03-21 | - |
Loading
Loading