Parent: #70
What to build
Add a two-machine smoke for the actual CodeMesh control-plane loop: machine identity, manifest entry files, bootstrap, hydration, and reconcile drift.
Use two isolated CodeMesh homes on the same host as the default fixture. Optionally allow a live GitHub manifest remote once the live lane is ready.
Acceptance criteria
- The smoke creates Machine A and Machine B with separate
CODEMESH_HOME, HOME, git config, machine ids, and workspace roots.
- Machine A registers a project and writes the expected manifest entry state.
- Machine B bootstraps from the manifest without cloning unrelated projects by default.
- Machine B hydrates one selected project and records provenance for remote, base, desired path, and machine id.
- Reconcile detects at least one deliberate drift case and prints a dry-run plan before any mutation.
- The case proves no source checkout from Machine A is reused by Machine B.
- The report includes both machine ids, manifest location, hydrated project id, drift summary, and cleanup status.
Blocked by
Cost guardrail
- Must stay free by default: two-machine smoke uses two isolated local CodeMesh homes on one host. Any live manifest remote uses public GitHub over HTTPS and SKIPs on unavailable free prerequisites.
Parent: #70
What to build
Add a two-machine smoke for the actual CodeMesh control-plane loop: machine identity, manifest entry files, bootstrap, hydration, and reconcile drift.
Use two isolated CodeMesh homes on the same host as the default fixture. Optionally allow a live GitHub manifest remote once the live lane is ready.
Acceptance criteria
CODEMESH_HOME,HOME, git config, machine ids, and workspace roots.Blocked by
Cost guardrail