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

A downstream repository, OSCILLA, audited on 2026-10-04 against v0.13.0 (e08aec8651), shows the tool breaking its adopters in ways no test in this repository sees, because every test here runs this repository's own layout. Installing 0.12.0 machine-wide made doctor report 433 failures in OSCILLA: unsealed plan stamps and use-case steps reclassified as state-mutating. Its pre-commit hook runs doctor, so every commit was refused until the layer was migrated by hand, and the migrated layer is then rejected by 0.10. Nothing records which tool version a layer was written for, and migrate handles only .majordomus to .ai. Live use-case scenarios refuse read-only knowledge subcommands while admitting check --checkpoint, which writes. Upgrading the vendored rules leaves the policy and source keys they depend on behind. The knowledge deriver writes untracked candidates onto a trunk that only pull requests change. The vendored rules and the init skeleton carry this repository's narrative, test paths and stack.

The outcome

An adopter can upgrade the tool, or vendor its rules, and be told exactly what to migrate before anything refuses its commits. The migration is a command, not a hand replay. What the tool writes into an adopter (rules, skeleton, scope, candidates) is neutral to this repository and keeps a PR-only trunk clean.

Where it stands

At e08aec8651 the manifest and policy name no tool or layer version. SEALED_FROM is one global constant (lib/project.awk:45, plan.rs:122). share/commands.yaml classes each top-level command once. lib/migrate.sh moves only .majordomus/. docs/INSTALL.md says only to re-run the installer to upgrade. The knowledge deriver writes .ai/repo/knowledge/candidates/ in whichever checkout closes an episode. The rule package manifest says source_revision 0.6.0.

Where it should stand

doctor separates version-skew findings from defects and names the migration that clears them. migrate carries a layer from one version to the next, including re-sealing old plan stamps with their original times. The effect class is judged per subcommand and flag. rules vendor update reports or applies the skeleton keys the new rules need. Candidates never dirty a trunk. Vendored rules and the init skeleton say nothing that is only true of this repository.

In scope

  • .ai/repo/project
  • lib
  • share
  • apps/majordomus-cli/src/plan.rs
  • docs
  • test/cases

Out of scope

  • OSCILLA itself: it is the evidence, read only
  • Fixes already in flight: #780-#784, fix/context-resolves-a-path-not-yet-created, #746 and 9030dc4795
  • Accepting any ADR these issues propose; acceptance is the owner's act

Proven when

  • Upgrading the tool over a layer written by the previous minor version yields a doctor report that names version skew and the migration command, not defects; proven by the case I1980 adds
  • A live use-case scenario may run a read-only subcommand of a command that also writes, and may not run a writing flag of a read-only command; proven by the case I1981 adds
  • Every issue of this milestone is DONE or CANCELLED with its reason

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.

adopter-upgrades · order 115 · p0

An adopting repository survives a Majordomus upgrade, and what the tool vendors into it is adopter-neutral

activeClose

Done
10 of 17
Blocked
2
Waits for
none
Blocked by
none
Unblocks
none
Serves
none

Critical path

  1. I1980
  2. I1982

Issues

IssueStatusPriorityWaveBlocked by
I1980A layer names the tool version it was written for, and doctor tells version skew from defectsreadyp00none
I1981A command's effect class is declared per subcommand and flag, and live scenarios judge the whole argvdonep00none
I1982Plan stamps written before seals existed are re-sealed by a command that keeps their original timesblockedp11I1980
I1983Upgrading the vendored rules reports or applies the policy and source keys those rules depend onblockedp11I1980
I1984Knowledge candidates never leave untracked files on a trunk that only pull requests changedonep10none
I1985A knowledge candidate relates to its own decision and commit, not to the whole episodereadyp21none
I1986The vendored rule package says nothing that is only true of this repositorydonep20none
I1987A knowledge record's file provenance survives the file's deletiondonep20none
I1988A use case's setup scripts live where the adopter declares, and its scenarios may run the adopter's own commandsreadyp21none
I1989init seeds a scope for the stack it finds, not for this repository'sdonep30none
I1990The pre-push check judges the refs being pushed, or says why the checkout's task binds themreadyp30none
I1991A comment-only edit of the policy regenerates no bootstrapdonep30none
I1996doctor does not fail an adopter on a check written for this repositorydonep20none
I1998A health command in an unsupervised repository does not exit 0donep20none
I1999A tracked file a hook regenerates does not refuse a task that never touched itreadyp20none
I2464A path that holds a space is one path to the scope doctrinedonep10none
I2491A personal layer changes nothing shared: init --personal and install.sh --personal keep the layer one person's own, verify it, and --shared hands it to the teamdonep10none

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.list271 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