docs(12.2): create phase plan

Five sequential plans: foundations (deferred_bindings, attach.Store,
lagoon.Date/TimeOfDay, purge), cabana datepicker and fileupload, relation
child CRUD with deferral, admin SPA, and unit and security tests.
Adds D-22..D-24 from the plan-count checkpoint and the pattern map.
This commit is contained in:
Jakub Zych
2026-10-02 16:53:42 +02:00
parent 6f4386c2f9
commit f4ec94531f
13 changed files with 1925 additions and 22 deletions

View File

@@ -670,10 +670,29 @@ Plans:
4. Deferred binding: on an unsaved parent, uploads and related-record changes bind to a session key, are committed in the parent's create transaction, and are discarded with the session. Orphaned deferred bindings and their files are purged.
5. The new code has unit tests, delivered in the phase's last plan, and the docs checker passes.
**Plans:** 0 plans
**Plans:** 5 plans
Plans:
- [ ] TBD (run /gsd-plan-phase 12.2 to break down)
**Wave 1**
- [ ] 12.2-01-PLAN.md — Foundations: deferred_bindings table and store, attach.Store with image guard, attach.Relation, lagoon.Date/TimeOfDay with Fill and required, deferred:purge with the daily framework schedule, pact relation hooks
**Wave 2** *(blocked on Wave 1 completion)*
- [ ] 12.2-02-PLAN.md — cabana fileupload (seven file routes, protected download) and datepicker fields, session key, commit of file bindings in the save transaction, OpenAPI
**Wave 3** *(blocked on Wave 2 completion)*
- [ ] 12.2-03-PLAN.md — cabana relation child CRUD (hasMany kind, manage/view/pivot forms, toolbar buttons), D-15 parent scoping, unsaved-parent deferral and relation commit, child file routes
**Wave 4** *(blocked on Wave 3 completion)*
- [ ] 12.2-04-PLAN.md — Admin SPA: FileuploadField, DatepickerField (Reka), child and pivot modals, create-screen deferral, date/time cells, rebuilt dist
**Wave 5** *(blocked on Wave 4 completion)*
- [ ] 12.2-05-PLAN.md — Unit and security tests (D-15 suite, test map, SPA backstops), check-phase12.2.sh, security review, v0.1.1 tag checkpoint
**Cross-cutting constraints:**
- Calendar popover: Esc returns focus to the trigger and a disabled day cannot be selected
- Datetime round trip in a fixed non-UTC zone shows the local wall clock and emits the UTC string; ignoreTimezone emits the wall clock unchanged
- Protected thumbnails are requested with X-Session-Key, rendered from an object URL and the URL is revoked on unmount
- Keyboard reorder: ArrowUp/ArrowDown on a handle moves the item, keeps focus on its handle, announces fileupload.moved and sends one debounced reorder request
### Phase 13: Płytarium API — wishlist, notifications, CSV, credentials, public routes