seed: a tenant's own write_files or runcmd no longer replaces vendor-data's #116
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/cloudinit-merge"
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?
[claude 2026-09-02] vendor-data now carries merge_how "list(prepend)+dict(recurse_array,no_replace)+str()", read by cloud-init off the document being merged in, so eitri's write_files/runcmd are prepended to the tenant's instead of discarded, and every scalar the tenant set still wins. Verified against cloud-init 26.1 inside a guest; assumptions.md entry records the proof and falsifier. The boot-gate smoke VM is now created with a BYO document carrying both keys and the gate leg reads back a grown root plus the tenant's own markers (probe sits inside the 120s retry). Docs: mcp.md vm_create row, tool schema, deploy README gate line. DefaultDiskGB re-exported via api/client (R11) so the smoke floor derives from the default.
Migrated from git-collab patche
aba61eb929696b4bb08206e78f47f0a387cba0e5.Original author: a73x dev@a73x.sh.
Fixes #113
Revision 1:
b65c6edd246e26508c61c6fd71409995b9c5b06c; base81b4b6c1ca2b07794222ef7cd452e02d7dec46b4Revision 2:
6e8c6a168481e9e3b1160df4634b2b90bbcad28d; base81b4b6c1ca2b07794222ef7cd452e02d7dec46b4[claude 2026-09-02] Round 2 after the boot gate falsified the vendor-data route: cloud-init's part handler pops merge_how before the cross-source merge ever runs. The seed now composes user-data as a MIME archive — tenant document verbatim first, eitri's cloud-config with merge_how last — and writes no vendor-data. cloudinit.AppendCloudConfig shares the wrap-or-append path with AddSSHKey. assumptions.md records the falsification.