Resolve deferred v1 items: complete year-rollover job; defer HSV interpolation to v1.1 (#9) #73

Merged
claude-bot merged 1 commit from fix/9-deferred-items into main 2026-07-16 07:34:24 +00:00
Contributor

Closes #9. Reaches a recorded conclusion on both deferred roadmap items.

Year-rollover job — was partially wired, now completed (real bug fix)

run_yearly_job (Jan 1 00:05 cron) did create_backup() + generate, but never refreshed the event cache or populated next-year events — despite event_cache.py's docstring claiming it was wired in M4. Consequence: after the boundary, year+1 events were absent from the DB and the in-memory cache stale until a manual restart. It also didn't flag the review queue (the weekly job does).

Now: backup → populate_db([y, y+1])refresh_cache([y, y+1]) → generate → review_queue_ready. Corrected the misleading docstring. Tests assert the cross-boundary cache refresh, the review-queue flag, and that the job is registered as a Jan-1 cron. This is exactly what #8's year-rollover QA validates.

HSV phase interpolation — formally deferred to v1.1

Not implemented, and implementing it properly requires a different data model (per-day pre-calculated presets + per-event opt-in + review/scheduler support per spec §4.2) — bounded but non-trivial, so deferred rather than half-built. Documented in scheme_generator.py; tracked in the new follow-up issue.

CHANGELOG.md [Unreleased] updated (Fixed: rollover refresh; Deferred: HSV interpolation).

Verified: ruff/format/mypy clean; 240 tests pass (only the known Windows-only backup file-lock errors remain, green on Linux CI).

🤖 Generated with Claude Code

Closes #9. Reaches a recorded conclusion on both deferred roadmap items. ### Year-rollover job — was partially wired, now completed (real bug fix) `run_yearly_job` (Jan 1 00:05 cron) did `create_backup()` + generate, but **never refreshed the event cache or populated next-year events** — despite `event_cache.py`'s docstring claiming it was wired in M4. Consequence: after the boundary, `year+1` events were absent from the DB and the in-memory cache stale until a manual restart. It also didn't flag the review queue (the weekly job does). Now: backup → `populate_db([y, y+1])` → `refresh_cache([y, y+1])` → generate → `review_queue_ready`. Corrected the misleading docstring. Tests assert the cross-boundary cache refresh, the review-queue flag, and that the job is registered as a Jan-1 cron. **This is exactly what #8's year-rollover QA validates.** ### HSV phase interpolation — formally deferred to v1.1 Not implemented, and implementing it properly requires a different data model (per-day pre-calculated presets + per-event opt-in + review/scheduler support per spec §4.2) — bounded but non-trivial, so deferred rather than half-built. Documented in `scheme_generator.py`; tracked in the new follow-up issue. `CHANGELOG.md` `[Unreleased]` updated (Fixed: rollover refresh; Deferred: HSV interpolation). Verified: `ruff`/`format`/`mypy` clean; 240 tests pass (only the known Windows-only backup file-lock errors remain, green on Linux CI). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Resolve #9: wire year-rollover boundary refresh; defer HSV interpolation
All checks were successful
CI / Alembic migration check (pull_request) Successful in 1m10s
CI / Python lint & type-check (pull_request) Successful in 1m39s
CI / Frontend lint, test & build (pull_request) Successful in 1m41s
CI / Python tests (pull_request) Successful in 2m45s
CI / Dependency audit (pull_request) Successful in 1m31s
CI / Docker build, health smoke & E2E (pull_request) Successful in 3m18s
61338bd349
Item 2 (year-rollover job): run_yearly_job only ran a backup + scheme
regeneration. It now also populates event sources into the DB and warms the
in-memory year cache for the new + next year (so rolled-over events are
queryable without a restart, per M1/M8) and fires the review_queue_ready
webhook on completion (per M4), matching the weekly candidate job. Added
tests for cache refresh, review-queue flag, and static Jan-1 registration.

Item 1 (progressive HSV phase interpolation, spec 4.2): confirmed NOT
implemented and deferred to v1.1 rather than half-implemented. The generator
emits one preset per phase with independently-resolved colors; true HSV
interpolation needs a per-day preset model + per-event opt-in. Documented the
gap in scheme_generator.py and corrected the event_cache.py rollover comment.

Item 3: CHANGELOG updated to reflect the true state of both items.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
claude-bot deleted branch fix/9-deferred-items 2026-07-16 07:34:25 +00:00
Sign in to join this conversation.
No description provided.