Wave: 1 (parallel, after Wave 0 merges)
Depends on: #146 (contract — file format to parse)
Effort: M
Ties to: PRD R9
Files: viewer/Sources/NanoPMViewer/SolutionsUI.swift (NEW), Models.swift, OpportunitiesUI.swift
Description
Render solutions in the SwiftUI viewer (intentional throwaway prototype; table only, no tree viz):
- Parse the new
solutions/ entity in Models.swift.
- New
SolutionsUI.swift — a filterable solutions table (columns: title, parent opportunity, lens, appetite, impact, status).
- Bidirectional navigation: the opportunity detail lists its solutions and links to them; each solution links back to its parent (touches
OpportunitiesUI.swift).
Acceptance
The viewer builds; with sample solution files present, the Solutions table renders all rows with the correct columns + filtering, and clicking navigates opportunity↔solution both ways.
GUI test
(Auto-run only if the build agent has a macOS UI harness; otherwise a manual QA checklist — do not assume execution.)
- Build & launch NanoPMViewer on a project with ≥2 solution files under one opportunity.
- Navigate to the Solutions table view.
- Assert all solution rows appear with title / parent / lens / appetite / impact / status columns, and filtering by status narrows the list.
- Open a solution → assert its parent opportunity is linked; open the opportunity → assert its solutions are listed and clickable.
Source PRD: .nanopm/wiki/docs/prds/pm-solutions.md · Created by nanopm /pm-breakdown (feature: pm-solutions, GitHub handoff).
Wave: 1 (parallel, after Wave 0 merges)
Depends on: #146 (contract — file format to parse)
Effort: M
Ties to: PRD R9
Files:
viewer/Sources/NanoPMViewer/SolutionsUI.swift(NEW),Models.swift,OpportunitiesUI.swiftDescription
Render solutions in the SwiftUI viewer (intentional throwaway prototype; table only, no tree viz):
solutions/entity inModels.swift.SolutionsUI.swift— a filterable solutions table (columns: title, parent opportunity, lens, appetite, impact, status).OpportunitiesUI.swift).Acceptance
The viewer builds; with sample solution files present, the Solutions table renders all rows with the correct columns + filtering, and clicking navigates opportunity↔solution both ways.
GUI test
(Auto-run only if the build agent has a macOS UI harness; otherwise a manual QA checklist — do not assume execution.)
Source PRD:
.nanopm/wiki/docs/prds/pm-solutions.md· Created by nanopm /pm-breakdown (feature: pm-solutions, GitHub handoff).