No reviewers
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!23
Loading…
Reference in a new issue
No description provided.
Delete branch "tango/ticket-sweep"
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?
Summary
This opens the existing
tango/ticket-sweepline as a Forgejo PR instead of owner-side tango promotion.The top eight commits close the agent-actionable tickets: #2, #10, #12, #13, #15, #16, #17, and #18. The branch is intentionally based on current
main(vrwnynyk/c68165287ac4), so the PR also shows the older stacked commits already below the sweep line.Stack
Verification already run
nix develop -c just checkpassed after the ticket sweep.aspects-shadowgreen after regeneratingtests/aspects/fixtures/shadow-hosts.json.mesh.identity.port = 9999moved firewall, listener, proxy, and verify URL together.Wiki companion material
Wiki publication is intentionally owner/Odin-only. The companion wiki commit is not pushed by this persona; it is attached to this PR as
wiki-comment-rule.patch.Local wiki commit:
33946fe wiki: comment-rule moves — mesh-dns history, operational traps, tombstones (2026-08-04)Patch SHA-256:
80a6431d6c2df6784ea5b1fe754912c62ddd911892a7ebe4a3cb32488f9b38b3Notes
tango/ticket-sweepwas pushed with--allow-empty-descriptionto preserve the existing stacked line exactly; commitqxwoxovuupznalready had an empty description.The target was "${node.ip}:${port}" and odin's registry address is a bare IPv6 ULA, so its target rendered unbracketed and was silently dropped — 12 targets declared, odin never scraped. Predates B1/B2. tamiel's drvPath moves (the scrape config content changes on the one host that renders it); bifrost stays byte-identical, verified. Co-Authored-By: Claude Fable 5 <[email protected]>`flake.aspects.assembly = "resolver"`: a host with a record now imports exactly its resolved closure plus the residual — modules with no catalog record yet, still broad-injected everywhere. The residual list is GENERATED (declared module ids minus catalog ids, ruling R3), surfaced as a `residual` metric (21 today) and one warning per unregistered id. The warning channel is made real in the pattern the tree already uses: per-code warning counts are pinned in a committed budget fixture that fails on a rise (naming the new subjects) AND on a fall ("lower the number") — a new warning costs one deliberate act. The brief's "promote residual to error at the end of C" is deliberately deferred behind that budget: 21 modules are legitimately unannotated while three hosts stay on compat, and a hard error today would just be red paint. Promotion to error is the endgame gate when the counter reaches zero. One residual module needed a defensive read to survive a roots-only host: victoria-whoami's guard forces `aspects.services.victoria.enable`, which a closure without the store no longer declares — now `or false`, and budgeted as a to-fix foreign-enable read (the honest conversion is a catalog record with `requires services/victoria`). Acceptance, measured: bifrost 2fv1qn8j… byte-identical compat vs resolver; tamiel vdibxlwi… byte-identical compat vs resolver (isolated from the v6-bracket commit by measuring both sides on top of it); heimdallr, fenrisulfr, modron untouched on compat; `nix flake check` clean. Co-Authored-By: Claude Fable 5 <[email protected]>recordType declared 21 fields; eight had zero users across the catalog: traits (with its 32-line traitType submodule and the per-host allow/unchecked override block in hostType), references, instantiable, publishes, visibility, stability, defaultImplementation and ownerWrites. Deleting defaultImplementation removes the resolver's fallback path: >1 providers with the host naming none is now always an ambiguous-implementation error, never a warned fallback. The testDefaultWarns case goes with it. Golden fixtures regenerated. BREAKING CHANGE: records can no longer declare the deleted fields; graph JSON host entries no longer carry "traits": {}.policies/identity exists so that "moving identity is one edit here", but the host running identity restated it as literals: the mesh firewall hole, Authelia's listener, the session cookie domain and authelia_url, plus the portal's loopback proxyPass the ticket's table didn't list. All five now read config.mesh.identity.*. Proven by eval: extendModules { mesh.identity.port = 9999; } moves the firewall hole, server.address, proxyPass and the derived verifyUrl together. All six hosts evaluate; just check passes. Left open (owner call, relates to #11): whether Authelia gets a services/authelia record — it is the one fleet service configured entirely ad hoc in a host file.Wiki companion patch attached: https://jo.et0.pw/attachments/5894a0e8-39c5-41ff-8a6a-23c0d25aa0ad
SHA-256:
80a6431d6c2df6784ea5b1fe754912c62ddd911892a7ebe4a3cb32488f9b38b3Empty-description commit rewrite is now tracked separately for owner sanction: #24.
Until #24 is approved, PR #23 preserves
qxwoxovuupzn/fa3c4dd5145bexactly as pushed.Transition clause (owner ruling, 2026-08-04): this PR — and teyla's modron PRs #14/#16/#17 — were dispatched hours before the forge-flow law was ratified (wiki "Forge Flow", law 13 landed 13:06 today; this PR opened 13:04). They merge owner-direct, grandfathered. The no-bounce doctrine applies to the process itself: the spec miss (no mold at dispatch time) is charged to who should have spoken earlier, not to the dispatched agents. The mold — fastlane base,
tango/<ticket>-<slug>naming, per-ticket PRs, non-author approval, steward merge — binds work dispatched after ratification. This clause is a boundary marker, not a precedent to reach for.After merge: the eight sweep tickets (#2, #10, #12, #13, #15, #16, #17, #18) will be closed with the merge commit cited, since this PR carries no
Closes #nlines.just checkis red #10implementations/hermesor rename it to an odin-only assembly #12policies/identityas four literals #13traits#18just checkis red #10implementations/hermesor rename it to an odin-only assembly #12policies/identityas four literals #13traits#18