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

I1108

The desired integration is a value, and the plan is a diff

Where it stands

devtask.issue
Readiness
blocked 1 of its dependencies is not DONE
Status
BLOCKED
Can start
not now
Milestone
Milestone status
ACTIVE
Wave
3
Waiting on
Holds back
Behind it in all
14
Evidence
0 of 3
In the waySubjectDetail
issueI1106I1106 is not DONE
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 I1108

majordomus plan verify I1108

majordomus plan done I1108

What it is

Objective
Compute what a repository's Majordomus integration should look like as a typed value, diff it against what the repository actually holds, and make the apply the smallest mutation that closes the gap.
Why
`init` that writes what it was written to write cannot be run twice, cannot be previewed, and cannot be undone. A desired state that is a value can be compared, shown before it is applied, and reversed.
Now
Initialisation writes a skeleton. Nothing computes what is missing, nothing reports what would change, and running it again is not a defined operation.
Wanted
One function produces the desired integration from the repository model, one produces the difference, and the apply consumes the difference — so a dry run is the same computation without the last step.
Done when
unknown: the record declares no `completion`
Risk
A reconciler that computes what a repository should look like will eventually be wrong about one. Everything it would do outside the two namespaces must be visible before it is done.

Acceptance

  • The desired integration is derived from the repository model, and a repository that already conforms produces an empty difference
  • The difference is a typed value that names every path it would create, modify or remove, and why
  • A dry run performs the same computation as an apply and mutates nothing
  • The apply performs exactly the difference and nothing else, proved by comparing the tree before and after against the plan
  • A mutation the plan did not name is a bug, and a test proves the apply cannot make one
Validation
majordomus init --dry-runcargo test --workspace --all-features
Evidence required
desired_state_typedplan_is_diffdry_run_mutates_nothing
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
apps/majordomus-cli/src/commands/init.rsapps/majordomus-cli/src/integration
Not
Applying anything the dry run did not showA desired state that depends on a configuration file rather than on the model
Depends on
Priority
p0
Profile
deep-work
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-09-06
Updated
2026-09-06
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.