2026-08-13 - 2026-11-13
Overview
644 Pull requests merged by 3 users
Merged
#678 Bridge for G's take-in: an empty modules/mesh-build-go/buildstep package
Merged
#677 Milestone 47 G: mesh-catalog's part of the one release
Merged
#676 zfs: the module owns a node's ZFS and changes nothing unset; pacman declares its config before its package (issue 1979)
Merged
#674 zfs: the scheduled run names its minutes, so its timer starts (issue 1979)
Merged
#673 kernel: declare amd-ucode only (issue 1977, L10)
Merged
#672 kernel: microcode in every initramfs (issue 1977)
Merged
#671 systemd-resolved: the own resolver's file waits 3 s a try (issue 1748, ADR 0678)
Merged
#670 mesh-vault: secret_holders lists every record of the vault's store by name and fingerprint (issue 1409)
Merged
#669 node-uplink links answers each link's mac, master and parent (issue 1965)
Merged
#668 mesh-files: find writes the NUL itself, so a list or search through root runs at all (issue 1409)
Merged
#667 A step answer over the steps state's bound is kept without its taken versions, said, not lost
Merged
#666 The provisioner's retiring asks get a bounded id, and a refused one is said (issue 1966)
Merged
#665 node-files lists a place a secret is kept, entries without content, and stat says a missing path is missing (issue 1409)
Merged
#664 licences_switches answers switches carried from the old database with their licence and consumer (issue 1409)
Merged
#663 A check step that errors after its fetch merged still answers its fetch
Merged
#662 The licence manager is built of its parts, a manager and its tools, and the finished carry-over leaves (issue 1409)
Merged
#661 The licence manager counts room from the weekly window alone, so the switch finds a target (issue 1409)
Merged
#660 The licence manager declares its logs in the logs section, so they are issued and its carry-over can finish (issue 1409)
Merged
#659 The licence manager runs as its own account, so its own logs are issued to it and its carry-over can finish (issue 1409)
Merged
#658 systemd: serve kernel-log, the node's kernel log of this boot or an earlier one; journal refuses a boot (issue 1975)
Merged
#657 The licence manager keeps its data on the bus and switches licences by itself at 99% (issue 1409)
Merged
#656 Registry recovery: the bus module's list, show and orphans answer each binding (issue 1966)
Merged
#655 The Go fetch fails when its shut-off package load cannot run at all, naming the directory and go list's error (issue 1966)
Merged
#653 Fill gitea's pool keys in the provisioner client's gitea tests, which fail on main since 4becc7bd (issue 1966)
Merged
#654 The Go fetch takes zero-version requirements from the module graph and proves them with a shut-off load; mesh-build-image and -node name nodebuildgo (issue 1966)
Merged
#652 Play the config watch in the package seats' whole test, so the held callers list is proven (issue 1966)
Merged
#651 Review parts are asked one at a time: the node judges one at a time (issue 1966, quick fix)
Merged
#650 The condition keeper reads the node-engine's findings; claude-code's seat-list again answers the operator's sessions (issue 1966; group fix/1966-seat-list-unread)
Merged
#649 The build modules end a transport fault's run again, serve drop, and are held to the transport-fault classes (issue 1748; group fix/1748-transport-retry, merge last)
Merged
#648 The knowledge base's review knows its round: from round 3 only a wrong record asks changes, at round 5 the operator decides (issue 784)
Merged
#647 mesh-build-go reaches the forge's git when the public proxy is unreachable, and a network failure is no pin (issue 1966)
Merged
#646 Distribution and the forge hold their caller list from its config watch, not an ask per call (issue 1966; group with mesh-sdk)
Merged
#645 mesh-build-image names its copy wait's ownership mark nonce, so the state takes it and nats images are stored again (issue 1966)
Merged
#644 The bus module reads a consumer's counts and a stream's events, so a lost event can be traced
Merged
#643 The resolver module's tests hold its configuration's guards
Merged
#642 mesh-hand-acts answers bounded, newest first; mesh-healers seeds from a partial answer (issue 1966 S8, recovery)
Merged
#641 Sessions merge without a human approval: the hard rule keeps a branch and a pull request for every change
Merged
#640 mesh-build-go reads a compose ask's gzip-packed request (issue 1966, recovery; group with mesh-delivery)
Merged
#639 Gate record of mesh-catalog's forge-made merges (issue 1966, recovery)
Merged
#638 The provisioner keeps a provision while a module's newest composition is unread, and withdraws an ask once a key is needed again (issue 1966, recovery)
Merged
#637 distribution's program listens on 5100 and the registry container on 5001, so no mapping names the artifact store's port (issue 1966, recovery)
Merged
#636 The keeper's health reads the consumers it looks for (issue 1966, recovery)
Merged
#635 The bus keeper reads a bare stream's max-age-days "none" as kept for good (issue 1966, recovery)
Merged
#634 dnsmasq: the public upstream resolvers are settings, not fixed in the template
Merged
#633 Forge database pool caps are config values, and a changed value recreates the forge (issue 1966, recovery)
Merged
#632 Cap the forge's database pool at 40: the store's 100 connections are shared (issue 1966, recovery)
Merged
#631 Manifests name their packages by full module path (issue 1966, bootstrap recovery)
Merged
#630 The gate part reads no pull request description: no review-line wait before the Approve (ADR 0659)
Merged
#629 The gate asks the Approve at once while the check gates no merge, never waiting for a verdict (issue 1966)
Merged
#627 Take the Go package artifacts out of the delivery parts for now, so the running builder builds them (issue 1966)
Merged
#626 distribution's artifact-store alias names port 5100, where the store answers (issue 1966)
Merged
#625 distribution provides artifact-store again beside its new roles, for the running node-engines (issue 1966)
Merged
#612 Registry milestone: mesh-catalog (issue 1966)
Merged
#624 mesh-build-go's fetch downloads the module graph of each placed sibling Go module (issue 1921)
Merged
#622 mesh-build-go runs a checking program over a change's heads (issue 1921, B0)
Merged
#623 Progress reads only a design's head, so a long design never takes the progress view down (issue 1947)
Merged
#621 operator-channel.asks answers open asks within a bound when asked with no argument (issue 1974)
Merged
#620 knowledge-base get shows the findings of the pending version's reviews (issue 1970)
Merged
#619 mesh-build-go keeps a composer per the versions it was asked to build with (issue 1921)
Merged
#618 The Go build module takes a repository's own unpublished modules from its tree (issue 1921)
Merged
#617 The build modules build a folder module's packages at their paths and take a zero-version requirement from the ask (issue 1966)
Merged
#616 nfs-server: the look below a share runs beside the pass, so a long walk no longer fails its health (issue 1971)
Merged
#615 Gate reads the forge bridge's own messages and passes a group's end by; operator-channel.asks narrows its answer (issues 1585, 595; ADR 0633)
Merged
#613 mesh-build-go: a merge preview names a path and a path inside it (mesh-contracts' go), and a step's cause keeps the module Go could not find (issue 1966)
Merged
#611 mesh-knowledge: a closing is reviewed on its closing alone, a graduation on every became link it carries (issue 784)
Merged
#610 The knowledge base's close verb: a research effort graduates, is abandoned or parked as an idea, judged only on its closing (issue 784, ADR 0630)
Merged
#609 The knowledge base keeps the roadmap: a research effort can be an idea, and at most three are active (issue 1970, ADR 0629)
Merged
#608 A failed backup names its cause: nats's dump keeps the snapshot's exit status and the container's state, restic reports the tail of what a command printed (issue 1585)
Merged
#607 nats removes a push consumer; gitea, mesh-conditions, mesh-issues and messenger drop what named the removed controller (issue 1126)
Merged
#606 mesh-vault: read which modules of a machine the vault judges handed, and why, with own_handed (issue 1966)
Merged
#605 L3 final: core-credentials back, nats provides bus-state, artifact-store-tools calls the seat mesh-catalog, the old catalog module drops its claim (ADR 0614, ADR 0604, issue 774)
Merged
#604 L3 recovery: take core-credentials out of the bus's, the provisioner's and its client's manifests until the judge that knows it runs (issue 774, issue 1585)
Merged
#603 L3: a provider's have counts only from a build that offers the provision; the gate takes a merged message with no trees (ADR 0603 §5, issue 1367)
Merged
#602 The vault mints ledger accounts and keeps a machine's in node-tools' own secret ledgers (issue 1966, B1)
Merged
#601 cpu_top's process view cuts a rewritten title at its first space, so no argument reaches the answer
Merged
#600 disk-load's cpu_top names the processes inside one unit
Merged
#599 mesh-provisioner: never ask to retire access on an incomplete read
Merged
#598 sdk1: build modules, provisioner and checks follow ADR 0593
Merged
#597 mesh-build-go: a relative replace still resolves in the temporary modfile
Merged
#595 The vault makes the first credential of every new consumer, as the controller did (issue 1126)
Merged
#594 Modules without the controller: vault judges each sensitive caller, nox records its hand acts, provisioner binds ahead of the want (issue 1126 group B)
Merged
#593 nox works without the controller: each command calls the seat or tool that owns its job (issue 1126)
Merged
#592 Without the controller: the vault retires and rotates, the healers act, the artifact store is swept, config and conditions stand alone (issue 1126)
Merged
#591 The vault mints a joining node's token, account and certificate, and rotates a node's login over two; nox enrol open (issue 774)
Merged
#590 Modules stop depending on the controller before the lease write (issue 774)
Merged
#589 pacman's mirror list keeps a fallback tail; a failed check leads the merge ask's headline (ADR 0586, issues 1876, 1166)
Merged
#588 pacman keeps one mirror list for the mesh and reads each node's own packages; the provisioner composes once (ADR 0585, ADR 0565 §6, ADR 0570; issues 1876, 1953, 1954)
Merged
#587 Agree a toolchain by strict majority; a node on another version sits out (ADR 0584, issue 1578)
Merged
#586 Readers leave the controller: hand acts, packages, compare, provisioner on the watched reader (design 47 L5-L7)
Merged
#585 Catalog readers decode instead of judging; mesh-build-go builds against the asked package versions (ADR 0578, 0573 §2)
Merged
#584 disk-load watches the node-engine's data items instead of composing them, and each round says how far it got (ADR 0577)
Merged
#583 disk-load builds on the current mesh-sdk, so it accepts nats manifest again (issue 1952)
Merged
#582 The self-check judges D13 from watched state, findings are saved, and bus-upgrade-failed ends with the controller (issue 1952)
Merged
#581 The provisioner composes route contributions with the machine port (issue 774)
Merged
#580 Build mesh-build-go against the group mesh-sdk, so a manifest removing ASSIGNMENTS is accepted and the catalogue members of feat/072-moves build (issue 774)
Merged
#579 The vault the only issuer, placement read per node and module, hand acts copied once, routes only from the provisioner's plans (issue 774)
Merged
#578 The knowledge base retracts a wrong decision or clause on the operator's Approve, instead of adding a correcting record
Merged
#577 The gate takes away an ask once no delivery it covers can still merge by it (issue 774)
Merged
#576 The vault reads a machine's placement once per answer and says how long each answer took (issue 774)
Merged
#575 The provisioner says why a key stays asked when its provider reads no plans of the seat (issue 774)
Merged
#574 One rule for whether a plan hands its module, so no part reads a provisions-only plan as handed (issue 774)
Merged
#573 The vault answers a module's own secrets unless its plan hands it, not whenever a plan exists (issue 774)
Merged
#572 The provisioner follows the one rule for provisions, and the gate says a group's members when they change (issue 774)
Merged
#570 The provisioner client takes a plan with no templates as nothing to fill (issue 774)
Merged
#571 The provisioner reads a provider's outcome per offer, and modules subscribe before they wait, so gitea's credentials, routes and early events are not lost (issue 774)
Merged
#567 A catalogue check parses every manifest as the nodes do; mesh-provisioner holds a refused manifest alone (issue 774)
Merged
#566 Revert power's bar item attributes, which every node-engine refuses, so machines compose again (issue 774)
Merged
#565 The provisioner holds only a bad module, the vault keeps bus accounts by declaration, and silent faults from the release sweep speak up (issue 774)
Merged
#564 The provisioner client accepts credential form none through the mesh-sdk list (issue 774)
Merged
#563 Leave the engine's acts out of the bus tools' removals, so the bus's user list is composed again (issue 774)
Merged
#560 Design 47's last milestones: the keeper, self-check, healers, hand-acts, provisioner, vault, artifact sweep, disk readings, credential forms (issues 774, 1952, 1953, 1954, 1955)
Merged
#562 mesh-delivery-gate: an answer stands only for the ask it answers, so the approved release merges (issue 1730)
Merged
#561 Let the forge's sshd take a burst of connections from one build machine, so a check's parallel fetch is not dropped (issue 774)
Merged
#559 Pin the parse-only mesh-sdk in the build modules, so they build design 47's manifests (issue 774)
Merged
#558 mesh-config: read config declarations from each placed module's own manifests on the bus, never from the controller (issue 1953)
Merged
#557 Revert L3: its node-engine removed every held module on novox, the bus server among them (issue 774)
Merged
#556 L3: mesh-vault mints, retires and signs; nats makes its certificate; messenger asks each engine (issue 774, ADR 0561), rebased onto L2
Merged
#555 mesh-delivery-gate asks the operator's Approve on a verdict only: the one-hour fallback goes (issue 1733)
Merged
#554 The Go, Node and image build modules watch their settings file and say a capacity of 0 in their health
Merged
#553 mesh-build-go's compose integration test gives its module one slot (issue 1126)
Merged
#552 No repository names a node: placement files, particulars and per-node build defaults go (issue 1126, delivery 2 of 2)
Merged
#551 power: its loop and boot tests run on a fake clock, so a busy build node cannot fail them (issue 1126)
Merged
#550 dnsmasq starts at boot: its drop-in no longer orders after a target the package orders it before (issue 1126)
Merged
#549 gitea: set any field of a branch's protection or a repository's settings, saying whether each trunk stays protected (issue 1126, ADR 0566)
Merged
#547 power: every reboot, poweroff and halt is bounded at 10 minutes (group fix/shutdown-bound, issue 1126)
Merged
#546 mesh-build-image: a node that cannot build here now stays healthy and says not eligible, so it never holds the delivery (issue 1126)
Merged
#545 mesh-vault: own answers a node within its bound — assignments from a watched mirror, one read per module, one synced record per answer (issue 1126)
Merged
#543 The kernel module loads tun at boot and keeps the running kernel's modules across an upgrade; mesh-build-image takes no ask where it cannot build (group fix/ace-tun)
Merged
#541 knowledge-base.progress takes since: what changed in the last hour; issue-tracker.changes says each issue's moves from what to what
Merged
#540 Retire the spelling catalogue in the words check, and refuse a compiled program anywhere in the repository (group words/catalog)
Merged
#539 gitea announces from the forge's events, not a poll: an edited base and a close are announced at once, one pass at start (issue 1422)
Merged
#537 Gate seeds a never-merged repository's trunk head and follows a retargeted base; gitea announces a retarget and sets a default branch and a pull request's base (issue 1422; group fix/1422-trunk-unknown)
Merged
#535 mesh-vault takes what runs of a node's own secret through move-in, on the node's ask (issue 1126 C4, group fix/1126-seed-same)
Merged
#536 messenger: say what waits in its burst window, and stop reporting a state failure that has passed (issue 1507)
Merged
#533 claude-code: render a 660 s timeout for the mesh console, so mesh_wait is not cut at a minute (issue 1871)
Merged
#530 mesh-delivery-gate: ask the operator's Approve only once the check has a verdict (issue 1733) — wait for its check before approving this one
Merged
#529 Take the placement files out again: every node composing its own fails (issue 1126, revert of #528) — approve now
Merged
#528 Seed the placement files a third time (issue 1126) — Approve ONLY after the lead says all four nodes answer 'same'
Merged
#527 Take the placement files out again: since the seed no delivery reaches any node (issue 1126, revert of #525)
Merged
#525 Seed the placement files again from what each node runs now (issue 1126, ADR 0549 §4) — Approve only after every node answers 'same'
Merged
#524 gitea: gitea_team_rights reads a forge team's members and units and a user's effective rights, read-only (issue 1563)
Merged
#523 mesh-build-go, mesh-build-node: a missing bubblewrap fails the sandbox proofs on a build node instead of skipping them (issue 1309)
Merged
#522 mesh-issues: cover a merged fix from the delivery view's reached head, not only its once-said event (issue 1950)
Merged
#521 Take the placement files out again, so every node returns to the controller's compositions (recovery, issue 1126)
Merged
#520 Seed the placement files from what each node runs today, so placement lives in the catalogue (issue 1126, ADR 0549 §4)
Merged
#517 The issue tracker learns the merge of a fix it never heard, so an old resolved issue no longer reads 'nothing heard from the delivery' (issue 1950)
Merged
#519 The placement check and the delivery gate read the group's mesh-sdk, so replicated seats pass and placement pull messages are read (issue 1126)
Merged
#518 Every build module clears at start what a previous process left running, held by the catalogue's check (issue 1890)
Merged
#516 Every build module runs the failure contract's conformance kit, and the catalogue refuses one that does not (issue 1901)
Merged
#515 Delivery records are true at the source: the gate keeps no state after the merge, and the issue tracker reads delivered from the view (issue 1280)
Merged
#514 The merge Approve says the check's real state, and is asked again when it passes or fails (issue 1733)
Merged
#513 A reads-outside marker lists what its tests read, so its package's check is reused until one of those files changes (issue 1936)
Merged
#505 The catalogue's placement files: listed at a merge and checked (issue 1126)
Merged
#512 The image build context is the module's own directory, so a Dockerfile in a subdirectory builds (issue 1703)
Merged
#511 The build modules size their capacity by CPU share and keep build hours (issues 1890, 1806)
Merged
#510 mesh-issues: a milestone or commit link moves no issue and keeps no worker current (issue 1781)
Merged
#509 Forge rights read as the user sees them; write-only grant for mesh-tools; progress answers in minimal detail (issues 1945, 1947)
Merged
#508 The catalogue's check uses the shared binary refusal, commit by commit (issue 1577)
Merged
#507 The catalogue's check refuses a compiled program under modules/, and main tracks none (issue 1577)
Merged
#506 Milestones are records in the issue tracker, and progress reads them (issue 1781)
Merged
#504 knowledge-base.progress: how far a design, milestone, issue or record has come, in one call (issue 1947)
Merged
#503 The mesh writes the repositories it delivers, and asks no Approve for a merge it cannot carry out (issue 1945)
Merged
#502 Image builds run their RUN steps on pasta, and every build failure keeps its real error (issue 1703)
Merged
#501 An approved group merges whole or not at all, and two groups never interleave in one repository (issue 1275)
Merged
#500 Every forge account the mesh's parts use reads every repository (the operator, 2026-10-26)
Merged
#499 Build modules size their steps from the node's build share once it is given (issue 1806, change A)
Merged
#498 mesh-build-go says which packages it cannot test here, and mesh-build-node's tests need the Node toolchain (issue 890, ADR 0552)
Merged
#497 pacman: the round and the history tools say in plain words what they answer
Merged
#496 Build modules end the steps a previous process left running, and serve build_<lang>_step_end (issue 1890)
Merged
#495 gitea: the tools' forge account reads every repository (the operator, 2026-10-26)
Merged
#494 Vault: adopt the hashes of bus accounts it holds no value for, handed sealed by the bus node (issue 1945, ADR 0550 clause 4)
Merged
#493 Gate: merge turns, a merge waits for a running check of its repository, merges on a carried verdict with no second ask (ADR 0548, issue 568)
Merged
#492 mesh-build-go: count skipped tests per package, so the checker keeps no pass that skipped (issue 890)
Merged
#491 mesh-build-node tests: never install a toolchain from the registry in the integration level; skip as NOT RUN when none is installed (issue 890)
Merged
#490 Desk channel: keep what was shown in memory while the store does not answer, so a clearing replaces the urgent notification (issue 384)
Merged
#489 Knowledge base: withdraw a clause's 'changed by' mark once no accepted record changes it (issue 466)
Merged
#488 Build modules: run every package's tests of a level, with a fixture of two failing packages (issue 1921)
Merged
#487 Vault: name a hash record's secret in a field called of, so the runtime keeps it (issue 1945)
Merged
#486 Vault: read own secrets' generations, and hash each bus account it is handed for the grants part (issue 1945, ADR 0547 clause 9)
Merged
#485 Build modules' step and toolchain lists read only the newest keys they answer, in parallel (issue 1827)
Merged
#484 mesh-provisioner-client: a module that leaves or is placed again asks the vault afresh (issue 1945)
Merged
#483 Gate: a merge learnt seconds late moves the trunk; and a setting check-gates-merge so the merge check can stop gating (operator 2026-10-25 22:56)
Merged
#482 mesh-provisioner-client: retry a refused write on the node-engine's wake and ask the vault again at once (issue 924)
Merged
#480 Gate: hand every member of an approved group in pin order, settle pull requests closed on the forge, and say a stopped pass as a condition (issue 1275)
Merged
#481 Build modules' steps live two days and their pause has a state of its own, so the steps bucket no longer fills (2026-10-25)
Merged
#479 Let the build modules follow their capacity on the bus, so a node raised from capacity 0 starts pulling (issue 1887)
Merged
#478 nextcloud: the module makes its own mesh-admin account right on a 401 and backs off on a refusal, so its shares poll stops being refused every minute (issue 1253)
Merged
#477 mesh-build-go: a package that fails without an assertion carries its real cause, never "PASS" (issue 1901)
Merged
#476 The provisioner client fills every module again when the socket returns and when its node's own composition moves (issue 1944)
Merged
#475 R6: the gate keeps only the merge's states; walk, plan and step code and their verbs go (issue 1946)
Merged
#473 R4g finish: mesh-build-go's compose job, the reads-outside marker in the digest, merge-check.sh gone (issues 1295, 1621-1623, 1935)
Merged
#472 gitea's forge-account reads the forge's own host key file before scanning its sshd, so a forge restart no longer refuses every forge account (issue 1939)
Merged
#474 The gate keeps a merge it hears before it holds its seat and catches source.main up when it does, so a missed merge no longer leaves the checker on an old trunk (issue 1726)
Merged
#471 gitea's watcher answers its handshake without waiting for the forge, so a slow forge at a tool-runner restart no longer kills its tools and events (issue 1726)
Merged
#470 mesh-build-go: lint the unit level's directories as many at once as its tests, so a large repository's check ends within its bound (issue 1930)
Merged
#469 mesh-mail-reader: read messenger's sent_on as a list, so an unchanged set of mails is signalled once, not every 160 s (issue 1926)
Merged
#466 mesh-build-go: a failed test keeps its last lines and its cause, not its first fifteen (issue 1901, with mesh-delivery)
Merged
#468 gitea: the checker's owed results are taken at once and written in the background, so the runner keeps the watch and every mesh/check reaches the forge (issue 1726)
Merged
#467 The build modules pin mesh-sdk's list-form level digest, so a check of a repository with a package named token ends (issue 1930, with mesh-sdk and mesh-delivery)
Merged
#465 mesh-build-go: build_go_test takes packages as a typed list too, so checks run again (issue 1925)
Merged
#464 R4g+R5 (mesh-catalog): the build modules pull asks, scripts become tests, build-agent references go (design 47)
Merged
#463 The forge module changes no repository's branch protection unless keep-main-rules is true (issue 1903)
Merged
#461 Move the gate's source.main for a merge heard only from the forge, so the checker judges on the trunk that is (issue 888)
Merged
#460 Checks under 5 minutes (mesh-build-go): siblings only in the digests that read them, selected dirs in a pool, a mirror and verify once, and a change judged by its own build module (issues 1896, 890, 1898; ADR 0535, 0536)
Merged
#462 Betterbird leaves the catalogue: the operator removed it from both desktops (issue 806)
Merged
#458 The build modules refuse every step and report unhealthy under a 20 GiB free-space floor, release workspaces, and sweep after 2 h (issues 1839 and 1894, ADR 0532)
Merged
#459 Make the catalogue's tests pass in the build sandbox, and give the integration level the installed Node toolchain read-only (issue 1891, ADR 0533)
Merged
#457 R4e (mesh-catalog): build modules push and narrow, the gate stops judging, gitea writes mesh/check from the checker's owed state, and the census fixes
Merged
#456 Make buildah's runtime directory before every buildah run, so mesh-build-image's health does not fail for want of it (issue 1884)
Merged
#455 Fill a module again when a node-engine returns after any failed fill, not only a missing socket (issue 1873)
Merged
#454 Let a run read from a node's pacman log never hold back a new upgrade, so the mesh can upgrade nodes at all (issue 1841)
Merged
#453 Give /var/lib/systemd and /var/lib/postgres back to their packages and keep the two modules' own files under /var/lib/mesh (issue 1873, delivery A)
Merged
#452 Keep the pacman keeper's state in a directory of its own, not in the package database's /var/lib/pacman (issue 1841)
Merged
#450 Upgrade the nodes one at a time on the bus, with a package record, a kernel hold, an after-upgrade check, a rollback and a fallback kernel (upgrade safety, issues 1840 and 1841)
Merged
#451 Let restic's thinning wait up to ten minutes for a held repository lock instead of failing at once (issue 620)
Merged
#449 only-office: stop declaring the old lib directory (issue 1854)
Merged
#448 only-office: keep its working directories under a root-only box (issue 1843)
Merged
#447 Ask a check the build queue lost again, and take a recheck from proposed when no check of its head is held (issue 1274)
Merged
#446 nextcloud: keep onlyoffice's jwt off argv, and re-check a failed connection every tick (issues 1831, 1832)
Merged
#445 Fetch a Go pin only a pull request carries from its pull head, so a group member pinning its mesh-sdk head builds (issue 1148)
Merged
#444 Hold a delivery's problem messages until it settles, and say a refusal only when its fresh check did not cure it (ADR 0505)
Merged
#443 Let nginx through only-office's lib directory, so OnlyOffice serves converted documents instead of answering 403 (issue 1837)
Merged
#442 A tool verifies the bus's snapshot, so an upgrade or a restore is checked without a docker exec (issue 1842)
Merged
#441 Refuse a node name of the mesh in the pacman and kernel modules (issue 1838)
Merged
#440 Pin only-office's secure-link secret, so OnlyOffice's signed download links verify across restarts (issue 1837)
Merged
#434 The bus runs its upstream image with the mesh's programs mounted (issues 1640, 1641, 1642, ADR 0480 §1-§3, §5, §6; ADR 0497 §5; ADR 0506)
Merged
#438 Join nextcloud to only-office through a document-server provision, so OnlyOffice opens documents again (issue 1830)
Merged
#437 Hold a config value for the pull request that introduces its key (issue 1826, ADR 0502)
Merged
#436 Give mesh-build-image the registry's address as the seat's reach (issue 1703)
Merged
#435 Add the image build module: buildah and mesh-build-image, rootless, publishing only from the trunk (issues 1702, 1703, 1704, 1707)
Merged
#433 Register the build and delivery modules as issue owners (issue 1815)
Merged
#432 Hold the Approve ask until a review names the head (issue 1803, ADR 0496)
Merged
#431 Leave the go.mod fixtures under testdata out of the build module's tests and digests (issue 1810)
Merged
#430 Add disk_folders to disk-load: which folders fill a disk (issue 1804)
Merged
#429 Start the gitea bundle's binds without awaiting them, so its handshake is answered (issue 1793)
Merged
#428 Bind the gitea bundle's event consumers again until they hold, so verdicts reach the forge (issue 1793)
Merged
#427 Make docker_volumes_remove_anonymous answer on a machine with over a thousand volumes (issue 1796)
Merged
#426 A delivery whose walk was folded into a batch follows that batch's walk and ends delivered (issue 1786)
Merged
#425 Add a tool that removes leftover anonymous docker volumes (issue 1796)
Merged
#423 The checker runs beside today's check: build modules merge and place siblings; with automx, provisioner and gate fixes
Merged
#424 Ask a group member's own repo-check when the group is held for it (issue 1792)
Merged
#422 Make minio's link-key secrets 40 characters and keep every mc argument's secret out of its errors (issue 1766)
Merged
#416 xterm: every resource a config value, today's values as defaults (issue 1656)
Merged
#421 Name the wait in the Stop hook's suggested calls, route adopt's counter reset through fsys, and stop writing empty counter files
Merged
#420 A session's wait list and the plugin's Stop hook, so a written-down wait is never left unwatched (ADR 0489, ADR 0490)
Merged
#417 Files go through the store: object-store links, node-files upload/download, a document converter, and brother printing a key, a path on any machine or a web link (design 60 F3, ADR 0468)
Merged
#419 Fill a delivery made from its verdict from its pull request's announcement, and say what it waits for (issue 1726)
Merged
#418 Read automx's rows in a mode its image's sqlite3 knows (issue 1630)
Merged
#415 Capture automx's live answers as fixtures and add a read-only tool for its database rows, before R4d replaces it (issue 1630)
Merged
#414 Pin gitea, keycloak, mesh-provisioner-client, postgres and route-adapter to a mesh-sdk commit on main, so a fresh go mod download resolves them once the feature branch goes (issue 1663)
Merged
#413 Pin mesh-provisioner, mesh-vault and rofi to a mesh-sdk commit on main, so a fresh go mod download (mesh-build-go's fetch) resolves them (issue 1659)
Merged
#412 Add netcheck_request: one HTTP request and its whole answer, so a service's live answers can be captured, refusing loopback, unspecified and link-local addresses (issue 1643)
Merged
#411 Read manifests that name shares: mesh-build-go and mesh-build-node take mesh-sdk 465beb4 (issue 1657)
Merged
#408 Pack archive artifacts in mesh-build-go, a module's directory or a pinned file, and refuse any path that leads out of the module through a link (issue 1589, ADR 0478 §1)
Merged
#410 Let the build modules answer their own step results and toolchains, so a fetch's workspace and a build's digest can be read (issue 1562, build-module half)
Merged
#409 Make dev-tools, lab and the build modules need the go and nodejs modules instead of declaring the toolchain packages, step B of issue 1573 (ADR 0477 §4)
Merged
#407 Apply a patch in the forge tool itself when the forge's diffpatch answers 500, so a patch whose context holds a non-ASCII character is taken (issue 1604)
Merged
#406 Add the go and nodejs modules that own the toolchain packages on a node, step A of issue 1573 (ADR 0477 §4)
Merged
#403 Build with the node's installed Go and Node, never a pinned or downloaded toolchain, so builds match what the nodes run (issue 1572, ADR 0477)
Merged
#405 End a stranded stop whose modules no merge can carry, so its alert clears instead of asking the operator for ever (issue 1581)
Merged
#404 Upgrade every node's packages on a Saturday 04:00 timer and make its outcome the pacman module's health, so the nodes stay on the same versions (issue 1574, ADR 0477)
Merged
#402 Propose mesh-issues' owners: mesh-config takes the SDK that reads names with digits as names (issue 1439)
Merged
#401 Declare scanner.scan's apart argument, so several tickets on the glass can be filed apart (issue 1528)
Merged
#400 Build Go modules with Go's own release of the recipe's version, so the distribution's build no longer makes the guard refuse (issue 1560, ADR 0476)
Merged
#399 Polish the brother module so the scanner and printer just work: long feeder scans, several tickets, joined glass pages, one-call print, certificate health
Merged
#398 Fill a module's files one by one, so a known secret's file is not held back by a template that waits (issue 1553)
Merged
#397 Mail reading: mesh-mail-reader notes each new mail, tells mail that matters on Telegram, and the mail page shows and corrects it (design 59 milestone 2)
Merged
#396 Send the scan request on one line so the Brother honours it, and scan from the feeder, both sides, into one PDF (issue 1452)
Merged
#395 Mark the build modules moved, so a machine assigned them composes before the forge serves their entry (issue 1537)
Merged
#392 Close every eSCL scan job brother opens, and say a busy scanner as busy (issue 1531)
Merged
#394 File a scan of any size: answer its parts in 128 KiB under the state's 256 KiB value limit, and end only a too-large answer at once (issue 1535)
Merged
#393 Let printer.settings say each setting's current value: the checked radio, a checkbox's state, the selected option (issue 1530)
Merged
#391 Name the build test's fixture manifest module.json.fixture, so no reader takes it for a module of the catalogue (issue 1527)
Merged
#389 The Go and the Node build modules, ssh-client on the SDK's key keeper, and gitea's read-only builder accounts (design 47 R4c-3)
Merged
#390 Start brother's admin login where the printer serves its form, and never leave a session open or post the password off https (issue 1514)
Merged
#388 Offer an open ask no channel has sent again on the minute tick: a stopped messenger loses its outbox (issue 1507)
Merged
#387 Let brother's printer-certificate pin several fingerprints: the printer serves an ECDSA and an RSA certificate (issue 1503)
Merged
#386 Make the messenger's hourly cap a setting, messages-per-hour: 100 by default, 0 turns the pause off (issue 1476)
Merged
#385 Let brother's scan-folder take an absolute path: mesh-config matches a pattern against the whole value (issue 1472)
Merged
#384 The brother module: one module for the Brother printer, holding the scanner and printer seats, scans kept in its bucket and printing over the broker (issue 1453, ADR 0467, ADR 0468)
Merged
#383 A scan module: scan the glass over eSCL, crop the document, file it as a PDF and announce it (issue 1440, ADR 0464)
Merged
#382 mesh-issues stops listening to the removed module's transition, which every controller merge check now refuses (issue 1406)
Merged
#381 Remove today's delivery module now that the gate holds its seat (design 47 R3e, issue 1351, ADR 0454)
Merged
#380 The gate takes over today's mesh-delivery: mesh-delivery-gate holds the seat, asks and merges through the parts, and today's module leaves (design 47 R3e, issues 1346-1351)
Merged
#379 Let a commit copy files from another repository on the forge, so a large move reaches the forge from any machine (issue 1365)
Merged
#378 Read the grant file on keycloak's moved path, so a consumer not moved gets its client (issue 1332)
Merged
#377 The mail web client: mesh-mail-web, and mesh-mail's views for it (design 59 milestone 1)
Merged
#376 Say a group member refused only because main moved a warning for ten minutes, urgent after (issue 1275 AC6, ADR 0442)
Merged
#375 Merge a group whole or not at all, and say loudly when it cannot (issues 1275, 1276)
Merged
#374 Give the forge bridge a merge commit's trees in one call, and each open pull request's head branch (design 47 R3c, issue 1234)
Merged
#373 Answer each gmail mail once when no folder is named, keeping archived mail (issue 1248)
Merged
#372 mail_search answers the operator's questions: optional words, filters by sender, recipient, cc, date, words, attachment, flags, thread and correspondents, ordered and grouped (issues 1228-1232)
Merged
#371 mesh-mail sends an approved mail from its own sender process, and tells a failed send once (ADR 0436, ADR 0438; issues 1172, 1193-1199)
Merged
#370 Keep two values of each issue in the tracker's bucket, since the log holds them all (issue 1221)
Merged
#369 The router takes a module's condition on the operator channel's one subject (design 47 R3b: issues 1217, 1218)
Merged
#368 Ask a refused merge again when its checks turn green on the forge (issue 1144)
Merged
#366 Write a provisioner client's files only on a change over the bus, never on a timer (issue 1129, ADR 0430)
Merged
#367 Register the repository mesh-delivery as an owner, so its issues can be located in it (issue 1133)
Merged
#365 A repository the gitea module makes refuses an administrator's merge past its checks (issue 1141)
Merged
#364 gitea fills repositories.json through the provisioner client, so an approved repositories value lands at once (issue 1128)
Merged
#363 The gitea module makes the organisation's repositories from its config, protected before any team reaches them; no tool creates in the organisation (issue 1124, ADR 0428)
Merged
#362 gitea_create_repo creates a repository in an organisation, saying the forge's refusal (issue 1124)
Merged
#361 mesh-delivery waits for nothing: a check is asked at once and a standing verdict adopted (issue 1115)
Merged
#360 A pull request at the same head as one closed unmerged takes its delivery over (issue 1114)
Merged
#359 mesh-delivery hears a pull request closed unmerged from the forge's own event (issue 1107)
Merged
#358 A group member refused for its own pending repo-check is asked its own check, not the composed one (issue 1049)
Merged
#357 Readers of the assignments skip an ended or pending one (design 47 milestone 5, issue 1098)
Merged
#356 A group approved together merges in one pass and goes out in one delivery plan (design 47 milestone 3 fix: issues 1049, 1082, 1047, 1083, 1079)
Merged
#355 Let a proposed record be withdrawn (issue 1081)
Merged
#353 mesh-delivery holds a delivery whose backup failed and release asks again; restic records a backup that cannot start (issues 1067, 1068)
Merged
#354 Tools to read the knowledge base and the issue tracker in fewer, smaller calls (issues 1064, 1069, 1070, 1071)
Merged
#352 No ready mark: the Approve is asked once the checks pass, and a group merges in one pass on its one Approve (issues 1022, 978)
Merged
#351 Run the integration-tagged tests in the merge check, before any test carries the tag (issue 895)
Merged
#349 Every directory says how it treats files it does not know, and the catalogue checks it (issue 1024)
Merged
#350 build-agent and route-proxy leave for mesh-controller (issue 1019, ADR 0420)
Merged
#348 mesh-delivery announces each merge with the Approve it merged on (issue 1025, ADR 0420)
Merged
#347 ssh-client's sweep keeps what ssh reads itself and linked key folders, and fails loudly (issue 1020, ADR 0417)
Merged
#346 ssh-client keeps ~/.ssh to what it knows: sweep every other path into a kept folder (issue 1017, ADR 0415)
Merged
#345 mesh-delivery acts on events and keeps each pull request's key; the forge's announcements carry a message id (issues 975, 976, design 47 milestone 2)
Merged
#344 One forge user, nox-agent, for every machine's agents' SSH pushes, each machine's key titled by machine (issue 991, ADR 0410)
Merged
#343 Give the forge an ssh name of its own, so it no longer merges with the operator's entry for its machine (issue 955, ADR 0409)
Merged
#342 Keep gitea's forge-account provider running when a watch is refused, so a later grant is picked up (issue 955)
Merged
#341 Let gitea's forge-account provider read the assignments it learns its consumers from (issue 955)
Merged
#340 Feature agents-write-git, step 2: git over SSH with a key made on each machine (issue 955)
Merged
#339 Serve postgres's consumers the port its server is published on, not the container's 5432 (issue 957)
Merged
#338 Feature agents-write-git, step 1: agents write with their own accounts, main stays closed, a merge into main waits for the operator (issues 948, 954)
Merged
#337 Feature providers-after-switch-on, step 1: providers answer after the switch-on (issues 923, 928, 849, 945, 825)
Merged
#336 Ask the plans again when the moved path starts before its runtime answers (issue 943)
Merged
#335 Say once after a restart that nothing waits, so an old retirement condition clears (issue 937)
Merged
#334 Keep serving the consumers postgres's grant file gives on its moved path (issue 937)
Merged
#333 Hold an ask no channel can carry now and offer it when one can (issue 926, ADR 0397)
Merged
#332 mesh-files holds node-files: file work on a node with trash, owned paths and an act log, no shell needed (issue 900, ADR 0394)
Merged
#331 mesh-delivery: mark-ready writes label then comment in the order the forge counts; a label awaiting its comment is not cleared (issue 913, issue 873)
Merged
#330 Feature 57 (config and provisioning): release the catalogue
Merged
#329 A delivering group says success on mesh/delivery-group, so its later members can merge (issue 902)
Merged
#328 Feature 57 (config and provisioning): the catalogue's modules into the release branch
Merged
#327 Put a group's composed check out of date when a member is rechecked (issue 867, ADR 0323 §6)
Merged
#326 mesh-mail: a send ask the operator channel can carry (issue 868)
Merged
#325 Group siblings: mesh-delivery names member heads; the forge re-pends and refuses on a sibling's move (issue 867, ADR 0382)
Merged
#324 mesh-mail-notifier asks its own machine's node-notifier (issue 865)
Merged
#323 The clipboard service waits for an older daemon's lock, and the history sees the daemon (hq issues 860, 862)
Merged
#322 mesh-mail-notifier: the watcher runs in its runtime, not a process that exits at once (issue 859)
Merged
#320 The clipboard keeps its history running and keeps it to itself (hq issues 743, 750)
Merged
#319 gitea_commit takes a large patch from a hash-checked spool file (issue 852)
Merged
#321 The kernel module's transparent-huge-pages defaults to madvise (hq issue 856, ADR 0381)
Merged
#318 An active research effort takes new versions, reviewed as proposals (hq issue 844)
Merged
#317 Mail seats: mesh-mail declares them, mesh-mail-notifier shows new mail, messenger tells (issues 800, 797)
Merged
#316 Mail and bus hardening: mesh-mail sends on Approve, desk prompt says what for, duplicate PR delivery, cpu_top (issues 790, 789, 783, 741, 811)
Merged
#315 mesh-mail: byte-bounded fetch, accounts only to granted callers, grants error kept, secret only stat'ed (hq issue 733)
Merged
#300 mesh-mail: the operator's mail accounts, watched and said on the bus — stage 1, own server read-only (hq ADR 0359)
Merged
#313 Read branch protection as the forge's administrator, so builds register again (issue 772, ADR 0375)
Merged
#311 Make the forge's tools act as an account of their own, not the administrator
Merged
#312 Give a rollout the word of a stopped delivery that waits for it (hq issue 753)
Merged
#310 Add the kernel module: transparent huge pages set per machine (hq issue 746, ADR 0369)
Merged
#309 Make the forge's webhook a system one, and say whether its events are heard (hq issue 729)
Merged
#308 Cover a failed or stopped delivery once a later finished walk contains it (hq issue 747)
Merged
#307 Let an agent's session run the TypeScript check outside the toolchain image (issue 742)
Merged
#306 Clear a forge token name held twice, and mint one process at a time (hq issue 740)
Merged
#304 Say every forge event on the bus through a signed system webhook (hq issue 729)
Merged
#301 Build build-agent and route-proxy without a build ID (hq issue 721)
Merged
#303 Merge a pull request marked ready at its head once its checks pass (issue 722)
Merged
#298 mesh-catalog: hear the build seat that builds now (hq issue 712)
Merged
#286 57/V1: mesh-vault in Go, holding secrets sealed and answering get sealed to the asker (issue 674)
Merged
#297 Give the build agent a judge cache of its own (issue 704, ADR 0358)
Merged
#299 An answered ask keeps its question whole, its answer below it (issue 714)
Merged
#296 mailu: declare its unhealthy urgent (hq ADR 0355 §5, issue 691)
Merged
#295 mailu: ban clients that try to log in on port 25 (hq issue 708)
Merged
#294 mailu: judge the smtp container by whether mail flows (hq issue 690)
Merged
#285 mailu: judge the front by SMTP and its certificate, not only its web health (hq issue 688)
Merged
#284 mailu: move the resolver to Mailu 2024.06.63, which follows the root key change (hq issue 687)
Merged
#291 57/K2: The list of predefined keys, and a merge check refusing a key removed while a module names it (issue 661)
Merged
#289 Five postgres consumers say which provision their check exercises (hq issue 145, to-be 48 Phase E)
Merged
#290 57/F2b: influxdb serves its org and bucket from its settings (issue 696)
Merged
#288 lab: name the base image's age, refuse a stale one, and rebuild it (issue 698)
Merged
#287 lab: a run whose suite proved nothing reads as failed, with its skips (issue 693)
Merged
#283 build-agent: declare busy, so a replaced agent finishes the check it runs (issue 594, hq ADR 0335)
Merged
#282 mesh-delivery: a closed pull request's check builds go, and a walk says what each build did (ADR 0350, issue 649)
Merged
#280 gitea serves the registry's public root; the lab trusts a tarball only there or at the forge's own origin (issue 624, ADR 0346)
Merged
#278 An ask reads at a glance on the phone: a headline, a summary and its points, the rest in a note (issues 383 and 639)
Merged
#281 Revert #277: no showmissed lock in betterbird's policy (issue 640)
Merged
#279 claude-code: the memory watch only notes a change, so it starts on a node with hundreds of files (issue 367)
Merged
#277 betterbird: a passed meeting's reminder does not come back at every Owl reload (issue 640)
Merged
#275 lab: name the package registry by the address it names itself by, so npm 12 installs locked @novox packages (issue 624)
Merged
#276 claude-code: a session's memory follows the operator to every node (issue 367, ADR 0343)
Merged
#274 lab: read the bound forge credential through the tools bundle's env, and check in a fresh directory each time (issue 624)
Merged
#272 lab: clone the forge with the credential the mesh binds and seals to the lab (issue 624)
Merged
#270 licence manager: say what moved a binding, why, and who asked (issue 625)
Merged
#269 dev-tools: give every node the toolchains to build and test the mesh's code (issue 626)
Merged
#268 lab: install each checkout where its lock file is, check out mesh-tools-go, and have lab_check catch both (issue 624)
Merged
#267 fail2ban: know the own-addresses list in the form fail2ban prints it (hq issue 238)
Merged
#266 fail2ban: never ban the operator's own addresses, and say a failure from one (hq issue 238, ADR 0339)
Merged
#265 Deliver a merge whose walk said its modules matched what runs, instead of stopping it as stranded (hq issue 611)
Merged
#264 A password, token or API key is the vault's, never a setting (hq issue 342)
Merged
#263 build-agent: the package registry is optional, and genesis hands it the forge it raised (hq issue 121, ADR 0336)
Merged
#262 betterbird: own Betterbird's whole configuration as settings, shown without a credential (hq issue 586, ADR 0329)
Merged
#259 Mark grafana's and home-assistant's soft requirements optional (hq issue 166, ADR 0330)
Merged
#261 lab: runs name the one genesis bundle (issue 146)
Merged
#252 Name the setting keys searxng, keycloak and betterbird files take (hq issue 168, ADR 0326)
Merged
#258 claude-code: a session asks the operator on Telegram and reads the answer by a key (issue 589, hq ADR 0332)
Merged
#257 Say how the build agent and the route proxy are ready (hq issue 544)
Merged
#250 mesh-issues: a fix's time from the move to fixing to delivered, and loud over its budget (issue 403, hq ADR 0313)
Merged
#256 betterbird: ship the operator's approved configuration, and show and fix drift from it (hq issue 345)
Merged
#255 A merged pull request is announced with its branch, so its delivery group is found (hq issue 578)
Merged
#254 gitea: announce every open pull request's new head, not only the newest 20 (hq issue 579)
Merged
#253 betterbird: lock the ask to be the default mail client off (hq issue 345)
Merged
#251 A verdict goes out of date when its trunk moves, and the merge tool refuses it (hq ADR 0323, issue 341)
Merged
#247 mesh-reads: a node's files and accounts read as an account that holds no secret (hq ADR 0310, issue 418)
Merged
#239 mesh-issues: a resolved issue ends its fix-stuck warning, and a closed issue's fix is never said stuck (hq issue 547)
Merged
#249 artifact-store-tools: an image a definition pins, under any name the store has had, is named by a definition (hq issue 323)
Merged
#240 betterbird: Betterbird from its pinned release, Owl by policy, accounts declared without credentials and adopted, and a reminder test that is visibly a test (hq issue 345, ADR 0316, ADR 0317)
Merged
#246 mesh-delivery: say how many owed effects were tried since the start (hq issue 407)
Merged
#245 mesh-knowledge: a record may change a drafted clause, and a record whose clauses others link by number is never redrafted (hq issue 494, ADR 0321)
Merged
#243 mesh-delivery: say an unanswered line's delivery state as data (hq issue 451)
Merged
#166 nats: say whether a user's grant is in force on the running server (review of hq issue 353)
Merged
#242 mesh-delivery: a stop a later merge covered reads covered, and stays in deliveries while stalled lists it (hq issue 480)
Merged
#241 messenger: a replaced ask's own message ends with it, and a cleared record owes nothing (hq issue 548)
Merged
#237 mesh-knowledge: the review asks changes for a decision nothing would cite, so its acceptance never turns the module unhealthy (hq issue 504)
Merged
#238 messenger: a walk's held messages are told only once its message was sent, handed on only as a first hold would take them, and its start and end compared on the controller's clock (hq issue 538)
Merged
#230 messenger: hold what a delivery walk touches, tell its end once, and say nothing again for a restart (hq ADR 0308, issues 532, 531)
Merged
#236 gitea forge bundle: the parent the forge used, protection rules as the forge matches them, size and time bounds, one HTTP client (issue 539)
Merged
#231 A module whose tests could not run fails the repository check (issue 385)
Merged
#234 gitea: a recheck's pending goes through the one writer of mesh/merge-gate (issue 456)
Merged
#235 mesh-knowledge: the bus test passes on any day (issue 540)
Merged
#233 gitea: an agent's commit on a branch of its own, and the reads around it (issue 375)
Merged
#229 mesh-delivery: give a waiting walk its word or say what holds it (issues 529, 362)
Merged
#228 mesh-issues: the issues are kept in the log changes, and the bucket is their fold (hq ADR 0300, issues 501, 502)
Merged
#227 Hold a leaf delivery to three minutes in times (hq ADR 0304 decision 4, issue 525)
Merged
#226 Read the tunnel through sudo where the tool runner is not root (hq issue 522)
Merged
#225 Show the tunnel's peers as each machine sees them, and say on the bus when they move (hq issue 522)
Merged
#221 mesh-delivery: a stop ends only its own change on a shared walk (hq issue 459, ADR 0299)
Merged
#224 restic: nothing declared has no overdue night; a count's age is judged by awake time (issue 489)
Merged
#223 mesh-issues: reserve's description says it asks the knowledge base (issue 493)
Merged
#222 mesh-knowledge, claude-code: a long record is reviewed within a bound sized to it, and a proposal waiting on its author leaves the module healthy (hq issue 508)
Merged
#219 mesh-knowledge: a review owed says when it is due, survives a restart, and its last try is told to the operator (hq issue 497)
Merged
#218 mesh-issues: take every condition key the controller raises and every delivery id mesh-delivery gives (hq issue 475)
Merged
#212 mesh-issues: say a delivered fix left in fixing, and flag an abandoned issue (hq issue 483, ADR 0294)
Merged
#215 restic: a backup taken by hand outlives the next thinning (hq issue 453)
Merged
#217 docker: the module's state is in the mesh's directory, never /var/lib/docker (hq issue 452)
Merged
#216 mesh-knowledge: the review is shown every link kind propose accepts, and a research effort's status apart from its state (hq issue 492)
Merged
#214 Nothing reads decision records from hq: records_decisions retired, reserve asks the knowledge base, an empty import refuses (hq issue 488)
Merged
#213 mesh-knowledge: the import keeps every field, takes clauses only from the Decision section's own list, and can repair what it held (hq issue 487)
Merged
#211 mesh-knowledge: the knowledge base reviews a proposal itself, and serves no review verb (hq issue 425)
Merged
#205 docker: log rotation is a preference, 100m × 10 by default, judged before daemon.json takes it (hq issue 452)
Merged
#210 restic: a failed backup, a failed thinning and a refused retention raise a condition (hq issue 454)
Merged
#209 mesh-knowledge: run watch as the account the health tool reads as (hq issue 479)
Merged
#208 mesh-delivery: a merge whose walk ended before its word is settled from that walk's record (hq issue 474)
Merged
#207 mesh-issues: record who acted as the caller the runtime proves (hq issue 365)
Merged
#206 mesh-knowledge: the knowledge base, first slice (hq issue 425, ADR 0290)
Merged
#204 mesh-issues: the tracker hands out decision and research numbers (hq issue 424)
Merged
#200 restic: the backup retention is a preference, today's 14/8/6 its default (hq issue 416, first half)
Merged
#203 mesh-delivery: a member after a superseded one waits while a later merge can carry it (hq issue 445)
Merged
#201 mesh-delivery: give an unanswered line's checks as data (issue 443)
Merged
#202 A pending merge check says where it is: in the build queue since when, then building on which machine (hq issue 446)
Merged
#199 mesh-delivery: say a ready or rejected delivery whose check has not answered on the forge (hq issue 441)
Merged
#198 mesh-cli: build on the SDK that reads the engine's refusal after a failed write (hq issue 444)
Merged
#197 mesh-delivery: a group whose members all ended ends, never delivering (hq issue 442)
Merged
#195 mesh-delivery: say a head whose merge check started and never answered (issue 438)
Merged
#196 mounts: list says an armed automount waits, not mounted (issue 437)
Merged
#194 mounts: list reads the root mount's unit (issue 374)
Merged
#193 gitea: a merge names the head it was reviewed at (issue 381)
Merged
#192 messenger: read a condition's message before it is sent (issue 422)
Merged
#190 mounts: an SMB source's username in its sources entry, its password as its own one-line secret, and a missing one waits (issue 386, ADR 0283)
Merged
#191 Say in a condition's message which issue tracks it and where it stands (issue 400)
Merged
#189 mesh-issues: an issue says who works on it, and resolves only from fixing (hq issue 399)
Merged
#188 mesh-delivery: delivery time per delivery and the times verb (hq ADR 0282 slice 1, issue 382)
Merged
#187 mesh-delivery: write a delivery only when it changed (hq issue 326)
Merged
#186 mesh-issues: a verdict naming issue 0 is none, and the tracker's own module is a registered owner (issue 396)
Merged
#185 mesh-issues: an issue knows whether its fix is delivered, says it ready to verify, and a fix stuck after its merge is said (hq ADR 0281)
Merged
#184 mesh-issues: triage every new issue — severity, needs, suggested owner, dependencies — and ready when what it depends on is delivered (hq ADR 0279)
Merged
#161 dnsmasq answers or is restarted, binds once; tools for DNS, sockets and the runtime's memory (hq issue 348)
Merged
#183 mesh-issues: the duplicate check on every new issue, and groom for the backlog; claude-code: claude_code_judge (hq ADR 0278)
Merged
#182 A channel shows nothing from its memory after a restart; the router says again what is still open (issue 384)
Merged
#180 mesh-issues: import hq's issue folders at their own numbers (hq ADR 0275, to-be 53 slice 3)
Merged
#179 mounts: the SMB login is typed as one line at the desk's prompt (issue 379)
Merged
#177 rofi: the desk's secret prompt names who asked (hq ADR 0277)
Merged
#176 One message per problem: a reminder replaces, a blip says nothing (issues 373 and 369)
Merged
#175 messenger, telegram: a tap shows at once what it did, and the question changes to its outcome (issue 372)
Merged
#174 messenger: every message still shown keeps its own Details (issue 371)
Merged
#173 claude-code: leave the judging of a proposal's channel to the router, and hear its refusal (issue 370, hq ADR 0274)
Merged
#171 mesh-delivery: a walk answers every merge it contains, never an ended delivery (hq issue 362, ADR 0276)
Merged
#172 mesh-issues: the issue tracker, so an issue's number comes from one counter no two openers share (hq ADR 0275, to-be 53 slice 1)
Merged
#170 claude-code: an agent proposes a shared instruction section, and every node takes it only on the operator's warrant (hq ADR 0274)
Merged
#169 route-proxy and build-agent name the package they compile; a rename is said under both names (hq ADR 0267, issue 363)
Merged
#167 dunst: a tap chooses a notification's action (hq issue 360)
Merged
#168 claude-code: claude in the operator's zsh starts the agent's session where the machine names an agent account (hq ADR 0266)
Merged
#141 claude-code: declare the account agents run as and claude-agent (hq ADR 0266)
Merged
#165 Refuse a daemon's line in what a module shows: the operator types nox (hq ADR 0272, issue 356)
Merged
#164 mesh-cli: carry what a pipe or a file gives standard input, for the controller's terminal (hq ADR 0259 §10, ADR 0272)
Merged
#134 telegram and desk-channel: channels of their own (hq ADR 0259)
Merged
#135 rofi: node-launcher's hidden prompt, answered sealed to the asker (hq ADR 0259 §10)
Merged
#163 mesh-delivery: cover a held merge whose module a backlog walk carried to every machine (hq issue 351)
Merged
#142 nfs-server: check every share against where the backup seat keeps its data, on every pass (review follow-up of #136)
Merged
#162 mounts: never leave a failed mount unit when a source is away, or the failure of a unit it takes over (hq ADR 0263 rules 4 and 6)
Merged
#160 mesh-cli at go/v0.1.9, and the unannounced pull request's number (hq ADR 0272, issue 347)
Merged
#153 gitea: the forge's tools never weaken protection or merge past the checks (hq ADR 0266 §7, route B)
Merged
#159 Announce a pull request opened after its push, and say one nobody checks (hq issue 347)
Merged
#156 mesh-cli: the operator's command on every node, nox in zsh (hq ADR 0272)
Merged
#154 xorg: list the server's windows, and cut a window's screenshot from the screen (hq issue 345)
Merged
#157 picom: the backend and damage tracking are each machine's settings (hq issue 345)
Merged
#155 betterbird: a module for the mail and calendar client (hq issue 345)
Merged
#158 xdg: keep the folders file trusted, so only the terminal sets the folders (hq issue 346)
Merged
#149 claude-code: refuse registering what a session runs (hq issue 340)
Merged
#150 mesh-delivery: end a merge that moves nothing or that a later merge delivered, and lift a group hold its check answered (hq issues 319, 316)
Merged
#151 The catalogue's check type-checks and tests every touched TypeScript module
Merged
#147 zfs: the safety review's fixes, and the module owns the pool's scrub schedule
Merged
#148 Issue 339: dunst's and xdg's files say nothing trusts their settings ("trusted": false)
Merged
#145 zsh: let a machine withhold node-login-shell's execute (hq ADR 0268)
Merged
#146 zfs: the mesh sees the home server's pools and datasets, and takes a named snapshot
Merged
#143 postgres: the store's reader reads only what a module declares readable, never a secret (hq issue 337)
Merged
#144 dunst: reload the running notifier when the mesh rewrites its file
Merged
#136 nfs-server and mounts: share one folder at a time over the private network, mount it on demand (hq ADR 0263)
Merged
#139 nats: say who opens and closes connections to the bus, and why each closed (hq issue 327, ADR 0265)
Merged
#132 dunst: make the font size and width settings, defaulting to today's values (hq ADR 0262)
Merged
#138 Serve unlink-dangling in the systemd module (hq issue 332)
Merged
#137 Serve reset-failed and wanted-by in the systemd module (hq issue 332)
Merged
#127 The bar renders contributed blocks; the power module gives it the battery and power draw (hq ADR 0255)
Merged
#128 gitea: read npm lockfiles of every version and measure every version's size
Merged
#130 artifact-store-tools: a platform manifest is its index's; list unrecorded copies of upstream images (hq ADR 0257)
Merged
#129 sensors: read the machine's hardware condition on every machine (hq ADR 0256)
Merged
#131 messenger and dunst: only acknowledgements from a desk click, one-time answer tokens (hq ADR 0258, issue 324)
Merged
#126 messenger and dunst: plain notifications that say whether you are needed, and take the answer from the desk (hq ADR 0253, issue 320)
Merged
#124 gitea: npm package retention — keep what is named and the newest five (hq ADR 0251 §4)
Merged
#123 artifact-store-tools: say what the artifact store holds and what the records name (hq ADR 0251)
Merged
#122 docker: remove images no container or declaration uses, keeping the previous (hq ADR 0251 §5)
Merged
#125 Declare the operator's account in the openrazer group (hq ADR 0252, issue 247)
Merged
#121 mesh-delivery: retire history instead of holding it; end owed work the forge cannot do (hq issue 313)
Merged
#119 mesh-delivery: say which order rule won, and how to end a contradiction (hq issue 309)
Merged
#120 Add disk-load: a machine's iowait, disk load and who does the I/O (hq issue 312)
Merged
#118 Put the merge check back to pending before a recheck asks it (hq issue 305)
Merged
#117 minio: cite the derived-value record as ADR 0202, not 0201
Merged
#115 records: list the decision records by topic when asked (hq ADR 0248)
Merged
#105 systemd: the journal verb reads a window, and failed is the seat's verb
Merged
#107 Serve the uplink seat's verbs from both of its holders (hq ADR 0241 rule 8)
Merged
#114 forticlient: hand the client's resolver file to the machine's own resolver (hq ADR 0247)
Merged
#113 systemd-resolved: a machine's own resolver, routing a VPN's domains by link (hq ADR 0247)
Merged
#112 checks/words: a retired word's plural is the word (hq ADR 0244)
Merged
#110 claude-code: an "instead of" table and a guard on the agent's shell (hq ADR 0245)
Merged
#109 Answer what the mesh's checks said of a pull request: mesh-delivery's checks verb (hq ADR 0239)
Merged
#111 Hold what the tools say to the glossary's retired words (hq ADR 0244)
Merged
#106 mailu records rather than rolls out: people's mail, whose containers are recreated together (hq issue 295, ADR 0242)
Merged
#108 claude-code: read and remove the person's own home items through the mesh
Merged
#104 Say how the first twenty-three long-running resources are ready (hq ADR 0240, to-be 48 Phase E)
Merged
#103 Keep the count of long-running resources without health, and let it only go down (hq ADR 0240 rule 8, to-be 48 Phase E)
Merged
#102 gitea: never set warning on the merge check's statuses; a required one blocks (hq issue 293)
Merged
#101 Ask the check of a delivery that waits for one nobody asked (hq issue 290)
Merged
#100 Keep secrets off command lines the runtime records (hq issue 282)
Merged
#99 mesh-delivery: the owner of deliveries and delivery groups; the forge's note, view and status tools (hq ADR 0239)
Merged
#98 gitea: graph-driven announce, both check statuses, the change plan, branch-protection tools (hq ADR 0238)
Merged
#97 Phase 5: check every pull request before it merges, and show the verdict on it (hq ADR 0237)
Merged
#96 gitea: say which changed directories hold a module at the merge commit (hq issue 278)
Merged
#93 Back up the bus by the server's own snapshot of each stream, not its live files (hq ADR 0235)
Merged
#95 Say which modules wait for a person's push; announce a merge's deleted files (hq ADR 0236)
Merged
#94 audit-logger, model-usage: retry a failed write and never lose the event (hq issue 276)
Merged
#92 Every module declares its data; the backup holder measures it (hq ADR 0233)
Merged
#84 Fold public-acme into route-proxy; drop dhcpcd and cloudflare-dns (hq ADR 0226)
Merged
#91 postgres, keycloak: retire a consumer, delete only on a person's word (hq ADR 0230)
Merged
#90 Brake a withdrawal larger than its bound (hq to-be 45 Phase 2, ADR 0227 rule 4)
Merged
#89 Mark the OpenAI keys letta and supabase hold as issued outside the mesh
Merged
#88 messenger: history is never news — read the open conditions first, coalesce bursts (hq issue 271)
Merged
#87 supabase: make logflare's stored key and backends follow its environment
Merged
#86 The operator-channel and the watcher's watcher (hq to-be 45 phase 1)
Merged
#85 supabase: keep logflare's API key out of its log (hq issue 268)
Merged
#83 State each provision's identity bound (hq issue 263, ADR 0225)
Merged
#82 letta: keep its passwords out of its log; docker: find and hide secrets a container printed (hq issue 268)
Merged
#81 nats: run 2.11.17, which hands a consumer with several filters every message (hq issue 266)
Merged
#80 keycloak: port to Go and repair a refused admin; providers announce a failing consumer
Merged
#78 Rename hosts to hostname, which also writes /etc/hostname (hq ADR 0223 part 3)
Merged
#77 Remove resolv-conf (hq ADR 0223 part 2, step 2 of 2)
Merged
#79 Uplink modules get short slugs (nm, networkd)
Merged
#76 Give /etc/resolv.conf to the uplink's holder (hq ADR 0223 part 2, step 1 of 2)
Merged
#75 postgres: port to Go, and install the extensions a consumer asks for (letta: vector)
Merged
#74 supabase: studio listens on every address, so its health check reaches it
Merged
#73 resolv-conf lists every mesh resolver and no public one (hq ADR 0223)
Merged
#72 docker: trust the mesh's registry from the runtime's own module (hq ADR 0222, issue 190 — 2 of 3)
Merged
#71 A machine's mesh name has no IPv6 address rather than no name (hq issue 262)
Merged
#70 Retire resolved-split-dns (hq ADR 0220)
Merged
#69 The mesh's one resolver, what every node asks, and a node's hosts file (hq ADR 0194, 0196, 0199)
Merged
#68 build-agent serves its seat's verbs: current, kill, pause, resume (hq ADR 0219)
Merged
#67 distribution: collect for real now that every kept archive is held (hq issue 253)
Merged
#66 gitea: a merge poll looks only at repositories that moved, one pass at a time (hq issue 250)
Merged
#65 systemd: port to Go, and read a system unit's journal as root (hq issue 255)
Merged
#64 records: port to Go, and keep the checkout in a directory it owns (hq issue 251)
Merged
#63 gitea: announce a merge once, and read every page of its changed files (hq issues 250, 252)
Merged
#62 URGENT distribution: the nightly collector dry-runs until every kept bundle is held (first run tonight 03:30)
Merged
#58 claude-code: say what a registration wrote here, whichever took it first
Merged
#60 Tray applets as modules: openrazer, polychromatic, forticlient, nm-applet
Merged
#61 Remove jetbrains-toolbox: the operator retired JetBrains
Merged
#59 Add slack and jetbrains-toolbox: one start each, the apps kept as found
Merged
#57 The store collects nightly again (hq ADR 0189)
Merged
#52 claude-code: register the agent's configuration at three scopes, served as the nox-mesh plugin (hq ADR 0216)
Merged
#56 restic: restore a single kept file, not only a directory
Merged
#55 restic: declare sqlite, the tool SQLite stores are copied with
Merged
#54 restic: ask as root whether a directory is there
Merged
#53 fail2ban: its tools in Go
Merged
#49 Back up every store: the restic module and the stores' contributions (hq ADR 0214, to-be 43)
Merged
#50 xdg: the account's folders and the machine's default applications
Merged
#51 dbus: hold node-message-bus, and never restart the bus live (hq ADR 0215)
Merged
#48 nextcloud-client and blueman: the two tray apps as modules, each with one start
Merged
#47 i3: other modules' lines are contributions to node-display-session (hq ADR 0212)
Merged
#46 power: a lock problem is no longer said once the lock is held
Merged
#45 Apply a binding that differs, and never repeat a generation a node passed (hq issue 243)
Merged
#44 A withdrawn consumer keeps its data, in every provider that holds some (hq issue 241)
Merged
#43 Pin the forge to the version the machine it replaces is running
Merged
#42 route-adapter: provide route by writing into the predecessor's proxy (hq ADR 0104)
Merged
#41 The store keeps the vector extension the predecessor's database had
Merged
#40 The forge's own address follows the port the node gave it (hq issue 088)
Merged
#39 The builder's package binding is settable per node (hq issue 085)
Merged
#38 Adoption mode: guards, and a filter unit that never flushes the ruleset (hq ADR 0100, 0103)
Merged
#37 n8n and baserow no longer take the shared cache (issue 081)
Merged
#36 redis: a consumer's ACL loses the dangerous category (issue 080)
Merged
#35 route-proxy: the trust gate names the binding it reads; the server names the gate (ADR 0099)
Merged
#34 Multiple fixes: five modules keep their secrets from the vault (ADR 0094), the authority makes its own root (076), the builder on the host network, route-proxy declares its bases
Merged
#33 The controller's manifest lives in the controller's repository, not here (hq issue 072)
Merged
#32 Six modules take their secrets from files; the rest say precisely why not (issue 041)
Merged
#31 The controller reads its credentials from files; every other env-file secret says why
Merged
#30 Add mesh-vault; redis, postgres and lavinmq take their passwords from files
Merged
#29 minio: pull image from quay.io (docker.io denies anonymous pulls)
Merged
#28 Correct lavinmq Dockerfile's stale MESH_TOOL_MODULES comment (061 review)
Merged
#27 The mesh builds its own catalogue (issue 060)
Merged
#26 Refs name the registry; lavinmq's runtime runs its provisioner (042/048/061)
Merged
#25 Foundation modules claim a mesh-scoped seat named after their server
Merged
#24 The adopted broker declares its amqps bus port (5671) in listens
Merged
#23 Foundation modules adopted, and the mesh-controller/foundation rename
Merged
#22 Modules compile in the toolchain and ship on the runtime
Merged
#21 The catalogue holds the module graph, and the modules that make it build themselves
Merged
#20 module fixes from the whole-mesh dry-run: fail2ban capability + tool-runtime credential wiring
Merged
#19 local model: an ollama provider + a local-model consumer (ADR 0055)
Merged
#18 openai-consumer: the static-key model-access consumer (ADR 0050)
Merged
#17 model-usage: the vendor-neutral usage store (ADR 0054)
Merged
#16 anthropic model-access: manager + consumer modules
Merged
#15 lavinmq: a user-facing AMQP provider (vhost-per-login)
Merged
#14 route-proxy: the native ingress module (drop traefik)
Merged
#13 fix: postgres consumers connect to the mesh-named db (the login), not a hardcoded name
Merged
#12 fix: DB/cache/store providers must serve their port (migration blocker)
Merged
#11 Convert confluence + jira on the tools-only template
Merged
#10 Convert gitlab — the tools-only external-SaaS exemplar (23 tools, lab-proven)
Merged
#9 Convert baserow, letta, invoicing (DB/S3 consumers)
Merged
#8 mosquitto: run-once dynsec bootstrap + fix the exit-0-on-failure provisioner
Merged
#7 Servarr events entrypoints don't crash the runtime when unconfigured
Merged
#6 Media modules access the shared library, they do not own it (ADR 0051)
Merged
#5 Resync hq ADR references (0044-0054 -> 0039-0049)
Merged
#4 Convert four more hal modules: bookshelf, unifi, fail2ban, marrytts
Merged
#3 Convert four hal modules: lidarr, mongodb, mssql, mosquitto
Merged
#2 audit-logger: the assigned-module manifest (ADR 0048)