The AI-drafted weekly dinner schedule the household adjusts, mixing Regulars and Quest-log picks — one dinner per day Monday to Sunday (requirements §7; mobile mock 1f, tablet 2c, desktop 2d).
Tasks (all seven merged, each independently reviewed at its exact head)
draft_week skill v1 (prompt layering, one repair turn, validators: 7 consecutive Mon–Sun dates from the pool, no repeats) and the plan service/API: GET /plans/{weekStart}, POST /plans/{weekStart}/draft (async, confirm required over a synced/changed plan), PUT /plans/{weekStart}/days/{date}.
Rotation check per D-021: MarkTried + GET /api/v1/rotation-reviews + POST /api/v1/dinners/{id}/rotation-review (keep -> regular, drop -> archived with an immutable name for dedupe, not_made -> quest log, 404/409 distinctions). Nothing promotes a dinner to Regular automatically.
The mobile Draft board (mock 1f) with the assistant bubble, NEW highlighting, crock-pot "Start by", "+ Rebuild week" with confirm, and the empty state; the mobile swap sheet with the Quest log / Regulars control and optimistic swap; the tablet/desktop plan manager (2c/2d) with the 7-column grid, the desktop Quest log panel, the tablet chip strip, method-aware durations and the relative sync time; and pointer + keyboard swapping.
Integration checks at the feature head 955613941fc9f8469ba4e7b02367cc35bd67840d (7 commits ahead of dev, 0 behind)
gofmt -l . — empty
go vet ./... — clean
go test -race -count=1 ./... — 25 packages ok, 0 failures
CGO_ENABLED=0 go build ./... — ok
make sqlc-check SQLC=$(go env GOPATH)/bin/sqlc — no drift in internal/db
cd web && npm run typecheck — PASS
cd web && npm test — PASS, 45 files / 761 tests
cd web && npm run build — PASS (colour lint + dist-font check)
make test, make build — PASS
docker build . — PASS
The branch already contains all of dev, so no dev merge was needed.
Notes
Two non-blocking findings and one further LOW from task reviews are dispositioned, not waived, and tracked as Maestro task d21e4a83-9ae4-4944-9621-a10db9fad0b9 in Feature 22: pruning settled swap entries from the mutation cache; a narrow identical-field rollback edge; and strict RFC 3339 parsing for syncedAt.
"Shopping list" and "Push to Calendar" ship disabled with tooltips because Features 17 and 16 have no endpoints yet; "Rebuild week" works.
## Feature 14 — Weekly Plan Builder
Integration pull request: `feature/ca2a118d-0beb-49f9-b2ef-d5ed0ac1fa2a-weekly-plan-builder` -> `dev`.
The AI-drafted weekly dinner schedule the household adjusts, mixing Regulars and Quest-log picks — one dinner per day Monday to Sunday (requirements §7; mobile mock 1f, tablet 2c, desktop 2d).
## Tasks (all seven merged, each independently reviewed at its exact head)
| Task | Maestro | PR | Reviewed head |
| --- | --- | --- | --- |
| draft_week skill | 7ab59240 | #113 | c9baf08 |
| Plan service and API | ea48e650 | #114 | 1f548c9 |
| Rotation check: tried dinners and keep/drop | a1887d1c | #116 | cca6a82 |
| Mobile draft board (1f) | 4bb14d54 | #117 | 870f346 |
| Mobile swap sheet | f231813c | #118 | 2164e24 |
| Tablet and desktop plan manager (2c, 2d) | 4657cba1 | #119 | 8d46b58 |
| Drag-and-drop and keyboard swapping | 5c2842a8 | #120 | 9e0c20a |
## What the feature delivers
- `draft_week` skill v1 (prompt layering, one repair turn, validators: 7 consecutive Mon–Sun dates from the pool, no repeats) and the plan service/API: `GET /plans/{weekStart}`, `POST /plans/{weekStart}/draft` (async, `confirm` required over a synced/changed plan), `PUT /plans/{weekStart}/days/{date}`.
- Rotation check per D-021: `MarkTried` + `GET /api/v1/rotation-reviews` + `POST /api/v1/dinners/{id}/rotation-review` (keep -> regular, drop -> archived with an immutable name for dedupe, not_made -> quest log, 404/409 distinctions). Nothing promotes a dinner to Regular automatically.
- The mobile Draft board (mock 1f) with the assistant bubble, NEW highlighting, crock-pot "Start by", "+ Rebuild week" with confirm, and the empty state; the mobile swap sheet with the Quest log / Regulars control and optimistic swap; the tablet/desktop plan manager (2c/2d) with the 7-column grid, the desktop Quest log panel, the tablet chip strip, method-aware durations and the relative sync time; and pointer + keyboard swapping.
## Integration checks at the feature head `955613941fc9f8469ba4e7b02367cc35bd67840d` (7 commits ahead of `dev`, 0 behind)
- `gofmt -l .` — empty
- `go vet ./...` — clean
- `go test -race -count=1 ./...` — 25 packages ok, 0 failures
- `CGO_ENABLED=0 go build ./...` — ok
- `make sqlc-check SQLC=$(go env GOPATH)/bin/sqlc` — no drift in `internal/db`
- `cd web && npm run typecheck` — PASS
- `cd web && npm test` — PASS, 45 files / 761 tests
- `cd web && npm run build` — PASS (colour lint + dist-font check)
- `make test`, `make build` — PASS
- `docker build .` — PASS
The branch already contains all of `dev`, so no `dev` merge was needed.
## Notes
- Two non-blocking findings and one further LOW from task reviews are dispositioned, not waived, and tracked as Maestro task `d21e4a83-9ae4-4944-9621-a10db9fad0b9` in Feature 22: pruning settled swap entries from the mutation cache; a narrow identical-field rollback edge; and strict RFC 3339 parsing for `syncedAt`.
- "Shopping list" and "Push to Calendar" ship disabled with tooltips because Features 17 and 16 have no endpoints yet; "Rebuild week" works.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Feature 14 — Weekly Plan Builder
Integration pull request:
feature/ca2a118d-0beb-49f9-b2ef-d5ed0ac1fa2a-weekly-plan-builder->dev.The AI-drafted weekly dinner schedule the household adjusts, mixing Regulars and Quest-log picks — one dinner per day Monday to Sunday (requirements §7; mobile mock 1f, tablet 2c, desktop 2d).
Tasks (all seven merged, each independently reviewed at its exact head)
c9baf081f548c9cca6a82870f3462164e248d46b589e0c20aWhat the feature delivers
draft_weekskill v1 (prompt layering, one repair turn, validators: 7 consecutive Mon–Sun dates from the pool, no repeats) and the plan service/API:GET /plans/{weekStart},POST /plans/{weekStart}/draft(async,confirmrequired over a synced/changed plan),PUT /plans/{weekStart}/days/{date}.MarkTried+GET /api/v1/rotation-reviews+POST /api/v1/dinners/{id}/rotation-review(keep -> regular, drop -> archived with an immutable name for dedupe, not_made -> quest log, 404/409 distinctions). Nothing promotes a dinner to Regular automatically.Integration checks at the feature head
955613941fc9f8469ba4e7b02367cc35bd67840d(7 commits ahead ofdev, 0 behind)gofmt -l .— emptygo vet ./...— cleango test -race -count=1 ./...— 25 packages ok, 0 failuresCGO_ENABLED=0 go build ./...— okmake sqlc-check SQLC=$(go env GOPATH)/bin/sqlc— no drift ininternal/dbcd web && npm run typecheck— PASScd web && npm test— PASS, 45 files / 761 testscd web && npm run build— PASS (colour lint + dist-font check)make test,make build— PASSdocker build .— PASSThe branch already contains all of
dev, so nodevmerge was needed.Notes
d21e4a83-9ae4-4944-9621-a10db9fad0b9in Feature 22: pruning settled swap entries from the mutation cache; a narrow identical-field rollback edge; and strict RFC 3339 parsing forsyncedAt.Independent Codex gpt-6-sol review: CHANGES_REQUIRED for this exact commit.
Independent Codex gpt-6-sol review: APPROVED for this exact commit.