Consume dendrite; delete the aspect machinery from modules/aspects #27
Labels
No labels
blocked
conflicted
curated
in-progress
in-review
needs-decision
No milestone
No project
No assignees
2 participants
Due date
No due date set.
Dependencies
No dependencies set
Reference
larandar/flaky-mesh#27
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
modules/aspects/holds 1213 lines of hand-rolled Dendritic machinery. It is being extracted tolar.ad/dendriteas a self-owned library, so it can be consumed byflake-ops(which independently reimplemented a weaker version of the same thing) and published tosr.ht/~larandar/dendrite.This ticket is the other half: flaky-mesh stops owning it and starts consuming it.
What moves
_resolve.nixchecks.nix_registrar.nixregistrar.nix/resolve.nix/graph.nix_graph.nixWhat stays, and why
All three have transitional intent already written into their own headers, which is a good sign the seam is in the right place:
hosts.nix(111) — estate host recordsparity.nix(107) — migration parity check, blocked on the ownercompat.nix(25) — the broad-injection bridge, with a named removal condition_scans.nix(61) — guards one specific flaky-mesh architecture bugThe estate is not currently one implementation
Three exist:
larandar.flakeuses theflake-aspectslibrary; this repo hand-rolled its own;flake-opsbuilt a third on 2026-08-05 before discovering the second. The principle is sound — flake-aspects is a flawed implementation of it, not the definition — and this repo's version is the corrected one, closing four of flake-aspects' known defects (cycle detection with a full path, deduplication viareasons, diagnostics instead of silent empties, readable identity via string IDs). That is why it is the version worth extracting.Acceptance
dendriteis an input;modules/aspects/{_resolve,_registrar,_graph,checks,registrar,resolve,graph}.nixdeletedflake.lib.aspects.resolvestill resolves for every host — the public name should survive the movejust checkgreenBlocked by dendrite#13.
Priority bumped by owner direction 2026-08-07.
The system is proven. The estate direction is audit + refactor + converge on flake-ops. This ticket is the first cut — it unblocks everything downstream by making flaky-mesh consume the library it built.
Dendrite#13 shipped. This ticket is unblocked and ready. Every day the hand-rolled resolver in
modules/aspects/diverges fromdendrite/lib/is debt against the extraction.Execute: make dendrite a flake input, delete the 7 extracted files, prove byte-identical graph output,
just checkgreen.Implemented. Evidence against every acceptance line:
modules/aspects/{_resolve,_registrar,_graph,checks,registrar,resolve,graph}.nixgone, plus the five synthetic suites and their fixture (tests/aspects/{registrar,resolver,poison,providers,graph}.nix,fixtures/graph-synthetic.json) — those live in dendrite's own checks now.flake.lib.aspects.resolvestill resolves for every host — public name rewired todendrite.lib.mkResolve(builtins.isFunction✓); per-host resolution exercised by the graph and the keptaspects-selectioncheck.cmponnix eval --json .#aspects.graphbefore/after: identical (21858 bytes).just checkgreen —nix flake checkall checks passed.New wiring:
modules/aspects/dendrite.nix(consumption: registrar flakeModule, this repo's 11-prefix kinds table with singular names — the shipped taxonomy is declined,assemblyswitch, the public resolve name, graph + renderer app) andmodules/aspects/fleet-checks.nix(the checks that need the real catalog and cannot move: shadow, foreign-enable, isolation, warning-budget, graph-errors, selection, membership-tests). Kept as slated:hosts.nix,parity.nix,compat.nix,_scans.nix.Three facts the owner should see:
traits = {}and thecontracts/globalsmetrics (itssatisfiablemetric is the same number only while contract is the sole satisfiable kind).dendrite.nixre-adds them overmkGraph's output with a named removal condition, rather than importingflakeModules.graph. The renderer (aspects-graph.nu) keeps matching.hosts.nixalready addedimplementations/forgejo-agentsto odin's roots;fixtures/shadow-hosts.jsonpredated it, soaspects-shadowwas already red. Regenerated from the byte-identical graph; no other check moved.fastlaneover ssh. The repo is private (https → 401) andmainholds only the bootstrap commit — it is curated at tag time and no tag exists. Input:git+ssh://[email protected]/lar.ad/dendrite.git?ref=fastlane@ c36f971,nixpkgs.follows. Two caveats recorded in the flake.nix comment: the transport dies with the mesh0 decommission (#32), and any CI builder evaluating this flake needs the forge ssh key.Work is staged on
@, not committed — VCS left to the owner.PR open: !39 —
tango/27-consume-dendrite→main, one commit, mergeable.Two corrections to my earlier comment, which was written against the stale local line (pre-rebase
stp), not againstmain:aspects-shadowpasses untouched. The PR carries no fixture churn.traits = {}placeholder (FM-AUDIT-10 removed it); the overlay re-adds only thecontracts/globalsmetrics.Verification re-run at the PR base (
4cc81493): graph byte-identical (23316 bytes), all six toplevel drvPaths identical,nix flake checkgreen.One housekeeping note for the owner: the default working copy (
qx) still holds the earlier staged version of this work (built on the old line) — it can be dropped; the PR is the canonical version.