Add the bitcoin-node machine to the template #26

Closed
opened 2026-10-11 16:53:59 +01:00 by vnprc-agent · 2 comments

Add bitcoin-node to the template's machines so a fork provisions the node profile with nothing to declare. Part of allod/strategy#68.

Primary goals:

  • The entry — type = "privacy", libvirt, 8 GB and 4 vCPUs, a 20 GB root disk, the next address and MAC in the template's sequence (192.0.2.13, 52:54:00:00:00:13), forge_key = null, repos = [ ], and a data_disk image under /var/lib/allod sized 40 GB, the way forge declares its own.
  • Generated specs in step — scripts/vm-specs.json regenerated, so provision-vm bitcoin-node finds the machine and attaches the disk.
  • Checks still green — the fact-mutation fixtures that build on machines give the new guest a host where a second hypervisor is declared, as forge needed.

Current state and specifics

The template ships allod-dev, privacy-1, forge and nexus. The node profile (allod/profiles#14) composes under the privacy archetype and mounts the data disk at the constant by-id path the hypervisor attaches; the inventory only has to declare the image. Sizing comes from a synced private node: chainstate 19 GB, filter index 13 GB, blocks under 1 GB.

Scope

In: flake.nix, scripts/vm-specs.json, the README's machine list. Out: the identity (allod/secrets, filed beside this), the profile, any switch to turn a template machine off (allod/strategy#67).

Add `bitcoin-node` to the template's machines so a fork provisions the node profile with nothing to declare. Part of allod/strategy#68. Primary goals: - **The entry** — `type = "privacy"`, libvirt, 8 GB and 4 vCPUs, a 20 GB root disk, the next address and MAC in the template's sequence (`192.0.2.13`, `52:54:00:00:00:13`), `forge_key = null`, `repos = [ ]`, and a `data_disk` image under `/var/lib/allod` sized 40 GB, the way `forge` declares its own. - **Generated specs in step** — `scripts/vm-specs.json` regenerated, so `provision-vm bitcoin-node` finds the machine and attaches the disk. - **Checks still green** — the fact-mutation fixtures that build on `machines` give the new guest a host where a second hypervisor is declared, as `forge` needed. ### Current state and specifics The template ships `allod-dev`, `privacy-1`, `forge` and `nexus`. The node profile (allod/profiles#14) composes under the `privacy` archetype and mounts the data disk at the constant by-id path the hypervisor attaches; the inventory only has to declare the image. Sizing comes from a synced private node: chainstate 19 GB, filter index 13 GB, blocks under 1 GB. ### Scope In: `flake.nix`, `scripts/vm-specs.json`, the README's machine list. Out: the identity (allod/secrets, filed beside this), the profile, any switch to turn a template machine off (allod/strategy#67).
Author

Implementation is ready on branch agent/bitcoin-node-machine at 1ecbf71, one commit, relayed to the owner for the pull request. Proposed PR body follows.


This declares bitcoin-node as the template's fourth guest, so a fork gets the pruned Bitcoin Core node (allod/profiles#14) by running provision-vm bitcoin-node on a fresh install. Nothing changes for the existing machines: their entries and generated specs are byte-identical, and the only new runtime effect is that new-vm will create a 40 GB image under /var/lib/allod when the node is provisioned, never before. What proves it is the repository's own gate (allod check .: all 9 steps, 7 checks built) and the full composition with the matching secrets and profiles branches substituted, recorded on allod/strategy#68. If it is wrong, revert the commit; until the identity in allod/secrets#45 lands beside it the framework refuses the entry at evaluation rather than building anything from it.

What changes

  • flake.nix: the bitcoin-node machine, type = "privacy", 8 GB, 4 vCPUs, 20 GB root, 192.0.2.13 / 52:54:00:00:00:13, no forge key, no repos, and data_disk = { path = "/var/lib/allod/bitcoin-node-data.img"; size_gb = 40; }, the shape forge uses. The two fact-mutation fixtures that require every guest to carry a host under a second hypervisor give it one, as forge needed.
  • scripts/vm-specs.json: regenerated.
  • README.md: the example-machines sentence.

Risk

R1: synthetic data in the template's addressing; a fork's bootstrap rewrites the address like the others. Rollback is a revert. The sizing is from a synced private node (chainstate 19 GB, filter index 13 GB, blocks under 1 GB); a fork that never hosts a node pays only evaluation until allod/strategy#67 gives it a switch.

Validation

  • allod check . on the branch: All 9 steps passed (checks: 7 built).
  • nix eval .#lib.machines --json | jq -c keys: ["allod-dev","bitcoin-node","forge","nexus","privacy-1"].
  • jq '."bitcoin-node"' scripts/vm-specs.json carries the data_disk.
  • Leak scan over the diff: only pre-existing allod-dev context lines.
  • No external reviewer (R1).

Part of allod/strategy#68. Closes allod/inventory#26.

Implementation is ready on branch `agent/bitcoin-node-machine` at `1ecbf71`, one commit, relayed to the owner for the pull request. Proposed PR body follows. --- This declares `bitcoin-node` as the template's fourth guest, so a fork gets the pruned Bitcoin Core node (allod/profiles#14) by running `provision-vm bitcoin-node` on a fresh install. Nothing changes for the existing machines: their entries and generated specs are byte-identical, and the only new runtime effect is that `new-vm` will create a 40 GB image under `/var/lib/allod` when the node is provisioned, never before. What proves it is the repository's own gate (`allod check .`: all 9 steps, 7 checks built) and the full composition with the matching secrets and profiles branches substituted, recorded on allod/strategy#68. If it is wrong, revert the commit; until the identity in allod/secrets#45 lands beside it the framework refuses the entry at evaluation rather than building anything from it. ## What changes - `flake.nix`: the `bitcoin-node` machine, `type = "privacy"`, 8 GB, 4 vCPUs, 20 GB root, `192.0.2.13` / `52:54:00:00:00:13`, no forge key, no repos, and `data_disk = { path = "/var/lib/allod/bitcoin-node-data.img"; size_gb = 40; }`, the shape `forge` uses. The two fact-mutation fixtures that require every guest to carry a `host` under a second hypervisor give it one, as `forge` needed. - `scripts/vm-specs.json`: regenerated. - `README.md`: the example-machines sentence. ## Risk R1: synthetic data in the template's addressing; a fork's bootstrap rewrites the address like the others. Rollback is a revert. The sizing is from a synced private node (chainstate 19 GB, filter index 13 GB, blocks under 1 GB); a fork that never hosts a node pays only evaluation until allod/strategy#67 gives it a switch. ## Validation - `allod check .` on the branch: `All 9 steps passed (checks: 7 built)`. - `nix eval .#lib.machines --json | jq -c keys`: `["allod-dev","bitcoin-node","forge","nexus","privacy-1"]`. - `jq '."bitcoin-node"' scripts/vm-specs.json` carries the `data_disk`. - Leak scan over the diff: only pre-existing `allod-dev` context lines. - No external reviewer (R1). Part of allod/strategy#68. Closes allod/inventory#26.
Member

Landed on master in commit e967b48: the bitcoin-node machine in flake.nix and scripts/vm-specs.json. Verified against the files on master today; closing as completed.

Landed on master in commit e967b48: the bitcoin-node machine in flake.nix and scripts/vm-specs.json. Verified against the files on master today; closing as completed.
allod-agent 2026-10-21 23:32:30 +01:00
  • closed this issue
  • removed the
    landed?
    label
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
allod/inventory#26
No description provided.