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

I1982

Plan stamps written before seals existed are re-sealed by a command that keeps their original times

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
1
Waiting on
Holds back
none
Behind it in all
0
Evidence
0 of 2
In the waySubjectDetail
issueI1980I1980 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 I1982

majordomus plan verify I1982

majordomus plan done I1982

What it is

Objective
Provide a migration step (for example `plan seal --backfill`) that seals the stamps an older tool wrote, keeping each stamp's original time and recording who sealed it and when. Make the seal cutoff a per-repository value rather than one global constant.
Why
OSCILLA had to replay every plan transition with 0.12 to satisfy sealed stamps (34f967a), so its stamps now carry the replay time and the true times survive only in git. This repository excused its own pre-seal stamps by hand with unsealed_stamps (91080bd64f). SEALED_FROM = 2026-10-01T00:00:00Z is hard-coded in lib/project.awk:45 and apps/majordomus-cli/src/plan.rs:122, so a stamp a 0.11 tool wrote after that date can never be excused.
Now
No command seals or excuses existing stamps; both engines share a fixed cutoff.
Wanted
One command, run by `migrate --layer` from I1980, that seals or excuses every unsealed stamp with provenance and leaves the times unchanged. Both engines read the cutoff from the repository.
Done when
unknown: the record declares no `completion`
Risk
unknown: the record declares no `risk`

Acceptance

  • A fixture with stamps written before sealing passes plan validate after the backfill, with every stamp's time unchanged
  • Both engines agree on the cutoff read from the repository; case 582_the_done_guard_holds_in_both_engines still passes
Validation
bin/majordomus plan validateMJ_TEST_JOBS=4 bash test/run.sh <the case this issue adds>
Evidence required
reseal_keeps_times_casecutoff_per_repository
Evidence present
unknown: the record carries no `evidence` entries

Scope

Touches
lib/plan.shlib/project.awkapps/majordomus-cli/src/plan.rsdocs/PLANNING.mdtest/cases
Not
unknown: the record declares no `non_scope`
Depends on
Priority
p1
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-10-04
Updated
2026-10-04
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.