Skip to content

Read Infrastructure Intent and generate the node contract from it #337

Open

Description

@ExtraToast

Parent

#324

What

Read Infrastructure Intent and generate the node contract from it (chapter 15, 0048):

  • the reader, schema and model: Infrastructure, one Cluster, Node, Gpu, Disk, Taint; E_UNKNOWN_SITE, E_DUPLICATE_NODE, E_RESERVE_EXCEEDS_TOTAL, and a schema refusal for a second cluster; the three codes come off the Implement the Stable Address, the derived Move and Infrastructure Intent #324 pending list in scripts/lint-codes.ts;
  • the document composed as an Intent Fragment, published by nix-config, the repository that owns the machines (chapter 15, confirmed by the maintainer 2026-10-27); nix-config gains the Publish Fragment workflow for it;
  • a worked Infrastructure document for the seven nodes chapter 60 enumerates;
  • the node contract generated from it, with labels under labelPrefix by the rule chapter 15 states; placement keeps reading the contract by digest;
  • the node facts decided since: a Gpu carries hard vendor and model (#355); a node dataset binds to its node and derives the pin (Decide how the model meets soft scheduling, spread, anti-affinity and parked replicas #355); the host-privileged Node Agents are derived from node facts through the Platform catalog, owned by the node project (#356);
  • REQ-034 moves its source to the document;
  • chapter 15's "Open in this chapter" item 1 closes.

The NixOS generator is not part of this ticket.

Lands in TypeScript only. emf/ stays frozen at mde-task-3 until #666 and is not edited. Regenerate the goldens it affects rather than dropping any, with the rendered-tree and diagnostics oracles, in one pull request.

Behaviour (draft ledger row)

An authored Infrastructure document parses, a node on an undeclared site, a duplicated node or a reserve above its totals is refused at the node, and the node contract generated from it publishes the facts placement reads.

Blocked by

1.0.0 (#379). It must land before the node handover (#659), so that node and data hand over on the Infrastructure document rather than migrating twice; it runs alongside the mail, utility and agents handovers.

Activity

  1. added
    type: featureNew user-facing or operator-facing capability.
    area: deployhomelab-deploy, deploy-v2, manifests, and rollout flow.
    component: configConfiguration schema, defaults, or repo settings.
    priority: P2Medium; normal planned work.
    status: blockedCannot move forward until an external dependency is resolved.
    on Oct 9, 2026
  2. ExtraToast commented on Oct 27, 2026

    @ExtraToast
    ContributorAuthor

    Resume here (2026-10-27)

    State: not started. The body was rewritten on 2026-10-27: its old plan ("after emf/ is deleted", "goldens dropped", blocked by #341) predates the freeze and is void.

    Next step: after 1.0.0, build the reader, schema, codes and generated node contract in TypeScript, then the nix-config side (its Publish Fragment workflow, as a nix-config ticket).

    Blocked by: 1.0.0 (#379). Must land before #659 (the node handover).

    Decisions (the maintainer, 2026-10-27):

    • TypeScript in deploy-kit, before the node handover, alongside mail, utility and agents; not deferred to estate-kit.
    • nix-config publishes the Infrastructure document as a fragment, per chapter 15.

    Gotchas: keep every golden EMF reads; regenerate, never delete. Never edit emf/.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: deployhomelab-deploy, deploy-v2, manifests, and rollout flow.component: configConfiguration schema, defaults, or repo settings.priority: P2Medium; normal planned work.status: blockedCannot move forward until an external dependency is resolved.type: featureNew user-facing or operator-facing capability.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions