feat(confidence-engine): v0.60g2 render investigation portfolio
This commit is contained in:
@@ -516,6 +516,39 @@ v0.60g2: Migrate Portfolio to consume `listInvestigations()` for collection rend
|
||||
|
||||
Smallest next increment: implement the four-operation storage contract in `lib/storage/investigation-storage.js` as a re-export of a provider-backed interface whose signatures accept/return domain Investigation objects keyed by durable ID — without committing to any specific localStorage or database representation. This means defining the exported function signatures and the Investigation shape that flows through them, while deferring key scheme, row schema, and collection structure to a later implementation decision.
|
||||
|
||||
## v0.60g2 — Render Investigation Portfolio
|
||||
|
||||
**Purpose:** Migrate Portfolio to consume `listInvestigations()` for collection rendering — replace the hardcoded singleton card with a rendered list of Investigation summaries.
|
||||
|
||||
### What was implemented
|
||||
|
||||
| File | Change |
|
||||
|---|---|
|
||||
| `app/page.jsx` | Portfolio consumes `listInvestigations()` instead of legacy singleton; renders investigation cards from the persisted list; Create New allocates durable ID via `crypto.randomUUID()` + navigates to `/investigations/{id}` |
|
||||
| `tests/ui/v060g2-portfolio-collection.test.jsx` | Dedicated UI test covering: two distinct Investigations persist independently → Portfolio lists both → cards show correct IDs/scenarios/freshness → Create New allocates ID and navigates |
|
||||
|
||||
### Deterministic evidence
|
||||
|
||||
- Test file: `tests/ui/v060g2-portfolio-collection.test.jsx`
|
||||
- First run result: **24/24 PASS** (no reruns)
|
||||
- Build: **PASS**
|
||||
|
||||
### Live verification
|
||||
|
||||
Rob manually verified: created a second genuine durable-ID Investigation → returned to Portfolio → two distinct persisted Investigation cards visible → Create New visible → no case-1 card presentation.
|
||||
|
||||
### Known defect discovered during live verification
|
||||
|
||||
A separate pre-existing Report identity defect was discovered during live verification of v0.60g2. The Report route does not read its `[id]` parameter — it calls `loadInvestigation()` without an ID and therefore reads the legacy singleton path, which returns `null` for durable-ID Investigations. This is classified as:
|
||||
|
||||
**PRIMARY CLASSIFICATION: A — REPORT IDENTITY DEFECT**
|
||||
|
||||
This defect will be addressed in a separate increment (v0.60h). It is NOT caused by empty-Done semantics.
|
||||
|
||||
### Next restart point
|
||||
|
||||
v0.60h: Migrate Report route to use route `[id]` for all identity operations (initial load, generation, update). Preserve existing v0.58/v0.59 Report lifecycle and freshness semantics. This is an identity migration only — no Report redesign.
|
||||
|
||||
## Next restart point
|
||||
|
||||
Consult `docs/design-evolution/README.md` for progressive loading of product reasoning and provenance chronology; load the relevant chapter only when a specific historical question requires it.
|
||||
|
||||
Reference in New Issue
Block a user