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

I1110

The second run changes nothing, and a test says so

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
5
Waiting on
Holds back
Behind it in all
4
Evidence
0 of 2
In the waySubjectDetail
issueI1109I1109 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 I1110

majordomus plan verify I1110

majordomus plan done I1110

What it is

Objective
Make reconciliation idempotent: running it against a conforming repository produces no change at all, and prove it with a test rather than with an observation.
Why
Idempotence is what separates a reconciler from a script that happens to run twice. It is also the cheapest possible regression test for the whole desired-state machinery: if the second run does something, the first one did something it could not describe.
Now
Initialisation is not idempotent and nothing measures whether it is.
Wanted
A second reconciliation reports zero changes, the working tree is byte-identical, and a test fails the moment that stops being true.
Done when
unknown: the record declares no `completion`
Risk
The easy way to pass this test is to make the second run do nothing on principle. The test has to distinguish a reconciler that found nothing to do from one that did not look.

Acceptance

  • Reconciling a conforming repository twice leaves the tree byte-identical, including every generated artifact
  • The second run reports no change rather than reporting changes it then does not make
  • The test covers a repository that was already adopted, one adopted by an older version, and one where a person edited a bridge
  • A deliberate divergence makes the test fail, proving it can
Validation
bash test/run.shmajordomus init --dry-run
Evidence required
second_run_emptynegative_test
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
test/cases
Not
Achieving stillness by making the second run skip work it should doIgnoring a difference because it is only in a generated file
Depends on
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-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.