Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
00daa6b903 |
+26
-3
@@ -159,9 +159,9 @@ No partial milestones are closed here; this is a reconciliation snapshot.
|
|||||||
## Proposed next delivery order
|
## Proposed next delivery order
|
||||||
|
|
||||||
1. Complete issue/evidence reconciliation without closing partial milestones.
|
1. Complete issue/evidence reconciliation without closing partial milestones.
|
||||||
2. Design a bounded #28 catalog contract with explicit grouping/reassignment and
|
2. **COMPLETED: Design bounded #28 catalog contract with explicit grouping/reassignment and
|
||||||
stable model/file identities; retain PHP/PDO/Phinx and the existing repositories.
|
stable model/file identities** — see `MeshVaultSharedContracts/docs/superpowers/specs/2026-10-14-catalog-explicit-grouping-contract.md`
|
||||||
3. Extend #18/#20 with immutable, confirmed manifests and safe source selection.
|
3. Implement explicit confirmed grouping with `ExplicitImportGroupingAdapter` and persisted decisions.
|
||||||
4. Resolve #24/#25 publication recovery before calling imports restart-safe.
|
4. Resolve #24/#25 publication recovery before calling imports restart-safe.
|
||||||
5. Add progress and retry contracts (#26/#27), then M4 CRUD/removal/downloads and
|
5. Add progress and retry contracts (#26/#27), then M4 CRUD/removal/downloads and
|
||||||
serialized folder/model moves. Complete schema prerequisites as their contracts
|
serialized folder/model moves. Complete schema prerequisites as their contracts
|
||||||
@@ -169,3 +169,26 @@ No partial milestones are closed here; this is a reconciliation snapshot.
|
|||||||
|
|
||||||
M5 metadata, M6 browse/search, M7 lifecycle/duplicate review and M8 hardening/release
|
M5 metadata, M6 browse/search, M7 lifecycle/duplicate review and M8 hardening/release
|
||||||
remain ahead. No production readiness or percentage-complete claim is implied.
|
remain ahead. No production readiness or percentage-complete claim is implied.
|
||||||
|
|
||||||
|
## Design Phase Complete: Explicit Grouping & Stable Identity (2026-10-14)
|
||||||
|
|
||||||
|
The bounded #28 catalog contract for explicit grouping and stable identity has been designed and documented. This extends Tasks 1-4 contracts without breaking them.
|
||||||
|
|
||||||
|
**Key Deliverables:**
|
||||||
|
- **New Interface**: `ExplicitImportGroupingAdapterInterface` with `modelFor()`, `persistDecisions()`, `recoverDecisions()`
|
||||||
|
- **New Implementation**: `ExplicitImportGroupingAdapter` supporting explicit model_id, folder_path+model_name, and fallback to legacy guessed
|
||||||
|
- **Database Migration**: `import_jobs_decisions` table for decision persistence
|
||||||
|
- **Repository Extensions**: `recordGroupingDecision`, `getGroupingDecisions`, `updateItemManagedPath`
|
||||||
|
- **Catalog Service Extensions**: `findModel`, `listModelsInFolder`, `getOrCreateModel`
|
||||||
|
- **ImportService Integration**: Optional `$groupingContext` parameter for explicit grouping
|
||||||
|
- **Worker Atomic Publish**: Temp copy → atomic rename + catalog register in single savepoint (addresses #24 crash gap)
|
||||||
|
- **Backward Compatibility**: Legacy adapter unchanged; explicit adapter opt-in via container
|
||||||
|
|
||||||
|
**Acceptance Criteria Addressed:**
|
||||||
|
- #18: Confirmed explicit grouping (user confirmation) — via context parameter and decision persistence
|
||||||
|
- #20: Explicit user-confirmed grouping; stable model identity across imports; grouping persistence — via new adapter and decision table
|
||||||
|
- #24: Crash between publish and suffix save — via atomic publish-then-register pattern
|
||||||
|
|
||||||
|
**Out of Scope (Future):** UI (#14), incremental scanner (#15), missing-file UI (#25), progress/retry contracts (#26/#27), search/facets (#29), duplicate review (#30)
|
||||||
|
|
||||||
|
**Next Phase:** RED tests → GREEN implementation per implementation sequence in contract §13.
|
||||||
Reference in new issue
Block a user