Two contract bugs broke `hf milestone *` against the backend:
- The backend mounts milestones at prefix /projects/{project_id}/milestones
(nested), but the CLI used flat /milestones, /milestones/<code>, etc. →
every milestone create/get/update/delete/progress/list 404'd. Switch to
the nested routes: list/create take --project; get/update/delete/progress
derive the project from the milestone code (PFIXTU:00001 → PFIXTU) via a
new milestoneProject() helper. list now requires --project.
- due_date is a REQUIRED datetime on the backend, but --due <yyyy-mm-dd>
was sent date-only → 422 datetime_parsing. Anchor a bare date to
start-of-day (toMilestoneDateTime), same as the worklog logged_date fix.
Verified on sim: milestone create/list/get/progress all succeed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>