Skip to content

Add editable graduation dates - #59

Merged
OwenTanzer merged 1 commit into
mainfrom
codex/issue-31-graduation-date
Jul 22, 2026
Merged

Add editable graduation dates#59
OwenTanzer merged 1 commit into
mainfrom
codex/issue-31-graduation-date

Conversation

@OwenTanzer

Copy link
Copy Markdown
Owner

Closes #31

What changed

  • prompts for a graduation date before the existing Mark Graduated action runs, defaulting to today
  • allows the date to be corrected later without removing Graduated status or changing the frozen 100% completion state
  • rejects malformed and future graduation dates in both the UI and data store
  • stores graduation as a canonical YYYY-MM-DD lifecycle date while preserving update and completion timestamps as audit history
  • migrates legacy ISO graduation timestamps to the same local calendar date users previously saw
  • renders corrected dates consistently on the dog profile and Trainer History, without timezone shifts
  • lets legacy graduated dogs with no stored date add one
  • adds regression coverage for normalization, calendar validation, and timezone-safe display

Why

Graduation was already a frozen lifecycle state, but its date was an uneditable audit timestamp. Trainers need to enter the actual graduation day and correct it later without undoing graduation or changing completion history.

Validation

  • npm test (10 tests pass)
  • npx tsc -b
  • npm run lint (passes with three pre-existing warnings)
  • npm --prefix worker run typecheck
  • git diff --check

@OwenTanzer
OwenTanzer marked this pull request as ready for review July 22, 2026 14:04
@OwenTanzer
OwenTanzer merged commit b2b482e into main Jul 22, 2026
1 check passed
@OwenTanzer
OwenTanzer deleted the codex/issue-31-graduation-date branch July 22, 2026 14:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"Graduated" status should freeze a dog's checklist at 100%, immune to future skill list edits

1 participant