Maestro task 598184a8-56fe-4ed8-887b-7780c0aebf12 — Plan draft schedule, third task of Feature 20 (Scheduler and Weekly Automation).
Registers the plan_draft schedule through the scheduler core: fires at household plan_draft_dow/time (default Fri 09:00) in the household timezone with period key plan_draft:YYYY-Www of the NEXT week; drafts next week through the same plan service draft job the API uses and emits one plan_ready:{weekStart} when no plan exists; does nothing when a plan already exists; an AI failure records in ai_runs and emits no plan_ready. Fake-clock tests cover drafting when absent, skipping when present, no duplicate after restart, the failure path, and a settings change taking effect without restart.
Head: 7783971bc14d39c2fd9dcd0f7877405c316f5ede.
Checks: gofmt clean, go vet OK, CGO_ENABLED=0 go build OK, make sqlc-check OK, go test -race -count=1 -timeout 20m ./... all packages OK except one pre-existing internal/recipesTestFetchTimeout timing flake under full-suite load (passes in isolation, 10/10; this branch does not touch internal/recipes).
Maestro task `598184a8-56fe-4ed8-887b-7780c0aebf12` — Plan draft schedule, third task of Feature 20 (Scheduler and Weekly Automation).
Registers the `plan_draft` schedule through the scheduler core: fires at household `plan_draft_dow`/time (default Fri 09:00) in the household timezone with period key `plan_draft:YYYY-Www` of the NEXT week; drafts next week through the same plan service draft job the API uses and emits one `plan_ready:{weekStart}` when no plan exists; does nothing when a plan already exists; an AI failure records in `ai_runs` and emits no `plan_ready`. Fake-clock tests cover drafting when absent, skipping when present, no duplicate after restart, the failure path, and a settings change taking effect without restart.
Head: `7783971bc14d39c2fd9dcd0f7877405c316f5ede`.
Checks: gofmt clean, `go vet` OK, `CGO_ENABLED=0 go build` OK, `make sqlc-check` OK, `go test -race -count=1 -timeout 20m ./...` all packages OK except one pre-existing `internal/recipes` `TestFetchTimeout` timing flake under full-suite load (passes in isolation, 10/10; this branch does not touch `internal/recipes`).
Register plan.Service.DraftSchedule() as the plan_draft schedule: at the
household's plan_draft_dow/time it runs StartScheduledDraft for the ISO
week after the fire date (period plan_draft:YYYY-Www of that week), which
enqueues the same draft_week job as POST /plans/{weekStart}/draft. A
stored draft emits plan_ready:{weekStart} from the job; an AI failure is
recorded in ai_runs and emits nothing. A week that already has a plan is
left as it is.
Fake-clock tests in internal/scheduler cover drafting when absent,
skipping when present, no duplicate after restart, the AI failure path
and a settings change without restart.
Maestro task 598184a8-56fe-4ed8-887b-7780c0aebf12.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Maestro task
598184a8-56fe-4ed8-887b-7780c0aebf12— Plan draft schedule, third task of Feature 20 (Scheduler and Weekly Automation).Registers the
plan_draftschedule through the scheduler core: fires at householdplan_draft_dow/time (default Fri 09:00) in the household timezone with period keyplan_draft:YYYY-Wwwof the NEXT week; drafts next week through the same plan service draft job the API uses and emits oneplan_ready:{weekStart}when no plan exists; does nothing when a plan already exists; an AI failure records inai_runsand emits noplan_ready. Fake-clock tests cover drafting when absent, skipping when present, no duplicate after restart, the failure path, and a settings change taking effect without restart.Head:
7783971bc14d39c2fd9dcd0f7877405c316f5ede.Checks: gofmt clean,
go vetOK,CGO_ENABLED=0 go buildOK,make sqlc-checkOK,go test -race -count=1 -timeout 20m ./...all packages OK except one pre-existinginternal/recipesTestFetchTimeouttiming flake under full-suite load (passes in isolation, 10/10; this branch does not touchinternal/recipes).Register plan.Service.DraftSchedule() as the plan_draft schedule: at the household's plan_draft_dow/time it runs StartScheduledDraft for the ISO week after the fire date (period plan_draft:YYYY-Www of that week), which enqueues the same draft_week job as POST /plans/{weekStart}/draft. A stored draft emits plan_ready:{weekStart} from the job; an AI failure is recorded in ai_runs and emits nothing. A week that already has a plan is left as it is. Fake-clock tests in internal/scheduler cover drafting when absent, skipping when present, no duplicate after restart, the AI failure path and a settings change without restart. Maestro task 598184a8-56fe-4ed8-887b-7780c0aebf12. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>Independent Codex gpt-6-sol review: APPROVED for this exact commit.