Skip to content
Cockpit0.29.0
A snapshot: read at commit 707a04c7ce8 on 2026-10-18T00:06:01Z by majordomus 0.29.0. Nothing on this page is read again. See it live

I2742

A milestone's version is inferred from the release that carried it, never typed

Where it stands

devtask.issue
Readiness
ready no dependency and no gate holds it; nobody has started it
Status
READY
Can start
startable
Milestone
Milestone status
ACTIVE
Wave
0
Waiting on
none
Holds back
Behind it in all
1
Evidence
0 of 1
A move writes the repository: it stamps one field of this issue's record and appends one event to the ledger, and a commit will carry both.
The same moves from a terminal

majordomus plan start I2742

majordomus plan verify I2742

majordomus plan done I2742

What it is

Objective
Remove version from the milestone schema and the eight records that carry it, refuse a record that carries one, and derive released_in for a milestone as the first v* tag containing the merge of its last accepted issue (unreleased while open), in both the awk and the Rust engines' output; rewrite the vendored roadmap-integrity rule and its validator to match.
Why
ADR 0166 decision 3. version is typed by hand: 0.1 to 1.0 on eight milestones written before releases existed, two of them 0.5, out of rank order, beside a product at v0.27.0.
Now
lib/project.awk:359 and plan.rs:289 emit the raw field; site/templates/roadmap.html filters on it; lib/doctor.sh mj_validate_roadmap checks a README table against it.
Wanted
No version field anywhere in .ai/repo/project/milestones; plan.roadmap and roadmap.json carry released_in with its tag; the README roadmap table and its validator use released_in.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • plan validate refuses a milestone record carrying version
  • A milestone whose last issue's merge is contained in v0.27.0 reads released_in v0.27.0; an open one reads unreleased
  • The awk and Rust engines agree (case 99)
Validation
bin/majordomus plan validatebash test/run.sh 49_roadmap_integrity 99_engines_agree 3102_a_milestone_version_is_inferred
Evidence required
version_inferred_case
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
.ai/repo/project/milestonesshare/schemasshare/allowlib/project.awklib/project.shlib/plan.shlib/doctor.shapps/majordomus-cli/src/plan.rs.ai/repo/rules/vendor/majordomus/rules/roadmap-integrity.v1.mdshare/standard/majordomus/rules/roadmap-integrity.v1.mdREADME.mddocs/PLANNING.mdsite/data/generateddocs/generatedtest/cases/49_roadmap_integrity.shtest/cases/3102_a_milestone_version_is_inferred.sh
Not
unknown: the record declares no `non_scope`
Depends on
none
Priority
p0
Profile
implementation
Parallel safe
true
Owner
unknown: the record declares no `owner`

The work so far

Branches
none
Merged
none
Commits
0
Trunk
master
Sessions
none
Created
2026-10-16
Updated
2026-10-16
Started
unknown: the record declares no `started_at`
Verified
unknown: the record declares no `verified_at`
Completed
unknown: the record declares no `completed_at`

Synchronisation

Adapter
scripts/github-sync
Repository
unknown: the derived plan's header carries no repository
External issue
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it
State there
unknown: a live GitHub state; this executable makes no network call, so only `scripts/github-sync --check` can answer it

Findings

Nothing is wrong with these records.