aspects: consume dendrite, delete the hand-rolled machinery (#27) #39

Open
agent.omo wants to merge 1 commit from tango/27-consume-dendrite into main
Contributor

Closes #27.

The resolver, registrar and graph builder are a library now (lar.ad/dendrite); flaky-mesh stops owning them and starts consuming them. One commit, based on current main (4cc81493).

What changes

  • dendrite flake inputgit+ssh://[email protected]/lar.ad/dendrite.git?ref=fastlane @ c36f971, nixpkgs.follows. The repo is private (https → 401) and main holds only the bootstrap commit — it is curated at tag time and no tag exists yet, so the pin follows fastlane.
  • modules/aspects/dendrite.nix (new) — the consumption wiring: dendrite's registrar flakeModule; this repo's 11-prefix kinds table with singular kind names (the shipped trait/aspect/registry/policy taxonomy is declined — this catalog predates it); the assembly switch; flake.lib.aspects.resolve under its public name; the graph output with a byte-identity overlay.
  • modules/aspects/fleet-checks.nix (new) — the checks that need the real catalog and cannot move to dendrite: shadow, foreign-enable, isolation, warning-budget, graph-errors, selection, membership-tests.
  • Deleted — the 7 extracted files (_resolve, _registrar, _graph, resolve, registrar, graph, checks) and the synthetic suites (tests/aspects/{registrar,resolver,poison,providers,graph}.nix + graph-synthetic.json), which dendrite now ships as its own checks.
  • Kept as slatedhosts.nix, parity.nix, compat.nix, _scans.nix, aspects-graph.nu.

Acceptance evidence (before/after, at this base)

  • dendrite is an input; the 7 extracted files deleted
  • flake.lib.aspects.resolve still resolves for every host — public name rewired to dendrite.lib.mkResolve; per-host resolution exercised by the graph and the kept aspects-selection check
  • Aspect graph output byte-identicalcmp on nix eval --json .#aspects.graph before/after: identical (23316 bytes)
  • nix flake check green — all checks passed; aspects-shadow passes against the existing fixture with no regeneration
  • No behaviour change for any host closure — all six toplevel drvPaths (bifrost, fenrisulfr, heimdallr, modron, odin, tamiel) bit-identical

Two decisions a reviewer should see

  1. The byte-identity overlay. Dendrite dropped this repo's two placeholder metrics (contracts, globals; its satisfiable is the same number only while contract is the sole satisfiable kind, and the old metric counted by kind name). dendrite.nix re-adds them over mkGraph's output with a named removal condition, and deliberately does not import flakeModules.graph so the overlay wraps the single graph definition. (Main's graph has no per-host traits placeholder — that was already cleaned by FM-AUDIT-10 — so the overlay is metrics-only.)
  2. Transport caveats, recorded in the flake.nix comment — the ssh/via-mesh transport dies with the mesh0 decommission (#32), and any CI builder evaluating this flake needs the forge ssh key.
Closes #27. The resolver, registrar and graph builder are a library now ([`lar.ad/dendrite`](https://jo.et0.pw/lar.ad/dendrite)); flaky-mesh stops owning them and starts consuming them. One commit, based on current `main` (`4cc81493`). ## What changes - **`dendrite` flake input** — `git+ssh://[email protected]/lar.ad/dendrite.git?ref=fastlane` @ `c36f971`, `nixpkgs.follows`. The repo is private (https → 401) and `main` holds only the bootstrap commit — it is curated at tag time and no tag exists yet, so the pin follows `fastlane`. - **`modules/aspects/dendrite.nix`** (new) — the consumption wiring: dendrite's registrar flakeModule; this repo's 11-prefix kinds table with singular kind names (the shipped trait/aspect/registry/policy taxonomy is **declined** — this catalog predates it); the `assembly` switch; `flake.lib.aspects.resolve` under its public name; the graph output with a byte-identity overlay. - **`modules/aspects/fleet-checks.nix`** (new) — the checks that need the *real* catalog and cannot move to dendrite: shadow, foreign-enable, isolation, warning-budget, graph-errors, selection, membership-tests. - **Deleted** — the 7 extracted files (`_resolve`, `_registrar`, `_graph`, `resolve`, `registrar`, `graph`, `checks`) and the synthetic suites (`tests/aspects/{registrar,resolver,poison,providers,graph}.nix` + `graph-synthetic.json`), which dendrite now ships as its own checks. - **Kept as slated** — `hosts.nix`, `parity.nix`, `compat.nix`, `_scans.nix`, `aspects-graph.nu`. ## Acceptance evidence (before/after, at this base) - [x] dendrite is an input; the 7 extracted files deleted - [x] `flake.lib.aspects.resolve` still resolves for every host — public name rewired to `dendrite.lib.mkResolve`; per-host resolution exercised by the graph and the kept `aspects-selection` check - [x] Aspect graph output **byte-identical** — `cmp` on `nix eval --json .#aspects.graph` before/after: identical (23316 bytes) - [x] `nix flake check` green — **all checks passed**; `aspects-shadow` passes against the existing fixture with **no regeneration** - [x] No behaviour change for any host closure — all six toplevel drvPaths (bifrost, fenrisulfr, heimdallr, modron, odin, tamiel) bit-identical ## Two decisions a reviewer should see 1. **The byte-identity overlay.** Dendrite dropped this repo's two placeholder metrics (`contracts`, `globals`; its `satisfiable` is the same number only while contract is the sole satisfiable kind, and the old metric counted by kind name). `dendrite.nix` re-adds them over `mkGraph`'s output with a named removal condition, and deliberately does **not** import `flakeModules.graph` so the overlay wraps the single graph definition. (Main's graph has no per-host `traits` placeholder — that was already cleaned by FM-AUDIT-10 — so the overlay is metrics-only.) 2. **Transport caveats, recorded in the flake.nix comment** — the ssh/via-mesh transport dies with the mesh0 decommission (#32), and any CI builder evaluating this flake needs the forge ssh key.
The resolver, registrar and graph builder are a library now
(lar.ad/dendrite); flaky-mesh stops owning them and starts consuming.

- flake input dendrite (git+ssh, ref=fastlane @ c36f971 — the repo is
  private and main is curated at tag time, no tag exists yet),
  nixpkgs.follows.
- modules/aspects/dendrite.nix wires the consumption: dendrite's
  registrar flakeModule, this repo's 11-prefix kinds table with
  singular names (the shipped trait/aspect/registry/policy taxonomy is
  declined — this catalog predates it), the assembly switch,
  flake.lib.aspects.resolve under its public name, and the graph output
  with a byte-identity overlay. The overlay re-adds only the two
  placeholder metrics dendrite dropped (contracts, globals); it has a
  named removal condition. flakeModules.graph is deliberately not
  imported so the overlay wraps the single graph definition.
- modules/aspects/fleet-checks.nix keeps the checks that need the real
  catalog and cannot move: shadow, foreign-enable, isolation,
  warning-budget, graph-errors, selection, membership-tests.
- Deleted: the 7 extracted files (_resolve, _registrar, _graph,
  resolve, registrar, graph, checks) and the synthetic suites
  (tests/aspects/{registrar,resolver,poison,providers,graph}.nix plus
  the graph-synthetic fixture) — dendrite ships those as its own
  checks.
- Kept as slated: hosts.nix, parity.nix, compat.nix, _scans.nix,
  aspects-graph.nu.

Verification (before/after, this parent):
- nix eval --json .#aspects.graph byte-identical (23316 bytes).
- All six host toplevel drvPaths identical.
- nix flake check green; aspects-shadow passes against the existing
  fixture with no regeneration.

Caveat carried in flake.nix: the ssh transport dies with the mesh0
decommission (#32), and any CI builder evaluating this flake needs the
forge ssh key.
Commenting is not possible because the repository is archived.
No description provided.