I3768 — Every plan surface answers 'when' from the records: a release's date beside its version, and the last delivery date of each open milestone
Let a reader of /roadmap/ (both languages), a /plan/<milestone>/ page or /ui/roadmap tell when things happened without any date being typed or forecast: each release a milestone shipped in is drawn with the publication date its release record holds, each open milestone with the date of its newest delivered issue taken from the inferred delivery, and the latest release with its date, while the sentences saying the plan draws no dates are withdrawn.
BLOKOVÁNO vlna 3 · p2 · profil implementation · běží samostatně
Blocked. This issue cannot start until I3755, I3440, I3441 are done. The status is derived from that, not declared.
Cíl
Let a reader of /roadmap/ (both languages), a /plan/<milestone>/ page or /ui/roadmap tell when things happened without any date being typed or forecast: each release a milestone shipped in is drawn with the publication date its release record holds, each open milestone with the date of its newest delivered issue taken from the inferred delivery, and the latest release with its date, while the sentences saying the plan draws no dates are withdrawn.
Proč
Campaign defect D20 (roadmap finding F17): no surface answers 'when'. The plan declares no dates by design, and /ui says so, yet the release records carry a publication time and the delivery projection carries each merge time, so the answer already exists in the repository. The owner decided on 2026-10-20 that the roadmap shows release dates and the last delivery per open milestone on every surface. Dates read from records are observations; a due date or forecast would still be a claim nobody made, and stays out.
Aktuální stav
Each of the 33 release records under .ai/repo/releases/ carries published_at (for example .ai/repo/releases/v1.0.0-alpha.1.yaml:8), and site/data/generated/changelog.json carries it again as each section's date. site/data/generated/delivery.json carries merged.merged_at for each merged issue (for example I0102, merged 2026-09-04T07:03:08Z). None of it is drawn: site/templates/roadmap.html:53 prints a milestone's released_in as a bare version and roadmap.html:89-93 print a release tag and a merge commit without a date; site/templates/milestone.html:11 prints counts only. apps/majordomus-cli/src/ui/roadmap.rs:16-18 states that milestones carry no dates so the roadmap is never a calendar, roadmap.rs:233 captions the Milestones panel 'the plan declares no dates, so none are drawn', the Milestones table rows come from apps/majordomus-cli/src/ui/dashboard.rs:173-189 (milestone_row, shared by /ui/roadmap at roadmap.rs:97, the Overview and the IDD workspace) with no date column, roadmap.rs:88 and :433-436 show the latest release as a version without its date, and docs/MAJORDOMUS_UI.md:547 repeats that milestones carry no dates.
Cílový stav
A milestone's release label reads 'v0.30.2, 2026-10-19', its date the published_at of that release's record (through changelog.json on the site, through the release readings on /ui); a release with no record date shows the version alone. An open milestone reads 'last delivery 2026-10-20' from the newest merged_at among its issues in delivery.json, or 'nothing delivered yet'. /plan/<milestone>/ and /ui/roadmap's Milestones table and inspector show the same two facts, and the Latest release KPI and line add the release's date. Every date is an ISO calendar date in a time element whose datetime holds the full observed timestamp. The no-dates statements in roadmap.rs and docs/MAJORDOMUS_UI.md are replaced by the rule: dates are observed from release records and delivery, never declared or forecast.
Rozsah
- site/templates/roadmap.html
- site/templates/milestone.html
- apps/majordomus-cli/src/ui/roadmap.rs
- apps/majordomus-cli/src/ui/dashboard.rs
- apps/majordomus-cli/src/ui/milestone.rs
- apps/majordomus-cli/tests/ui_roadmap.rs
- docs/MAJORDOMUS_UI.md
- test/cases/3741_every_plan_surface_says_when_from_the_records.sh
Mimo rozsah
- The public /roadmap/ itself, whose bars and dates I3751 delivers
- Due dates, target dates, forecasts or a calendar or timeline view of milestones
- A date field on milestone or issue records: dates stay observations, never declared values (ADR 0166)
- Measuring delivery flow and its phases: milestone delivery-flow-is-measured
- Translating the new labels: the multilingual work, after the English settles
Závislosti
- I3755BLOCKED /roadmap/ opens with now, next and a status summary, shows each milestone's priority, and keeps its issue groups collapsed
- I3440READY A milestone's meter counts the issues it requires, and a milestone with none says so
- I3441READY The roadmap's tables show the order they are in, say none for nothing, and link every milestone
Kritéria přijetí
- On a fixture with release records v0.1.0 (published 2026-01-02) and v0.2.0 (published 2026-02-03), a DONE milestone shipped in v0.2.0 reads 'v0.2.0' with the date 2026-02-03 on /roadmap/, on its /plan/ page and in /ui/roadmap
- A fixture open milestone whose issues merged on 2026-03-01 and 2026-03-05 reads 'last delivery 2026-03-05' on every one of those surfaces, and each date sits in a time element whose datetime is the merged_at it came from
- Neither apps/majordomus-cli/src/ui/roadmap.rs nor the built /ui/roadmap contains 'the plan declares no dates'
- Negative: a fixture open milestone with no merged issue shows no date and reads 'nothing delivered yet', and a release record without published_at shows its version with no date rather than the tag's or the build's time
Validace
- bash test/run.sh 3741_every_plan_surface_says_when_from_the_records 3103_the_roadmap_draws_every_milestone 3104_the_ui_roadmap_reads_delivery
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test ui_roadmap
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test dashboard
- scripts/site-build && scripts/site-check
- scripts/ui audit --only /ui/roadmap
- bin/majordomus plan validate
Požadované důkazy
- test_every_plan_surface_says_when_from_the_records
Důkazy
Nic nezaznamenáno. Za každým tokenem výše musí stát příkaz nebo artefakt, než lze tento úkol dokončit; vyprávění se odmítá.
Časová osa
- zahájeno
- —
- ověřeno
- —
- dokončeno
- —
Tato tři pole, důkazy výše a stav závislostí jsou vše, z čeho se stav skládá. Neexistuje žádné pole stavu, které by s nimi mohlo být v rozporu.
Canonical record: .ai/repo/project/issues/I3768.yaml. Read it back with majordomus plan show I3768.