docs(09-03): complete typed winter form schema plan

This commit is contained in:
Jakub Zych
2026-09-24 18:27:51 +02:00
parent 68715fc260
commit db3d7222e9
3 changed files with 259 additions and 10 deletions

View File

@@ -4,16 +4,16 @@ milestone: v1.0
current_phase: 09
current_phase_name: Backend admin authentication and schema pipeline
status: executing
stopped_at: Completed 09-02-PLAN.md
last_updated: "2026-09-24T15:59:20.547Z"
stopped_at: Completed 09-03-PLAN.md
last_updated: "2026-09-24T16:27:09.874Z"
last_activity: 2026-09-24
last_activity_desc: Phase 09 execution started
state_head: 5f218977e4cc61b103a3be4e459fe5aa6962006f
state_head: 68715fc2603f129f0e9f05d8d1db23f5d7594e12
progress:
total_phases: 15
completed_phases: 8
total_plans: 67
completed_plans: 57
completed_plans: 58
milestone_name: milestone
---
@@ -29,7 +29,7 @@ See: .planning/PROJECT.md (updated 2026-09-16)
## Current Position
Phase: 09 (Backend admin authentication and schema pipeline) — EXECUTING
Plan: 3 of 12
Plan: 4 of 12
Status: Ready to execute
Last activity: 2026-09-24 — Phase 09 execution started
@@ -111,6 +111,7 @@ Progress: [██████████] 100%
|------|----------|-------|-------|
| Phase 09 P01 | 26min | 2 tasks | 26 files |
| Phase 09 P02 | 22 min | 3 tasks | 14 files |
| Phase 09 P03 | 25min | 3 tasks | 10 files |
## Accumulated Context
@@ -276,6 +277,10 @@ Recent decisions affecting current work:
- [Phase 09]: Admin jti rows live in backend_jwt_blacklist and cabana does not republish the frontend BlacklistStore — Refresh and logout must not revoke frontend tokens or be revoked by them.
- [Phase 09]: backend_user_roles.code is indexed and not unique so Winter rows can repeat a code — admin:create rejects zero or many matches instead of a unique constraint the cutover table does not have.
- [Phase 09]: tokens_valid_after is a nullable additive column used to revoke admin JWTs on password reset — The guard already honors Principal.TokensValidAfter and Winter's required columns stay unchanged.
- [Phase 09]: Cached form schemas keep source phrase keys; each response localizes a copy and records meta.locale
- [Phase 09]: Absent config_form.yaml does not fail activation, so the 09-01 Genre list controller still boots
- [Phase 09]: YAML option keys keep their JSON scalar type; method options call DropdownOptions with the exact field name
- [Phase 09]: make:admin-controller writes controllers/name config_form and config_list pointing at models/name fields and columns
### Pending Todos
@@ -298,6 +303,6 @@ Items acknowledged and carried forward from previous milestone close:
## Session Continuity
Last session: 2026-09-24T15:59:20.134Z
Stopped at: Completed 09-02-PLAN.md
Last session: 2026-09-24T16:27:09.536Z
Stopped at: Completed 09-03-PLAN.md
Resume file: None