--- phase: 12.2-admin-form-fields-date-file-upload-relation-editing-with-def verified: 2026-10-02T21:15:00Z status: human_needed score: 5/5 roadmap success criteria verified; 4 UI-SPEC backstops verified by SPA tests; browser UAT and the v0.1.1 tag remain human overrides_applied: 0 human_verification: - test: "Calendar keyboard and visual fit (UI-SPEC backstop + Direction C)" expected: "Esc returns focus to the datepicker trigger; a disabled day cannot be selected; the popover fits the existing control height and calendar cell size" why_human: "Unit tests cover Esc and disabled days; visual fit against Direction C needs a browser" - test: "Drag reorder and upload progress on a fileupload field" expected: "Tiles and rows show queued/uploading/done; Save stays disabled while an upload is in flight; drag or keyboard reorder keeps the latest order" why_human: "XHR progress and pointer drag are mocked in vitest; live feel is a human check" - test: "Child create/edit/delete and pivot edit on an unsaved parent" expected: "Create-screen relation managers with deferrable: true work at record id 0; the pending note shows; the first parent save commits children, pivots and files" why_human: "The deferred smoke test is mocked; the assembled admin UI against a real plugin is a human check" - test: "Create and push the v0.1.1 tag (12.2-05 Task 4)" expected: "git tag -a v0.1.1 on the phase head, then git push origin master v0.1.1; downstream TODO items for date, file upload and related-record editing can resolve on that tag" why_human: "The executor must not tag or push" --- # Phase 12.2: Admin form fields Verification Report **Phase Goal:** A plugin's admin forms cover date/datetime, file upload, and related-record create/edit/delete with Winter-like deferred binding. **Verified:** 2026-10-02T21:15:00Z **Status:** human_needed **Re-verification:** No — first verification after the review-fix commit. All five plans have SUMMARYs. The prior Codex run already passed the nine-stage `scripts/check-phase12.2.sh` suite, Nyquist validation, and the 41-threat security ledger (`12.2-SECURITY.md` `threats_open: 0`). This pass closed the seven code-review findings instead of re-running that 137-file review. ## Goal Achievement | # | Success criterion | Status | Evidence | | --- | --- | --- | --- | | SC1 | `type: datepicker` with Winter modes stores date, timestamp and time | ✓ | `modules/cabana/datepicker_test.go`, `modules/lagoon/date_test.go`, `admin/tests/form/DatepickerField.test.ts`, `admin/tests/app/dateFormat.test.ts` (UTC-day bounds after 516f9c9) | | SC2 | `type: fileupload` on attachOne/attachMany, saved and unsaved | ✓ | `modules/cabana/fileupload_test.go` including `TestFileuploadUploadID` and WR-01 boot headroom; SPA `FileuploadField.test.ts` (18 tests) | | SC3 | Relation child CRUD scoped to the parent | ✓ | `modules/cabana/relation_child_test.go`, `relation_child_scope_test.go` (D-15); `TestPendingPivotFillError` after 516f9c9 | | SC4 | Deferred bind/commit/purge | ✓ | `modules/lagoon/deferred_test.go` (envelope now stores `upload_id`), `purge_test.go`, `modules/cabana/deferred_commit_test.go`, deferred smoke | | SC5 | Unit tests in the last plan; docs checker passes | ✓ | `12.2-05-SUMMARY.md`; this session `go test ./cmd/summer -run TestDocsTree` and `go run ./cmd/summer docs:build --check` exit 0 | ## Review findings (516f9c9) | ID | Status | Check run this session | | --- | --- | --- | | CR-01 | fixed | `admin/tests/smoke/deferred.smoke.test.ts` "does not save while an upload is still in flight"; FormView/RelationChildModal disable Save | | CR-02 | fixed | `TestFileuploadUploadID`; FileuploadField abort-delete and network-adopt tests; `TestDeferred/envelope` stores `upload_id` | | CR-03 | fixed | `TestJSONBodyCaps` (create, update, link, unlink, settings → 413) | | WR-01 | fixed | `TestFileuploadCompile` equality and 64 KiB headroom | | WR-02 | fixed | `admin/tests/app/dateFormat.test.ts` UTC-day bounds | | WR-03 | fixed | FileuploadField "sends only the latest order"; `visibleFilesLocked(..., true)` | | WR-04 | fixed | `TestPendingPivotFillError` | `12.2-REVIEW-DISPOSITION.md` records all 7 as `fixed`. The 137-file review was not re-run. ## Artifacts | Artifact | Status | | --- | --- | | Five plan SUMMARYs | ✓ | | `12.2-SECURITY.md` threats_open 0 | ✓ (prior run) | | `12.2-VALIDATION.md` nyquist_compliant | ✓ (prior run) | | `12.2-REVIEW.md` + disposition | ✓ disposition updated | | Docs checker | ✓ this session | | Admin `vue-tsc --noEmit` | ✓ this session | | v0.1.1 tag | pending (user) | ## Gaps None in automated must-haves. Remaining work is the four human items above. _Verifier: the agent (inline, targeted; did not re-run the nine-stage gate or 137-file review)_