bootstrap-vm: inject and refresh host-provided repos from the hypervisor #75
No reviewers
Labels
No labels
blocked
bug
decision
duplicate
enhancement
help wanted
invalid
landed?
question
ready-to-merge
stale
wontfix
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/nexus!75
Loading…
Reference in a new issue
No description provided.
Delete branch "agent/host-provided-repos"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A dev VM whose forge identity may not read one of its declared repos can now be provisioned:
bootstrap-vmleaves every id in the machine'shost_provided_reposout of the guest clone step and instead pushes the hypervisor's own checkout into the guest at~/work/<checkout>over the host SSH identity. For a machine without the marker nothing changes: the guest step builds the same triples and no host step runs. On a marked machine the guest copy is created withgit initand refreshed bygit pushintoreceive.denyCurrentBranch=updateInstead, so a guest tree with uncommitted changes, its own commits, or another branch checked out refuses the push loudly instead of being overwritten;verify-vm --repairreruns the same step. The guest copy carries noorigin, which is how guest tools recognise it (allod/tools#269). What proves it: 21 mocked bootstrap cases, including a real filesystem push that lands and then refuses on a dirtied guest file. If it is wrong, revert; a machine without the marker is untouched, and a marked machine's guest copy is disposable.Closes allod/nexus#73
Refs allod/strategy#62
The marker's name and rendering are allod/inventory#22; this script reads
host_provided_repos // []so either can land first.Risk
R3 by the walk: provisioning path and a cross-repo interface (the inventory key, the no-origin contract for tools). The worst credible failure after validation is a refused push on a marked machine, which names the guest path and leaves both copies as they were; a hypervisor checkout that is missing or detached is refused before the known_hosts write. Nothing here can touch an unmarked machine. Rollback is a straight revert. The live witness is the owner's
verify-vm --repair allod-devon the hypervisor once the deployment marks its fork.Validation
bash tests/bootstrap-orchestration.sh: 21 passed. New cases: host-provided id skipped from the guest triples and pushed by the host step with the expected URL and refspec; an id outsidereposand a missing hypervisor checkout both refused before any side effect; the guest prep script exercised directly with real git (fresh init with no remote and the config set; a plain directory nested in a parent repo, an existing remote, another branch and a dirty tree each refused; a clean rerun a no-op); one end-to-end push by filesystem path that lands and then is refused on a dirtied guest file.nix build .#checks.x86_64-linux.provisioning-contract: green (bash -n, shellcheck, every suite).allod check: all 12 steps passed..gitexistence test each failed their case; restored.SSHfindings and six comment items were fixed in the second commit; its untracked-files finding describes the chosen behavior, now stated in the docs.