Skip to content

Read at

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

Roadmap

From intent to impact, in the order the plan's dependencies allow.

Every milestone of the plan with the issues it holds, and the intents the work serves.

  • NowM002plan.roadmap /now
  • NextM003plan.roadmap /next
  • Milestones41plan.roadmap /milestones
  • Intents5intents.list /intents

What it is for

The milestone's own record: why it exists, what it promises, and what would prove it.

The problem

The Cockpit is a faithful projection of a registry that has almost nothing development-shaped in it. Re-measured on today's master, the registry declares exactly three capabilities of kind command — executions.start, executions.cancel, peers.announce — and the OpenAPI document the server serves has exactly those three non-GET operations to match. Every command of the development lifecycle lives in a second program, bin/majordomus, and every one of its nodes in the command graph is withheld from every machine surface. So no development surface can be built by adding pages: there is nothing behind the pages to call, and majordomus_plan_done answers unknown tool because there is no capability for a plan transition. docs/COCKPIT_IDE_AUDIT.md is the evidence; ADR 0040 is the decision it argues for. Until this milestone existed, none of it was in the plan at all: a keyword search of the issues and milestones for palette, diff view, CI status and syntax highlighting returned nothing, so the work could not be scheduled, blocked or reported.

The outcome

A development transition is decided in exactly one place — a capability! of kind command in the Rust registry — and every surface that offers it is a projection: the CLI, the MCP tool, the HTTP route, the OpenAPI operation and the Cockpit's generated runner form, none of them written by hand. The lifecycle stops being a second program with no surfaces, and the execution history a development surface would show exists somewhere durable.

Where it stands

Three command capabilities, all of them about executions or peers. The lifecycle transitions exist only in lib/plan.sh and lib/start.sh. majordomus run executes in its own process and never reaches the running server, so the execution plane the Cockpit shows and the one a person uses are disjoint. A server whose executable has been replaced still reports itself ready. Two capabilities — devtask.issue and devtask.milestone — landed after the audit's base and give the runtime its first canonical read of an issue and a milestone as work; neither of them writes anything.

Where it should stand

Phase A of the audit's plan has landed end to end — one transition, one capability, four surfaces, no hand-written projection — and the phases that depend on it are schedulable against it. The three load-bearing defects named in the audit's F-table are fixed or explicitly deferred with a record, rather than carried silently under every later measurement.

In scope

  • apps/majordomus-cli/src/capability/builtin
  • apps/majordomus-cli/src/cockpit
  • lib
  • share
  • docs
  • test/cases

Out of scope

  • A terminal, a PTY or shell execution on any surface. The audit records this as a non-goal and share/cockpit/palette.js already states the boundary in terms.
  • Editing repository source in the browser. The Cockpit refuses every non-GET route by decision, and this milestone does not reopen that decision.
  • Retries and a scheduler. apps/majordomus-cli/src/execution/mod.rs states in its own module documentation that it has none, by decision.
  • A second datastore or a second project model. The records stay canonical and the runtime reads them.
  • The /cockpit/worktrees response time. It is F3 in the audit's table and is being fixed on fix/cockpit-answers-quickly; this milestone references that work rather than duplicating it.
  • A wholesale port of lib/*.sh. Phase A is one transition; the rest is scheduled behind it or not at all.

Proven when

  • The registry declares at least one capability of kind command that changes a development record, and the generated OpenAPI carries its non-GET operation without anyone editing the document
  • The same transition is reachable from the CLI, from MCP and over HTTP, and the Cockpit's existing generic runner drives it with no Cockpit source edited
  • An execution a person starts is visible to the server that serves the repository, or the record says which decision was taken instead and why
  • A surface that reports a runtime as ready cannot be serving an executable that no longer exists on disk
  • No claim in docs/COCKPIT_IDE_AUDIT.md is left standing that a command in this repository contradicts

objects.get0 msAPI/api/v1/objectMCPmajordomus_gettechnical view

Milestone

One milestone of the plan: what it holds, what can start, and what it waits for.

development-runtime · order 100 · p0

The runtime has a development surface

activeClose

Done
38 of 70
Blocked
11
Waits for
none
Blocked by
none
Unblocks
none
Serves
none

Critical path

  1. I1504
  2. I1505
  3. I1506
  4. I1507

Issues

IssueStatusPriorityWaveBlocked by
I1501An execution a person starts is an execution the server can seedonep00none
I1502A server serving code that no longer exists stops calling itself readydonep00none
I1503A closed session is not closed a second time under the same identitydonep00none
I1504One development transition is a capability, end to endreadyp00none
I1505A mutating capability leaves a durable event, and the ledger can be read backblockedp11I1504
I1506The lifecycle commands become non-interactive capabilitiesblockedp12I1504I1505
I1507Issues, milestones, sessions and peers reach the Cockpit as projectionsblockedp23I1505I1506
I1508The navigation is derived from the dispatcher, not kept beside itdonep10none
I1509A detail page that pages nothing has outgrown the reason it pages nothingdonep10none
I1510A gap the audit calls planned names a plan object that existsdonep10none
I1511The documentation surface answers in a checkout that has not built the sitedonep20none
I1512Gate state is something the runtime can answerreadyp20none
I1520A step that runs out of time says so itselfdonep10none
I1967A reporter that sets a flag is a reporterdonep20none
I1992A rebuild that fails consumes no change: the next request retries itdonep20none
I1995Work a session left uncommitted in a worktree is named, not found by luckdonep10none
I1997The peer board can be read from the command linereadyp10none
I2054A tag does not turn every other pull request red until its record landsdonep10none
I2059A rebuild never replaces the executable a live lease namesreadyp10none
I2114A task's scope admits what its derive writesreadyp20none
I2301Whether the work is done is answered by measurement: the done invariant asks about debt, what was left behind and the backlogdonep10none
I2398A derive offloaded to another machine waits its turn in a declared queuedonep10none
I2399Every session briefs itself on an interval, without being askeddonep10none
I2460The overview asks its sources at once, so it costs its slowest source and not their sumdonep10none
I2461majordomus ui is served at /ui as its own product, with screens composed from capabilitiesdonep10none
I2462The UI has every screen, and its mesh is a graph whose nodes open an inspectordonep11none
I2463A train of stacked pull requests is a typed object, served everywhere and drawn as a graphdonep20none
I2470The pull requests drain in the UI: a queue a reader narrows, inspects and follows to what each depends ondonep12none
I2471The roadmap opens a milestone: what it holds, what can start, its critical path, and what it waits fordonep13none
I2472How long CI takes is measured, from when each run started to when it completed, and the CI/CD screen draws itdonep14none
I2473A pull request shows its trail: what the executor did to it, and the drain what the lane did latelydonep13none
I2474The drain draws its merge throughput: each day's merges over the fortnight its trail ends ondonep14none
I2475The issues are browsed: every issue of the plan by status, milestone, priority or text, each a link onwarddonep14none
I2476An intent opens what serves it: its statement, its criteria and their evidence, and the milestones and issues that serve itdonep14none
I2477A claim opens its proof: what settles it, its last run, what changed since, how to see it againdonep12none
I2478A rule opens its proof: what it states, the tests that prove it, what is missing, and the rules around itdonep12none
I2481The UI links every entity it names, and says none where a source has no valuedonep13none
I2482Every screen of the UI has a case, and no link on the UI is deadreadyp14none
I2483The UI is published as a snapshot: read once at the published commit and carried by the site at /uidonep12none
I2484majordomus ui ensures the shared server and opens the UI's dashboardreadyp11none
I2485The bench measures the first request after the repository moved, and a budget bounds itreadyp23none
I2486No screen waits for a source: a page shows the latest reading with its age, read again behind the readerdonep01none
I2487A screen is streamed, and one stream tells an open page which readings changedreadyp12none
I2488The HTTP stack is chosen by measurement: the same routes and several hundred open streams on tiny_http and on axumreadyp12none
I2489A screen over its budget fails the build: the UI's latency budgets are benchmark policy, and bench --check holds themdonep12none
I2495The Cockpit is published as a snapshot at /cockpit, and the UI's evidence links lead to itdonep03none
I2652The UI shows what the knowledge base holds: the candidates awaiting review and whether the deriver still writes, read and never acted onreadyp12none
I2670A build-cache offer is a typed model and its selection is a pure, explained functionreadyp10none
I2671A provider offers its cache as a signed, expiring mesh record, and a stopped provider goes staleblockedp11I2670
I2672The offers and the selection are one read, projected to CLI, MCP, HTTP and OpenAPIblockedp11I2670
I2673The sccache client configuration is derived from the selected offer, local disk firstblockedp12I2670I2672
I2674A node is provisioned as an S3 cache provider, idempotently, with no secret in the repositoryblockedp11I2670
I2675Build-cache health, headroom and hit statistics are visible where the mesh isblockedp22I2672
I2676The build cache is verified and validated: failure paths, security and a real second-node hitblockedp13I2673I2674
I2677The build cache is documented, governed by a rule and described on the site and the Pagesblockedp22I2672
I2678The public Observatory replays events that were recorded, and says it is a replaydonep20none
I2679The Observatory follows a stream with a cursor instead of asking for its page againdonep20none
I2680The Observatory's gates are closed with evidence: screenshots, measured frame rates, a soak, the recovery drillsdonep20none
I2694A promoted note resolves in every checkout, not only where it was promotedreadyp10none
I2695The Observatory draws the proof, claim, surface, wave and release scenes from the capabilities that already answer themreadyp20none
I2696p5 is a built, optional asset of the UI and the page says where it isreadyp20none
I2697The public snapshot carries the p5 library, or says which scenes it cannot drawreadyp30none
I2698The new scenes have screenshot evidence at 1080p and 4K on a named revisionreadyp30none
I2712release-check treats a tag whose release run is still going as pending, not as a missing recorddonep11none
I2713A build never lets idle incremental sessions fill the diskreadyp00none
I2714One build directory never serves two worktrees' jobs at oncereadyp10none
I2715New public Rust code meets rust-quality before the structure job doesdonep10none
I2718A linked worktree runs its own hooks, never the primary checkout'sreadyp00none
I2760A scope entry is one path, and a path context would refuse is refused at startreadyp10none
I2787A build never lets the shared build directory's crate artifacts fill the diskblockedp01I2713

plan.roadmap0 msAPI/api/v1/plan/roadmapMCPmajordomus_plan_roadmaptechnical view

plan.issues0 msAPI/api/v1/plan/issuesMCPmajordomus_plan_issuestechnical view

Milestones

Every milestone, in the plan's order; the plan declares no dates, so none are drawn.

MilestoneStateIssues done
M000Milestone and DAG driven developmentdone15 of 15
M001A blocking question survives a handoverdone4 of 4
M002A durable record names the worker that wrote itactive1 of 4
M003A session is a durable envelope, and knowledge is compiled from what is already canonicalactive11 of 16
M004Performance is executable evidence, and the hot path does no canonical work twiceactive16 of 38
foundationA supervisory control layer that is real rather than describeddone0 of 0
fly-deploymentThe container image is a projection of the repository model, and its smoke is its evidenceactive4 of 32
web-sign-inThe deployed surfaces know who is asking, and the identity providers are dataplanned0 of 8
capability-graphOne capability graph, two projections, and no second inventory of what this repository can doactive9 of 32
external-workspacesAn external workspace is read the way this repository reads anything else, and its content never becomes public by accidentactive1 of 10
two-folder-integrationA repository that adopts Majordomus gains two directories and two lines, and can give them backactive0 of 23
derived-data-integrityA committed derivation describes something it can be a projection ofverify1 of 1
work-graph-githubThe projection to GitHub is gated, identified and traversable, and a merged pull request leads back to the outcome it servedverify10 of 10
intent-lifecycleWork is traceable to the intent it serves, and an intent is satisfied only by evidenceplanned0 of 2
development-runtimeThe runtime has a development surfaceactive38 of 70
test-evidenceEvery verifiable claim and widget resolves to revision-bound test evidence, on every surfaceactive12 of 28
public-proofA visitor sees the product prove itself, and can check every claim it makesactive1 of 2
adopter-upgradesAn adopting repository survives a Majordomus upgrade, and what the tool vendors into it is adopter-neutralactive10 of 17
a-second-adopter-is-servedA second adopter is served: what a foreign repository met on its first day is fixed in the toolactive0 of 1
a-session-leaves-what-it-observedA session leaves what it observed, and the repository routes itdone3 of 3
automationRepository automation is scripted capabilities over typed Rust, not shellactive2 of 5
runtime-trustA runtime is safe to reach from another machine, and joining the mesh trusts nobody by accidentactive5 of 9
runtime-lifecycleOne usable server per checkout starts, attaches, stops and reports its state without races or hidden killsactive5 of 8
mesh-journal-convergesThe cooperation journal is durable, converges under any delivery order, and never lets a stale claim winactive2 of 5
mcp-transports-are-reliableEvery MCP transport delivers each request at most once, bounds what it carries, and honours cancellationverify2 of 2
surfaces-never-disagreeEvery surface projects the same state, says when it was observed, and keeps no list of its ownactive1 of 6
failure-is-visibleEvery failure the runtime can suffer is bounded, tested or stated, and changes the health it reportsactive3 of 4
architecture-is-enforcedA violated invariant fails a gate, and green means every required check ranactive2 of 3
safe-self-updateEvery mesh node follows the published release by itself, versions meet safely, and a release's provenance can be checkedactive2 of 7
every-session-joins-the-meshEvery LLM session joins the Majordomus mesh at start, told the mesh as workplanned0 of 4
truthful-plan-surfacesThe plan's surfaces are inferred from delivery, and nothing they show is typed beside the repositoryactive0 of 9
idd-workspaceThe UI is where the owner directs the work, from an intent to its next moveactive0 of 1
everything-is-followed-in-one-streamEverything that happens in the repository is followed in one streamactive1 of 8
the-mesh-works-out-of-the-boxThe mesh works out of the box: trusted machines find each other by every means and their sessions cooperate from the first turnplanned0 of 6
runtime-adaptersProfiles become runtime constraints rather than adviceplanned0 of 6
intent-planningThe plan of an intent is held to it before executionblocked0 of 2
execution-telemetryExecution telemetry, only from providers that expose it honestlyblocked0 of 5
intent-bound-workA task is bound to the intent it servesblocked0 of 5
cost-per-accepted-outcomeCost per accepted outcome, only on measured datablocked0 of 4
routing-recommendationsRouting recommendations derived from measured costblocked0 of 4
shared-policyShared policy across repositories and workersblocked0 of 5

plan.roadmap0 msAPI/api/v1/plan/roadmapMCPmajordomus_plan_roadmaptechnical view

Intents

What the work is for, and whether the evidence says it is met.

intents.list279 msAPI/api/v1/intentsCLImajordomus intent listMCPmajordomus_intentstechnical view

Issues by status

Every issue of the plan, counted by the plan.

View all
424issues
  • active1
  • blocked159
  • cancelled10
  • done161
  • ready86
  • verify7

plan.status0 msAPI/api/v1/plan/statusMCPmajordomus_plan_statustechnical view

Dependencies

Which milestone waits for which, as the plan records it.

MilestoneDepends onBlocked by
runtime-adaptersfoundation
intent-planningintent-lifecycleintent-lifecycle
execution-telemetryruntime-adaptersruntime-adapters
intent-bound-workintent-planningintent-planning
cost-per-accepted-outcomeexecution-telemetryexecution-telemetry
routing-recommendationscost-per-accepted-outcomecost-per-accepted-outcome
shared-policyrouting-recommendationsrouting-recommendations

plan.roadmap0 msAPI/api/v1/plan/roadmapMCPmajordomus_plan_roadmaptechnical view