I3160 — A behavioural case can be written as a Rust integration test over a disposable repository, and the continuity cases are the first ported
Add a typed fixture builder (disposable git repository, remote, fake clock, two checkouts) under apps/majordomus-cli/tests and port the continuity cases 821-827, whose behaviour is already Rust, with the same assertions, deleting the shell originals.
READY wave 0 · p2 · implementation profile · parallel safe
Part of automation — Repository automation is scripted capabilities over typed Rust, not shell.
Ready. Every dependency is done, so majordomus plan start I3160 will be accepted.
Objective
Add a typed fixture builder (disposable git repository, remote, fake clock, two checkouts) under apps/majordomus-cli/tests and port the continuity cases 821-827, whose behaviour is already Rust, with the same assertions, deleting the shell originals.
Why
Owner, 2026-10-12: port tests to Rust/Rhai. test/cases holds 527 shell files (ls test/cases | wc -l at 707a04c); shell cases share the defect classes ADR 0069 lists. This is harness maintenance: test/ is not governed by the automation inventory, so the port moves no class-A count and serves no criterion of repository-automation-is-typed. Sources: chatgpt-majordomus:c192#8, chatgpt-majordomus:c230#6.
Current state
apps/majordomus-cli/tests has Rust integration tests but no shared disposable-repository builder for behavioural cases.
Desired state
One builder and one family ported; coverage counted.
Scope
- test/cases/821_a_session_moves_between_machines.sh
- test/cases/822_a_dirty_handover_restores_context_not_source.sh
- test/cases/823_the_same_work_continued_twice_is_a_conflict.sh
- test/cases/824_separate_work_on_two_machines_is_not_a_conflict.sh
- test/cases/825_a_handover_published_offline_waits_for_its_remote.sh
- test/cases/826_a_handover_carrying_a_secret_is_not_published.sh
- test/cases/827_a_record_is_admitted_before_it_is_read.sh
- .ai/repo/ci/gates.yaml
Out of scope
- Cases whose subject is still shell (they wait for the cutover)
Dependencies
None. This issue is a root of the graph.
Acceptance criteria
- The seven cases pass as Rust tests and the shell files are gone
- CI runs them in the same job class
Validation
- cargo test --manifest-path apps/majordomus-cli/Cargo.toml --test continuity --test continuity_transfer
Evidence required
- test_continuity_cases_in_rust
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I3160.yaml. Read it back with majordomus plan show I3160.