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
plan.roadmap
The milestones in derived order
What it is
The milestone graph laid out by rank, with `order` breaking ties inside a rank only, and the first unblocked unfinished milestone as `now` and the one after it as `next`. Nothing in the sequence is authored: a milestone whose prerequisites are not real cannot be nominated, which is what makes `each step is gated by the previous one being real` an invariant rather than a sentence.
Descriptor
- Canonical id
plan.roadmap- Module
plan- Kind
- query
- Stability
- behaviorallyverified
- Provenance
- declaredcached
- Source
apps/majordomus-cli/src/capability/builtin/plan.rs- Cache
process, 4 entries, per generation- Benchmark
required- Tags
- planprojectroadmap
Run
queryA query. It reads and changes nothing.
Projections
| Interface | As | Where |
|---|---|---|
| MCP tool | majordomus_plan_roadmap | - |
| MCP resource | not exposed | - |
| HTTP | GET /api/v1/plan/roadmap | Swagger |
| Command line | not exposed | - |
Schemas
Input · Empty
{
"type": "object",
"additionalProperties": false,
"description": "No input.",
"title": "Empty"
}Output · PlanRoadmap
{
"type": "object",
"properties": {
"milestones": {
"type": "array",
"items": {
"$ref": "#/$defs/PlanMilestone"
},
"description": "The milestones ordered by rank, then order, then id. The sequence is derived from\nthe milestone graph; no list of versions is maintained anywhere."
},
"now": {
"type": [
"string",
"null"
],
"description": "The first unfinished, unblocked milestone in that sequence."
},
"next": {
"type": [
"string",
"null"
],
"description": "The one after it, blocked or not."
}
},
"required": [
"milestones"
],
"description": "The milestones in derived order, with the one being executed and the one after it.",
"title": "PlanRoadmap",
"$defs": {
"PlanMilestone": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The identity, which is also the file name; a stable slug, never a version."
},
"status": {
"type": "string",
"description": "The derived status."
},
"order": {
"type": "integer",
"format": "int64",
"description": "Tie-break inside one rank; the roadmap is ordered by rank first."
},
"priority": {
"type": "string",
"description": "`p0` … `p3`."
},
"title": {
"type": "string",
"description": "One line naming the outcome."
},
"slug": {
"type": "string",
"description": "The slug, when the record carries one."
},
"version": {
"type": "string",
"description": "The release the milestone belongs to, when it declares one."
},
"rank": {
"type": "integer",
"format": "uint32",
"minimum": 0,
"description": "Its layer in the milestone graph: what orders the roadmap."
},
"depends_on": {
"type": "array",
"items": {
"type": "string"
},
"description": "The milestones it requires."
},
"blocked_by": {
"type": "array",
"items": {
"type": "string"
},
"description": "Those of them that are not DONE. Non-empty means the gate holds every issue of this\nmilestone back, whatever the issue graph says."
},
"dependents": {
"type": "array",
"items": {
"type": "string"
},
"description": "The milestones that require it."
},
"claims": {
"type": "array",
"items": {
"type": "string"
},
"description": "The claims of the repository this outcome makes true."
},
"counts": {
"$ref": "#/$defs/PlanCounts",
"description": "Its issues, counted by derived status."
},
"issues": {
"type": "array",
"items": {
"type": "string"
},
"description": "Its issues, in id order."
},
"outcome": {
"type": "string",
"description": "One line: what is true once the milestone is real."
}
},
"required": [
"id",
"status",
"order",
"priority",
"title",
"slug",
"version",
"rank",
"depends_on",
"blocked_by",
"dependents",
"claims",
"counts",
"issues",
"outcome"
],
"description": "One milestone, as its record declares it and as the two graphs derive it."
},
"PlanCounts": {
"type": "object",
"properties": {
"total": {
"type": "integer",
"format": "uint32",
"minimum": 0,
"description": "Every issue naming this milestone."
},
"required": {
"type": "integer",
"format": "uint32",
"minimum": 0,
"description": "The denominator the milestone's own status derivation uses: total less cancelled, so\nno surface prints \"n of total\" for a milestone the engine calls DONE."
},
"by_status": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"description": "One entry per declared issue status, keyed by the vocabulary."
}
},
"required": [
"total",
"required",
"by_status"
],
"description": "A milestone's issues counted: the two denominators, then one entry per declared status."
}
}
}Examples
These are the capability's own benchmark cases: the same inputs the benchmark runs and the OpenAPI document shows.
default
{}