diff --git a/.claude/skills/hq-amend-design/SKILL.md b/.claude/skills/hq-amend-design/SKILL.md index 5dc92f82..cbd24fcb 100644 --- a/.claude/skills/hq-amend-design/SKILL.md +++ b/.claude/skills/hq-amend-design/SKILL.md @@ -26,7 +26,9 @@ and says they disagree. 1. Write the decision record. If it reverses an earlier one, that record gets `status: superseded` and `superseded-by:` — its text is never edited. 2. Edit the design; set `updated:` to today. -3. If this came from an issue, set that issue's `amended-design:`. +3. If this came from an issue, give the issue the document in the issue tracker: `amended-design` on its + `issue-tracker.move` to `resolved`, or `issue-tracker.link` with kind `design` before then. Never in the + report's frontmatter (ADR 0275). ## Amending the as-is layer diff --git a/.claude/skills/hq-new-issue/SKILL.md b/.claude/skills/hq-new-issue/SKILL.md index 6ad91b83..4bd3bc42 100644 --- a/.claude/skills/hq-new-issue/SKILL.md +++ b/.claude/skills/hq-new-issue/SKILL.md @@ -52,7 +52,7 @@ Decide the shape first: then `# NNN. The title`, the title given to the tracker. **No status key**: the issue's status, owner and fix live in the tracker (ADR 0275), and `cycle.py` refuses `status:`, `located-in:`, `fixed-by:`, - `amended-design:`, `replay:` or `replay-none:` in a report opened after the import. Notes and links go to the + `amended-design:`, `replay:` or `replay-none:` in any report. Notes and links go to the tracker. 4. Write the symptom **as observed**, in plain terms, with the evidence that it happened. 5. Say why it matters beyond the instance. An issue that is only one occurrence is a knowledge diff --git a/.claude/skills/hq-status/SKILL.md b/.claude/skills/hq-status/SKILL.md index bcd3b4d4..34d56fa5 100644 --- a/.claude/skills/hq-status/SKILL.md +++ b/.claude/skills/hq-status/SKILL.md @@ -21,9 +21,8 @@ generated on demand and never written back to disk. ## Steps 1. Read the frontmatter block from every file above — a grep across each tree is enough, no - need to load bodies — and the issues from the tracker. The `status:` keys the reports numbered - 001 to 364 still carry are the import's snapshot of 2026-10-10 (ADR 0275), not where an issue - stands. + need to load bodies — and the issues from the tracker. An issue report carries no status; + where an issue stands is only in the tracker (ADR 0275). 2. Render what was asked as Markdown tables. Group and sort sensibly. The **ADR index** is one of these views, and it is the only place the list of records is shown ([ADR 0248](../../../02-DECISIONS/0248-the-decision-index-is-generated-when-it-is-read-and-never-stored.md)): diff --git a/00-META/checks/README.md b/00-META/checks/README.md index 525cbeca..e2f8d23d 100644 --- a/00-META/checks/README.md +++ b/00-META/checks/README.md @@ -55,14 +55,16 @@ whose failure has never been observed is a guess about its own correctness. ## cycle.py The development cycle, checked ([ADR 0080](../../02-DECISIONS/0080-the-development-cycle-is-checked.md)): -a to-be design names a decision, an in-progress/implemented design names its owning code, a -located/fixed issue names its owner, a fixed/resolved issue says what fixed it, a graduated +a to-be design names a decision, an in-progress/implemented design names its owning code, a graduated research overview says what it became, and no two issue records share a number (issue 155 — the number is how a record is cited, and `main` lags every open pull request, so two people reading it -allocate the same one). And a core issue — one opened from 2026-10-07 whose `located-in` names a core -repository — resolves only with `replay:` (an id in mesh-lab's replays register) or `replay-none:` saying -why none is possible ([ADR 0237](../../02-DECISIONS/0237-a-change-is-judged-against-the-mesh-that-runs-before-it-merges-on-the-build-seat.md)); -it failed on a resolved core issue carrying neither before it passed. And an accepted record that puts work +allocate the same one). An issue report carries the day it was `opened:` and no status key — `status:`, +`located-in:`, `fixed-by:`, `amended-design:`, `replay:`, `replay-none:` or `resolved:` — because an issue's +status lives in the issue tracker ([ADR 0275](../../02-DECISIONS/0275-the-mesh-numbers-and-tracks-its-issues-in-a-module-of-its-own-and-hq-keeps-only-the-narrative-of-a-design-or-governance-issue.md)); +it failed on all 361 reports that carried them before they were removed. The rules on an issue's status this +check held until then — an owner for a located issue, a fix for a resolved one, and a core issue's `replay` +or `replay-none` ([ADR 0237](../../02-DECISIONS/0237-a-change-is-judged-against-the-mesh-that-runs-before-it-merges-on-the-build-seat.md)) +— are refused at the write by `issue-tracker.move`. And an accepted record that puts work off — "until renamed", "left for later", "not decided here", "postponed", "future work", "deferred", "a later change" — names the issue that tracks it, as tracking it ("tracked by issue N", or "issue N tracks"), in that paragraph or list item, or in a dated progressive insight that speaks about it: one in the same section, or one diff --git a/00-META/checks/cycle.py b/00-META/checks/cycle.py index 04c293c2..34ab2dd8 100644 --- a/00-META/checks/cycle.py +++ b/00-META/checks/cycle.py @@ -17,10 +17,11 @@ What is enforced: tracker since the import of slice 3 (ADR 0275, to-be 53), where `issue-tracker.move` refuses at the write what this check refused at merge until then: a status outside the five, `located` without an owner, `resolved` without a fix, a core issue - resolved without its replay (ADR 0237), `wontfix` without a reason. A report opened - after the import carries none of those keys -- the tracker holds them, and two - places holding one fact drift. The reports opened before keep theirs as the dated - snapshot the import took; they are not judged, and not kept up to date. + resolved without its replay (ADR 0237), `wontfix` without a reason. A report + carries none of those keys, only the day it was `opened:` -- the tracker holds + them, and two places holding one fact drift. The keys the reports opened before + the import carried were removed once the import held them; the commit it read + is on every imported issue. research a known `status:`; a `graduated` overview says what it `became:`, and every target it names exists. decisions every accepted record is REACHABLE from the cycle: cited by a design doc's @@ -44,12 +45,10 @@ ROOT = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", "..")) DESIGN_STATUSES = {"proposed", "designed", "in-progress", "implemented", "abandoned"} RESEARCH_STATUSES = {"active", "graduated", "abandoned"} -# The keys an issue report carried while its status lived here, and the day from which a report carries -# none of them: the issue tracker holds them (ADR 0275, slice 3 of to-be 53), and `issue-tracker.move` -# enforces the cycle's rules on them at the write. A report opened on or after this day with one of these -# keys is a status written in two places. The reports opened before keep theirs as the import's snapshot. -STATUS_IN_TRACKER_FROM = "2026-10-11" -TRACKER_KEYS = ("status", "located-in", "fixed-by", "amended-design", "replay", "replay-none") +# The keys an issue report carried while its status lived here. The issue tracker holds them now (ADR 0275, +# slice 3 of to-be 53), and `issue-tracker.move` enforces the cycle's rules on them at the write. A report +# carrying one of them is a status written in two places, whenever it was opened. +TRACKER_KEYS = ("status", "located-in", "fixed-by", "amended-design", "replay", "replay-none", "resolved") # A decision that defers work names the issue that tracks it (issue 354). ADR 0244 left the code # renames of the node-engine and the tool runner "for a later rename", with no issue, owner or date; @@ -227,8 +226,8 @@ def main(): seen_records[number] = name # Since the import of slice 3 (ADR 0275), an issue's status, owner, fix and replay live in the issue - # tracker, and its `move` refuses at the write what this check refused at merge. A report opened from - # STATUS_IN_TRACKER_FROM carries none of those keys; one opened before keeps the import's snapshot. + # tracker, and its `move` refuses at the write what this check refused at merge. A report carries none + # of those keys. for path in sorted(glob.glob(os.path.join(ROOT, "04-ISSUES", "*", "00-report.md"))): front = frontmatter(path) if front is None: @@ -239,7 +238,7 @@ def main(): bad(path, "opened: says nothing -- the day the issue was opened, YYYY-MM-DD") continue carried = [key for key in TRACKER_KEYS if key in front] - if opened >= STATUS_IN_TRACKER_FROM and carried: + if carried: bad(path, "carries %s, but an issue's status, owner, fix and replay live in the issue tracker " "(ADR 0275): move it with `issue-tracker.move`, and keep no copy here" % ", ".join("`%s:`" % key for key in carried)) diff --git a/00-META/process/02-graduation.md b/00-META/process/02-graduation.md index 05db4aec..18cbc8cb 100644 --- a/00-META/process/02-graduation.md +++ b/00-META/process/02-graduation.md @@ -45,8 +45,10 @@ A design changes only through a decision. corrected in place and marked in the record rather than superseded ([`02-DECISIONS/README.md`](../../02-DECISIONS/README.md)). 2. Edit the to-be design document and set `updated:` to today. -3. If the amendment came from an issue, set that issue's `amended-design:` to the document - path. +3. If the amendment came from an issue, give the issue the document path in the issue tracker: + `amended-design` on its `issue-tracker.move` to `resolved`, or `issue-tracker.link` with kind + `design` before then — never in the report's frontmatter + ([ADR 0275](../../02-DECISIONS/0275-the-mesh-numbers-and-tracks-its-issues-in-a-module-of-its-own-and-hq-keeps-only-the-narrative-of-a-design-or-governance-issue.md)). ## When something ships diff --git a/00-META/process/03-issues.md b/00-META/process/03-issues.md index 3a86deb6..eebce869 100644 --- a/00-META/process/03-issues.md +++ b/00-META/process/03-issues.md @@ -38,12 +38,15 @@ An issue takes one of two shapes: reviewed in a pull request. The folder holds the report and the diagnosis; the tracker holds everything else. - **Wholly in the tracker** — every other issue. Nothing is written here. -**The reports written before the tracker** (the folders numbered 001 to 364) still carry `status:`, `located-in:`, -`fixed-by:`, `amended-design:`, `replay:` and `replay-none:` in their frontmatter. Those keys are the snapshot the -import of slice 3 took from `main` on the day it ran (the note in ADR 0275 says which day and which commit), and -they are not kept up to date: the tracker is. They are left in place because they are the record of what was known -then, reviewed in pull requests at the time, and because removing 361 keys would say nothing the tracker does not. -Nobody edits them. +**`04-ISSUES/` stays, for the narrative only.** It keeps the public narrative of a design or governance issue: the +symptom as observed, the diagnosis, what was ruled out, and why. A plain bug — a defect whose fix needs no design +question answered — needs no folder; it is whole in the tracker. + +**The reports written before the tracker** (the folders numbered 001 to 364) carried `status:`, `located-in:`, +`fixed-by:`, `amended-design:`, `replay:` and `replay-none:` in their frontmatter until the import of slice 3 had +taken them into the tracker and been checked against it, field by field; then one pull request removed them, so +that no status is held in two places. What they said that day is in this repository's history at the commit the +import read, which every imported issue names (`imported.commit` in `issue-tracker.get`). ## Steps @@ -64,8 +67,8 @@ Nobody edits them. Then `# NNN. The title`, the title as the tracker holds it, and the symptom as observed, as in the tracker's report. **No status key**: `cycle.py` refuses `status:`, `located-in:`, `fixed-by:`, `amended-design:`, - `replay:` or `replay-none:` in a report opened after the import, because the tracker holds them and two places - holding one fact drift. + `replay:` or `replay-none:` in any report, because the tracker holds them and two places holding one fact + drift. **An issue wholly in the tracker** is done at this step. 2. Investigate. The trail goes in `issue-tracker.note`, and, for a folder-backed issue, in `01-diagnosis.md` in the @@ -97,5 +100,5 @@ Nobody edits them. - **A rule states how it is checked.** The cycle's rules on an issue — a status one of the five, `located` with an owner, `resolved` with a fix, a core issue with its replay, `wontfix` with a reason — are refused at the write by `issue-tracker.move` (mesh-catalog `modules/mesh-issues`, its table test over the rules). `cycle.py` checks what - this repository still holds: no two folders share a number, every report has frontmatter, and a report opened - after the import carries no status key. + this repository still holds: no two folders share a number, every report has frontmatter with the day it was + `opened:`, and no report carries a status key. diff --git a/02-DECISIONS/0019-how-this-repository-works.md b/02-DECISIONS/0019-how-this-repository-works.md index ba78271c..1fe6e45e 100644 --- a/02-DECISIONS/0019-how-this-repository-works.md +++ b/02-DECISIONS/0019-how-this-repository-works.md @@ -124,6 +124,10 @@ decision records, issue reports. > numbers collided and statuses were hard to see. Research overviews, design documents and decision > records carry their state here as before. +> **Progressive insight — 2026-10-10, later.** The reports written before no longer keep their keys: once +> the import was checked against every folder, one pull request removed them (ADR 0275's last note), and +> `cycle.py` refuses a status key in any report. + **There are no central status files.** Every cross-cutting view — a status matrix, a decision index, an open-issue list — is generated from frontmatter when asked for, never written to disk. Two places holding one fact drift, and the written one wins by being closer to hand. diff --git a/02-DECISIONS/0080-the-development-cycle-is-checked.md b/02-DECISIONS/0080-the-development-cycle-is-checked.md index 8a295f3c..ee2f4bb2 100644 --- a/02-DECISIONS/0080-the-development-cycle-is-checked.md +++ b/02-DECISIONS/0080-the-development-cycle-is-checked.md @@ -56,6 +56,10 @@ The development cycle is enforced mechanically, to the extent frontmatter can ca > refuses a status key in a report opened after the import. The decision stands: the cycle is checked, > not trusted; which program checks each rule is a fact that moved. +> **Progressive insight — 2026-10-10, later.** `cycle.py` refuses a status key in any report, not only one +> opened after the import: the keys the older reports carried were removed once the import was checked +> against every folder (ADR 0275's last note). + [`00-META/checks/cycle.py`](../00-META/checks/cycle.py) refuses violations, beside `records.py` and `index.py`; all three run before any merge here. What frontmatter cannot see — that code work actually started from a handoff — remains held by playbooks 04 and 07: a feature branch exists diff --git a/02-DECISIONS/0275-the-mesh-numbers-and-tracks-its-issues-in-a-module-of-its-own-and-hq-keeps-only-the-narrative-of-a-design-or-governance-issue.md b/02-DECISIONS/0275-the-mesh-numbers-and-tracks-its-issues-in-a-module-of-its-own-and-hq-keeps-only-the-narrative-of-a-design-or-governance-issue.md index 32b6f6af..f0b69f70 100644 --- a/02-DECISIONS/0275-the-mesh-numbers-and-tracks-its-issues-in-a-module-of-its-own-and-hq-keeps-only-the-narrative-of-a-design-or-governance-issue.md +++ b/02-DECISIONS/0275-the-mesh-numbers-and-tracks-its-issues-in-a-module-of-its-own-and-hq-keeps-only-the-narrative-of-a-design-or-governance-issue.md @@ -154,6 +154,15 @@ along the way". > operator confirms before it is applied, done through `move`, `link` and `note` on the imported issues, not by > the import, which only ever creates. The decision stands as written. +> **Progressive insight — 2026-10-10, the status keys removed.** The insight above said the status keys stay in the +> reports as a dated snapshot. They did not stay: every folder was compared with `issue-tracker.get` after the import +> (status, `located-in`, `fixed-by`, `amended-design`, `replay`, `replay-none` and the closing day), no report had +> changed since the commit the import read, the tracker held every field the reports held, and one pull request then +> removed the keys from all 361 reports, as §8 decided. A snapshot kept in the reports was a second copy every reader +> had to be told not to believe; the record of what was known that day stays in this repository's history at that +> commit, which every imported issue names. `cycle.py` refuses a status key in any report, not only one opened after +> the import. The decision stands as written. + ## Consequences - Collisions end at the source: a number is taken from one counter, not read from a repository many branches write. diff --git a/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md b/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md index 8f59bb0a..c88c37d1 100644 --- a/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md +++ b/03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md @@ -664,7 +664,8 @@ replay covers what must not be done to it on purpose, and every rule keeps a liv - **Replays live where their incident is**: a component's logic in its repository as `TestReplay`, what the mesh runs (the bus's release, the resolver under musl and glibc) in mesh-lab's `replays/`, all named in its register and proved by `replays/cmd/prove`. A core issue opened from 2026-10-07 resolves only - with `replay:` or `replay-none:` (`cycle.py`). + with `replay` or `replay-none`, refused without one by the issue tracker's `move` (ADR 0275; `cycle.py` held it + until then). - **The controller's tests run a bus of their own per test**, linked in at the release the mesh runs and held to it by a test, so the suite runs in parallel and under the race detector. diff --git a/03-DESIGN/01-to-be/53-the-issue-tracker.md b/03-DESIGN/01-to-be/53-the-issue-tracker.md index e2f1a7ef..4371c8c6 100644 --- a/03-DESIGN/01-to-be/53-the-issue-tracker.md +++ b/03-DESIGN/01-to-be/53-the-issue-tracker.md @@ -145,7 +145,7 @@ the events sees a change as it happens. No event carries a secret, and an issue | `wontfix` | a reason | A refused move changes nothing and says which rule refused it. `cycle.py` checked the folders that carried status until -slice 3; since then it refuses a status key in a report opened after the import, and judges no issue's status. +slice 3; since then it refuses a status key in any report, and judges no issue's status. ## 6. How the operator and agents use it @@ -173,7 +173,7 @@ in one call, from any session, and the responder on a channel answers from it on |---|---|---| | 1 | The `mesh-issues` module: `open`, `get`, `list`, `move`, `note`, `link`; a counter by compare-and-set in the SDK; playbook 03 takes its numbers from it | an agent opens an issue and gets the next number; two agents opening at the same moment never get the same one | | 2 | Decision and research numbers from the tracker, each its own key in `counters`; a number is reserved when a branch starts | two agents writing a decision at once get two numbers, and no hq pull request is renumbered | -| 3 | `import`: every issue folder in hq read through the records module and written as an issue with its own number, idempotent and showing what it would change before it does (built 2026-10-10; the status keys stay in the reports as a dated snapshot, and one pull request changes playbook 03 and `cycle.py` and adds dated notes to ADR 0019, 0080 and 0275); then the four consolidation passes of research 042 (fixed, duplicates, owners, grouping; the duplicates pass is the duplicate check's `groom`, § 9, judged rather than by shared words), each a list confirmed before it is applied through `move`, `link` and `note`, and an audit of `fixed-by` against the forge | the not-closed list comes from one call and shrinks by what was already fixed or duplicated, each with its reason | +| 3 | `import`: every issue folder in hq read through the records module and written as an issue with its own number, idempotent and showing what it would change before it does (built and run 2026-10-10; one pull request changed playbook 03 and `cycle.py` and added dated notes to ADR 0019, 0080 and 0275, and once every folder was checked against the tracker a second removed the status keys from every report, as § 3 says); then the four consolidation passes of research 042 (fixed, duplicates, owners, grouping; the duplicates pass is the duplicate check's `groom`, § 9, judged rather than by shared words), each a list confirmed before it is applied through `move`, `link` and `note`, and an audit of `fixed-by` against the forge | the not-closed list comes from one call and shrinks by what was already fixed or duplicated, each with its reason | | 4 | Conditions and pull requests linked: an issue links a condition by its key and the controller shows the link; a merged pull request notes every issue it names; after a week of that, the controller opens one issue per `healer-wanted` condition key by itself | a condition shows its issue, and a merge notes the issues it names | | 5 | A read-only view onto the `issues` bucket over the bus | the operator reads issues in a browser without an agent | diff --git a/04-ISSUES/001-failed-package-install-reports-success/00-report.md b/04-ISSUES/001-failed-package-install-reports-success/00-report.md index 0b612233..ab3be6e4 100644 --- a/04-ISSUES/001-failed-package-install-reports-success/00-report.md +++ b/04-ISSUES/001-failed-package-install-reports-success/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-22 -located-in: [mesh-host] -fixed-by: mesh-host — a package is read back from the package database after installing -amended-design: --- # 001 — A failed package install does not fail the job diff --git a/04-ISSUES/002-stale-package-index-fails-silently/00-report.md b/04-ISSUES/002-stale-package-index-fails-silently/00-report.md index a9bfb5e5..8efef9a8 100644 --- a/04-ISSUES/002-stale-package-index-fails-silently/00-report.md +++ b/04-ISSUES/002-stale-package-index-fails-silently/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-22 -located-in: [mesh-host] -fixed-by: mesh-host — a stale package index is named rather than reported as a failed install -amended-design: --- # 002 — A declared package can fail purely because the node's index is stale diff --git a/04-ISSUES/003-firewall-scope-is-read-by-no-code/00-report.md b/04-ISSUES/003-firewall-scope-is-read-by-no-code/00-report.md index 7b670e16..ee2d12c8 100644 --- a/04-ISSUES/003-firewall-scope-is-read-by-no-code/00-report.md +++ b/04-ISSUES/003-firewall-scope-is-read-by-no-code/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-22 -located-in: [mesh-control] -fixed-by: mesh-control — a machine's filtering is computed from what it was assigned -amended-design: 03-DESIGN/01-to-be/08-connectivity.md --- # 003 — A firewall rule's `scope:` is read by no code diff --git a/04-ISSUES/004-certificate-issuance-targets-production/00-report.md b/04-ISSUES/004-certificate-issuance-targets-production/00-report.md index f1dc3158..cf644592 100644 --- a/04-ISSUES/004-certificate-issuance-targets-production/00-report.md +++ b/04-ISSUES/004-certificate-issuance-targets-production/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-22 -located-in: [hal] -fixed-by: hal — ACME_CA_SERVER selects the authority, and defaults to staging -amended-design: --- # 004 — Certificate issuance always targets the authority's production endpoint diff --git a/04-ISSUES/005-pipeline-test-harness-unbuildable/00-report.md b/04-ISSUES/005-pipeline-test-harness-unbuildable/00-report.md index def605b3..f20f3791 100644 --- a/04-ISSUES/005-pipeline-test-harness-unbuildable/00-report.md +++ b/04-ISSUES/005-pipeline-test-harness-unbuildable/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-22 -located-in: [hal, mesh-lab] -fixed-by: mesh-lab — a run leaves a receipt, and the receipt says what it covered -amended-design: 03-DESIGN/01-to-be/01-end-to-end-testing.md --- # 005 — The end-to-end pipeline harness has not built since the workspace was removed diff --git a/04-ISSUES/006-hq-is-not-indexed-into-the-knowledge-base/00-report.md b/04-ISSUES/006-hq-is-not-indexed-into-the-knowledge-base/00-report.md index a8812d35..3ea7d7e1 100644 --- a/04-ISSUES/006-hq-is-not-indexed-into-the-knowledge-base/00-report.md +++ b/04-ISSUES/006-hq-is-not-indexed-into-the-knowledge-base/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-23 -located-in: [mesh-catalog modules/records, mesh-catalog modules/mesh-console] -fixed-by: ADR 0153; mesh-catalog PR 183 (records), PR 185 (a phrase that wraps) -amended-design: 03-DESIGN/01-to-be/35-reading-the-record.md --- # 006 — This repository is not indexed into the knowledge base, and the claim that it is holds up a decision diff --git a/04-ISSUES/007-an-installed-package-is-not-a-capability/00-report.md b/04-ISSUES/007-an-installed-package-is-not-a-capability/00-report.md index 3892ddba..ed872d71 100644 --- a/04-ISSUES/007-an-installed-package-is-not-a-capability/00-report.md +++ b/04-ISSUES/007-an-installed-package-is-not-a-capability/00-report.md @@ -1,12 +1,5 @@ --- -status: resolved opened: 2026-08-23 -located-in: [hal (the instance), mesh-host internal/bootstrap (preflight asks the daemon), mesh-controller internal/catalogue (capabilities)] -fixed-by: - - "the instance only: PR #962 — incus hook. Merged, ran on one node in 6s of a 60s budget; pipeline #6832 green in 48s. The class remains open." - - "partly, on the mesh: mesh-host 73c010e, 9d8239a — preflight and the profile detectors ask the daemon, not the package (installed-but-broken reports absent)" - - "the class, on the mesh: a manifest declares capabilities, an action declares verify (ADR 0005), and a module's own assertions are the lab's verdict (design 01). The old arrangement is replaced module by module, so its count is never taken" -amended-design: 03-DESIGN/01-to-be/01-end-to-end-testing.md --- # 007 — An installed package is not an available capability diff --git a/04-ISSUES/008-the-documented-node-rescue-does-not-exist/00-report.md b/04-ISSUES/008-the-documented-node-rescue-does-not-exist/00-report.md index 88392753..0a4a5cff 100644 --- a/04-ISSUES/008-the-documented-node-rescue-does-not-exist/00-report.md +++ b/04-ISSUES/008-the-documented-node-rescue-does-not-exist/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-28 -located-in: [hal] -fixed-by: hal — the script says it is manual, because it is -amended-design: --- # 008 — The documented automatic node rescue does not exist diff --git a/04-ISSUES/009-a-digest-pinned-image-cannot-be-placed-in-the-lab/00-report.md b/04-ISSUES/009-a-digest-pinned-image-cannot-be-placed-in-the-lab/00-report.md index b6130a03..542612e4 100644 --- a/04-ISSUES/009-a-digest-pinned-image-cannot-be-placed-in-the-lab/00-report.md +++ b/04-ISSUES/009-a-digest-pinned-image-cannot-be-placed-in-the-lab/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-08-28 -located-in: [mesh-lab, mesh-host] -fixed-by: - - "mesh-lab: a registry raised inside the scenario. Verified in a sealed machine — all four shapes applied with the image pinned by digest, idempotent, read back from the machine." -amended-design: --- # 009 — A digest-pinned image cannot be placed in the lab, so `container` cannot be tested there diff --git a/04-ISSUES/010-the-first-declaration-destroys-the-substrate/00-report.md b/04-ISSUES/010-the-first-declaration-destroys-the-substrate/00-report.md index ae798e1a..9a3f29a8 100644 --- a/04-ISSUES/010-the-first-declaration-destroys-the-substrate/00-report.md +++ b/04-ISSUES/010-the-first-declaration-destroys-the-substrate/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-08-29 -located-in: [mesh-host, mesh-control] -fixed-by: - - "mesh-host: the store records where each resource came from — carried or declared — and each origin removes only its own. Verified in the lab on the exact scenario that caused this: the substrate survived, and a later declaration still removed what it had itself declared." -amended-design: --- # 010 — The first declaration a node receives destroys the substrate it raised diff --git a/04-ISSUES/011-one-broken-module-blocks-every-other/00-report.md b/04-ISSUES/011-one-broken-module-blocks-every-other/00-report.md index c6cee074..305e8562 100644 --- a/04-ISSUES/011-one-broken-module-blocks-every-other/00-report.md +++ b/04-ISSUES/011-one-broken-module-blocks-every-other/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-30 -located-in: [mesh-host] -fixed-by: mesh-host — apply attempts every resource and reports every failure -amended-design: --- # 011 — One broken module stops every module after it, for ever diff --git a/04-ISSUES/012-a-scenario-machine-is-too-small-for-four-images/00-report.md b/04-ISSUES/012-a-scenario-machine-is-too-small-for-four-images/00-report.md index 3b93ba63..87171cb1 100644 --- a/04-ISSUES/012-a-scenario-machine-is-too-small-for-four-images/00-report.md +++ b/04-ISSUES/012-a-scenario-machine-is-too-small-for-four-images/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-30 -located-in: [mesh-lab] -fixed-by: mesh-lab — scenario machines stay at 1 GiB, and the scenario now stocks seven images -amended-design: --- # 012 — Raising a scenario machine's memory stops the substrate coming up diff --git a/04-ISSUES/013-a-file-arrives-after-the-service-that-needs-it/00-report.md b/04-ISSUES/013-a-file-arrives-after-the-service-that-needs-it/00-report.md index 479c70b8..03b18468 100644 --- a/04-ISSUES/013-a-file-arrives-after-the-service-that-needs-it/00-report.md +++ b/04-ISSUES/013-a-file-arrives-after-the-service-that-needs-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-control] -fixed-by: mesh-control — what the mesh computes is applied before what the module declared -amended-design: --- # 013 — A file the mesh computes arrives after the service that needs it diff --git a/04-ISSUES/014-a-key-that-is-present-and-unusable/00-report.md b/04-ISSUES/014-a-key-that-is-present-and-unusable/00-report.md index e02abb06..3025ada5 100644 --- a/04-ISSUES/014-a-key-that-is-present-and-unusable/00-report.md +++ b/04-ISSUES/014-a-key-that-is-present-and-unusable/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-host] -fixed-by: mesh-host — a node's serving key is stored in the format a server reads -amended-design: --- # 014 — A node's serving key was present, correct, and unusable diff --git a/04-ISSUES/015-a-command-with-no-answer-was-read-as-success/00-report.md b/04-ISSUES/015-a-command-with-no-answer-was-read-as-success/00-report.md index d1d89cf2..71531c31 100644 --- a/04-ISSUES/015-a-command-with-no-answer-was-read-as-success/00-report.md +++ b/04-ISSUES/015-a-command-with-no-answer-was-read-as-success/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-lab] -fixed-by: mesh-lab — a command with no marker is a failure, not a success -amended-design: --- # 015 — A command that said nothing was read as having succeeded diff --git a/04-ISSUES/016-something-after-the-declaration-was-ignored/00-report.md b/04-ISSUES/016-something-after-the-declaration-was-ignored/00-report.md index a3454319..278ebd78 100644 --- a/04-ISSUES/016-something-after-the-declaration-was-ignored/00-report.md +++ b/04-ISSUES/016-something-after-the-declaration-was-ignored/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-host] -fixed-by: mesh-host — something after the declaration is refused whole -amended-design: --- # 016 — Anything after the declaration in a file was ignored diff --git a/04-ISSUES/017-an-action-succeeded-into-a-state-its-verify-rejects/00-report.md b/04-ISSUES/017-an-action-succeeded-into-a-state-its-verify-rejects/00-report.md index 8797f413..1e8449a8 100644 --- a/04-ISSUES/017-an-action-succeeded-into-a-state-its-verify-rejects/00-report.md +++ b/04-ISSUES/017-an-action-succeeded-into-a-state-its-verify-rejects/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-host] -fixed-by: mesh-host — the store's readiness is checked over TCP, not the socket -amended-design: --- # 017 — An action succeeded into a state its own verify rejects diff --git a/04-ISSUES/018-a-provider-on-the-same-machine-was-never-announced/00-report.md b/04-ISSUES/018-a-provider-on-the-same-machine-was-never-announced/00-report.md index ab638f07..d39bb211 100644 --- a/04-ISSUES/018-a-provider-on-the-same-machine-was-never-announced/00-report.md +++ b/04-ISSUES/018-a-provider-on-the-same-machine-was-never-announced/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-control] -fixed-by: mesh-control — something answered on this machine is still bound -amended-design: --- # 018 — A provider on the same machine was never announced to its consumer diff --git a/04-ISSUES/019-a-comment-asserting-a-fact-about-a-machine/00-report.md b/04-ISSUES/019-a-comment-asserting-a-fact-about-a-machine/00-report.md index 5ee6ae4d..52cfdbb8 100644 --- a/04-ISSUES/019-a-comment-asserting-a-fact-about-a-machine/00-report.md +++ b/04-ISSUES/019-a-comment-asserting-a-fact-about-a-machine/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-control] -fixed-by: mesh-control — the resolver module's claims about machines are checked on a machine -amended-design: --- # 019 — A comment asserting a fact about a machine, which nothing checked diff --git a/04-ISSUES/020-a-certificate-is-issued-and-never-collected/00-report.md b/04-ISSUES/020-a-certificate-is-issued-and-never-collected/00-report.md index 50bd751c..bea45898 100644 --- a/04-ISSUES/020-a-certificate-is-issued-and-never-collected/00-report.md +++ b/04-ISSUES/020-a-certificate-is-issued-and-never-collected/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-08-31 -located-in: [mesh-control, mesh-lab] -fixed-by: mesh-lab multiple-fixes — the bed, not the proxy: its backend stub never listened and its check read a subject the authority leaves empty; against both Pebble and the catalogue's step-ca the same proxy now orders, answers the challenge, is issued and serves -amended-design: --- # 020 — A certificate is issued and never collected diff --git a/04-ISSUES/021-a-consumer-on-the-providers-machine-is-given-no-credential/00-report.md b/04-ISSUES/021-a-consumer-on-the-providers-machine-is-given-no-credential/00-report.md index 3d096a5b..ec842b5d 100644 --- a/04-ISSUES/021-a-consumer-on-the-providers-machine-is-given-no-credential/00-report.md +++ b/04-ISSUES/021-a-consumer-on-the-providers-machine-is-given-no-credential/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control] -fixed-by: mesh-control df62bb5 -amended-design: --- # 021 — A consumer on the provider's machine is given no credential diff --git a/04-ISSUES/022-one-credential-per-node-per-provision-not-per-module/00-report.md b/04-ISSUES/022-one-credential-per-node-per-provision-not-per-module/00-report.md index f6ea4161..b0ed4615 100644 --- a/04-ISSUES/022-one-credential-per-node-per-provision-not-per-module/00-report.md +++ b/04-ISSUES/022-one-credential-per-node-per-provision-not-per-module/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control] -fixed-by: mesh-control 0af3ea1 -amended-design: --- # 022 — A credential belongs to a node and a provision, so a second consumer refuses diff --git a/04-ISSUES/023-a-consumer-cannot-build-a-connection-string/00-report.md b/04-ISSUES/023-a-consumer-cannot-build-a-connection-string/00-report.md index 878315ad..b13cc891 100644 --- a/04-ISSUES/023-a-consumer-cannot-build-a-connection-string/00-report.md +++ b/04-ISSUES/023-a-consumer-cannot-build-a-connection-string/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control] -fixed-by: mesh-control 122680b -amended-design: --- # 023 — A consumer is given every part of a connection except the two it cannot invent diff --git a/04-ISSUES/024-a-lab-run-stalls-before-the-host-is-placed/00-report.md b/04-ISSUES/024-a-lab-run-stalls-before-the-host-is-placed/00-report.md index fadd5da0..4783c928 100644 --- a/04-ISSUES/024-a-lab-run-stalls-before-the-host-is-placed/00-report.md +++ b/04-ISSUES/024-a-lab-run-stalls-before-the-host-is-placed/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-lab] -fixed-by: mesh-lab 3503ad9 -amended-design: --- # 024 — A run stalls before the host is placed, and says nothing while it does diff --git a/04-ISSUES/025-a-module-must-pin-a-digest-and-nothing-produces-one/00-report.md b/04-ISSUES/025-a-module-must-pin-a-digest-and-nothing-produces-one/00-report.md index ff339b44..deb91b37 100644 --- a/04-ISSUES/025-a-module-must-pin-a-digest-and-nothing-produces-one/00-report.md +++ b/04-ISSUES/025-a-module-must-pin-a-digest-and-nothing-produces-one/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control, mesh-host] -fixed-by: mesh-controller ee3cc1b (pinned() refuses a placeholder at compose), 43c9c97 (the builder publishes digests); proven by one-node-mesh.test.ts (the catalogue holds no placeholder digest). Six placeholders remain in three manifests deferred under issue 064 -amended-design: --- # 025 — A module must pin a digest, and nothing produces one diff --git a/04-ISSUES/026-the-data-directories-are-not-declared/00-report.md b/04-ISSUES/026-the-data-directories-are-not-declared/00-report.md index 5a4a68b1..a1a45afe 100644 --- a/04-ISSUES/026-the-data-directories-are-not-declared/00-report.md +++ b/04-ISSUES/026-the-data-directories-are-not-declared/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control] -fixed-by: mesh-controller f5b03e1 (the fourteen declared); ADR 0091 and mesh-controller feat/multiple-fixes (the check, back, with the three declarations — the socket by capability, the operator's by accesses) -amended-design: 03-DESIGN/01-to-be/18-building-a-module.md --- # 026 — The data directories are mounted and never declared diff --git a/04-ISSUES/027-a-container-cannot-follow-a-file/00-report.md b/04-ISSUES/027-a-container-cannot-follow-a-file/00-report.md index d75ee4c4..ddd50c22 100644 --- a/04-ISSUES/027-a-container-cannot-follow-a-file/00-report.md +++ b/04-ISSUES/027-a-container-cannot-follow-a-file/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-host, mesh-control] -fixed-by: mesh-host aa441ba, 652984b (container restart-on, PR #2, under issue 009); proven by mesh-lab runtime-restart-on-config.test.ts -amended-design: --- # 027 — A container cannot follow a file, and a rotated credential is the case diff --git a/04-ISSUES/028-two-things-want-one-port-and-nothing-says-so/00-report.md b/04-ISSUES/028-two-things-want-one-port-and-nothing-says-so/00-report.md index 0e4ce201..66d38166 100644 --- a/04-ISSUES/028-two-things-want-one-port-and-nothing-says-so/00-report.md +++ b/04-ISSUES/028-two-things-want-one-port-and-nothing-says-so/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control, mesh-host] -fixed-by: mesh-control 1f5b70a, 41f7c51; mesh-host b91342a -amended-design: 02-DECISIONS/0038-the-mesh-assigns-the-port.md --- # 028 — Two things want one port, and nothing says so until the machine diff --git a/04-ISSUES/029-the-artifact-store-cannot-be-delivered-by-the-artifact-store/00-report.md b/04-ISSUES/029-the-artifact-store-cannot-be-delivered-by-the-artifact-store/00-report.md index 023942bc..7e71c8a9 100644 --- a/04-ISSUES/029-the-artifact-store-cannot-be-delivered-by-the-artifact-store/00-report.md +++ b/04-ISSUES/029-the-artifact-store-cannot-be-delivered-by-the-artifact-store/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control] -fixed-by: mesh-control be62f49; mesh-lab f85dbb0 -amended-design: --- # 029 — The artifact store cannot be delivered by the artifact store diff --git a/04-ISSUES/030-asking-what-a-machine-should-be-re-signed-its-certificate/00-report.md b/04-ISSUES/030-asking-what-a-machine-should-be-re-signed-its-certificate/00-report.md index 32d63623..8f241216 100644 --- a/04-ISSUES/030-asking-what-a-machine-should-be-re-signed-its-certificate/00-report.md +++ b/04-ISSUES/030-asking-what-a-machine-should-be-re-signed-its-certificate/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-01 -located-in: [mesh-control] -fixed-by: mesh-control 38d4e77 -amended-design: --- # 030 — Asking what a machine should be re-signed its certificate diff --git a/04-ISSUES/031-a-machine-becomes-each-thing-it-was-told-in-turn/00-report.md b/04-ISSUES/031-a-machine-becomes-each-thing-it-was-told-in-turn/00-report.md index 03baf2e5..8999e412 100644 --- a/04-ISSUES/031-a-machine-becomes-each-thing-it-was-told-in-turn/00-report.md +++ b/04-ISSUES/031-a-machine-becomes-each-thing-it-was-told-in-turn/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-02 -located-in: [mesh-host] -fixed-by: mesh-host #16 (internal/link/run.go: the host prefetches a window of declarations, applies the newest and sets the rest aside, each reported as superseded); mesh-controller #36 (the link records a superseded report as a word that the node is there) -amended-design: 03-DESIGN/01-to-be/05-the-node-host.md --- # 031 — A machine becomes each thing it was told, in turn diff --git a/04-ISSUES/032-provider-runtime-has-no-seal-key/00-report.md b/04-ISSUES/032-provider-runtime-has-no-seal-key/00-report.md index c0c70f01..62e50d68 100644 --- a/04-ISSUES/032-provider-runtime-has-no-seal-key/00-report.md +++ b/04-ISSUES/032-provider-runtime-has-no-seal-key/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-04 -located-in: [mesh-sdk, mesh-catalog] -fixed-by: mesh-sdk src/provisioner rework + redis/postgres/minio/umami adapters (ADR 0048) -amended-design: 0048-a-provider-creates-the-credential-the-mesh-minted.md --- # A provider's provisioner seals with a key the mesh has no way to deliver — and does not need to diff --git a/04-ISSUES/033-runtime-config-change-does-not-restart/00-report.md b/04-ISSUES/033-runtime-config-change-does-not-restart/00-report.md index 0a2563e0..4628514b 100644 --- a/04-ISSUES/033-runtime-config-change-does-not-restart/00-report.md +++ b/04-ISSUES/033-runtime-config-change-does-not-restart/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-04 -located-in: [mesh-host internal/apply (restart-on), mesh-catalog] -fixed-by: mesh-host aa441ba (restart-on); mesh-catalog 550393b (runtime config as a mergeable file + restart-on); proven by mesh-lab runtime-restart-on-config.test.ts -amended-design: --- # Changing a module's settings does not restart its runtime — config is stale until recreated diff --git a/04-ISSUES/034-mesh-login-exceeds-s3-access-key-limit/00-report.md b/04-ISSUES/034-mesh-login-exceeds-s3-access-key-limit/00-report.md index 01eec099..e0249788 100644 --- a/04-ISSUES/034-mesh-login-exceeds-s3-access-key-limit/00-report.md +++ b/04-ISSUES/034-mesh-login-exceeds-s3-access-key-limit/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-05 -located-in: [mesh-control, mesh-catalog] -fixed-by: ADR 0049 (a slug for the login) + a shorter minted secret (mesh-control) -amended-design: 0049-a-consumers-identity-fits-the-tightest-backend.md --- # The mesh's derived login does not fit every backend's identity rules — S3 rejects it diff --git a/04-ISSUES/035-reconciling-a-seed-file-wipes-what-grew-in-it/00-report.md b/04-ISSUES/035-reconciling-a-seed-file-wipes-what-grew-in-it/00-report.md index 7ce44b58..643a9c2d 100644 --- a/04-ISSUES/035-reconciling-a-seed-file-wipes-what-grew-in-it/00-report.md +++ b/04-ISSUES/035-reconciling-a-seed-file-wipes-what-grew-in-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-02 -located-in: [mesh-host internal/apply (file create-once), mesh-host examples] -fixed-by: ADR 0087; mesh-host #16 (a file resource may say create-once; kept, never corrected); proven by the apply tests and the vault bed -amended-design: 03-DESIGN/01-to-be/18-building-a-module.md --- # 035 — Reconciling a seed file wipes what grew in it diff --git a/04-ISSUES/036-six-modules-own-what-they-must-share/00-report.md b/04-ISSUES/036-six-modules-own-what-they-must-share/00-report.md index 230c47cc..38c4e820 100644 --- a/04-ISSUES/036-six-modules-own-what-they-must-share/00-report.md +++ b/04-ISSUES/036-six-modules-own-what-they-must-share/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-02 -located-in: [mesh-control, mesh-catalog, mesh-host] -fixed-by: ADR 0051 access: mesh-controller aeb65a3, mesh-host f06eea5, mesh-catalog 69c8a5e; proven by mesh-lab assigned-catalogue-media.test.ts (sonarr and radarr share one operator-owned directory) -amended-design: 02-DECISIONS/0051-shared-data-is-the-operators.md --- # 036 — Six modules own what they must share diff --git a/04-ISSUES/037-a-module-cannot-run-code-at-a-lifecycle-phase/00-report.md b/04-ISSUES/037-a-module-cannot-run-code-at-a-lifecycle-phase/00-report.md index a66a0c8d..c6e83794 100644 --- a/04-ISSUES/037-a-module-cannot-run-code-at-a-lifecycle-phase/00-report.md +++ b/04-ISSUES/037-a-module-cannot-run-code-at-a-lifecycle-phase/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-05 -located-in: [mesh-control, mesh-host, mesh-catalog] -fixed-by: ADR 0052 run-once container: mesh-host 19e5dd8, PR #5 24e9ae4; ADR 0053 scheduled twin 9d1f001; proven by mesh-lab assigned-catalogue-mqtt.test.ts -amended-design: 02-DECISIONS/0052-a-step-that-runs-once-before-a-container.md --- # 037 — A module cannot run its own code at a lifecycle phase diff --git a/04-ISSUES/038-a-provider-is-announced-at-a-name-its-port-is-not-bound-to/00-report.md b/04-ISSUES/038-a-provider-is-announced-at-a-name-its-port-is-not-bound-to/00-report.md index 92281713..974b91d9 100644 --- a/04-ISSUES/038-a-provider-is-announced-at-a-name-its-port-is-not-bound-to/00-report.md +++ b/04-ISSUES/038-a-provider-is-announced-at-a-name-its-port-is-not-bound-to/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-09 -located-in: [mesh-control] -fixed-by: mesh-control — a same-node provider is announced at the port it is published on -amended-design: --- # 038 — A provider is announced at a name its port is not bound to diff --git a/04-ISSUES/039-the-lab-registry-was-silently-pinning-unpinned-modules/00-report.md b/04-ISSUES/039-the-lab-registry-was-silently-pinning-unpinned-modules/00-report.md index 9d2b2bf4..38edc35d 100644 --- a/04-ISSUES/039-the-lab-registry-was-silently-pinning-unpinned-modules/00-report.md +++ b/04-ISSUES/039-the-lab-registry-was-silently-pinning-unpinned-modules/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-10 -located-in: [mesh-catalog] -fixed-by: mesh-catalog — the operator's own images are pinned by digest -amended-design: --- # 039 — The lab's registry was pinning what the catalogue left unpinned diff --git a/04-ISSUES/040-the-install-procedure-exists-only-as-a-test/00-report.md b/04-ISSUES/040-the-install-procedure-exists-only-as-a-test/00-report.md index 8c79d8fd..f2cd39aa 100644 --- a/04-ISSUES/040-the-install-procedure-exists-only-as-a-test/00-report.md +++ b/04-ISSUES/040-the-install-procedure-exists-only-as-a-test/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-10 -located-in: [mesh-host cmd/mesh-bootstrap, mesh-lab test/integration/genesis.ts] -fixed-by: mesh-host cmd/mesh-bootstrap (ADR 0067); mesh-lab genesis.ts is the one description of genesis both beds call. Still open: a running mesh cannot say it was raised by the installer -amended-design: --- # 040 — The only description of how a mesh is stood up is a test diff --git a/04-ISSUES/041-a-sealed-credential-ends-up-in-the-process-environment/00-report.md b/04-ISSUES/041-a-sealed-credential-ends-up-in-the-process-environment/00-report.md index a845e438..4a8b31de 100644 --- a/04-ISSUES/041-a-sealed-credential-ends-up-in-the-process-environment/00-report.md +++ b/04-ISSUES/041-a-sealed-credential-ends-up-in-the-process-environment/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-10 -located-in: [mesh-controller internal/catalogue, mesh-catalog modules/mesh-controller] -fixed-by: ADR 0086; mesh-controller feat/secret-not-in-environment (envfile twins for the broker settings, catalogue refusal of secrets in env / undeclared env-file); mesh-catalog (the controller reads its six credentials from files; 35 containers declare their exception); mesh-host (the installer delivers any MESH_…_FILE own secret) -amended-design: 03-DESIGN/01-to-be/13-credentials-and-their-rotation.md --- # 041 — A credential the mesh took care to seal ends up in the process environment diff --git a/04-ISSUES/042-nothing-gives-a-node-an-account-for-a-registry/00-report.md b/04-ISSUES/042-nothing-gives-a-node-an-account-for-a-registry/00-report.md index 84122458..38587cd9 100644 --- a/04-ISSUES/042-nothing-gives-a-node-an-account-for-a-registry/00-report.md +++ b/04-ISSUES/042-nothing-gives-a-node-an-account-for-a-registry/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-11 -located-in: [mesh-controller, mesh-catalog] -fixed-by: mesh-controller PR 29 (98aea8b); mesh-catalog PR 26 (1891b09); gated by mesh-lab PR 34 -amended-design: 02-DECISIONS/0082-the-registry-is-reached-by-name-and-trusted-by-the-overlay.md --- # 042 — Nothing gives a node an account for a registry diff --git a/04-ISSUES/043-a-module-cannot-be-given-the-meshs-own-queues/00-report.md b/04-ISSUES/043-a-module-cannot-be-given-the-meshs-own-queues/00-report.md index 7ad17c06..a0a38ae9 100644 --- a/04-ISSUES/043-a-module-cannot-be-given-the-meshs-own-queues/00-report.md +++ b/04-ISSUES/043-a-module-cannot-be-given-the-meshs-own-queues/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-12 -resolved: 2026-09-12 -located-in: [mesh-controller (the verb existed)] -fixed-by: nothing — the capability already existed and the wrong verb was used -amended-design: --- # 043 — A module cannot be given an account for the mesh's own queues diff --git a/04-ISSUES/044-the-runtime-every-module-builds-on-cannot-be-built-by-the-mesh/00-report.md b/04-ISSUES/044-the-runtime-every-module-builds-on-cannot-be-built-by-the-mesh/00-report.md index 63a7aca2..3df557ec 100644 --- a/04-ISSUES/044-the-runtime-every-module-builds-on-cannot-be-built-by-the-mesh/00-report.md +++ b/04-ISSUES/044-the-runtime-every-module-builds-on-cannot-be-built-by-the-mesh/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-13 -located-in: [mesh-tools, mesh-sdk] -fixed-by: mesh-tools feat/run-once-entry, mesh-sdk feat/adr-ref-resync -amended-design: --- # 044 — The runtime every module builds on cannot be built by the mesh diff --git a/04-ISSUES/045-a-container-keeps-the-values-it-started-with/00-report.md b/04-ISSUES/045-a-container-keeps-the-values-it-started-with/00-report.md index 86ae589e..e3e34204 100644 --- a/04-ISSUES/045-a-container-keeps-the-values-it-started-with/00-report.md +++ b/04-ISSUES/045-a-container-keeps-the-values-it-started-with/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-13 -located-in: [mesh-host internal/apply (container spec digests)] -fixed-by: mesh-host e7f94e0 (restart-on digests folded into the container spec, a standing comparison); unit-tested in apply_test.go, no lab assertion yet -amended-design: --- # 045 — A container keeps the values it started with diff --git a/04-ISSUES/046-an-upstream-image-cannot-be-mirrored-into-the-mesh/00-report.md b/04-ISSUES/046-an-upstream-image-cannot-be-mirrored-into-the-mesh/00-report.md index bf02f6a9..d8c72de6 100644 --- a/04-ISSUES/046-an-upstream-image-cannot-be-mirrored-into-the-mesh/00-report.md +++ b/04-ISSUES/046-an-upstream-image-cannot-be-mirrored-into-the-mesh/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-14 -located-in: [mesh-controller internal/builder (upstream artifacts)] -fixed-by: ADR 0096; mesh-controller multiple-fixes (the builder copies the index and its manifests between registries over the registry API); proven by a test against a fake upstream serving an index over two platforms -amended-design: 03-DESIGN/01-to-be/18-building-a-module.md --- # 046 — An upstream image cannot be mirrored into the mesh's own registry diff --git a/04-ISSUES/047-the-firewall-does-not-cover-published-container-ports/00-report.md b/04-ISSUES/047-the-firewall-does-not-cover-published-container-ports/00-report.md index 36fcae10..1762e17a 100644 --- a/04-ISSUES/047-the-firewall-does-not-cover-published-container-ports/00-report.md +++ b/04-ISSUES/047-the-firewall-does-not-cover-published-container-ports/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-14 -located-in: [mesh-controller (the derived filter)] -fixed-by: mesh-controller c8d8211 (forward chain drops by default, never closes ssh), 25e42b3; proven by one-node-mesh.test.ts (a machine filters exactly what its modules declared) -amended-design: --- # 047 — The firewall does not cover published container ports diff --git a/04-ISSUES/048-nothing-makes-a-machine-trust-the-mesh-registry/00-report.md b/04-ISSUES/048-nothing-makes-a-machine-trust-the-mesh-registry/00-report.md index c3f7c72c..53e0524e 100644 --- a/04-ISSUES/048-nothing-makes-a-machine-trust-the-mesh-registry/00-report.md +++ b/04-ISSUES/048-nothing-makes-a-machine-trust-the-mesh-registry/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-14 -located-in: [mesh-controller, mesh-catalog] -fixed-by: mesh-controller PR 29 (98aea8b); mesh-catalog PR 26 (1891b09); gated by mesh-lab PR 34 -amended-design: 02-DECISIONS/0082-the-registry-is-reached-by-name-and-trusted-by-the-overlay.md --- # 048 — Nothing makes a machine trust the mesh's own registry diff --git a/04-ISSUES/049-a-module-can-serve-tools-and-nothing-can-call-them/00-report.md b/04-ISSUES/049-a-module-can-serve-tools-and-nothing-can-call-them/00-report.md index a7fc02fe..323e508a 100644 --- a/04-ISSUES/049-a-module-can-serve-tools-and-nothing-can-call-them/00-report.md +++ b/04-ISSUES/049-a-module-can-serve-tools-and-nothing-can-call-them/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-14 -located-in: [mesh-controller cmd/mesh-controller (ask), mesh-controller internal/link] -fixed-by: ADR 0095; mesh-controller multiple-fixes (ask: the control plane publishes the request with a private reply queue and prints the answer); proven by the confluence bed -amended-design: 03-DESIGN/01-to-be/19-the-module-protocol.md --- # 049 — A module can serve tools, and nothing is allowed to call them diff --git a/04-ISSUES/050-the-catalogue-knows-nothing-built-before-it/00-report.md b/04-ISSUES/050-the-catalogue-knows-nothing-built-before-it/00-report.md index f4f029d7..8a1dc3f9 100644 --- a/04-ISSUES/050-the-catalogue-knows-nothing-built-before-it/00-report.md +++ b/04-ISSUES/050-the-catalogue-knows-nothing-built-before-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-14 -located-in: [mesh-controller (the catalogue), mesh-catalog] -fixed-by: mesh-controller 3ae7b88, 2b82872; mesh-catalog d2dce34; proven by one-node-mesh.test.ts (the catalogue holds every module the control plane built) -amended-design: --- # 050 — The catalogue knows nothing that was built before it diff --git a/04-ISSUES/051-the-mesh-cannot-update-what-it-depends-on/00-report.md b/04-ISSUES/051-the-mesh-cannot-update-what-it-depends-on/00-report.md index 6b797c1e..e501597d 100644 --- a/04-ISSUES/051-the-mesh-cannot-update-what-it-depends-on/00-report.md +++ b/04-ISSUES/051-the-mesh-cannot-update-what-it-depends-on/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-14 -located-in: [mesh-host, mesh-catalog] -fixed-by: mesh-host 56124c3; mesh-catalog 5e4dc37; mesh-lab 440e265 -amended-design: 03-DESIGN/01-to-be/07-the-foundation.md --- # 051 — The mesh can update everything except what it depends on diff --git a/04-ISSUES/052-the-firewall-does-not-know-the-brokers-port/00-report.md b/04-ISSUES/052-the-firewall-does-not-know-the-brokers-port/00-report.md index f6230eb4..301c20c4 100644 --- a/04-ISSUES/052-the-firewall-does-not-know-the-brokers-port/00-report.md +++ b/04-ISSUES/052-the-firewall-does-not-know-the-brokers-port/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-14 -located-in: [mesh-controller (the derived filter)] -fixed-by: mesh-controller dda001d (the firewall opens the port the mesh itself runs on), 25e42b3; TestTheBrokersPortIsOpenedThoughNoModuleDeclaresIt -amended-design: --- # 052 — The firewall closes the port the mesh runs on diff --git a/04-ISSUES/053-the-sdk-is-pinned-twice-and-the-two-disagree/00-report.md b/04-ISSUES/053-the-sdk-is-pinned-twice-and-the-two-disagree/00-report.md index 0f32f234..71edcd55 100644 --- a/04-ISSUES/053-the-sdk-is-pinned-twice-and-the-two-disagree/00-report.md +++ b/04-ISSUES/053-the-sdk-is-pinned-twice-and-the-two-disagree/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-15 -located-in: [mesh-tools, mesh-host, mesh-sdk] -fixed-by: mesh-tools b618057 (the SDK resolved by version from the registry, one pin); mesh-host 7986306; mesh-controller 4b9bc50. Caveat: the base image still builds with npm install and no lock, so the build is not reproducible -amended-design: --- # 053 — The SDK is pinned twice, and the two disagree diff --git a/04-ISSUES/054-the-adopted-store-and-broker-are-open-before-the-filter/00-report.md b/04-ISSUES/054-the-adopted-store-and-broker-are-open-before-the-filter/00-report.md index 15b01a1c..2f1202f7 100644 --- a/04-ISSUES/054-the-adopted-store-and-broker-are-open-before-the-filter/00-report.md +++ b/04-ISSUES/054-the-adopted-store-and-broker-are-open-before-the-filter/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-16 -located-in: [mesh-host examples/foundation-first-node.lock, mesh-host internal/bundle] -fixed-by: ADR 0088; mesh-host #16 (the foundation bundle installs nftables and loads a base ruleset before the store); proven by the bundle test and the genesis bed probing from outside during the install -amended-design: 03-DESIGN/01-to-be/07-the-foundation.md --- # 054 — The adopted store and broker are open before the packet filter exists diff --git a/04-ISSUES/055-the-adopted-store-and-broker-may-be-reachable-on-one-node-only/00-report.md b/04-ISSUES/055-the-adopted-store-and-broker-may-be-reachable-on-one-node-only/00-report.md index 47adb8f1..3f95a641 100644 --- a/04-ISSUES/055-the-adopted-store-and-broker-may-be-reachable-on-one-node-only/00-report.md +++ b/04-ISSUES/055-the-adopted-store-and-broker-may-be-reachable-on-one-node-only/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-16 -located-in: - - mesh-controller - - mesh-catalog -fixed-by: mesh-controller PR 27 (5718add); mesh-catalog PR 24 (a24362b) -amended-design: --- # 055 — The adopted store and broker may be reachable on the control-node only diff --git a/04-ISSUES/056-an-adopted-module-assigned-to-a-second-node-raises-a-second-server/00-report.md b/04-ISSUES/056-an-adopted-module-assigned-to-a-second-node-raises-a-second-server/00-report.md index b7be59cf..f980ca79 100644 --- a/04-ISSUES/056-an-adopted-module-assigned-to-a-second-node-raises-a-second-server/00-report.md +++ b/04-ISSUES/056-an-adopted-module-assigned-to-a-second-node-raises-a-second-server/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-17 -located-in: [mesh-controller, mesh-catalog] -fixed-by: mesh-catalog + mesh-controller (the foundation modules claim mesh-scoped seats) -amended-design: 02-DECISIONS/0079-the-foundation-seats-are-named-after-their-servers.md --- # 056 — An adopted module assigned to a second node raises a second server diff --git a/04-ISSUES/057-a-cross-node-consumer-is-provisioned-only-when-the-provider-is-pushed-again/00-report.md b/04-ISSUES/057-a-cross-node-consumer-is-provisioned-only-when-the-provider-is-pushed-again/00-report.md index 0a74225b..c7e2af09 100644 --- a/04-ISSUES/057-a-cross-node-consumer-is-provisioned-only-when-the-provider-is-pushed-again/00-report.md +++ b/04-ISSUES/057-a-cross-node-consumer-is-provisioned-only-when-the-provider-is-pushed-again/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-17 -located-in: - - mesh-controller -fixed-by: mesh-controller PR 31 (5dd2432); ADR 0083; proven by the built-store-cross-node bed -amended-design: 02-DECISIONS/0083-one-push-leaves-the-mesh-consistent.md --- # 057 — A cross-node consumer is provisioned only when the provider is pushed again diff --git a/04-ISSUES/058-a-provisioner-runtime-crash-loops-until-the-overlay-is-up/00-report.md b/04-ISSUES/058-a-provisioner-runtime-crash-loops-until-the-overlay-is-up/00-report.md index f5c13b83..d42dd5ec 100644 --- a/04-ISSUES/058-a-provisioner-runtime-crash-loops-until-the-overlay-is-up/00-report.md +++ b/04-ISSUES/058-a-provisioner-runtime-crash-loops-until-the-overlay-is-up/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-17 -located-in: - - mesh-tools -fixed-by: mesh-tools PR 10 (0ea3db3); proven by the built-store-cross-node bed (restart count 0) -amended-design: --- # 058 — A provisioner runtime crash-loops until the overlay is up diff --git a/04-ISSUES/059-the-broker-credential-names-the-hub-not-the-broker/00-report.md b/04-ISSUES/059-the-broker-credential-names-the-hub-not-the-broker/00-report.md index 504a3bb0..c1228f8e 100644 --- a/04-ISSUES/059-the-broker-credential-names-the-hub-not-the-broker/00-report.md +++ b/04-ISSUES/059-the-broker-credential-names-the-hub-not-the-broker/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-17 -located-in: - - mesh-controller -fixed-by: mesh-controller PR 30 (79a9e17); gated by mesh-lab built-store-cross-node -amended-design: --- # 059 — The broker credential names the hub, not the node holding the broker diff --git a/04-ISSUES/060-the-mesh-cannot-build-most-of-its-own-catalogue/00-report.md b/04-ISSUES/060-the-mesh-cannot-build-most-of-its-own-catalogue/00-report.md index 75f66c43..5768a847 100644 --- a/04-ISSUES/060-the-mesh-cannot-build-most-of-its-own-catalogue/00-report.md +++ b/04-ISSUES/060-the-mesh-cannot-build-most-of-its-own-catalogue/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-17 -located-in: - - mesh-catalog - - mesh-controller -fixed-by: mesh-catalog feat/the-mesh-builds-its-catalogue (965c58f); proven by the built-store-cross-node bed and direct builds -amended-design: --- # 060 — The mesh cannot build most of its own catalogue diff --git a/04-ISSUES/061-a-module-container-that-names-no-command-runs-the-wrong-thing/00-report.md b/04-ISSUES/061-a-module-container-that-names-no-command-runs-the-wrong-thing/00-report.md index 548e480a..11d1aea5 100644 --- a/04-ISSUES/061-a-module-container-that-names-no-command-runs-the-wrong-thing/00-report.md +++ b/04-ISSUES/061-a-module-container-that-names-no-command-runs-the-wrong-thing/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-18 -located-in: - - mesh-catalog -fixed-by: mesh-catalog PR 26 (1891b09); gated by mesh-lab PR 34 -amended-design: --- # 061 — A module container that names no command runs the wrong thing diff --git a/04-ISSUES/062-a-failed-lookup-composes-the-network-without-the-registry-trust/00-report.md b/04-ISSUES/062-a-failed-lookup-composes-the-network-without-the-registry-trust/00-report.md index 527996ad..2103313f 100644 --- a/04-ISSUES/062-a-failed-lookup-composes-the-network-without-the-registry-trust/00-report.md +++ b/04-ISSUES/062-a-failed-lookup-composes-the-network-without-the-registry-trust/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-18 -located-in: - - mesh-controller -fixed-by: mesh-controller PR 29 (98aea8b); gated by mesh-lab PR 34 -amended-design: --- # 062 — A failed lookup composes the network without the registry trust diff --git a/04-ISSUES/063-the-foundation-ports-are-accepted-on-input-but-not-forwarded/00-report.md b/04-ISSUES/063-the-foundation-ports-are-accepted-on-input-but-not-forwarded/00-report.md index 7890f37c..e1260f49 100644 --- a/04-ISSUES/063-the-foundation-ports-are-accepted-on-input-but-not-forwarded/00-report.md +++ b/04-ISSUES/063-the-foundation-ports-are-accepted-on-input-but-not-forwarded/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-18 -located-in: - - mesh-controller -fixed-by: mesh-controller fix/one-push-is-enough (25e42b3); gated by the built-store-cross-node bed -amended-design: - --- # 063 — The foundation's ports are accepted on input but not forwarded diff --git a/04-ISSUES/064-a-mesh-build-cannot-fetch-a-modules-external-dependencies/00-report.md b/04-ISSUES/064-a-mesh-build-cannot-fetch-a-modules-external-dependencies/00-report.md index 7b5bc124..6e5f3935 100644 --- a/04-ISSUES/064-a-mesh-build-cannot-fetch-a-modules-external-dependencies/00-report.md +++ b/04-ISSUES/064-a-mesh-build-cannot-fetch-a-modules-external-dependencies/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-18 -located-in: - - mesh-catalog - - mesh-controller -fixed-by: ADR 0097 and mesh-controller #38 (a vendor image is a declared build input; a recipe copying out of an undeclared image is refused); the package half by the facts on current code — the one recipe that installs a public package (the catalogue module, pg) built and installed through the mesh's builder in the genesis bed on 2026-09-21, and no recipe copies from a public image any more -amended-design: 03-DESIGN/01-to-be/18-building-a-module.md --- # 064 — A mesh build cannot fetch a module's external dependencies diff --git a/04-ISSUES/065-a-permanently-failing-resource-is-retried-for-ever-with-no-escalation/00-report.md b/04-ISSUES/065-a-permanently-failing-resource-is-retried-for-ever-with-no-escalation/00-report.md index b6931cfd..735b4114 100644 --- a/04-ISSUES/065-a-permanently-failing-resource-is-retried-for-ever-with-no-escalation/00-report.md +++ b/04-ISSUES/065-a-permanently-failing-resource-is-retried-for-ever-with-no-escalation/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-20 -located-in: [mesh-controller internal/inventory (node_report), mesh-controller cmd/mesh-controller (status)] -fixed-by: ADR 0090; mesh-controller feat/multiple-fixes (the report counts identical failures; status says stuck after three) -amended-design: 03-DESIGN/01-to-be/10-delivery.md --- # 065 — A permanently failing resource is retried for ever with no escalation diff --git a/04-ISSUES/066-a-partly-applied-declaration-leaves-a-mixed-state-with-no-rollback/00-report.md b/04-ISSUES/066-a-partly-applied-declaration-leaves-a-mixed-state-with-no-rollback/00-report.md index d27ca3d4..6604260d 100644 --- a/04-ISSUES/066-a-partly-applied-declaration-leaves-a-mixed-state-with-no-rollback/00-report.md +++ b/04-ISSUES/066-a-partly-applied-declaration-leaves-a-mixed-state-with-no-rollback/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-20 -located-in: [mesh-host internal/apply, mesh-controller internal/inventory (node_report)] -fixed-by: nothing new — a run-once validator before a service that restarts on the file is the grouping (ADR 0053); the lab's coupled-pair spike proves the service never serves what the validator refused; the visible half was issue 065 -amended-design: 03-DESIGN/01-to-be/20-writing-a-module.md --- # 066 — A partly applied declaration leaves a mixed state, with no rollback diff --git a/04-ISSUES/067-a-provision-cannot-name-which-provider-serves-it/00-report.md b/04-ISSUES/067-a-provision-cannot-name-which-provider-serves-it/00-report.md index 82b1426a..421bd178 100644 --- a/04-ISSUES/067-a-provision-cannot-name-which-provider-serves-it/00-report.md +++ b/04-ISSUES/067-a-provision-cannot-name-which-provider-serves-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-20 -located-in: [mesh-controller, hq 03-DESIGN/01-to-be/23-choosing-a-provider.md] -fixed-by: graduated — hq fc4ab37 (ADR 0084, to-be design 23) -amended-design: 03-DESIGN/01-to-be/23-choosing-a-provider.md --- # A provision cannot name which provider serves it diff --git a/04-ISSUES/068-secrets-have-no-owning-module/00-report.md b/04-ISSUES/068-secrets-have-no-owning-module/00-report.md index 85bd0f16..1f88ade1 100644 --- a/04-ISSUES/068-secrets-have-no-owning-module/00-report.md +++ b/04-ISSUES/068-secrets-have-no-owning-module/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-20 -located-in: [hq 03-DESIGN/01-to-be/24-the-secrets-vault.md] -fixed-by: graduated — hq fc4ab37 (ADR 0085, to-be design 24) -amended-design: 03-DESIGN/01-to-be/24-the-secrets-vault.md --- # Secrets have no owning module diff --git a/04-ISSUES/069-one-secret-provision-yields-one-value/00-report.md b/04-ISSUES/069-one-secret-provision-yields-one-value/00-report.md index 18a06d6c..d71afadf 100644 --- a/04-ISSUES/069-one-secret-provision-yields-one-value/00-report.md +++ b/04-ISSUES/069-one-secret-provision-yields-one-value/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-20 -located-in: [mesh-controller internal/catalogue (requires/secrets), mesh-controller internal/inventory (secret key)] -fixed-by: ADR 0094; mesh-controller feat/several-secrets (secrets: under local names, the pair keyed on the local name, migration 0027); proven by the vault bed -amended-design: 03-DESIGN/01-to-be/24-the-secrets-vault.md --- # One `secret` provision yields one value, and a module may need several diff --git a/04-ISSUES/070-an-operator-cannot-deliver-a-pair-credential/00-report.md b/04-ISSUES/070-an-operator-cannot-deliver-a-pair-credential/00-report.md index 5bd2f023..acb6b149 100644 --- a/04-ISSUES/070-an-operator-cannot-deliver-a-pair-credential/00-report.md +++ b/04-ISSUES/070-an-operator-cannot-deliver-a-pair-credential/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-20 -located-in: [mesh-controller internal/inventory (secret), mesh-controller cmd/mesh-controller (secret accept)] -fixed-by: ADR 0092; mesh-controller feat/multiple-fixes (secret accept --provider; origin on the pair; remake and rotate refused) -amended-design: 03-DESIGN/01-to-be/24-the-secrets-vault.md --- # An operator cannot deliver a pair credential, so the vault's third species has no entry diff --git a/04-ISSUES/071-the-foundation-is-raised-with-fixed-credentials/00-report.md b/04-ISSUES/071-the-foundation-is-raised-with-fixed-credentials/00-report.md index ec026a8c..82b2f7de 100644 --- a/04-ISSUES/071-the-foundation-is-raised-with-fixed-credentials/00-report.md +++ b/04-ISSUES/071-the-foundation-is-raised-with-fixed-credentials/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-20 -located-in: [mesh-host internal/bootstrap, mesh-host examples/foundation-first-node.lock] -fixed-by: mesh-host PR 14 (e30a6b0), mesh-controller PR 34 (6b695c8), mesh-catalog PR 30 (d03520f), mesh-lab PR 39 (7e2e97f); proven by the one-node genesis bed step V5, 22/22 -amended-design: 03-DESIGN/01-to-be/24-the-secrets-vault.md --- # The foundation is raised with fixed credentials, and they stay diff --git a/04-ISSUES/072-the-controllers-manifest-exists-twice/00-report.md b/04-ISSUES/072-the-controllers-manifest-exists-twice/00-report.md index 34b1aef4..aa4e7cd4 100644 --- a/04-ISSUES/072-the-controllers-manifest-exists-twice/00-report.md +++ b/04-ISSUES/072-the-controllers-manifest-exists-twice/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-21 -located-in: [mesh-host internal/bootstrap, mesh-catalog modules/mesh-controller/module.json] -fixed-by: mesh-host #17 (genesis registers the manifest its build produced), mesh-catalog #33 (the copy deleted), mesh-lab #42; proven by the genesis-single bed -amended-design: 03-DESIGN/01-to-be/17-raising-a-mesh.md --- # The controller's manifest exists twice, and nothing keeps the copies equal diff --git a/04-ISSUES/073-beds-carry-copies-of-catalogue-manifests/00-report.md b/04-ISSUES/073-beds-carry-copies-of-catalogue-manifests/00-report.md index bbb8e8df..2b730e18 100644 --- a/04-ISSUES/073-beds-carry-copies-of-catalogue-manifests/00-report.md +++ b/04-ISSUES/073-beds-carry-copies-of-catalogue-manifests/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-21 -located-in: [mesh-lab test/integration] -fixed-by: ADR 0089; mesh-lab #41 (one loader, eight beds read the catalogue, the receipt claims it, a check refuses inline copies); proven by eight beds green against the catalogue -amended-design: 03-DESIGN/01-to-be/01-end-to-end-testing.md --- # Beds carry copies of catalogue manifests, so a catalogue change is proven nowhere diff --git a/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/00-report.md b/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/00-report.md index 04e15427..e99c8c12 100644 --- a/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/00-report.md +++ b/04-ISSUES/074-a-mesh-test-wears-a-catalogue-modules-name/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-21 -located-in: [mesh-lab test/integration] -fixed-by: mesh-lab, over three multiple-fixes rounds — nine beds read the catalogue or were retired as duplicate coverage; the three mechanism fixtures wear names that are no catalogue module's; the declared list in test/beds-read-the-catalogue.test.ts is empty of WEARING --- # A mesh test wears a catalogue module's name diff --git a/04-ISSUES/075-a-stocked-runtime-image-is-never-rebuilt-by-the-run/00-report.md b/04-ISSUES/075-a-stocked-runtime-image-is-never-rebuilt-by-the-run/00-report.md index e97ebb3f..e664cfae 100644 --- a/04-ISSUES/075-a-stocked-runtime-image-is-never-rebuilt-by-the-run/00-report.md +++ b/04-ISSUES/075-a-stocked-runtime-image-is-never-rebuilt-by-the-run/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-21 -located-in: [mesh-lab src/rebuild.ts, mesh-lab src/runtimes.ts] -fixed-by: mesh-lab feat/mesh-tests-and-runtimes (the suite compares each stocked runtime against its source and rebuilds it where older, missing or uncommitted); proven by removing an image and watching the run rebuild it -amended-design: 03-DESIGN/01-to-be/01-end-to-end-testing.md --- # A stocked runtime image is never rebuilt by the run diff --git a/04-ISSUES/076-a-served-fact-made-at-first-start-cannot-be-served/00-report.md b/04-ISSUES/076-a-served-fact-made-at-first-start-cannot-be-served/00-report.md index 2460cff7..097371b7 100644 --- a/04-ISSUES/076-a-served-fact-made-at-first-start-cannot-be-served/00-report.md +++ b/04-ISSUES/076-a-served-fact-made-at-first-start-cannot-be-served/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-21 -located-in: [mesh-catalog modules/step-ca, mesh-catalog modules/route-proxy] -fixed-by: ADR 0098; mesh-catalog multiple-fixes (the authority makes its own root and serves it; the proxy fetches it through a gate); proven by the route-forwarding bed -amended-design: 03-DESIGN/01-to-be/08-connectivity.md --- # A served fact made at first start cannot be served, so the catalogue's authority cannot start diff --git a/04-ISSUES/077-a-fact-fetched-at-first-start-is-fetched-once/00-report.md b/04-ISSUES/077-a-fact-fetched-at-first-start-is-fetched-once/00-report.md index dbcd8cf3..175a76f5 100644 --- a/04-ISSUES/077-a-fact-fetched-at-first-start-is-fetched-once/00-report.md +++ b/04-ISSUES/077-a-fact-fetched-at-first-start-is-fetched-once/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-21 -located-in: [mesh-host internal/declaration, mesh-controller internal/catalogue, mesh-catalog modules/route-proxy] -fixed-by: ADR 0099; mesh-host and mesh-controller multiple-fixes (a run-once step may name what it reads and runs again when it changed); mesh-catalog multiple-fixes (the proxy's gate names the binding, the server names the gate) -amended-design: 03-DESIGN/01-to-be/08-connectivity.md, 03-DESIGN/01-to-be/20-writing-a-module.md --- # 077 — A fact fetched at first start is fetched once per declaration diff --git a/04-ISSUES/078-a-delivered-secret-is-accepted-under-any-name/00-report.md b/04-ISSUES/078-a-delivered-secret-is-accepted-under-any-name/00-report.md index 02e870c7..39608e8c 100644 --- a/04-ISSUES/078-a-delivered-secret-is-accepted-under-any-name/00-report.md +++ b/04-ISSUES/078-a-delivered-secret-is-accepted-under-any-name/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-21 -located-in: [mesh-controller internal/inventory (secrets), mesh-controller cmd (module issue)] -fixed-by: mesh-controller multiple-fixes (a delivery is refused for a name the module does not declare as an own secret, a requirement it has not got, or a local it does not keep; the refusal names what it does declare); module issue refuses a module with no broker secret before making the account; found one stale delivery in the whole-mesh bed and one orphan account the mesh itself made --- # 078 — A delivered secret is accepted under any name diff --git a/04-ISSUES/079-every-machine-is-named-twice-over/00-report.md b/04-ISSUES/079-every-machine-is-named-twice-over/00-report.md index c375cb08..184a6a18 100644 --- a/04-ISSUES/079-every-machine-is-named-twice-over/00-report.md +++ b/04-ISSUES/079-every-machine-is-named-twice-over/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller internal/catalogue (facts)] -fixed-by: mesh-controller multiple-fixes (the facts take a name as the control plane keys it, internal or bare, and write each machine once); a unit test holds both keyings to the same files --- # 079 — Every machine is named twice over in the hosts file and the resolver's zones diff --git a/04-ISSUES/080-a-cache-grant-lets-the-consumer-flush-the-server/00-report.md b/04-ISSUES/080-a-cache-grant-lets-the-consumer-flush-the-server/00-report.md index 5eae272c..cbd483f7 100644 --- a/04-ISSUES/080-a-cache-grant-lets-the-consumer-flush-the-server/00-report.md +++ b/04-ISSUES/080-a-cache-grant-lets-the-consumer-flush-the-server/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-catalog modules/redis (the provisioner's ACL)] -fixed-by: mesh-catalog multiple-fixes (the consumer's ACL user loses the dangerous command category); proven by the grant end-to-end bed, which now asserts a write outside the consumer's keys and FLUSHALL are refused --- # 080 — A cache grant lets the consumer flush the server diff --git a/04-ISSUES/081-a-cache-consumer-does-not-use-the-login-it-was-granted/00-report.md b/04-ISSUES/081-a-cache-consumer-does-not-use-the-login-it-was-granted/00-report.md index c26f051d..ad3d7bec 100644 --- a/04-ISSUES/081-a-cache-consumer-does-not-use-the-login-it-was-granted/00-report.md +++ b/04-ISSUES/081-a-cache-consumer-does-not-use-the-login-it-was-granted/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-catalog modules/n8n, mesh-catalog modules/baserow] -fixed-by: mesh-catalog multiple-fixes (neither module takes the shared cache — baserow runs its own, n8n in its shipped mode needs none); mesh-lab multiple-fixes (a check that every catalogue module taking the cache presents the login; the two-node bed asserts baserow's own cache answers) --- # 081 — A cache consumer does not use the login it was granted diff --git a/04-ISSUES/082-a-report-that-arrives-while-the-store-restarts-is-lost/00-report.md b/04-ISSUES/082-a-report-that-arrives-while-the-store-restarts-is-lost/00-report.md index b794135d..e7987558 100644 --- a/04-ISSUES/082-a-report-that-arrives-while-the-store-restarts-is-lost/00-report.md +++ b/04-ISSUES/082-a-report-that-arrives-while-the-store-restarts-is-lost/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller internal/link (serve, enrolment), mesh-controller internal/inventory] -fixed-by: mesh-controller multiple-fixes (a report the store cannot take right now is handed back to the broker after a short pause; any other failure is still acknowledged); unit tests on both halves; the two-node bed --- # 082 — A report that arrives while the store restarts is lost, and the node is never heard from diff --git a/04-ISSUES/083-other-control-messages-are-lost-while-the-store-restarts/00-report.md b/04-ISSUES/083-other-control-messages-are-lost-while-the-store-restarts/00-report.md index 1a5fe1ee..e0269294 100644 --- a/04-ISSUES/083-other-control-messages-are-lost-while-the-store-restarts/00-report.md +++ b/04-ISSUES/083-other-control-messages-are-lost-while-the-store-restarts/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller internal/link (serve, enrolment), mesh-controller internal/inventory (tokens), mesh-host internal/link (enrol)] -fixed-by: mesh-controller multiple-fixes (build results, upgrades and catch-ups handed back while the store is away, bounded; an enrolment claims its token and spends it last, and is answered "try again"); mesh-host multiple-fixes (the host asks again with the same request); mesh-lab multiple-fixes (the store-window bed) --- # 083 — Other control messages are lost while the store restarts diff --git a/04-ISSUES/084-taking-networking-on-an-adopted-node-restarts-every-container/00-report.md b/04-ISSUES/084-taking-networking-on-an-adopted-node-restarts-every-container/00-report.md index e04aa9b7..e236e4ee 100644 --- a/04-ISSUES/084-taking-networking-on-an-adopted-node-restarts-every-container/00-report.md +++ b/04-ISSUES/084-taking-networking-on-an-adopted-node-restarts-every-container/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller internal/overlay, mesh-host internal/apply] -fixed-by: ADR 0102 (mesh-controller internal/overlay: the runtime file written into, reloaded), issue 128 (the hosts file as a region) -amended-design: 03-DESIGN/01-to-be/05-the-node-host.md --- # 084 — Taking the networking module on an adopted node restarts every container on the machine diff --git a/04-ISSUES/085-the-packages-port-given-at-genesis-is-not-a-setting/00-report.md b/04-ISSUES/085-the-packages-port-given-at-genesis-is-not-a-setting/00-report.md index afd9ac91..084842ab 100644 --- a/04-ISSUES/085-the-packages-port-given-at-genesis-is-not-a-setting/00-report.md +++ b/04-ISSUES/085-the-packages-port-given-at-genesis-is-not-a-setting/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-host internal/bootstrap, mesh-catalog modules/builder] -fixed-by: mesh-host#21, mesh-controller#45, mesh-catalog#39 -amended-design: --- # 085 — The packages port given at genesis is not a setting, and a later module can undo it diff --git a/04-ISSUES/086-taking-a-module-narrows-a-port-without-saying-so/00-report.md b/04-ISSUES/086-taking-a-module-narrows-a-port-without-saying-so/00-report.md index b64f2262..350c0530 100644 --- a/04-ISSUES/086-taking-a-module-narrows-a-port-without-saying-so/00-report.md +++ b/04-ISSUES/086-taking-a-module-narrows-a-port-without-saying-so/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-controller 201 (the preview names the narrowing and the port's reach), 206 (`take --yes ` acts on the preview read) -amended-design: --- # 086 — Taking a module narrows a port the predecessor served, without saying so diff --git a/04-ISSUES/087-the-controller-cannot-tell-a-host-is-too-old/00-report.md b/04-ISSUES/087-the-controller-cannot-tell-a-host-is-too-old/00-report.md index a59c887e..f93547fe 100644 --- a/04-ISSUES/087-the-controller-cannot-tell-a-host-is-too-old/00-report.md +++ b/04-ISSUES/087-the-controller-cannot-tell-a-host-is-too-old/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller internal/link/protocol.go (the report field that was missing), internal/inventory, cmd/mesh-controller (node show and status)] -fixed-by: mesh-controller 7683ba8, corrected by 1d9c102 -amended-design: --- # 087 — The controller cannot tell that a node's host is too old for what it sends diff --git a/04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md b/04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md index 890b6c8a..01357e91 100644 --- a/04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md +++ b/04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-catalog modules/gitea, mesh-controller internal/catalogue/declaration.go] -fixed-by: mesh-controller 7352c84, merged in #46 — a module is told its port in a container's environment too, as a file already was -amended-design: --- # 088 — The forge's own address names a port it may not have diff --git a/04-ISSUES/089-a-contributed-route-names-a-port-the-node-may-have-moved/00-report.md b/04-ISSUES/089-a-contributed-route-names-a-port-the-node-may-have-moved/00-report.md index 038b0289..234c5b01 100644 --- a/04-ISSUES/089-a-contributed-route-names-a-port-the-node-may-have-moved/00-report.md +++ b/04-ISSUES/089-a-contributed-route-names-a-port-the-node-may-have-moved/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller internal/catalogue/declaration.go, mesh-catalog (every routed module)] -fixed-by: mesh-controller bdf965d (a route names the endpoint it serves) with `portOfEndpoint` and `AtPublishedPort` — the contribution carries the endpoint's declared port and the machine-side redirection is applied to it like any other -amended-design: --- # 089 — A contributed route names a port the node may have moved diff --git a/04-ISSUES/090-the-forge-module-does-not-take-over-the-forge-genesis-raised/00-report.md b/04-ISSUES/090-the-forge-module-does-not-take-over-the-forge-genesis-raised/00-report.md index 6a2261c4..b429691c 100644 --- a/04-ISSUES/090-the-forge-module-does-not-take-over-the-forge-genesis-raised/00-report.md +++ b/04-ISSUES/090-the-forge-module-does-not-take-over-the-forge-genesis-raised/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-host 64 (genesis raises the forge as `gitea`, on the module's image digest, with the module's data directory at /data; a test holds the installer to the module's manifest) -amended-design: --- # 090 — The forge module does not take over the forge genesis raised diff --git a/04-ISSUES/091-a-module-definition-carries-a-machine-port/00-report.md b/04-ISSUES/091-a-module-definition-carries-a-machine-port/00-report.md index 44cfad1a..d95e5314 100644 --- a/04-ISSUES/091-a-module-definition-carries-a-machine-port/00-report.md +++ b/04-ISSUES/091-a-module-definition-carries-a-machine-port/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-catalog] -fixed-by: mesh-catalog — the 11 not-defensible modules (de-spiegel, gitea, hello-web, mailu, mssql, n8n, novox.be, only-office, photos, photos-eef, photos-filip) had their hardcoded machine-side port mapping stripped to the bare software port, letting ADR 0038's existing assignment machinery (internal/inventory/ports.go's PortFor, declaration.go's publishedOn) assign it as designed. postgres, lavinmq, distribution (foundation, genesis-rewritten) and unifi (protocol-fixed) were left as-is — the two defensible kinds this report names. -amended-design: --- # 091 — A module definition carries a machine port diff --git a/04-ISSUES/092-genesis-publishes-to-a-registry-the-runtime-does-not-trust/00-report.md b/04-ISSUES/092-genesis-publishes-to-a-registry-the-runtime-does-not-trust/00-report.md index e1798657..8a4bd093 100644 --- a/04-ISSUES/092-genesis-publishes-to-a-registry-the-runtime-does-not-trust/00-report.md +++ b/04-ISSUES/092-genesis-publishes-to-a-registry-the-runtime-does-not-trust/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-09-22 -located-in: [] -fixed-by: -amended-design: --- # 092 — Genesis publishes to a registry the container runtime does not yet trust diff --git a/04-ISSUES/093-the-successor-proxy-cannot-serve-what-the-predecessor-still-serves/00-report.md b/04-ISSUES/093-the-successor-proxy-cannot-serve-what-the-predecessor-still-serves/00-report.md index c8a2e3e6..5ecc965d 100644 --- a/04-ISSUES/093-the-successor-proxy-cannot-serve-what-the-predecessor-still-serves/00-report.md +++ b/04-ISSUES/093-the-successor-proxy-cannot-serve-what-the-predecessor-still-serves/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-22 -located-in: [mesh-catalog, mesh-controller internal/catalogue] -fixed-by: ADR 0104 — the route adapter module (mesh-catalog modules/route-adapter) writes each migrated route into the predecessor's proxy; it runs on the home server's migration -amended-design: --- # 093 — The successor proxy cannot serve what the predecessor still serves diff --git a/04-ISSUES/094-a-port-published-as-the-machine-side-cannot-be-moved/00-report.md b/04-ISSUES/094-a-port-published-as-the-machine-side-cannot-be-moved/00-report.md index b5d1a83c..b0be3651 100644 --- a/04-ISSUES/094-a-port-published-as-the-machine-side-cannot-be-moved/00-report.md +++ b/04-ISSUES/094-a-port-published-as-the-machine-side-cannot-be-moved/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller internal/catalogue/filtering.go, mesh-controller cmd/mesh-controller/plan.go] -fixed-by: mesh-controller — a node may move a port a module publishes as a mapping's machine side -amended-design: --- # 094 — A port published as the machine side of a mapping cannot be moved, and trying blocks every push diff --git a/04-ISSUES/095-a-module-assigned-after-genesis-has-no-broker-account/00-report.md b/04-ISSUES/095-a-module-assigned-after-genesis-has-no-broker-account/00-report.md index a64edcab..0fab46ae 100644 --- a/04-ISSUES/095-a-module-assigned-after-genesis-has-no-broker-account/00-report.md +++ b/04-ISSUES/095-a-module-assigned-after-genesis-has-no-broker-account/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/modules.go] -fixed-by: novox/mesh-controller eae0577 (PR #233, numbered on the forge before its move) -replay-none: fixed a week before ADR 0237; the behaviour is held by the controller's own tests of an assignment issuing its account, and no faithful replay of the first migration's sidecar can be written now -amended-design: --- # 095 — A module assigned after genesis has no broker account, and finds out by restarting diff --git a/04-ISSUES/096-a-setting-that-cannot-work-is-stored-and-stops-the-node/00-report.md b/04-ISSUES/096-a-setting-that-cannot-work-is-stored-and-stops-the-node/00-report.md index a8601ecb..e8b4e017 100644 --- a/04-ISSUES/096-a-setting-that-cannot-work-is-stored-and-stops-the-node/00-report.md +++ b/04-ISSUES/096-a-setting-that-cannot-work-is-stored-and-stops-the-node/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-controller (the pull request after 201: JudgeSettings, LeftOut), mesh-host 64 (left_out kept) -amended-design: --- # 096 — A setting that cannot work is accepted where it is set, and stops the node where it is read diff --git a/04-ISSUES/097-a-resource-that-changes-target-leaves-the-old-one-behind/00-report.md b/04-ISSUES/097-a-resource-that-changes-target-leaves-the-old-one-behind/00-report.md index 56bf2728..0bb77a2b 100644 --- a/04-ISSUES/097-a-resource-that-changes-target-leaves-the-old-one-behind/00-report.md +++ b/04-ISSUES/097-a-resource-that-changes-target-leaves-the-old-one-behind/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-host 63 (former targets removed, strays reported), mesh-controller 201/202 (strays shown) -amended-design: --- # 097 — A resource whose target changes leaves the old one behind, running diff --git a/04-ISSUES/098-taking-a-module-replaces-a-configuration-nobody-compared/00-report.md b/04-ISSUES/098-taking-a-module-replaces-a-configuration-nobody-compared/00-report.md index cae1a016..8a088189 100644 --- a/04-ISSUES/098-taking-a-module-replaces-a-configuration-nobody-compared/00-report.md +++ b/04-ISSUES/098-taking-a-module-replaces-a-configuration-nobody-compared/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-host 63 (the kept original's difference), mesh-controller 201 (shown; a differing file refuses unless `--replace `) -amended-design: --- # 098 — Taking a module replaces a configuration nobody compared, and the part that was the installation's is gone diff --git a/04-ISSUES/099-a-modules-image-pin-ages-into-a-downgrade/00-report.md b/04-ISSUES/099-a-modules-image-pin-ages-into-a-downgrade/00-report.md index a086abc7..c8b32093 100644 --- a/04-ISSUES/099-a-modules-image-pin-ages-into-a-downgrade/00-report.md +++ b/04-ISSUES/099-a-modules-image-pin-ages-into-a-downgrade/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-host 63 (both images' creation dates), mesh-controller 201 (DOWNGRADE said; refused unless `--downgrade`) -amended-design: --- # 099 — A module's image pin ages into a downgrade, and taking it over is where that is discovered diff --git a/04-ISSUES/100-a-minted-secret-cannot-be-the-one-the-service-already-uses/00-report.md b/04-ISSUES/100-a-minted-secret-cannot-be-the-one-the-service-already-uses/00-report.md index de4b700e..83033768 100644 --- a/04-ISSUES/100-a-minted-secret-cannot-be-the-one-the-service-already-uses/00-report.md +++ b/04-ISSUES/100-a-minted-secret-cannot-be-the-one-the-service-already-uses/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-controller 201 (`secret accept --provider` reaches a required secret), 206 (a module's secrets listed with origin; a minted one for found data refuses unless `--mint `) -amended-design: --- # 100 — A secret the mesh mints cannot be the one the service it takes over already uses diff --git a/04-ISSUES/101-taking-a-service-reached-by-container-name-cuts-its-neighbours-off/00-report.md b/04-ISSUES/101-taking-a-service-reached-by-container-name-cuts-its-neighbours-off/00-report.md index c8c84ad3..a507811a 100644 --- a/04-ISSUES/101-taking-a-service-reached-by-container-name-cuts-its-neighbours-off/00-report.md +++ b/04-ISSUES/101-taking-a-service-reached-by-container-name-cuts-its-neighbours-off/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/adoption.go (take previews nothing), mesh-host internal/apply (the comparison and the record)] -fixed-by: mesh-controller 201 (the neighbours on a found network are named), 206 (the per-machine `networks` setting), mesh-host 64 (the taken container joins the kept network) -amended-design: --- # 101 — Taking a service its neighbours reach by container name cuts them off, and nothing says so diff --git a/04-ISSUES/102-an-address-recorded-at-genesis-or-build-does-not-follow-the-nodes-ports/00-report.md b/04-ISSUES/102-an-address-recorded-at-genesis-or-build-does-not-follow-the-nodes-ports/00-report.md index 9960b461..b9d032da 100644 --- a/04-ISSUES/102-an-address-recorded-at-genesis-or-build-does-not-follow-the-nodes-ports/00-report.md +++ b/04-ISSUES/102-an-address-recorded-at-genesis-or-build-does-not-follow-the-nodes-ports/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-bootstrap, mesh-controller internal/builder, mesh-controller internal/catalogue] -fixed-by: mesh-controller — an address is read from the node's settings where it is used, never recorded with a port -amended-design: --- # 102 — An address recorded at genesis or at build does not follow the node's ports diff --git a/04-ISSUES/103-a-container-is-not-recreated-when-a-file-it-reads-changes/00-report.md b/04-ISSUES/103-a-container-is-not-recreated-when-a-file-it-reads-changes/00-report.md index e2aa9505..a1b2632c 100644 --- a/04-ISSUES/103-a-container-is-not-recreated-when-a-file-it-reads-changes/00-report.md +++ b/04-ISSUES/103-a-container-is-not-recreated-when-a-file-it-reads-changes/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-host internal/apply] -fixed-by: mesh-host PR #22 — a container records the digest of every file it reads at creation, its env-files and files mounted into it directly, and is recreated when one changes; a pre-upgrade label is accepted once, and the plan names the file. A mounted directory still needs restart-on. -amended-design: --- # 103 — A container is not recreated when a file it reads changes diff --git a/04-ISSUES/104-reconcile-applies-a-stale-declaration-and-refuses-nothing/00-report.md b/04-ISSUES/104-reconcile-applies-a-stale-declaration-and-refuses-nothing/00-report.md index c1f08fb1..68809878 100644 --- a/04-ISSUES/104-reconcile-applies-a-stale-declaration-and-refuses-nothing/00-report.md +++ b/04-ISSUES/104-reconcile-applies-a-stale-declaration-and-refuses-nothing/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-host cmd/mesh-host] -fixed-by: mesh-host — a declaration for the other mode is refused, every file is refused once the mesh has spoken, and an apply previews what it would change -amended-design: --- # 104 — `reconcile` applies the declaration the host was installed with, and refuses nothing diff --git a/04-ISSUES/105-the-hub-of-the-private-network-is-not-a-seat/00-report.md b/04-ISSUES/105-the-hub-of-the-private-network-is-not-a-seat/00-report.md index a5e898d8..32108a78 100644 --- a/04-ISSUES/105-the-hub-of-the-private-network-is-not-a-seat/00-report.md +++ b/04-ISSUES/105-the-hub-of-the-private-network-is-not-a-seat/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller cmd/mesh-controller/network.go (the placing command), internal/inventory/migrations/0004-the-overlay.sql (one hub)] -fixed-by: nothing to build — ADR 0161 rule 2; the second hub was already refused by name, and the private network's seat waits for ADR 0121's server and client modules -amended-design: [03-DESIGN/01-to-be/26-the-seats.md] --- # 105 — The hub of the private network is a placement, not a seat diff --git a/04-ISSUES/106-the-vault-claims-no-seat/00-report.md b/04-ISSUES/106-the-vault-claims-no-seat/00-report.md index 04744daf..34b57441 100644 --- a/04-ISSUES/106-the-vault-claims-no-seat/00-report.md +++ b/04-ISSUES/106-the-vault-claims-no-seat/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller internal/catalogue/seats.go (the seed lacks mesh-vault), mesh-catalog modules/mesh-vault/module.json (claims nothing)] -fixed-by: mesh-controller PR 192 (the seat row), mesh-catalog PR 205 (the claim; the vault's events renamed to its own) -amended-design: [03-DESIGN/01-to-be/26-the-seats.md] --- # 106 — The vault claims no seat, so nothing refuses a second one diff --git a/04-ISSUES/107-a-declaration-carries-no-order/00-report.md b/04-ISSUES/107-a-declaration-carries-no-order/00-report.md index a54dde11..c7d8f257 100644 --- a/04-ISSUES/107-a-declaration-carries-no-order/00-report.md +++ b/04-ISSUES/107-a-declaration-carries-no-order/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller internal/link, mesh-host internal/link] -fixed-by: mesh-host PR 59 (the host refuses an older sequence and drains by it), mesh-controller PR 160 (each send is numbered under the node's hold) — measured 2026-09-30, 02-resolution.md -amended-design: --- # 107 — A declaration carries no order, so a host cannot tell an older one from a newer diff --git a/04-ISSUES/108-the-registry-has-no-garbage-collection-once-it-has-two-doors/00-report.md b/04-ISSUES/108-the-registry-has-no-garbage-collection-once-it-has-two-doors/00-report.md index 50a03a67..e55a42d5 100644 --- a/04-ISSUES/108-the-registry-has-no-garbage-collection-once-it-has-two-doors/00-report.md +++ b/04-ISSUES/108-the-registry-has-no-garbage-collection-once-it-has-two-doors/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-23 -located-in: [mesh-controller internal/inventory, mesh-controller internal/artifacts, mesh-host internal/apply, mesh-catalog modules/distribution] -fixed-by: 02-DECISIONS/0189-the-store-keeps-what-the-records-name.md -amended-design: 03-DESIGN/01-to-be/18-building-a-module.md --- # 108 — The registry has no garbage collection, and two doors make it harder to add diff --git a/04-ISSUES/109-a-container-keeps-the-address-it-was-made-with/00-report.md b/04-ISSUES/109-a-container-keeps-the-address-it-was-made-with/00-report.md index f6ede25a..7eae3b7b 100644 --- a/04-ISSUES/109-a-container-keeps-the-address-it-was-made-with/00-report.md +++ b/04-ISSUES/109-a-container-keeps-the-address-it-was-made-with/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-24 -located-in: [mesh-controller internal/catalogue/declaration.go (every container was given the roster at creation)] -fixed-by: mesh-controller PR 161 — no container is given a mesh name; it resolves through its machine's resolver (ADR 0148, landed 2026-09-30 once issue 110 did) -amended-design: --- # 109 — A container keeps the address it was made with, and nothing recreates it when the node moves diff --git a/04-ISSUES/110-a-container-on-the-runtimes-own-network-cannot-reach-the-resolver/00-report.md b/04-ISSUES/110-a-container-on-the-runtimes-own-network-cannot-reach-the-resolver/00-report.md index 06742d41..6c69c55d 100644 --- a/04-ISSUES/110-a-container-on-the-runtimes-own-network-cannot-reach-the-resolver/00-report.md +++ b/04-ISSUES/110-a-container-on-the-runtimes-own-network-cannot-reach-the-resolver/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-24 -located-in: - - mesh-catalog modules/dnsmasq (the runtime was never told; the resolver answered by interface) -fixed-by: mesh-catalog PR 175 (the runtime is reloaded and keeps its containers over a restart) and PR 176 (the resolver answers by address, so a query from a bridge is admitted) — measured 2026-09-30, 01-resolution.md -amended-design: --- # 110 — On a converged node, a container on the runtime's own network cannot reach the resolver diff --git a/04-ISSUES/111-the-resolver-is-told-names-the-mesh-serves-not-only-machines/00-report.md b/04-ISSUES/111-the-resolver-is-told-names-the-mesh-serves-not-only-machines/00-report.md index 0adfa36f..952b18eb 100644 --- a/04-ISSUES/111-the-resolver-is-told-names-the-mesh-serves-not-only-machines/00-report.md +++ b/04-ISSUES/111-the-resolver-is-told-names-the-mesh-serves-not-only-machines/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-24 -located-in: [mesh-controller cmd/mesh-controller/plan.go, mesh-controller internal/catalogue/facts.go] -fixed-by: mesh-controller — tell the resolver the machines, not the names the mesh merely serves -amended-design: --- # 111 — The resolver is told every name the mesh serves, not only the machines diff --git a/04-ISSUES/112-adopting-a-tunnel-gives-the-mesh-addresses-without-names/00-report.md b/04-ISSUES/112-adopting-a-tunnel-gives-the-mesh-addresses-without-names/00-report.md index a36fde6f..a3c9c183 100644 --- a/04-ISSUES/112-adopting-a-tunnel-gives-the-mesh-addresses-without-names/00-report.md +++ b/04-ISSUES/112-adopting-a-tunnel-gives-the-mesh-addresses-without-names/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-24 -located-in: [mesh-controller internal/inventory, mesh-controller internal/catalogue, mesh-controller cmd/mesh-controller, mesh-catalog modules/dnsmasq] -fixed-by: [mesh-controller#73 overlay-name + namesInTheMesh, mesh-catalog#106 dnsmasq daemon.json merge] -amended-design: --- # 112 — Adopting a tunnel gives the mesh the peers' addresses but not their names diff --git a/04-ISSUES/113-the-object-stores-images-were-withdrawn-upstream/00-report.md b/04-ISSUES/113-the-object-stores-images-were-withdrawn-upstream/00-report.md index 8bfbab6a..b549d868 100644 --- a/04-ISSUES/113-the-object-stores-images-were-withdrawn-upstream/00-report.md +++ b/04-ISSUES/113-the-object-stores-images-were-withdrawn-upstream/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-24 -located-in: [mesh-catalog modules/minio] -fixed-by: mesh-catalog — the object-store module repinned to a maintained fork of the withdrawn server image, its runtime sidecar built from source rather than pulled, and its data moved off the predecessor's live directory. The standing condition this report names is not closed by it — see What was done. -amended-design: --- # 113 — The object store's images were withdrawn upstream, and only a node that already holds them can still run it diff --git a/04-ISSUES/114-should-the-controller-be-a-container-or-a-process/00-report.md b/04-ISSUES/114-should-the-controller-be-a-container-or-a-process/00-report.md index 194fbd78..9509f79e 100644 --- a/04-ISSUES/114-should-the-controller-be-a-container-or-a-process/00-report.md +++ b/04-ISSUES/114-should-the-controller-be-a-container-or-a-process/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-24 -located-in: [mesh-controller module.json, mesh-host internal/apply] -fixed-by: ADR 0142 — the mesh's own components are delivered as binaries on the machine, so the controller is a process; the delivery itself is issue 142 -amended-design: --- # 114 — Should the controller run as a container, or as a process the host supervises directly? diff --git a/04-ISSUES/115-a-named-docker-volume-is-invisible-and-one-flag-from-gone/00-report.md b/04-ISSUES/115-a-named-docker-volume-is-invisible-and-one-flag-from-gone/00-report.md index 0c3a8e7b..8352f972 100644 --- a/04-ISSUES/115-a-named-docker-volume-is-invisible-and-one-flag-from-gone/00-report.md +++ b/04-ISSUES/115-a-named-docker-volume-is-invisible-and-one-flag-from-gone/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-24 -located-in: [mesh-catalog] -fixed-by: mesh-catalog PR #54 — distribution, lavinmq, postgres and searxng converted to host directory binds; data copied and verified (mesh-store stopped cleanly first for a crash-consistent copy), old named volumes kept as the rollback path -amended-design: --- # 115 — A named Docker volume is invisible to the operator, and one flag from gone diff --git a/04-ISSUES/116-route-proxy-has-no-auth-or-ip-restriction/00-report.md b/04-ISSUES/116-route-proxy-has-no-auth-or-ip-restriction/00-report.md index 8390ad23..3709df73 100644 --- a/04-ISSUES/116-route-proxy-has-no-auth-or-ip-restriction/00-report.md +++ b/04-ISSUES/116-route-proxy-has-no-auth-or-ip-restriction/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-25 -located-in: [mesh-controller examples/route-proxy] -fixed-by: mesh-controller PR #58 — the four capabilities implemented in the reference proxy; the table re-keyed by host and path with a total ordering; a declaration carrying a credential refused rather than served, and an unreadable secret failing closed -amended-design: 03-DESIGN/01-to-be/08-connectivity.md --- # 116 — The mesh's proxy applies no policy to a request: no authentication, no source restriction, no path scoping, no redirects diff --git a/04-ISSUES/117-a-modules-own-code-is-a-container-and-a-process/00-report.md b/04-ISSUES/117-a-modules-own-code-is-a-container-and-a-process/00-report.md index 3b814c3d..7f445a25 100644 --- a/04-ISSUES/117-a-modules-own-code-is-a-container-and-a-process/00-report.md +++ b/04-ISSUES/117-a-modules-own-code-is-a-container-and-a-process/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-25 -located-in: [hq, mesh-catalog modules/showcase, mesh-sdk src/tools/index.ts, mesh-tools] -fixed-by: hq 83791f0 (PR 196) — ADR 0150: a module's own code runs as supervised processes under the module's one account; designs 18 and 20 now cite it, and ADR 0047 carries a dated note pointing at it -amended-design: --- # 117 — A module's own code is a container in one record and a process in another diff --git a/04-ISSUES/118-umamis-store-answers-the-dial-and-times-out-the-query/00-report.md b/04-ISSUES/118-umamis-store-answers-the-dial-and-times-out-the-query/00-report.md index fa36401b..291c3408 100644 --- a/04-ISSUES/118-umamis-store-answers-the-dial-and-times-out-the-query/00-report.md +++ b/04-ISSUES/118-umamis-store-answers-the-dial-and-times-out-the-query/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-25 -located-in: [mesh-host internal/apply (the spec comparison, via issue 135) — not mesh-catalog modules/umami, which this record first named and which was never at fault] -fixed-by: mesh-host e82789a (issue 135's fix) — recreating the container with a current roster ended it; verified live 2026-09-30 -amended-design: --- # 118 — umami's store answers the dial and times out the query diff --git a/04-ISSUES/119-a-module-definition-decides-where-its-files-live/00-report.md b/04-ISSUES/119-a-module-definition-decides-where-its-files-live/00-report.md index 40bf7747..d4ee4c56 100644 --- a/04-ISSUES/119-a-module-definition-decides-where-its-files-live/00-report.md +++ b/04-ISSUES/119-a-module-definition-decides-where-its-files-live/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-25 -located-in: [mesh-catalog modules, mesh-controller internal/catalogue] -fixed-by: mesh-catalog PR 193 (the conversion), mesh-controller PR 170 (TestPlacedDirectoriesKeepTheirPaths, which proves it moved nothing); the placed-directory mechanism itself predates this in mesh-controller internal/catalogue/dir_into.go -amended-design: 03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md --- # 119 — A module definition decides where its files live on the machine diff --git a/04-ISSUES/120-a-provisioner-remembers-what-it-did-not-what-is/00-report.md b/04-ISSUES/120-a-provisioner-remembers-what-it-did-not-what-is/00-report.md index 078d27c8..a562e02a 100644 --- a/04-ISSUES/120-a-provisioner-remembers-what-it-did-not-what-is/00-report.md +++ b/04-ISSUES/120-a-provisioner-remembers-what-it-did-not-what-is/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-26 -located-in: [mesh-sdk src/provisioner, mesh-catalog modules/redis] -fixed-by: mesh-catalog bbda88c, merged in #84 — every credential provider says whether it still holds a consumer -amended-design: --- # 120 — A provisioner remembers what it did, not what is there diff --git a/04-ISSUES/121-builders-real-package-registry-grant-deadlocks-genesis/00-report.md b/04-ISSUES/121-builders-real-package-registry-grant-deadlocks-genesis/00-report.md index a232e83a..6e7630ba 100644 --- a/04-ISSUES/121-builders-real-package-registry-grant-deadlocks-genesis/00-report.md +++ b/04-ISSUES/121-builders-real-package-registry-grant-deadlocks-genesis/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-09-25 -located-in: [mesh-catalog modules/builder, mesh-catalog modules/gitea, mesh-controller internal/catalogue/resolve.go] -fixed-by: -amended-design: --- # 121 — `builder` requiring a real `package-registry` grant deadlocks a genesis bootstrap diff --git a/04-ISSUES/122-a-module-cannot-ask-for-its-own-public-name/00-report.md b/04-ISSUES/122-a-module-cannot-ask-for-its-own-public-name/00-report.md index ba0525a2..92badd48 100644 --- a/04-ISSUES/122-a-module-cannot-ask-for-its-own-public-name/00-report.md +++ b/04-ISSUES/122-a-module-cannot-ask-for-its-own-public-name/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-26 -located-in: [mesh-controller internal/catalogue/declaration.go, mesh-catalog modules/keycloak, mesh-catalog modules/minio, mesh-catalog modules/nextcloud] -fixed-by: mesh-controller PR 149 (a module is told the name it is served under), PR 169 (an operator's value, a context on the seat); mesh-catalog PR 188; ADR 0155 -amended-design: 03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md --- # 122 — A module cannot ask for its own public name, so three manifests wrote this mesh's names into the catalogue diff --git a/04-ISSUES/123-the-image-registry-is-named-after-a-role/00-report.md b/04-ISSUES/123-the-image-registry-is-named-after-a-role/00-report.md index e94b96d6..e1f22323 100644 --- a/04-ISSUES/123-the-image-registry-is-named-after-a-role/00-report.md +++ b/04-ISSUES/123-the-image-registry-is-named-after-a-role/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-26 -located-in: [hq 00-META/glossary.md, hq 02-DECISIONS/0075-two-stores-and-which-provides-what.md, mesh-controller internal/catalogue/seats.go, mesh-catalog modules/distribution] -fixed-by: ADR 0156; mesh-controller migration 0048 (feat/the-artifact-store-seat-is-named-for-its-scope); mesh-catalog modules/distribution -amended-design: 03-DESIGN/01-to-be/26-the-seats.md --- # 123 — The image registry is named after a role, and *artifact* is defined as one format diff --git a/04-ISSUES/124-a-consumer-cannot-be-told-what-its-provider-derived/00-report.md b/04-ISSUES/124-a-consumer-cannot-be-told-what-its-provider-derived/00-report.md index 3cb04d0d..4a712640 100644 --- a/04-ISSUES/124-a-consumer-cannot-be-told-what-its-provider-derived/00-report.md +++ b/04-ISSUES/124-a-consumer-cannot-be-told-what-its-provider-derived/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-26 -located-in: [mesh-controller internal/catalogue, mesh-sdk src/provisioner, mesh-catalog modules/minio] -fixed-by: 02-DECISIONS/0202-a-provider-declares-what-it-derives-for-each-consumer.md -amended-design: 03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md --- # 124 — A consumer cannot be told a value its provider derived for it, so it transcribes one diff --git a/04-ISSUES/125-a-hold-is-not-a-line-in-the-apply-report/00-report.md b/04-ISSUES/125-a-hold-is-not-a-line-in-the-apply-report/00-report.md index 9665d66b..4156ccda 100644 --- a/04-ISSUES/125-a-hold-is-not-a-line-in-the-apply-report/00-report.md +++ b/04-ISSUES/125-a-hold-is-not-a-line-in-the-apply-report/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-26 -located-in: [mesh-host internal/link (the apply report line), mesh-controller cmd/mesh-controller (status and its all-well condition)] -fixed-by: mesh-host cbf5018, mesh-controller bfd983e -amended-design: --- # 125 — a hold is not a line in the apply report, and an operator flew blind into an outage diff --git a/04-ISSUES/126-a-volume-path-is-not-in-the-spec-comparison/00-report.md b/04-ISSUES/126-a-volume-path-is-not-in-the-spec-comparison/00-report.md index 703c05ef..33e2b9aa 100644 --- a/04-ISSUES/126-a-volume-path-is-not-in-the-spec-comparison/00-report.md +++ b/04-ISSUES/126-a-volume-path-is-not-in-the-spec-comparison/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-26 -located-in: [mesh-host internal/apply] -fixed-by: mesh-host 63 (every written field compared), mesh-controller 201 (build says the policy) -amended-design: --- # 126 — a volume path is not in the spec comparison, and a roll-out raced a data move diff --git a/04-ISSUES/127-a-module-event-derives-a-subject-nothing-publishes/00-report.md b/04-ISSUES/127-a-module-event-derives-a-subject-nothing-publishes/00-report.md index 1b6fbeaf..774d3aa2 100644 --- a/04-ISSUES/127-a-module-event-derives-a-subject-nothing-publishes/00-report.md +++ b/04-ISSUES/127-a-module-event-derives-a-subject-nothing-publishes/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-27 -located-in: [mesh-catalog modules, mesh-control internal/catalogue, mesh-tools src] -fixed-by: mesh-catalog 7b06a7a, mesh-tools fbeb373, mesh-control 05ff606 -amended-design: 03-DESIGN/01-to-be/32-what-a-module-declares.md --- # 127 — A module's event derives a subject nothing publishes diff --git a/04-ISSUES/128-the-hosts-file-is-written-whole/00-report.md b/04-ISSUES/128-the-hosts-file-is-written-whole/00-report.md index 509ee3f9..ef52bb80 100644 --- a/04-ISSUES/128-the-hosts-file-is-written-whole/00-report.md +++ b/04-ISSUES/128-the-hosts-file-is-written-whole/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved -fixed-by: mesh-host 1cb8953 and fdc768c — the mesh writes into a marked block of a text file instead of over it opened: 2026-09-26 -located-in: [mesh-controller internal/catalogue/facts.go, mesh-host internal/apply] --- # 128 — the machine's hosts file is written whole, and on a workstation it is shared diff --git a/04-ISSUES/129-nothing-makes-a-machine-trust-the-meshs-authority/00-report.md b/04-ISSUES/129-nothing-makes-a-machine-trust-the-meshs-authority/00-report.md index 742c87a4..4ecb2f75 100644 --- a/04-ISSUES/129-nothing-makes-a-machine-trust-the-meshs-authority/00-report.md +++ b/04-ISSUES/129-nothing-makes-a-machine-trust-the-meshs-authority/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-26 -located-in: [mesh-catalog modules/ca-trust] -fixed-by: the ca-trust module registered from the catalogue and assigned to a workstation; verified in both directions 2026-09-30 (02-resolution.md) --- # 129 — nothing makes a machine trust the mesh's own certificate authority diff --git a/04-ISSUES/130-undeclaring-a-service-stops-it/00-report.md b/04-ISSUES/130-undeclaring-a-service-stops-it/00-report.md index 431a3f84..0b3fdd0f 100644 --- a/04-ISSUES/130-undeclaring-a-service-stops-it/00-report.md +++ b/04-ISSUES/130-undeclaring-a-service-stops-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved -fixed-by: mesh-host 3112c88 — undeclaring gives a unit back the state it was found in, and removes only a process the mesh made opened: 2026-09-27 -located-in: [mesh-host internal/apply/apply.go (remove)] -amended-design: 02-DECISIONS/0118-undeclaring-gives-a-unit-back-the-state-it-was-found-in.md --- # 130 — undeclaring a service stops it, even one the mesh only reloads or only keeps running diff --git a/04-ISSUES/131-nothing-tells-the-mesh-a-source-moved/00-report.md b/04-ISSUES/131-nothing-tells-the-mesh-a-source-moved/00-report.md index a7caf00e..459ed163 100644 --- a/04-ISSUES/131-nothing-tells-the-mesh-a-source-moved/00-report.md +++ b/04-ISSUES/131-nothing-tells-the-mesh-a-source-moved/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-27 -located-in: [mesh-catalog modules/gitea, mesh-controller cmd/mesh-controller, mesh-controller internal/builder] -fixed-by: mesh-catalog #124 — the forge module watches for merged pull requests and emits `pull.merged` with the merge commit and the clone address; mesh-controller #110/#111 — the control plane follows that event on the bus, marks every module built from that repository and branch as moved, and builds them bases first, stopping when a base fails; mesh-controller #113/#114 — a build records the bases it was handed and the graph is read from builds, without which "bases first" had no edges to order by. -amended-design: 03-DESIGN/01-to-be/28-building-the-bus.md --- # 131 — Nothing tells the mesh a source moved, and it reports itself current anyway diff --git a/04-ISSUES/132-a-module-can-be-recorded-without-the-directory-it-lives-in/00-report.md b/04-ISSUES/132-a-module-can-be-recorded-without-the-directory-it-lives-in/00-report.md index 3df2595d..f09eb892 100644 --- a/04-ISSUES/132-a-module-can-be-recorded-without-the-directory-it-lives-in/00-report.md +++ b/04-ISSUES/132-a-module-can-be-recorded-without-the-directory-it-lives-in/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-controller cmd/mesh-controller] -fixed-by: mesh-controller — `module add` takes `--path` and `--self`, so a module handed over by hand records the whole location it came from; a record naming a repository and no directory says so in the reply; the rule is one function with a test beside it. The nine records already wrong were corrected by rebuilding each with its real directory, which is the same act through the same door. -amended-design: --- # 132 — A module can be recorded without the directory it lives in diff --git a/04-ISSUES/133-the-control-planes-schema-is-migrated-at-birth-and-never-again/00-report.md b/04-ISSUES/133-the-control-planes-schema-is-migrated-at-birth-and-never-again/00-report.md index 90833d81..3d741aa6 100644 --- a/04-ISSUES/133-the-control-planes-schema-is-migrated-at-birth-and-never-again/00-report.md +++ b/04-ISSUES/133-the-control-planes-schema-is-migrated-at-birth-and-never-again/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-controller module.json] -fixed-by: mesh-controller — the control plane's module declares a run-once `migrate` step before its server, which is the shape ADR 0052 prescribes for exactly this. A step's record of having run is the digest of its declaration and the image is part of that digest, so a new build of the control plane re-runs it; and because a run-once step gates what the declaration places after it, a migration that fails stops the new server from starting at all rather than letting it run against a schema it does not have. -amended-design: 03-DESIGN/01-to-be/32-what-a-module-declares.md --- # 133 — The control plane's schema is migrated at birth and never again diff --git a/04-ISSUES/134-a-definition-may-still-name-the-mesh/00-report.md b/04-ISSUES/134-a-definition-may-still-name-the-mesh/00-report.md index ff02a28f..1db6008c 100644 --- a/04-ISSUES/134-a-definition-may-still-name-the-mesh/00-report.md +++ b/04-ISSUES/134-a-definition-may-still-name-the-mesh/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-catalog, mesh-controller internal/catalogue] -fixed-by: mesh-controller PR 169 (the check, module check, the catalogue-wide test); mesh-catalog PR 188 (the catalogue that passes it); ADR 0155 -amended-design: 03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md --- # 134 — A definition may still name the mesh, and the check that would say so does not exist diff --git a/04-ISSUES/135-a-containers-mesh-names-are-not-compared/00-report.md b/04-ISSUES/135-a-containers-mesh-names-are-not-compared/00-report.md index 19cc4025..94dd5f67 100644 --- a/04-ISSUES/135-a-containers-mesh-names-are-not-compared/00-report.md +++ b/04-ISSUES/135-a-containers-mesh-names-are-not-compared/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-host internal/apply] -fixed-by: mesh-host — a container's mesh names are part of the spec digest the host compares, sorted so the digest does not move for a reordering. A container whose names moved is now recreated like a container whose image moved, and the test fails against the previous behaviour. -amended-design: --- # 135 — A container's mesh names are not compared, so a moved address is never noticed diff --git a/04-ISSUES/136-a-module-may-name-a-program-the-machine-does-not-have/00-report.md b/04-ISSUES/136-a-module-may-name-a-program-the-machine-does-not-have/00-report.md index 1d4638d5..5e19c317 100644 --- a/04-ISSUES/136-a-module-may-name-a-program-the-machine-does-not-have/00-report.md +++ b/04-ISSUES/136-a-module-may-name-a-program-the-machine-does-not-have/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-catalog modules/fail2ban] -fixed-by: mesh-catalog — the intrusion-prevention module bans through an action it ships itself, already in use on every machine, instead of naming a firewall front-end two of them do not have. The instance is closed; the class in "What is still true" is not. -amended-design: --- # 136 — A module may name a program the machine does not have, and everything reports success diff --git a/04-ISSUES/137-converging-a-machine-cut-off-its-own-guests/00-report.md b/04-ISSUES/137-converging-a-machine-cut-off-its-own-guests/00-report.md index c1921e79..a2ddce41 100644 --- a/04-ISSUES/137-converging-a-machine-cut-off-its-own-guests/00-report.md +++ b/04-ISSUES/137-converging-a-machine-cut-off-its-own-guests/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-controller internal/catalogue] -fixed-by: mesh-controller — a machine says which networks it routes and the derived filter forwards them, their guests keeping address and name service ([ADR 0137](../../02-DECISIONS/0137-a-machine-says-which-networks-it-routes.md)). -amended-design: --- # 137 — Converging a machine cut off its own guests, and nothing said so diff --git a/04-ISSUES/138-two-modules-claim-one-seat-and-are-not-interchangeable/00-report.md b/04-ISSUES/138-two-modules-claim-one-seat-and-are-not-interchangeable/00-report.md index a76abc9b..a9655897 100644 --- a/04-ISSUES/138-two-modules-claim-one-seat-and-are-not-interchangeable/00-report.md +++ b/04-ISSUES/138-two-modules-claim-one-seat-and-are-not-interchangeable/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-host internal/profile/detectors.go (no detector for the network manager), mesh-host cmd/mesh-host (the profile is detected at enrolment only), mesh-controller internal/link (a report carries no profile), mesh-catalog modules/networkmanager, systemd-networkd, dhcpcd (declare no capability of their own)] -fixed-by: mesh-controller PR 192 (a report carries the profile), mesh-host PR 61 (uplink- detected and reported with every apply), mesh-catalog PR 206 (each holder declares its own) -amended-design: [03-DESIGN/01-to-be/26-the-seats.md] --- # 138 — Two modules claim one seat and are not interchangeable, and nothing says so diff --git a/04-ISSUES/139-an-internal-route-name-resolves-to-the-consumers-node/00-report.md b/04-ISSUES/139-an-internal-route-name-resolves-to-the-consumers-node/00-report.md index e05fe3f3..f2d5e7c1 100644 --- a/04-ISSUES/139-an-internal-route-name-resolves-to-the-consumers-node/00-report.md +++ b/04-ISSUES/139-an-internal-route-name-resolves-to-the-consumers-node/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: [mesh-controller internal/catalogue/declaration.go (composeName took the consumer's own name as the internal domain)] -fixed-by: mesh-controller PR 163 — the internal name composes under the node whose proxy serves the route (ADR 0151, 2026-09-30) -amended-design: 03-DESIGN/01-to-be/08-connectivity.md --- # 139 — An internal route name resolves to the consumer's node, not the one that serves it diff --git a/04-ISSUES/140-an-endpoints-reach-is-not-declared/00-report.md b/04-ISSUES/140-an-endpoints-reach-is-not-declared/00-report.md index 21926428..8ff70adb 100644 --- a/04-ISSUES/140-an-endpoints-reach-is-not-declared/00-report.md +++ b/04-ISSUES/140-an-endpoints-reach-is-not-declared/00-report.md @@ -1,14 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: - - mesh-controller internal/catalogue/manifest.go - - mesh-controller internal/catalogue/filtering.go - - mesh-controller internal/catalogue/declaration.go - - mesh-controller examples/route-proxy - - mesh-catalog (every routed module manifest) -fixed-by: mesh-controller bdf965d (a module names its endpoints) and c68d3a7 (an assignment configures an endpoint as one thing) — the filter, the proxy's names and both authorities now read one statement -amended-design: 03-DESIGN/01-to-be/08-connectivity.md --- # 140 — An endpoint's reach is not declared, so three mechanisms each decide it separately diff --git a/04-ISSUES/141-the-forward-chain-does-not-follow-the-modules/00-report.md b/04-ISSUES/141-the-forward-chain-does-not-follow-the-modules/00-report.md index 7f014f52..0333c843 100644 --- a/04-ISSUES/141-the-forward-chain-does-not-follow-the-modules/00-report.md +++ b/04-ISSUES/141-the-forward-chain-does-not-follow-the-modules/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-28 -located-in: - - mesh-controller internal/catalogue/filtering.go - - mesh-host internal/apply -fixed-by: ADR 0140 — mesh-controller (the filter around outward links; no network ranges anywhere) -amended-design: 03-DESIGN/01-to-be/08-connectivity.md --- # 141 — The forward chain does not follow the modules, though the modules declare their networks diff --git a/04-ISSUES/142-the-host-is-the-one-thing-the-mesh-does-not-deliver/00-report.md b/04-ISSUES/142-the-host-is-the-one-thing-the-mesh-does-not-deliver/00-report.md index 2f43aa1b..2639ba3b 100644 --- a/04-ISSUES/142-the-host-is-the-one-thing-the-mesh-does-not-deliver/00-report.md +++ b/04-ISSUES/142-the-host-is-the-one-thing-the-mesh-does-not-deliver/00-report.md @@ -1,13 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: - - mesh-host internal/upgrade - - mesh-host cmd/mesh-host - - mesh-controller (no build source for the host; no resource delivers it) -fixed-by: novox/mesh-host b5196e9 (PR #53), d275e64 (PR #54) and e6d48cf (PR #56), numbered on the forge before its move -replay-none: fixed before ADR 0237; the delivery is exercised on every push of the node-engine to every machine, which is a stronger and continuing proof than a replay of the day it was missing -amended-design: 03-DESIGN/01-to-be/05-the-node-host.md --- # 142 — The host is the one thing the mesh does not deliver diff --git a/04-ISSUES/143-converging-does-not-retire-the-firewall-it-found/00-report.md b/04-ISSUES/143-converging-does-not-retire-the-firewall-it-found/00-report.md index c543c1e8..f2555424 100644 --- a/04-ISSUES/143-converging-does-not-retire-the-firewall-it-found/00-report.md +++ b/04-ISSUES/143-converging-does-not-retire-the-firewall-it-found/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: - - mesh-host internal/apply/opening.go (retireFirewall) - - mesh-host internal/apply/apply.go (the condition it is called under) -fixed-by: mesh-host 67 (retire on every converged apply; found-inactive apart from disabled-by-mesh; a skipped step said), mesh-controller 211 (the found firewall's state on node show) -amended-design: --- # 143 — Converging a machine does not retire the firewall it found, and says it does diff --git a/04-ISSUES/144-the-predecessors-rules-outlive-the-firewall-it-was-found-as/00-report.md b/04-ISSUES/144-the-predecessors-rules-outlive-the-firewall-it-was-found-as/00-report.md index 20e3b7d4..ee0c234a 100644 --- a/04-ISSUES/144-the-predecessors-rules-outlive-the-firewall-it-was-found-as/00-report.md +++ b/04-ISSUES/144-the-predecessors-rules-outlive-the-firewall-it-was-found-as/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: - - mesh-host internal/apply/opening.go - - mesh-controller cmd/mesh-controller (the converge preview) -fixed-by: mesh-host 67 (every refusing table and legacy chain classified with an owner; the runtime's user chain is other), mesh-controller 211 (kept, shown on node show, named by status, previewed with fates) -amended-design: --- # 144 — A predecessor's rules outlive the firewall the mesh found, and the mesh cannot see them diff --git a/04-ISSUES/145-a-machine-reads-healthy-while-its-modules-cannot-reach-each-other/00-report.md b/04-ISSUES/145-a-machine-reads-healthy-while-its-modules-cannot-reach-each-other/00-report.md index 6931708a..8aec2cf6 100644 --- a/04-ISSUES/145-a-machine-reads-healthy-while-its-modules-cannot-reach-each-other/00-report.md +++ b/04-ISSUES/145-a-machine-reads-healthy-while-its-modules-cannot-reach-each-other/00-report.md @@ -1,11 +1,5 @@ --- -status: located opened: 2026-09-29 -located-in: - - mesh-controller internal/catalogue/filtering.go (fixed for this instance) - - mesh-controller (what status reports, and what it does not ask) -fixed-by: partly — mesh-controller 1da96e8 makes the report state its own scope; nothing dials a provision yet, which is ADR 0146 and is not built -amended-design: 03-DESIGN/01-to-be/10-delivery.md --- # 145 — A machine reads healthy while its modules cannot reach each other diff --git a/04-ISSUES/146-the-foundation-cannot-be-raised-on-the-bus-the-mesh-runs-on/00-report.md b/04-ISSUES/146-the-foundation-cannot-be-raised-on-the-bus-the-mesh-runs-on/00-report.md index b2818e5a..64f3c828 100644 --- a/04-ISSUES/146-the-foundation-cannot-be-raised-on-the-bus-the-mesh-runs-on/00-report.md +++ b/04-ISSUES/146-the-foundation-cannot-be-raised-on-the-bus-the-mesh-runs-on/00-report.md @@ -1,7 +1,5 @@ --- -status: located opened: 2026-09-29 -located-in: [mesh-host examples + internal/link, mesh-controller internal/broker] --- # 146 — the foundation cannot be raised on the bus the mesh runs on diff --git a/04-ISSUES/147-the-operators-tools-still-dial-the-bus-that-was-removed/00-report.md b/04-ISSUES/147-the-operators-tools-still-dial-the-bus-that-was-removed/00-report.md index 20b7c20b..96139e22 100644 --- a/04-ISSUES/147-the-operators-tools-still-dial-the-bus-that-was-removed/00-report.md +++ b/04-ISSUES/147-the-operators-tools-still-dial-the-bus-that-was-removed/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: [mesh-catalog modules/mesh-console, mesh-tools src/mesh.ts, mesh-controller internal/broker] -fixed-by: ADR 0152; mesh-controller PR 164 (invokes); mesh-tools PR 20 (mesh serve, the tools verb); mesh-catalog PR 181 (mesh-console) -amended-design: 03-DESIGN/01-to-be/34-the-console.md --- # 147 — the operator's tools still dial the bus that was removed diff --git a/04-ISSUES/148-a-manifest-outside-this-catalogue-has-no-check/00-report.md b/04-ISSUES/148-a-manifest-outside-this-catalogue-has-no-check/00-report.md index da212c32..99c7c49c 100644 --- a/04-ISSUES/148-a-manifest-outside-this-catalogue-has-no-check/00-report.md +++ b/04-ISSUES/148-a-manifest-outside-this-catalogue-has-no-check/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: [mesh-controller cmd/mesh-controller, mesh-controller internal/catalogue] -fixed-by: mesh-controller PR 164 (module check) -amended-design: 03-DESIGN/01-to-be/12-a-module-repository.md --- # 148 — a manifest outside this catalogue has no check diff --git a/04-ISSUES/149-a-declaration-that-shrinks-to-empty-is-skipped-not-sent/00-report.md b/04-ISSUES/149-a-declaration-that-shrinks-to-empty-is-skipped-not-sent/00-report.md index b5d797be..8710c203 100644 --- a/04-ISSUES/149-a-declaration-that-shrinks-to-empty-is-skipped-not-sent/00-report.md +++ b/04-ISSUES/149-a-declaration-that-shrinks-to-empty-is-skipped-not-sent/00-report.md @@ -1,8 +1,5 @@ --- -status: resolved opened: 2026-09-27 -located-in: [mesh-controller cmd/mesh-controller/push.go, mesh-controller cmd/mesh-controller/sendable.go] -fixed-by: mesh-controller sendable.go and push.go — an empty declaration is sent carrying `owns_nothing`, and the host refuses an empty body that does not carry it --- # 149 — a declaration that shrinks to empty is skipped, so the node keeps what it should drop diff --git a/04-ISSUES/150-a-route-is-contributed-before-its-module-is-taken/00-report.md b/04-ISSUES/150-a-route-is-contributed-before-its-module-is-taken/00-report.md index 7d8a8958..458f647e 100644 --- a/04-ISSUES/150-a-route-is-contributed-before-its-module-is-taken/00-report.md +++ b/04-ISSUES/150-a-route-is-contributed-before-its-module-is-taken/00-report.md @@ -1,9 +1,5 @@ --- -status: wontfix opened: 2026-09-29 -located-in: - - mesh-controller internal/catalogue/declaration.go (contributions are emitted for an assigned module, taken or not) -fixed-by: --- # 150 — A route is contributed before its module is taken diff --git a/04-ISSUES/151-a-new-name-recreates-every-container-in-the-mesh/00-report.md b/04-ISSUES/151-a-new-name-recreates-every-container-in-the-mesh/00-report.md index 1151f460..9e83c19d 100644 --- a/04-ISSUES/151-a-new-name-recreates-every-container-in-the-mesh/00-report.md +++ b/04-ISSUES/151-a-new-name-recreates-every-container-in-the-mesh/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: - - mesh-host internal/apply/apply.go (containerSpecReading hashes every `host` entry) - - mesh-controller internal/catalogue/declaration.go (withMeshNames gives every container the mesh's names) -fixed-by: mesh-controller PR 161 — the roster left every container's declaration and so its digest (ADR 0148 step 3, 2026-09-30) --- # 151 — A new name recreates every container in the mesh diff --git a/04-ISSUES/152-a-nodes-plan-failure-silently-drops-its-routed-names/00-report.md b/04-ISSUES/152-a-nodes-plan-failure-silently-drops-its-routed-names/00-report.md index a0491b49..27d7e132 100644 --- a/04-ISSUES/152-a-nodes-plan-failure-silently-drops-its-routed-names/00-report.md +++ b/04-ISSUES/152-a-nodes-plan-failure-silently-drops-its-routed-names/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: - - mesh-controller cmd/mesh-controller/plan.go (routeNamesInTheMesh skips a node whose plan will not compose) -fixed-by: mesh-controller 6c5dfd0 (PR 147) -amended-design: --- # 152 — A node whose plan will not compose silently removes its names from every machine diff --git a/04-ISSUES/153-an-adopted-machines-data-cannot-be-placed-where-it-is/00-report.md b/04-ISSUES/153-an-adopted-machines-data-cannot-be-placed-where-it-is/00-report.md index d5a3a3a8..c2ff9133 100644 --- a/04-ISSUES/153-an-adopted-machines-data-cannot-be-placed-where-it-is/00-report.md +++ b/04-ISSUES/153-an-adopted-machines-data-cannot-be-placed-where-it-is/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: - - mesh-controller internal/catalogue/dir_into.go (dirsFor: a stated path or //, nothing else) - - mesh-controller (accesses: the path is the manifest's literal) -fixed-by: mesh-controller PR 176 (`places` and `accesses` on an assignment, `${access:}`, an owner the data already has); mesh-catalog PR 198 (ten definitions name their accesses by id) -amended-design: [03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md, 03-DESIGN/01-to-be/18-building-a-module.md] --- # 153 — An adopted machine's data cannot be placed where it is diff --git a/04-ISSUES/154-a-machines-own-network-is-not-a-reach/00-report.md b/04-ISSUES/154-a-machines-own-network-is-not-a-reach/00-report.md index 51ddf3da..6af9ae95 100644 --- a/04-ISSUES/154-a-machines-own-network-is-not-a-reach/00-report.md +++ b/04-ISSUES/154-a-machines-own-network-is-not-a-reach/00-report.md @@ -1,11 +1,5 @@ --- -status: open opened: 2026-09-29 -located-in: - - hq 02-DECISIONS/0138 (reach: internal | public | both) - - mesh-controller internal/catalogue/filtering.go (Reaches) -fixed-by: -amended-design: --- # 154 — A machine's own network is not a reach diff --git a/04-ISSUES/155-two-records-may-share-a-number-and-nothing-says-so/00-report.md b/04-ISSUES/155-two-records-may-share-a-number-and-nothing-says-so/00-report.md index 4e2e4bb1..41c8ebfd 100644 --- a/04-ISSUES/155-two-records-may-share-a-number-and-nothing-says-so/00-report.md +++ b/04-ISSUES/155-two-records-may-share-a-number-and-nothing-says-so/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: [hq 00-META/checks/cycle.py] -fixed-by: hq f89aef9 (PR 192) -amended-design: --- # 155 — Two records may share a number, and every check passes diff --git a/04-ISSUES/156-moving-a-consumers-delivery-subject-stops-the-control-plane/00-report.md b/04-ISSUES/156-moving-a-consumers-delivery-subject-stops-the-control-plane/00-report.md index c4143d71..246eb8a5 100644 --- a/04-ISSUES/156-moving-a-consumers-delivery-subject-stops-the-control-plane/00-report.md +++ b/04-ISSUES/156-moving-a-consumers-delivery-subject-stops-the-control-plane/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-29 -located-in: - - mesh-controller internal/broker/jetstream.go (EnsureConsumer) -fixed-by: mesh-controller e7da39d (PR 148) -amended-design: --- # 156 — Moving a consumer's delivery subject stops the control plane, and only on a mesh that is running diff --git a/04-ISSUES/157-a-routed-names-internal-alias-is-served-by-nothing/00-report.md b/04-ISSUES/157-a-routed-names-internal-alias-is-served-by-nothing/00-report.md index d3dc89dc..f6c4bdf6 100644 --- a/04-ISSUES/157-a-routed-names-internal-alias-is-served-by-nothing/00-report.md +++ b/04-ISSUES/157-a-routed-names-internal-alias-is-served-by-nothing/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: - - mesh-controller internal/catalogue/roster.go (the roster's entries for a routed name) -fixed-by: mesh-controller PR 163 — a routed name is published as itself, once, with no suffixed alias (ADR 0151, 2026-09-30) -amended-design: --- # 157 — A routed name is published with an `.internal` alias that nothing serves diff --git a/04-ISSUES/158-the-proxy-re-reads-and-re-logs-every-route-every-two-seconds/00-report.md b/04-ISSUES/158-the-proxy-re-reads-and-re-logs-every-route-every-two-seconds/00-report.md index cd7c3d22..46339025 100644 --- a/04-ISSUES/158-the-proxy-re-reads-and-re-logs-every-route-every-two-seconds/00-report.md +++ b/04-ISSUES/158-the-proxy-re-reads-and-re-logs-every-route-every-two-seconds/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: [mesh-controller examples/route-proxy (re-read and logged the route file on a two-second timer)] -fixed-by: novox/mesh-controller cf495e3 (PR #207, numbered on the forge before its move) -replay-none: a module's log, not a core incident, fixed before ADR 0237; read on the live proxy instead -amended-design: --- # 158 — The proxy re-reads and re-logs every route it serves, every two seconds diff --git a/04-ISSUES/159-an-artifacts-system-is-checked-and-then-ignored/00-report.md b/04-ISSUES/159-an-artifacts-system-is-checked-and-then-ignored/00-report.md index f2eef9bd..e48bdcd0 100644 --- a/04-ISSUES/159-an-artifacts-system-is-checked-and-then-ignored/00-report.md +++ b/04-ISSUES/159-an-artifacts-system-is-checked-and-then-ignored/00-report.md @@ -1,11 +1,5 @@ --- -status: located opened: 2026-09-30 -located-in: - - mesh-controller internal/catalogue/build.go (System is validated and read by nothing else) - - mesh-controller internal/builder (the compile invocation names no target) -fixed-by: -amended-design: --- # 159 — An artifact's system is checked, and then nothing uses it diff --git a/04-ISSUES/160-a-machine-says-little-about-itself-and-only-when-asked/00-report.md b/04-ISSUES/160-a-machine-says-little-about-itself-and-only-when-asked/00-report.md index aba0c760..8f0275ce 100644 --- a/04-ISSUES/160-a-machine-says-little-about-itself-and-only-when-asked/00-report.md +++ b/04-ISSUES/160-a-machine-says-little-about-itself-and-only-when-asked/00-report.md @@ -1,12 +1,5 @@ --- -status: open opened: 2026-09-30 -located-in: - - mesh-host internal/profile (what a machine collects about itself) - - mesh-controller internal/inventory (what the mesh keeps of it) - - mesh-controller cmd/mesh-controller (node show, which displays a part of it) -fixed-by: -amended-design: --- # 160 — A machine says little about itself, and only when the mesh asks it something diff --git a/04-ISSUES/161-a-delivered-host-carries-none-of-its-link-time-facts/00-report.md b/04-ISSUES/161-a-delivered-host-carries-none-of-its-link-time-facts/00-report.md index 8b856a4c..ba2ec5b7 100644 --- a/04-ISSUES/161-a-delivered-host-carries-none-of-its-link-time-facts/00-report.md +++ b/04-ISSUES/161-a-delivered-host-carries-none-of-its-link-time-facts/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: - - mesh-host cmd/mesh-host/main.go (version and builtFor, both set at link time) - - mesh-controller internal/builder (the toolchain, which deliberately takes nothing from the module) -fixed-by: mesh-controller (the system stamp, and one linker flag rather than two), mesh-host (the version read from the path) — verified on a machine 2026-09-30, 01-resolution.md -amended-design: --- # 161 — A host the mesh built carries none of the facts its Makefile stamps in diff --git a/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md b/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md index 3963b305..2a88369e 100644 --- a/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md +++ b/04-ISSUES/162-an-archive-cannot-be-undeclared/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: [mesh-host internal/apply (no removal for an archive)] -fixed-by: - - mesh-host#90 -amended-design: --- # 162 — An archive cannot be undeclared, and trying stops the machine applying anything diff --git a/04-ISSUES/163-a-delivered-host-stood-aside-on-every-push-and-reported-nothing/00-report.md b/04-ISSUES/163-a-delivered-host-stood-aside-on-every-push-and-reported-nothing/00-report.md index 6a1c04de..012a4a8c 100644 --- a/04-ISSUES/163-a-delivered-host-stood-aside-on-every-push-and-reported-nothing/00-report.md +++ b/04-ISSUES/163-a-delivered-host-stood-aside-on-every-push-and-reported-nothing/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: [mesh-host cmd/mesh-host/main.go (the successor check after an apply)] -fixed-by: mesh-host PR 58 — the check asks with the running version, read from the binary's path, not the link-time stamp -amended-design: --- # 163 — A delivered host stood aside on every push, and reported nothing diff --git a/04-ISSUES/164-a-credential-that-must-be-accepted-is-minted-anyway/00-report.md b/04-ISSUES/164-a-credential-that-must-be-accepted-is-minted-anyway/00-report.md index 86749b2c..f66e3bfa 100644 --- a/04-ISSUES/164-a-credential-that-must-be-accepted-is-minted-anyway/00-report.md +++ b/04-ISSUES/164-a-credential-that-must-be-accepted-is-minted-anyway/00-report.md @@ -1,10 +1,5 @@ --- -status: open opened: 2026-09-30 -located-in: - - mesh-controller internal/inventory/secrets.go (SecretFor mints a pair credential nobody accepted) -fixed-by: -amended-design: --- # 164 — A credential that must be accepted is minted anyway diff --git a/04-ISSUES/165-one-accepted-value-must-be-accepted-once-per-consumer/00-report.md b/04-ISSUES/165-one-accepted-value-must-be-accepted-once-per-consumer/00-report.md index 0b774ec4..83cdec50 100644 --- a/04-ISSUES/165-one-accepted-value-must-be-accepted-once-per-consumer/00-report.md +++ b/04-ISSUES/165-one-accepted-value-must-be-accepted-once-per-consumer/00-report.md @@ -1,10 +1,5 @@ --- -status: open opened: 2026-09-30 -located-in: - - mesh-controller internal/inventory/secrets.go (AcceptSecretForPair is per consumer) -fixed-by: -amended-design: --- # 165 — One accepted value must be accepted once per consumer diff --git a/04-ISSUES/166-a-requirement-cannot-be-optional/00-report.md b/04-ISSUES/166-a-requirement-cannot-be-optional/00-report.md index c8bd0280..3a87c075 100644 --- a/04-ISSUES/166-a-requirement-cannot-be-optional/00-report.md +++ b/04-ISSUES/166-a-requirement-cannot-be-optional/00-report.md @@ -1,10 +1,5 @@ --- -status: open opened: 2026-09-30 -located-in: - - mesh-controller internal/catalogue (requires is a list of hard requirements) -fixed-by: -amended-design: --- # 166 — A requirement cannot be optional diff --git a/04-ISSUES/167-code-several-modules-share-has-no-home/00-report.md b/04-ISSUES/167-code-several-modules-share-has-no-home/00-report.md index 720c5de6..d968f38f 100644 --- a/04-ISSUES/167-code-several-modules-share-has-no-home/00-report.md +++ b/04-ISSUES/167-code-several-modules-share-has-no-home/00-report.md @@ -1,11 +1,5 @@ --- -status: open opened: 2026-09-30 -located-in: - - mesh-catalog (each module builds from its own directory, ADR 0069) - - mesh-sdk -fixed-by: -amended-design: --- # 167 — Code several modules share has no home diff --git a/04-ISSUES/168-a-setting-reaches-every-file-and-contribution/00-report.md b/04-ISSUES/168-a-setting-reaches-every-file-and-contribution/00-report.md index 4f5c5078..7cb7ff01 100644 --- a/04-ISSUES/168-a-setting-reaches-every-file-and-contribution/00-report.md +++ b/04-ISSUES/168-a-setting-reaches-every-file-and-contribution/00-report.md @@ -1,11 +1,5 @@ --- -status: open opened: 2026-09-30 -located-in: - - mesh-controller internal/catalogue/settings.go (settle: every key but `ports` merges into every mergeable file and every contribution) - - mesh-controller internal/catalogue/declaration.go (a provider's settings are laid over what it serves) -fixed-by: -amended-design: --- # 168 — A setting reaches every file and every contribution diff --git a/04-ISSUES/169-a-machine-shares-its-files-and-the-mesh-does-not-know/00-report.md b/04-ISSUES/169-a-machine-shares-its-files-and-the-mesh-does-not-know/00-report.md index a6bc7ac4..187660cc 100644 --- a/04-ISSUES/169-a-machine-shares-its-files-and-the-mesh-does-not-know/00-report.md +++ b/04-ISSUES/169-a-machine-shares-its-files-and-the-mesh-does-not-know/00-report.md @@ -1,11 +1,5 @@ --- -status: located opened: 2026-09-30 -located-in: - - mesh-catalog (no module shares a path over the network) - - hq 02-DECISIONS (a file-share seat, per ADR 0126, is a module's own to define) -fixed-by: -amended-design: [03-DESIGN/01-to-be/52-shares-and-mounts.md] --- # 169 — A machine shares its files, and the mesh does not know diff --git a/04-ISSUES/170-assigning-a-module-claims-every-seat-it-could-hold/00-report.md b/04-ISSUES/170-assigning-a-module-claims-every-seat-it-could-hold/00-report.md index bca25053..af6637bc 100644 --- a/04-ISSUES/170-assigning-a-module-claims-every-seat-it-could-hold/00-report.md +++ b/04-ISSUES/170-assigning-a-module-claims-every-seat-it-could-hold/00-report.md @@ -1,12 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: - - mesh-controller internal/catalogue/resolve.go (holdings are derived from every resolved assignment's manifest `claims`) - - mesh-controller cmd/mesh-controller/seats.go (the deliberate act exists — HoldSeat, "recording … as its standing holder" — beside it) -fixed-by: novox/mesh-controller 6cb285d (PR #162, numbered on the forge before its move) -replay-none: fixed before ADR 0237; the controller's catalogue tests hold a derived holder being recorded, and the live mesh has held two store assignments since -amended-design: --- # 170 — Assigning a module claims every seat it could hold diff --git a/04-ISSUES/171-a-modules-own-resolver-knows-no-mesh-name/00-report.md b/04-ISSUES/171-a-modules-own-resolver-knows-no-mesh-name/00-report.md index d9b5ac5e..ac10d4e2 100644 --- a/04-ISSUES/171-a-modules-own-resolver-knows-no-mesh-name/00-report.md +++ b/04-ISSUES/171-a-modules-own-resolver-knows-no-mesh-name/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: - - mesh-catalog modules/mailu (eight containers name Mailu's own resolver, and one of them binds a mesh name) - - mesh-catalog modules/dnsmasq (dropped the DNSSEC bit its upstreams set) -fixed-by: mesh-catalog PR 178 (mailu-admin uses the machine's resolver) and PR 179 (the machine's resolver passes the DNSSEC bit down) — 2026-09-30, the same afternoon -amended-design: --- # 171 — A module that names its own resolver knows no mesh name diff --git a/04-ISSUES/172-the-ssh-client-block-matches-one-spelling-of-a-machine/00-report.md b/04-ISSUES/172-the-ssh-client-block-matches-one-spelling-of-a-machine/00-report.md index fddaa434..0ccabf56 100644 --- a/04-ISSUES/172-the-ssh-client-block-matches-one-spelling-of-a-machine/00-report.md +++ b/04-ISSUES/172-the-ssh-client-block-matches-one-spelling-of-a-machine/00-report.md @@ -1,12 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: - - the predecessor's terminal module (still generating the operator's ssh client blocks on every workstation) - - mesh-controller internal/catalogue (the ssh-client roster, tested and not yet a catalogue module) -fixed-by: novox/mesh-catalog 1cbddeb and 3ac7c02 (the ssh-client module, to-be 29; research 027/03) -replay-none: Fixed before the replay register existed (ADR 0237); the fix's own tests hold it, and no replay laid over the commit before it was written then or can be written faithfully now. -amended-design: --- # 172 — The ssh client block for a machine matches one spelling of its name, and the other gets the wrong user diff --git a/04-ISSUES/173-a-modules-settings-reach-every-fact-it-contributes/00-report.md b/04-ISSUES/173-a-modules-settings-reach-every-fact-it-contributes/00-report.md index ecd5d20b..250904a8 100644 --- a/04-ISSUES/173-a-modules-settings-reach-every-fact-it-contributes/00-report.md +++ b/04-ISSUES/173-a-modules-settings-reach-every-fact-it-contributes/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: [mesh-controller internal/catalogue/settings.go (settle), mesh-controller internal/catalogue/declaration.go (composed, ownNames)] -fixed-by: mesh-controller PR 175 (a setting overrides a declared key and adds none; `${setting:…}` in a served or contributed value); mesh-catalog PR 196 (mail declares its domain, the identity provider its issuer) -amended-design: 03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md --- # 173 — A module's settings reach every fact it contributes, not only the file that asked diff --git a/04-ISSUES/174-the-meshs-own-files-for-a-module-are-placed-by-the-definition/00-report.md b/04-ISSUES/174-the-meshs-own-files-for-a-module-are-placed-by-the-definition/00-report.md index 00477e42..d37c0dff 100644 --- a/04-ISSUES/174-the-meshs-own-files-for-a-module-are-placed-by-the-definition/00-report.md +++ b/04-ISSUES/174-the-meshs-own-files-for-a-module-are-placed-by-the-definition/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: [mesh-controller internal/catalogue/dir_into.go, mesh-controller internal/catalogue/declaration.go, mesh-catalog modules] -fixed-by: mesh-controller PR 175 (`place: "mesh"`, a directory beneath a placed one, the proof test resolving both sides); mesh-catalog PR 197 (48 definitions converted) -amended-design: [03-DESIGN/01-to-be/27-a-module-requires-the-mesh-resolves.md, 03-DESIGN/01-to-be/18-building-a-module.md] --- # 174 — The mesh's own files for a module are placed by the definition, not by the mesh diff --git a/04-ISSUES/175-an-announcement-behind-a-long-build-comes-back/00-report.md b/04-ISSUES/175-an-announcement-behind-a-long-build-comes-back/00-report.md index a4ba1698..b7e6e664 100644 --- a/04-ISSUES/175-an-announcement-behind-a-long-build-comes-back/00-report.md +++ b/04-ISSUES/175-an-announcement-behind-a-long-build-comes-back/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: [mesh-controller internal/broker/streams.go (the controller's EVENTS consumer), mesh-controller internal/link/receive_nats.go] -fixed-by: mesh-controller PR 173 (MaxAckPending 1 on the controller's events consumer); the packaging module's rebuild record and the status count remain open in the text below -amended-design: --- # 175 — An announcement queued behind a long build comes back, and the build runs again diff --git a/04-ISSUES/176-the-consoles-build-tool-neither-waits-nor-registers/00-report.md b/04-ISSUES/176-the-consoles-build-tool-neither-waits-nor-registers/00-report.md index 2ca33903..462c68b7 100644 --- a/04-ISSUES/176-the-consoles-build-tool-neither-waits-nor-registers/00-report.md +++ b/04-ISSUES/176-the-consoles-build-tool-neither-waits-nor-registers/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller cmd/mesh-controller/seatverbs.go (argvFor, "build": `--wait 0`, no `--self`), mesh-controller cmd/mesh-controller/main.go (builds.Built records a build and registers nothing)] -fixed-by: mesh-controller PR 179 (one take-in for a build's outcome, called by the waiting command and by the daemon; `--wait 0` asks and returns the id; the seat verb says `--self` for a forge path); ADR 0157 (mesh-controller PR 178) gave the tool something to hear -amended-design: 03-DESIGN/01-to-be/18-building-a-module.md --- # 176 — The console's `build` tool neither waits nor registers, and does not take a forge path diff --git a/04-ISSUES/177-the-controllers-check-is-run-by-nobody/00-report.md b/04-ISSUES/177-the-controllers-check-is-run-by-nobody/00-report.md index 5cdcc017..d4ecd83b 100644 --- a/04-ISSUES/177-the-controllers-check-is-run-by-nobody/00-report.md +++ b/04-ISSUES/177-the-controllers-check-is-run-by-nobody/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller cmd/mesh-controller/sendable_test.go (the converged-declaration guard), mesh-controller cmd/mesh-controller/adopting_test.go (the adopted-anchor fixture), the build of the controller (runs no check)] -fixed-by: mesh-controller PR 180 (the two tests, for what they missed); the process half is open below -amended-design: --- # 177 — The controller's check is run by nobody, and two of its tests failed for days unseen diff --git a/04-ISSUES/178-a-routed-name-resolves-to-a-provider-merely-told-it/00-report.md b/04-ISSUES/178-a-routed-name-resolves-to-a-provider-merely-told-it/00-report.md index a948fd38..3e81f59b 100644 --- a/04-ISSUES/178-a-routed-name-resolves-to-a-provider-merely-told-it/00-report.md +++ b/04-ISSUES/178-a-routed-name-resolves-to-a-provider-merely-told-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller cmd/mesh-controller/plan.go (routeNamesInTheMesh), mesh-controller internal/catalogue (NamesServed)] -fixed-by: mesh-controller PR 181 (every node's resolution read first, names attributed across them to the terminus, in order; the many shape of contributions counted) -amended-design: --- # 178 — A routed name resolves to a provider that was merely told it, and flips between plans diff --git a/04-ISSUES/179-an-adopted-identity-providers-admin-never-took-the-minted-secret/00-report.md b/04-ISSUES/179-an-adopted-identity-providers-admin-never-took-the-minted-secret/00-report.md index 7ba616cd..c7340ff6 100644 --- a/04-ISSUES/179-an-adopted-identity-providers-admin-never-took-the-minted-secret/00-report.md +++ b/04-ISSUES/179-an-adopted-identity-providers-admin-never-took-the-minted-secret/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [the identity provider's assignment on the control node (an adopted database whose admin predates the mesh, and the same database moved on 2026-10-05), mesh-catalog modules/keycloak (the minted `admin` own-secret, applied by the server only when it creates its master realm), every provider's provisioner loop (a consumer failed for a day said so only in a journal), mesh-controller status (nothing read what a provider could not do)] -fixed-by: novox/mesh-catalog PR #80 (78328d4), novox/mesh-controller PR #70 (6fdcfad), novox/mesh-host PR #28 (0743024) -replay-none: Fixed before the replay register existed (ADR 0237); the fix's own tests hold it, and no replay laid over the commit before it was written then or can be written faithfully now. The module's repair is driven against a fake server and a fake container runtime in its own tests. -amended-design: 03-DESIGN/01-to-be/19-the-module-protocol.md --- # 179 — An adopted identity provider's admin never took the secret the mesh minted diff --git a/04-ISSUES/180-a-modules-own-secret-cannot-be-rotated/00-report.md b/04-ISSUES/180-a-modules-own-secret-cannot-be-rotated/00-report.md index 5b911678..1527ee06 100644 --- a/04-ISSUES/180-a-modules-own-secret-cannot-be-rotated/00-report.md +++ b/04-ISSUES/180-a-modules-own-secret-cannot-be-rotated/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller cmd/mesh-controller/secret.go (accept and now rotate), mesh-controller internal/inventory/secrets.go (a module's own secret), mesh-controller internal/catalogue/manifest.go (how an own secret is taken), the controller's seat (rotate was not a verb)] -fixed-by: mesh-controller PR 183 (`secret rotate`, the `taken` word on an own secret, `rotate` on the controller's seat with two shapes); the staged form for an applied secret stays open below -amended-design: [03-DESIGN/01-to-be/13-credentials-and-their-rotation.md, 02-DECISIONS/0114-a-shared-credential-rotates-over-two-credentials.md] --- # 180 — A module's own secret cannot be rotated, and nothing rotates from the console diff --git a/04-ISSUES/181-an-assignment-does-not-record-which-provider-answers-it/00-report.md b/04-ISSUES/181-an-assignment-does-not-record-which-provider-answers-it/00-report.md index fde7e591..23baaae1 100644 --- a/04-ISSUES/181-an-assignment-does-not-record-which-provider-answers-it/00-report.md +++ b/04-ISSUES/181-an-assignment-does-not-record-which-provider-answers-it/00-report.md @@ -1,12 +1,5 @@ --- -status: resolved opened: 2026-09-30 -located-in: - - mesh-controller cmd/mesh-controller/modules.go (assign takes no provider; pin is a separate, per-machine command) - - mesh-controller internal/inventory (provision_pin keyed by (node, name)) -fixed-by: novox/mesh-controller PR #86 (c988d6d), ADR 0232 -replay-none: Opened before the replay register (ADR 0237). The incident that settled it is issue 273, whose replay R273 holds that a consumer beside its store stays bound to it; nothing more of this issue's own can be replayed, since nothing moved here. -amended-design: --- # 181 — An assignment does not record which provider answers it diff --git a/04-ISSUES/182-a-tool-call-reaches-whichever-instance-answers-first/00-report.md b/04-ISSUES/182-a-tool-call-reaches-whichever-instance-answers-first/00-report.md index 5b7418d9..9df3c2ef 100644 --- a/04-ISSUES/182-a-tool-call-reaches-whichever-instance-answers-first/00-report.md +++ b/04-ISSUES/182-a-tool-call-reaches-whichever-instance-answers-first/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-tools src/broker-nats.ts (one subject, one queue group per module), mesh-tools src/mcp.ts (no way to name a machine), mesh-tools src/runtime.ts (a claimed seat's verbs served by nobody), mesh-controller internal/broker/nats.go (the grant for a tool named one subject)] -fixed-by: mesh-tools PR (feat/a-tool-call-names-the-machine) and mesh-controller PR (same branch) — see ADR 0159; the store seat's verbs and postgres's tools follow in the catalogue -amended-design: [03-DESIGN/01-to-be/33-the-tools-the-mesh-answers.md, 03-DESIGN/01-to-be/34-the-console.md] --- # 182 — A tool call reaches whichever instance answers first, and a claimed seat's verbs are served by nobody diff --git a/04-ISSUES/183-the-controller-could-not-publish-the-memberships-it-issued/00-report.md b/04-ISSUES/183-the-controller-could-not-publish-the-memberships-it-issued/00-report.md index f0a4402e..b6fc1a22 100644 --- a/04-ISSUES/183-the-controller-could-not-publish-the-memberships-it-issued/00-report.md +++ b/04-ISSUES/183-the-controller-could-not-publish-the-memberships-it-issued/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller internal/broker/nats.go (the controller's own publish grant)] -fixed-by: mesh-controller PR 189 (fix/the-controller-may-publish-memberships) -amended-design: [] --- # 183 — The controller could not publish the memberships it issued diff --git a/04-ISSUES/184-a-merge-announcement-blocks-the-controllers-receive-loop/00-report.md b/04-ISSUES/184-a-merge-announcement-blocks-the-controllers-receive-loop/00-report.md index d54f7067..efda6048 100644 --- a/04-ISSUES/184-a-merge-announcement-blocks-the-controllers-receive-loop/00-report.md +++ b/04-ISSUES/184-a-merge-announcement-blocks-the-controllers-receive-loop/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller cmd/mesh-controller/upgrades.go (the merge handler builds inside the receive loop)] -fixed-by: mesh-controller PR 197 (ADR 0162: the merge handler writes a plan, asks the first tier and returns; outcomes and a ticker advance it) and PR 199 -amended-design: [] --- # 184 — A merge announcement blocks the controller's receive loop diff --git a/04-ISSUES/185-a-refused-membership-publish-stops-the-controller/00-report.md b/04-ISSUES/185-a-refused-membership-publish-stops-the-controller/00-report.md index 20947b03..d30fa739 100644 --- a/04-ISSUES/185-a-refused-membership-publish-stops-the-controller/00-report.md +++ b/04-ISSUES/185-a-refused-membership-publish-stops-the-controller/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller internal/link/bus.go (a membership published with the daemon's own context), mesh-controller cmd/mesh-controller/push.go (a push that returns on the first membership it cannot issue)] -fixed-by: mesh-controller PR 190 (fix/a-refused-membership-does-not-stop-the-controller) -amended-design: [] --- # 185 — A refused membership publish stops the controller diff --git a/04-ISSUES/186-a-release-across-repositories-is-an-order-in-a-persons-head/00-report.md b/04-ISSUES/186-a-release-across-repositories-is-an-order-in-a-persons-head/00-report.md index 075641e9..5da8a03d 100644 --- a/04-ISSUES/186-a-release-across-repositories-is-an-order-in-a-persons-head/00-report.md +++ b/04-ISSUES/186-a-release-across-repositories-is-an-order-in-a-persons-head/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller internal/broker/derived.go (the holder worker consumer let many asks stand in flight), mesh-controller internal/link/builds_nats.go (a running build said nothing to the bus), mesh-controller cmd/mesh-controller/upgrades.go (a merge rebuilt its own modules and not what stood on them)] -fixed-by: novox/mesh-controller 8d4e940, 7e701c0, d2ed6d5 and 76f2756 (ADR 0162) -replay-none: Fixed before the replay register existed (ADR 0237); the fix's own tests hold it, and no replay laid over the commit before it was written then or can be written faithfully now. -amended-design: [] --- # 186 — A release across repositories is an order in a person's head, and a build is a line in a queue nobody keeps diff --git a/04-ISSUES/187-the-mesh-tells-nobody-when-it-stops-working/00-report.md b/04-ISSUES/187-the-mesh-tells-nobody-when-it-stops-working/00-report.md index 901ae37f..0b64addb 100644 --- a/04-ISSUES/187-the-mesh-tells-nobody-when-it-stops-working/00-report.md +++ b/04-ISSUES/187-the-mesh-tells-nobody-when-it-stops-working/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller (conditions, watchdogs, self-check), mesh-catalog (the operator-channel seat and its holders)] -fixed-by: novox/mesh-controller PR #78 (cf4834a) and PR #79 (fab6b00); novox/mesh-catalog PR #86 (c12d364) — to-be 45 Phases 0 and 1 -replay-none: A class, not one incident: to-be 45 holds its signals to the lab's suppression replays (R9), and no single replay of this report can be laid over one commit. -amended-design: [] --- # 187 — The mesh tells nobody when it stops working diff --git a/04-ISSUES/188-a-refusal-inside-on-the-network-drops-a-machine-silently/00-report.md b/04-ISSUES/188-a-refusal-inside-on-the-network-drops-a-machine-silently/00-report.md index 80fa610b..6a52a943 100644 --- a/04-ISSUES/188-a-refusal-inside-on-the-network-drops-a-machine-silently/00-report.md +++ b/04-ISSUES/188-a-refusal-inside-on-the-network-drops-a-machine-silently/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller cmd/mesh-controller/plan.go (theRestOfTheMesh resolves every other machine without its pins and skips one that refuses, saying nothing), mesh-controller cmd/mesh-controller/network.go (onTheNetwork, the same)] -fixed-by: mesh-controller PR 199 (each machine resolved with its own pins; a dropped machine said in both passes), rolled 2026-10-01 evening; PR 200 keeps the per-machine view quiet -amended-design: [] --- # 188 — A refusal inside "who is on the network" drops a machine silently, and every symptom points elsewhere diff --git a/04-ISSUES/189-a-rebuild-from-the-same-commit-is-not-a-move/00-report.md b/04-ISSUES/189-a-rebuild-from-the-same-commit-is-not-a-move/00-report.md index a3e1315b..fdb6cf3e 100644 --- a/04-ISSUES/189-a-rebuild-from-the-same-commit-is-not-a-move/00-report.md +++ b/04-ISSUES/189-a-rebuild-from-the-same-commit-is-not-a-move/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller internal/inventory/catalogue.go (RegisterModule records the source commit; a moved event follows a commit that changed, not an artifact that did), mesh-controller cmd/mesh-controller/upgrades.go (the roll-out follows the moved event)] -fixed-by: novox/mesh-controller 6ff449e and 8f51c66 (a plan sends what it rolls out); novox/mesh-controller PR #99 (9b6b0c5, the source fingerprint) -replay-none: Fixed before the replay register existed (ADR 0237); the fix's own tests hold it, and no replay laid over the commit before it was written then or can be written faithfully now. -amended-design: [] --- # 189 — A rebuild from the same commit is not a move, so a packaging module's new image never rolls out diff --git a/04-ISSUES/190-the-runtimes-configuration-is-written-by-modules-that-are-not-the-runtime/00-report.md b/04-ISSUES/190-the-runtimes-configuration-is-written-by-modules-that-are-not-the-runtime/00-report.md index a16d2e60..e951e5db 100644 --- a/04-ISSUES/190-the-runtimes-configuration-is-written-by-modules-that-are-not-the-runtime/00-report.md +++ b/04-ISSUES/190-the-runtimes-configuration-is-written-by-modules-that-are-not-the-runtime/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-catalog modules/dnsmasq, mesh-catalog modules/docker, mesh-controller internal/overlay/generator.go, mesh-controller internal/catalogue/resolve.go (checkResources), mesh-controller internal/catalogue/seat_into.go, mesh-host internal/apply/apply.go (orphan removal)] -fixed-by: novox/mesh-controller#62 (d84c969), novox/mesh-catalog#72 (5c89eaf), novox/mesh-host#26 (a192bcc), novox/mesh-controller#63 (c34b937) -amended-design: --- # 190 — The container runtime's configuration is written by modules that are not the runtime's diff --git a/04-ISSUES/191-a-route-with-only-an-internal-name-is-dropped/00-report.md b/04-ISSUES/191-a-route-with-only-an-internal-name-is-dropped/00-report.md index 126f4955..47502ec7 100644 --- a/04-ISSUES/191-a-route-with-only-an-internal-name-is-dropped/00-report.md +++ b/04-ISSUES/191-a-route-with-only-an-internal-name-is-dropped/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-01 -located-in: [mesh-controller examples/route-proxy/main.go (routesFrom requires a route's public `name` and treats `internal-name` only as an alias of it; the handler serves every routed name to any source), mesh-controller internal/broker/membership.go (a membership says nothing of what its module receives or who the mesh is)] -fixed-by: mesh-controller PR 207 (the membership carries what a module receives and who the mesh is; the proxy follows it and serves internal names to the mesh only), mesh-catalog PR 211 (the proxy's bus account), mesh-controller PR 208 (the issue verb that delivers it), live 2026-10-02 -amended-design: [03-DESIGN/01-to-be/08-connectivity.md, 03-DESIGN/01-to-be/25-the-bus-on-nats.md] --- # 191 — A route with only an internal name is dropped as naming nothing diff --git a/04-ISSUES/192-the-meshs-tools-reach-a-person-only-by-a-registration-made-by-hand/00-report.md b/04-ISSUES/192-the-meshs-tools-reach-a-person-only-by-a-registration-made-by-hand/00-report.md index 0f23c966..ca40f38d 100644 --- a/04-ISSUES/192-the-meshs-tools-reach-a-person-only-by-a-registration-made-by-hand/00-report.md +++ b/04-ISSUES/192-the-meshs-tools-reach-a-person-only-by-a-registration-made-by-hand/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-catalog modules/mesh-console, mesh-controller cmd/mesh-controller/plan.go (port assignment)] -fixed-by: novox/mesh-tools b149e9f (the endpoint provided, to-be 40 WP1); novox/mesh-catalog 9dfd3b1 (the claude-code module, to-be 40 WP2) -replay-none: Fixed before the replay register existed (ADR 0237); the fix's own tests hold it, and no replay laid over the commit before it was written then or can be written faithfully now. -amended-design: --- # 192 — The mesh's tools reach a person only by a registration made by hand diff --git a/04-ISSUES/193-the-store-seats-read-only-query-is-read-only-by-convention/00-report.md b/04-ISSUES/193-the-store-seats-read-only-query-is-read-only-by-convention/00-report.md index 45c3b180..a096c669 100644 --- a/04-ISSUES/193-the-store-seats-read-only-query-is-read-only-by-convention/00-report.md +++ b/04-ISSUES/193-the-store-seats-read-only-query-is-read-only-by-convention/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-catalog modules/postgres/client.ts (readOnlyQuery)] -fixed-by: [mesh-catalog PR 209 (postgres), mesh-catalog PR 210 (mssql)] -amended-design: --- # 193 — The store seat's read-only query is read-only by convention, and its answer is unreadable diff --git a/04-ISSUES/194-the-hosts-own-former-archive-stops-every-apply/00-report.md b/04-ISSUES/194-the-hosts-own-former-archive-stops-every-apply/00-report.md index bb1cc06a..fe67c135 100644 --- a/04-ISSUES/194-the-hosts-own-former-archive-stops-every-apply/00-report.md +++ b/04-ISSUES/194-the-hosts-own-former-archive-stops-every-apply/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-host internal/apply (removeOrphan: a former target of a kind with no removal was fatal), mesh-host internal/store (Record keeps a former target for every kind, the host's own archive included)] -fixed-by: mesh-host 65 — a former target of a kind the host cannot remove is left in place, said and forgotten; a dropped archive still refuses -amended-design: --- # 194 — The host's own former archive stops every machine applying anything diff --git a/04-ISSUES/195-every-assigned-module-is-counted-as-a-bus-user-without-a-credential/00-report.md b/04-ISSUES/195-every-assigned-module-is-counted-as-a-bus-user-without-a-credential/00-report.md index 4007184d..5c27b5b9 100644 --- a/04-ISSUES/195-every-assigned-module-is-counted-as-a-bus-user-without-a-credential/00-report.md +++ b/04-ISSUES/195-every-assigned-module-is-counted-as-a-bus-user-without-a-credential/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-controller] -fixed-by: mesh-controller PR #270 -amended-design: --- # 195 — Every assigned module is counted as a bus user without a credential, and the real gaps are lost in the count diff --git a/04-ISSUES/196-the-hub-relays-only-the-ports-it-publishes-itself/00-report.md b/04-ISSUES/196-the-hub-relays-only-the-ports-it-publishes-itself/00-report.md index cbe2c41e..9a525bf9 100644 --- a/04-ISSUES/196-the-hub-relays-only-the-ports-it-publishes-itself/00-report.md +++ b/04-ISSUES/196-the-hub-relays-only-the-ports-it-publishes-itself/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-controller internal/catalogue/filtering.go (AsNftables: the forward chain has no rule for the mesh passing through, so a relayed packet is judged by this machine's own published ports)] -fixed-by: mesh-controller PR 209 (the forward chain relays what comes in and goes out on the tunnel), live 2026-10-02 -amended-design: [] --- # 196 — The hub relays the mesh only on the ports it publishes for itself diff --git a/04-ISSUES/197-a-physical-link-that-is-down-is-not-filtered-when-it-comes-up/00-report.md b/04-ISSUES/197-a-physical-link-that-is-down-is-not-filtered-when-it-comes-up/00-report.md index c0769996..98e2bb5a 100644 --- a/04-ISSUES/197-a-physical-link-that-is-down-is-not-filtered-when-it-comes-up/00-report.md +++ b/04-ISSUES/197-a-physical-link-that-is-down-is-not-filtered-when-it-comes-up/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-host internal/outward (Links reported only the links carrying a default route)] -fixed-by: mesh-host PR 66 (a link backed by a physical device is named outward, up or down), live 2026-10-02 -amended-design: [] --- # 197 — A physical link that is down is not filtered when it comes up diff --git a/04-ISSUES/198-the-lans-dns-server-ran-outside-the-mesh-and-its-filter-closed-it/00-report.md b/04-ISSUES/198-the-lans-dns-server-ran-outside-the-mesh-and-its-filter-closed-it/00-report.md index 3a90ab53..cb699fb4 100644 --- a/04-ISSUES/198-the-lans-dns-server-ran-outside-the-mesh-and-its-filter-closed-it/00-report.md +++ b/04-ISSUES/198-the-lans-dns-server-ran-outside-the-mesh-and-its-filter-closed-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-catalog modules/dnsmasq (listens on loopback and the machine's mesh address only), the home-server's DNS (a predecessor's dnsmasq configuration the mesh did not own), the home network's DHCP (hands out the home-server as every device's DNS)] -fixed-by: mesh-catalog PR 214 (dnsmasq listens on addresses from a setting; docker's file takes no settings), mesh-controller PR 210 (the settings verb), mesh-catalog PR 215 (unifi network DNS tools), live 2026-10-02 -amended-design: [] --- # 198 — The home network's DNS server ran outside the mesh, and the mesh's filter closed it diff --git a/04-ISSUES/199-a-node-scoped-seats-verb-could-not-be-called-through-the-console/00-report.md b/04-ISSUES/199-a-node-scoped-seats-verb-could-not-be-called-through-the-console/00-report.md index fbc1ac90..54bc7fd7 100644 --- a/04-ISSUES/199-a-node-scoped-seats-verb-could-not-be-called-through-the-console/00-report.md +++ b/04-ISSUES/199-a-node-scoped-seats-verb-could-not-be-called-through-the-console/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-tools src/client.ts (toolsOn left node-scoped seats out of the listing), mesh-tools src/mcp.ts (the call resolved the key against that listing)] -fixed-by: mesh-tools 27 — node-scoped seats are listed with their scope, the verb requires the machine, and the call carries it in the subject -amended-design: --- # 199 — A node-scoped seat's verb could not be called through the console diff --git a/04-ISSUES/200-the-controllers-answer-to-the-console-is-refused-by-the-bus/00-report.md b/04-ISSUES/200-the-controllers-answer-to-the-console-is-refused-by-the-bus/00-report.md index d488597e..72aa1edc 100644 --- a/04-ISSUES/200-the-controllers-answer-to-the-console-is-refused-by-the-bus/00-report.md +++ b/04-ISSUES/200-the-controllers-answer-to-the-console-is-refused-by-the-bus/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-controller internal/link, mesh-controller cmd/mesh-controller, mesh-tools node-tools/internal/console] -fixed-by: novox/mesh-controller PR #72 (eda457f), novox/mesh-tools PR #15 (730b404) — issue 265's fix -amended-design: --- # 200 — The controller's answer to a long console call is refused by the bus diff --git a/04-ISSUES/201-a-push-recreated-the-controller-behind-the-row-its-successor-wrote/00-report.md b/04-ISSUES/201-a-push-recreated-the-controller-behind-the-row-its-successor-wrote/00-report.md index 4f4ccb4d..d389c4b5 100644 --- a/04-ISSUES/201-a-push-recreated-the-controller-behind-the-row-its-successor-wrote/00-report.md +++ b/04-ISSUES/201-a-push-recreated-the-controller-behind-the-row-its-successor-wrote/00-report.md @@ -1,10 +1,5 @@ --- -status: open opened: 2026-10-02 -located-in: - - mesh-controller -fixed-by: 02-DECISIONS/0185-a-control-plane-behind-its-seats-row-serves-what-it-can.md -amended-design: --- # 201 — A push recreated the controller at a digest older than the seat row its successor had written diff --git a/04-ISSUES/202-a-module-whose-required-setting-is-unset-is-silently-left-out/00-report.md b/04-ISSUES/202-a-module-whose-required-setting-is-unset-is-silently-left-out/00-report.md index 00f37775..7983c75a 100644 --- a/04-ISSUES/202-a-module-whose-required-setting-is-unset-is-silently-left-out/00-report.md +++ b/04-ISSUES/202-a-module-whose-required-setting-is-unset-is-silently-left-out/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: [mesh-catalog modules/dnsmasq, mesh-controller cmd/mesh-controller] -fixed-by: novox/mesh-controller PR #96 (bbd442c, the merge gate, ADR 0237) -replay-none: Opened before the replay register (ADR 0237); the instance (the resolver's setting with no default) no longer exists in the catalogue, so a replay at the commit before the gate would replay a manifest that is gone. -amended-design: --- # 202 — A module whose required setting nobody set is left out of the machine, and the resolver is the module it happened to diff --git a/04-ISSUES/203-a-fresh-assignment-is-pushed-before-its-credential-exists/00-report.md b/04-ISSUES/203-a-fresh-assignment-is-pushed-before-its-credential-exists/00-report.md index ec0a4c31..7fd90cdb 100644 --- a/04-ISSUES/203-a-fresh-assignment-is-pushed-before-its-credential-exists/00-report.md +++ b/04-ISSUES/203-a-fresh-assignment-is-pushed-before-its-credential-exists/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: - - mesh-controller -fixed-by: mesh-controller PR #233 -amended-design: --- # 203 — A fresh assignment is pushed before its credential exists, and the runtime crash-loops diff --git a/04-ISSUES/204-a-controller-handover-re-sent-every-node-a-stale-declaration/00-report.md b/04-ISSUES/204-a-controller-handover-re-sent-every-node-a-stale-declaration/00-report.md index b89aa78e..8303028f 100644 --- a/04-ISSUES/204-a-controller-handover-re-sent-every-node-a-stale-declaration/00-report.md +++ b/04-ISSUES/204-a-controller-handover-re-sent-every-node-a-stale-declaration/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: - - mesh-controller -fixed-by: mesh-controller PR #232 -amended-design: --- # 204 — A controller handover re-sent every node a declaration composed from a stale view diff --git a/04-ISSUES/205-a-package-resource-fails-against-a-stale-package-database/00-report.md b/04-ISSUES/205-a-package-resource-fails-against-a-stale-package-database/00-report.md index 2ea60852..9fb23d13 100644 --- a/04-ISSUES/205-a-package-resource-fails-against-a-stale-package-database/00-report.md +++ b/04-ISSUES/205-a-package-resource-fails-against-a-stale-package-database/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-02 -located-in: - - mesh-host - - 00-META/how-we-build.md -fixed-by: mesh-host PR #79 (the host's half; who keeps a machine current is still a decision to take) -amended-design: --- # 205 — A package resource fails against a stale package database, and nothing keeps it fresh diff --git a/04-ISSUES/206-a-seats-worker-changing-type-strands-the-holder-and-the-build-that-would-fix-it/00-report.md b/04-ISSUES/206-a-seats-worker-changing-type-strands-the-holder-and-the-build-that-would-fix-it/00-report.md index 26dcec92..a70df8d6 100644 --- a/04-ISSUES/206-a-seats-worker-changing-type-strands-the-holder-and-the-build-that-would-fix-it/00-report.md +++ b/04-ISSUES/206-a-seats-worker-changing-type-strands-the-holder-and-the-build-that-would-fix-it/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller -fixed-by: mesh-controller PR #233 (the worker's shape and the plan's order); a credential older than its shape is re-issued by hand, not detected -amended-design: --- # 206 — A seat's worker changing type strands its holder, and the build that would fix it diff --git a/04-ISSUES/207-a-re-made-worker-replayed-every-ask-the-stream-kept/00-report.md b/04-ISSUES/207-a-re-made-worker-replayed-every-ask-the-stream-kept/00-report.md index 672b4bf7..55633dcd 100644 --- a/04-ISSUES/207-a-re-made-worker-replayed-every-ask-the-stream-kept/00-report.md +++ b/04-ISSUES/207-a-re-made-worker-replayed-every-ask-the-stream-kept/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller -fixed-by: mesh-controller PR #233 (a re-made worker on a history-keeping stream delivers from now on); the two questions on retention and on outcomes for commits already passed stay open for a decision -amended-design: --- # 207 — A re-made worker replayed every ask the stream kept, and the mesh re-registered its past diff --git a/04-ISSUES/208-a-seats-worker-is-made-only-when-the-controller-starts/00-report.md b/04-ISSUES/208-a-seats-worker-is-made-only-when-the-controller-starts/00-report.md index ca600279..ed3231c7 100644 --- a/04-ISSUES/208-a-seats-worker-is-made-only-when-the-controller-starts/00-report.md +++ b/04-ISSUES/208-a-seats-worker-is-made-only-when-the-controller-starts/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller -fixed-by: novox/mesh-controller#81 (b853439) -replay-none: Fixed on 2026-10-06, before the replay register; busobjects_test.go was shown to fail without the change but is the fix's own test, not a registered replay. -amended-design: --- # 208 — A seat's worker is made only when the controller starts, so a holder assigned later finds none diff --git a/04-ISSUES/209-a-bundles-own-sdk-copy-registers-into-a-registry-the-runtime-never-reads/00-report.md b/04-ISSUES/209-a-bundles-own-sdk-copy-registers-into-a-registry-the-runtime-never-reads/00-report.md index 2b89aa09..362d2159 100644 --- a/04-ISSUES/209-a-bundles-own-sdk-copy-registers-into-a-registry-the-runtime-never-reads/00-report.md +++ b/04-ISSUES/209-a-bundles-own-sdk-copy-registers-into-a-registry-the-runtime-never-reads/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-tools -fixed-by: mesh-tools #32 -amended-design: --- # 209 — A bundle's own copy of the SDK registers into a registry the runtime never reads diff --git a/04-ISSUES/210-the-host-re-creates-the-nodes-runtime-on-every-reconcile/00-report.md b/04-ISSUES/210-the-host-re-creates-the-nodes-runtime-on-every-reconcile/00-report.md index d40b5f1c..5f4c26ea 100644 --- a/04-ISSUES/210-the-host-re-creates-the-nodes-runtime-on-every-reconcile/00-report.md +++ b/04-ISSUES/210-the-host-re-creates-the-nodes-runtime-on-every-reconcile/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-host -fixed-by: mesh-host #80 -amended-design: --- # 210 — The host re-creates the node's runtime on every reconcile, restarting it every ten minutes diff --git a/04-ISSUES/211-a-bundle-is-built-before-the-toolchain-it-is-compiled-in/00-report.md b/04-ISSUES/211-a-bundle-is-built-before-the-toolchain-it-is-compiled-in/00-report.md index c8f0362d..e23e6385 100644 --- a/04-ISSUES/211-a-bundle-is-built-before-the-toolchain-it-is-compiled-in/00-report.md +++ b/04-ISSUES/211-a-bundle-is-built-before-the-toolchain-it-is-compiled-in/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller -fixed-by: - - mesh-controller#246 -amended-design: --- # 211 — A bundle is built in the same tier as the toolchain it is compiled in, against the old toolchain diff --git a/04-ISSUES/212-a-toolchain-rebuild-keeps-the-sdk-it-cached/00-report.md b/04-ISSUES/212-a-toolchain-rebuild-keeps-the-sdk-it-cached/00-report.md index 1118aaf3..3bb851cf 100644 --- a/04-ISSUES/212-a-toolchain-rebuild-keeps-the-sdk-it-cached/00-report.md +++ b/04-ISSUES/212-a-toolchain-rebuild-keeps-the-sdk-it-cached/00-report.md @@ -1,12 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-tools - - mesh-controller -fixed-by: - - mesh-tools#44 -amended-design: --- # 212 — A toolchain rebuild keeps the SDK it cached, and every bundle built on it carries the old one diff --git a/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md b/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md index 0a4123ac..55d6ad0c 100644 --- a/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md +++ b/04-ISSUES/213-the-controller-is-a-go-program-run-in-a-container/00-report.md @@ -1,15 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller - - mesh-host -fixed-by: - - mesh-host#86 - - mesh-controller#252 - - mesh-controller#253 - - mesh-host#88 -amended-design: --- # 213 — The controller is a Go program, and it still runs in a container diff --git a/04-ISSUES/214-a-plan-loses-track-of-the-controller-it-rebuilds/00-report.md b/04-ISSUES/214-a-plan-loses-track-of-the-controller-it-rebuilds/00-report.md index 98ce6cf5..3f6f6ebb 100644 --- a/04-ISSUES/214-a-plan-loses-track-of-the-controller-it-rebuilds/00-report.md +++ b/04-ISSUES/214-a-plan-loses-track-of-the-controller-it-rebuilds/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller -fixed-by: - - mesh-controller#246 -amended-design: --- # 214 — A plan loses track of the controller it rebuilds, and waits on it for ever diff --git a/04-ISSUES/215-a-module-built-at-a-commit-stops-following-its-branch/00-report.md b/04-ISSUES/215-a-module-built-at-a-commit-stops-following-its-branch/00-report.md index bb152196..991a8549 100644 --- a/04-ISSUES/215-a-module-built-at-a-commit-stops-following-its-branch/00-report.md +++ b/04-ISSUES/215-a-module-built-at-a-commit-stops-following-its-branch/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller -fixed-by: - - mesh-controller#246 -amended-design: --- # 215 — A module built once at a commit stops following its branch, and merges leave it out diff --git a/04-ISSUES/216-a-bundle-nothing-loads-is-built-and-never-delivered/00-report.md b/04-ISSUES/216-a-bundle-nothing-loads-is-built-and-never-delivered/00-report.md index 5e418e2e..b5f61df8 100644 --- a/04-ISSUES/216-a-bundle-nothing-loads-is-built-and-never-delivered/00-report.md +++ b/04-ISSUES/216-a-bundle-nothing-loads-is-built-and-never-delivered/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller -fixed-by: - - mesh-controller#246 -amended-design: --- # 216 — A tools bundle nothing says to load is built, recorded, and never delivered diff --git a/04-ISSUES/217-a-refused-announcement-took-down-every-containers-runtime/00-report.md b/04-ISSUES/217-a-refused-announcement-took-down-every-containers-runtime/00-report.md index 62196753..c564560c 100644 --- a/04-ISSUES/217-a-refused-announcement-took-down-every-containers-runtime/00-report.md +++ b/04-ISSUES/217-a-refused-announcement-took-down-every-containers-runtime/00-report.md @@ -1,12 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-tools -fixed-by: - - mesh-tools#42 - - mesh-tools#43 -amended-design: --- # 217 — A refused announcement took down every container's runtime, and the console with it diff --git a/04-ISSUES/218-a-mesh-seat-is-answered-by-a-module-that-does-not-hold-it/00-report.md b/04-ISSUES/218-a-mesh-seat-is-answered-by-a-module-that-does-not-hold-it/00-report.md index a1d83361..7a8f367e 100644 --- a/04-ISSUES/218-a-mesh-seat-is-answered-by-a-module-that-does-not-hold-it/00-report.md +++ b/04-ISSUES/218-a-mesh-seat-is-answered-by-a-module-that-does-not-hold-it/00-report.md @@ -1,14 +1,5 @@ --- -status: resolved opened: 2026-10-03 -located-in: - - mesh-controller - - mesh-tools -fixed-by: - - mesh-controller#248 - - mesh-tools#45 - - mesh-tools#46 -amended-design: --- # 218 — A seat held once for the mesh is answered by a module on a machine that does not hold it diff --git a/04-ISSUES/219-an-older-build-that-finishes-later-replaces-a-newer-one/00-report.md b/04-ISSUES/219-an-older-build-that-finishes-later-replaces-a-newer-one/00-report.md index 66db4623..edab7118 100644 --- a/04-ISSUES/219-an-older-build-that-finishes-later-replaces-a-newer-one/00-report.md +++ b/04-ISSUES/219-an-older-build-that-finishes-later-replaces-a-newer-one/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: - - mesh-controller -fixed-by: - - mesh-controller#249 -amended-design: --- # 219 — An older build that finishes later replaces a newer one diff --git a/04-ISSUES/220-a-delivered-bundle-keeps-the-files-of-the-one-before/00-report.md b/04-ISSUES/220-a-delivered-bundle-keeps-the-files-of-the-one-before/00-report.md index 0ffb67b4..4695cbaa 100644 --- a/04-ISSUES/220-a-delivered-bundle-keeps-the-files-of-the-one-before/00-report.md +++ b/04-ISSUES/220-a-delivered-bundle-keeps-the-files-of-the-one-before/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: - - mesh-host -fixed-by: - - mesh-host#84 -amended-design: --- # 220 — A delivered bundle keeps the files of the one before diff --git a/04-ISSUES/221-a-build-machine-learns-a-new-builder-only-from-a-push/00-report.md b/04-ISSUES/221-a-build-machine-learns-a-new-builder-only-from-a-push/00-report.md index 7f6c0d17..3e86b27f 100644 --- a/04-ISSUES/221-a-build-machine-learns-a-new-builder-only-from-a-push/00-report.md +++ b/04-ISSUES/221-a-build-machine-learns-a-new-builder-only-from-a-push/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: - - mesh-controller -fixed-by: - - policy: `upgrade build-agent roll-out` (2026-10-04) -amended-design: --- # 221 — A build machine learns a new builder only from a push diff --git a/04-ISSUES/222-an-assignment-is-refused-on-the-bus-until-the-bus-machine-is-pushed/00-report.md b/04-ISSUES/222-an-assignment-is-refused-on-the-bus-until-the-bus-machine-is-pushed/00-report.md index 63ee86db..692a81aa 100644 --- a/04-ISSUES/222-an-assignment-is-refused-on-the-bus-until-the-bus-machine-is-pushed/00-report.md +++ b/04-ISSUES/222-an-assignment-is-refused-on-the-bus-until-the-bus-machine-is-pushed/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: - - mesh-tools -fixed-by: - - mesh-tools#47 -amended-design: --- # 222 — An assignment is refused on the bus until the bus's machine is pushed diff --git a/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md b/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md index 00e9fae7..b6fc0210 100644 --- a/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md +++ b/04-ISSUES/223-a-new-mesh-installs-its-controller-as-a-container/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: - - mesh-host -fixed-by: - - mesh-host#87 -amended-design: --- # 223 — A new mesh installs its controller as a container diff --git a/04-ISSUES/224-an-apply-reopens-a-maintenance-window-by-recreating-what-it-held-still/00-report.md b/04-ISSUES/224-an-apply-reopens-a-maintenance-window-by-recreating-what-it-held-still/00-report.md index 1b025b4a..deecdf0f 100644 --- a/04-ISSUES/224-an-apply-reopens-a-maintenance-window-by-recreating-what-it-held-still/00-report.md +++ b/04-ISSUES/224-an-apply-reopens-a-maintenance-window-by-recreating-what-it-held-still/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-host internal/apply/apply.go, mesh-host internal/apply/schedule.go] -fixed-by: mesh-host PR #23 -amended-design: --- # 224 — An apply arriving during a maintenance window reopens it, by recreating the container the window is holding still diff --git a/04-ISSUES/225-a-provisioner-cannot-read-the-grant-secrets-since-its-code-left-the-container/00-report.md b/04-ISSUES/225-a-provisioner-cannot-read-the-grant-secrets-since-its-code-left-the-container/00-report.md index 1e21bfdd..11fd0cad 100644 --- a/04-ISSUES/225-a-provisioner-cannot-read-the-grant-secrets-since-its-code-left-the-container/00-report.md +++ b/04-ISSUES/225-a-provisioner-cannot-read-the-grant-secrets-since-its-code-left-the-container/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-host internal/apply, mesh-controller internal/catalogue] -fixed-by: mesh-controller#263 -amended-design: --- # 225 — A provisioner cannot read the grant secrets since its code left the container, and every consumer of it is unserved diff --git a/04-ISSUES/226-the-stores-sweep-stops-at-the-first-reference-recorded-with-an-address/00-report.md b/04-ISSUES/226-the-stores-sweep-stops-at-the-first-reference-recorded-with-an-address/00-report.md index b615e345..897b5b1e 100644 --- a/04-ISSUES/226-the-stores-sweep-stops-at-the-first-reference-recorded-with-an-address/00-report.md +++ b/04-ISSUES/226-the-stores-sweep-stops-at-the-first-reference-recorded-with-an-address/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-controller cmd/mesh-controller/collect.go, mesh-controller internal/inventory/collection.go] -fixed-by: mesh-controller#263 -amended-design: --- # 226 — The store's sweep stops at the first reference recorded with an address, so it collects nothing at all diff --git a/04-ISSUES/227-the-photo-apps-admin-client-asks-for-the-port-the-proxy-holds/00-report.md b/04-ISSUES/227-the-photo-apps-admin-client-asks-for-the-port-the-proxy-holds/00-report.md index 986197cc..0877050b 100644 --- a/04-ISSUES/227-the-photo-apps-admin-client-asks-for-the-port-the-proxy-holds/00-report.md +++ b/04-ISSUES/227-the-photo-apps-admin-client-asks-for-the-port-the-proxy-holds/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-catalog modules/photos] -fixed-by: mesh-catalog#263, mesh-controller#263 -amended-design: --- # 227 — The photo app's admin client asks for port 80, which the reverse proxy holds, so it cannot start diff --git a/04-ISSUES/228-a-login-the-mesh-set-is-never-given-back/00-report.md b/04-ISSUES/228-a-login-the-mesh-set-is-never-given-back/00-report.md index 32ad63ee..7220c8b4 100644 --- a/04-ISSUES/228-a-login-the-mesh-set-is-never-given-back/00-report.md +++ b/04-ISSUES/228-a-login-the-mesh-set-is-never-given-back/00-report.md @@ -1,11 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: - - mesh-host -fixed-by: novox/mesh-host 64b421b (to-be 41 WP1) -replay-none: Fixed before the replay register existed (ADR 0237); the fix's own tests hold it, and no replay laid over the commit before it was written then or can be written faithfully now. -amended-design: --- # 228 — A login the mesh set is never given back, and undeclaring one stops the node applying diff --git a/04-ISSUES/229-a-rollout-cannot-be-followed-through-the-meshs-tools/00-report.md b/04-ISSUES/229-a-rollout-cannot-be-followed-through-the-meshs-tools/00-report.md index 4bde5542..0ebd9ee9 100644 --- a/04-ISSUES/229-a-rollout-cannot-be-followed-through-the-meshs-tools/00-report.md +++ b/04-ISSUES/229-a-rollout-cannot-be-followed-through-the-meshs-tools/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-04 -located-in: [] -fixed-by: -amended-design: --- # 229 — A rollout cannot be followed through the mesh's tools, so an agent goes round them diff --git a/04-ISSUES/230-a-host-that-hands-over-to-a-newer-one-loses-its-report-and-a-plan-waits-for-ever/00-report.md b/04-ISSUES/230-a-host-that-hands-over-to-a-newer-one-loses-its-report-and-a-plan-waits-for-ever/00-report.md index f69d84d3..3a321db9 100644 --- a/04-ISSUES/230-a-host-that-hands-over-to-a-newer-one-loses-its-report-and-a-plan-waits-for-ever/00-report.md +++ b/04-ISSUES/230-a-host-that-hands-over-to-a-newer-one-loses-its-report-and-a-plan-waits-for-ever/00-report.md @@ -1,12 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: - - mesh-host - - mesh-controller -fixed-by: novox/mesh-host PR #29 (64defd4); novox/mesh-controller PR #119 (3808634) and PR #79 (fab6b00) -replay-none: Opened before the replay register (ADR 0237). The plan half is replayed by R296 (a plan's clock and LATE); the lost report needs a node-engine replacing itself mid-apply, which no replay holds yet. -amended-design: --- # 230 — A host that hands over to a newer one loses its report, and a plan waits for it for ever without saying so diff --git a/04-ISSUES/231-a-misspelled-placeholder-is-written-out-as-text/00-report.md b/04-ISSUES/231-a-misspelled-placeholder-is-written-out-as-text/00-report.md index 1fd554d1..0c89c8f8 100644 --- a/04-ISSUES/231-a-misspelled-placeholder-is-written-out-as-text/00-report.md +++ b/04-ISSUES/231-a-misspelled-placeholder-is-written-out-as-text/00-report.md @@ -1,10 +1,5 @@ --- -status: open opened: 2026-10-04 -located-in: - - mesh-controller -fixed-by: -amended-design: --- # 231 — A misspelled placeholder is written out as text diff --git a/04-ISSUES/232-a-consumer-authenticates-against-a-database-its-user-does-not-live-in/00-report.md b/04-ISSUES/232-a-consumer-authenticates-against-a-database-its-user-does-not-live-in/00-report.md index 04d174a2..918f6bbf 100644 --- a/04-ISSUES/232-a-consumer-authenticates-against-a-database-its-user-does-not-live-in/00-report.md +++ b/04-ISSUES/232-a-consumer-authenticates-against-a-database-its-user-does-not-live-in/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-catalog modules/photos] -fixed-by: mesh-catalog#264 -amended-design: --- # 232 — A consumer authenticates against a database its user does not live in, and one fault hid it behind another diff --git a/04-ISSUES/233-a-host-without-its-package-managers-configuration-refuses-the-declaration-that-would-restore-it/00-report.md b/04-ISSUES/233-a-host-without-its-package-managers-configuration-refuses-the-declaration-that-would-restore-it/00-report.md index 9fe543a7..5c2dc982 100644 --- a/04-ISSUES/233-a-host-without-its-package-managers-configuration-refuses-the-declaration-that-would-restore-it/00-report.md +++ b/04-ISSUES/233-a-host-without-its-package-managers-configuration-refuses-the-declaration-that-would-restore-it/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-04 -located-in: [] -fixed-by: -amended-design: --- # 233 — A host without its package manager's configuration refuses the declaration that would restore it diff --git a/04-ISSUES/234-a-later-declaration-left-out-four-assigned-modules-and-a-machine-applied-it/00-report.md b/04-ISSUES/234-a-later-declaration-left-out-four-assigned-modules-and-a-machine-applied-it/00-report.md index 84db1301..43cca96f 100644 --- a/04-ISSUES/234-a-later-declaration-left-out-four-assigned-modules-and-a-machine-applied-it/00-report.md +++ b/04-ISSUES/234-a-later-declaration-left-out-four-assigned-modules-and-a-machine-applied-it/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-04 -located-in: [] -fixed-by: -amended-design: --- # 234 — A later declaration left out four assigned modules, and a machine applied it diff --git a/04-ISSUES/235-an-assignment-that-cannot-be-composed-is-recorded-anyway/00-report.md b/04-ISSUES/235-an-assignment-that-cannot-be-composed-is-recorded-anyway/00-report.md index bca475be..82cfc9c2 100644 --- a/04-ISSUES/235-an-assignment-that-cannot-be-composed-is-recorded-anyway/00-report.md +++ b/04-ISSUES/235-an-assignment-that-cannot-be-composed-is-recorded-anyway/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-controller cmd/mesh-controller (assign)] -fixed-by: novox/mesh-controller 5a4f73f (ADR 0210) -replay-none: Fixed before the replay register existed (ADR 0237); the fix's own tests hold it, and no replay laid over the commit before it was written then or can be written faithfully now. -amended-design: --- # 235 — An assignment that cannot be composed is recorded anyway, and the node is one push from leaving the mesh diff --git a/04-ISSUES/236-the-catalogue-check-passes-a-manifest-the-host-refuses/00-report.md b/04-ISSUES/236-the-catalogue-check-passes-a-manifest-the-host-refuses/00-report.md index 5301bee7..24147efe 100644 --- a/04-ISSUES/236-the-catalogue-check-passes-a-manifest-the-host-refuses/00-report.md +++ b/04-ISSUES/236-the-catalogue-check-passes-a-manifest-the-host-refuses/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-controller cmd/mesh-controller (the merge gate)] -fixed-by: novox/mesh-controller PR #96 (bbd442c, the merge gate, ADR 0237) -replay: R236 -amended-design: --- # 236 — The catalogue check passes a manifest the host refuses diff --git a/04-ISSUES/237-assign-says-a-seat-is-held-and-that-the-node-does-not-resolve-for-lack-of-it/00-report.md b/04-ISSUES/237-assign-says-a-seat-is-held-and-that-the-node-does-not-resolve-for-lack-of-it/00-report.md index 746e17f8..1c891b5b 100644 --- a/04-ISSUES/237-assign-says-a-seat-is-held-and-that-the-node-does-not-resolve-for-lack-of-it/00-report.md +++ b/04-ISSUES/237-assign-says-a-seat-is-held-and-that-the-node-does-not-resolve-for-lack-of-it/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-04 -located-in: [] -fixed-by: -amended-design: --- # 237 — `assign` says a seat is held and that the node does not resolve for lack of it, in one answer diff --git a/04-ISSUES/238-the-mesh-banned-its-own-operators-address-for-four-weeks/00-report.md b/04-ISSUES/238-the-mesh-banned-its-own-operators-address-for-four-weeks/00-report.md index 0be09f80..402a40bb 100644 --- a/04-ISSUES/238-the-mesh-banned-its-own-operators-address-for-four-weeks/00-report.md +++ b/04-ISSUES/238-the-mesh-banned-its-own-operators-address-for-four-weeks/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-04 -located-in: [] -fixed-by: -amended-design: --- # 238 — The mesh banned its own operator's address for four weeks diff --git a/04-ISSUES/239-a-module-name-is-taken-over-by-another-repository-and-nothing-refuses/00-report.md b/04-ISSUES/239-a-module-name-is-taken-over-by-another-repository-and-nothing-refuses/00-report.md index 6444a7e2..7bb4c53f 100644 --- a/04-ISSUES/239-a-module-name-is-taken-over-by-another-repository-and-nothing-refuses/00-report.md +++ b/04-ISSUES/239-a-module-name-is-taken-over-by-another-repository-and-nothing-refuses/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-04 -located-in: [] -fixed-by: -amended-design: --- # 239 — A module name is taken over by another repository, and nothing refuses it diff --git a/04-ISSUES/240-a-dry-run-build-is-recorded-and-rolled-out/00-report.md b/04-ISSUES/240-a-dry-run-build-is-recorded-and-rolled-out/00-report.md index f1448ce7..36bfc3cf 100644 --- a/04-ISSUES/240-a-dry-run-build-is-recorded-and-rolled-out/00-report.md +++ b/04-ISSUES/240-a-dry-run-build-is-recorded-and-rolled-out/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-04 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller PR #47 (326b1ae) -replay-none: Fixed on 2026-10-05, before the replay register; the fix's own test holds it. -amended-design: --- # 240 — A dry-run build is recorded, and what it built is applied diff --git a/04-ISSUES/241-one-unreadable-grants-file-dropped-every-database-on-the-control-node/00-report.md b/04-ISSUES/241-one-unreadable-grants-file-dropped-every-database-on-the-control-node/00-report.md index 3440623c..7e0d181d 100644 --- a/04-ISSUES/241-one-unreadable-grants-file-dropped-every-database-on-the-control-node/00-report.md +++ b/04-ISSUES/241-one-unreadable-grants-file-dropped-every-database-on-the-control-node/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-sdk src/provisioner, mesh-catalog modules/postgres, mesh-catalog modules/mssql, mesh-catalog modules/mongodb, mesh-catalog modules/minio, mesh-catalog modules/mailu, mesh-catalog modules/gitea, mesh-catalog modules/umami, mesh-host internal/apply] -fixed-by: mesh-sdk#7 (0.1.10), mesh-catalog#44, mesh-host#22 -amended-design: --- # 241 — One unreadable grants file dropped every database on the control node diff --git a/04-ISSUES/242-the-mesh-has-no-backups/00-report.md b/04-ISSUES/242-the-mesh-has-no-backups/00-report.md index 863cf2ad..1b781d9a 100644 --- a/04-ISSUES/242-the-mesh-has-no-backups/00-report.md +++ b/04-ISSUES/242-the-mesh-has-no-backups/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-catalog modules/restic (the node-backup holder) and every store module's contribution, mesh-controller internal/catalogue (the node-backup seat)] -fixed-by: novox/mesh-catalog PR #49 (96ee0d7), novox/mesh-catalog PR #92 (f144f6e) -replay-none: the fix is the backup holder and each store's contribution, not core logic, and the symptom was an absence: there was never a backup to replay. The seat's backed-up verb reports whether it holds. -amended-design: 03-DESIGN/01-to-be/43-backups-against-mistakes.md --- # 242 — The mesh has no backups diff --git a/04-ISSUES/243-a-rebuilt-licence-store-silences-every-node/00-report.md b/04-ISSUES/243-a-rebuilt-licence-store-silences-every-node/00-report.md index 69de65b7..87fc1434 100644 --- a/04-ISSUES/243-a-rebuilt-licence-store-silences-every-node/00-report.md +++ b/04-ISSUES/243-a-rebuilt-licence-store-silences-every-node/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-catalog modules/claude-code, mesh-catalog modules/claude-licence-manager] -fixed-by: mesh-catalog PR #45 -amended-design: --- # 243 — A rebuilt licence store silences every node, and nothing says so diff --git a/04-ISSUES/244-a-verb-whose-schema-is-empty-cannot-be-called-through-the-console/00-report.md b/04-ISSUES/244-a-verb-whose-schema-is-empty-cannot-be-called-through-the-console/00-report.md index 6b454cdf..f386aff6 100644 --- a/04-ISSUES/244-a-verb-whose-schema-is-empty-cannot-be-called-through-the-console/00-report.md +++ b/04-ISSUES/244-a-verb-whose-schema-is-empty-cannot-be-called-through-the-console/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-tools, mesh-controller] -fixed-by: novox/mesh-controller PR #71 (ede9bce), novox/mesh-tools PR #14 (9730bd8) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay; the controller's schema tests walk every verb it serves, so a verb added later fails them -amended-design: --- # 244 — A verb whose published schema is empty cannot be called through the console, and says only that it needs the argument it will not take diff --git a/04-ISSUES/245-status-calls-a-module-behind-when-only-its-repository-moved/00-report.md b/04-ISSUES/245-status-calls-a-module-behind-when-only-its-repository-moved/00-report.md index 2b7021d7..fec4986b 100644 --- a/04-ISSUES/245-status-calls-a-module-behind-when-only-its-repository-moved/00-report.md +++ b/04-ISSUES/245-status-calls-a-module-behind-when-only-its-repository-moved/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-05 -located-in: [] -fixed-by: -amended-design: --- # 245 — `status` calls a module behind when only its repository moved diff --git a/04-ISSUES/246-the-console-says-a-module-runs-nowhere-when-a-runtime-answers-late/00-report.md b/04-ISSUES/246-the-console-says-a-module-runs-nowhere-when-a-runtime-answers-late/00-report.md index dd3dc135..3632ed42 100644 --- a/04-ISSUES/246-the-console-says-a-module-runs-nowhere-when-a-runtime-answers-late/00-report.md +++ b/04-ISSUES/246-the-console-says-a-module-runs-nowhere-when-a-runtime-answers-late/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-tools] -fixed-by: mesh-tools pull request 13 — discovery waits for every runtime that answered PING, names the ones it missed, and mesh_runtimes says who answered -amended-design: --- # 246 — The console says a module runs nowhere when a runtime answers late diff --git a/04-ISSUES/247-a-module-cannot-put-the-operators-account-in-a-group/00-report.md b/04-ISSUES/247-a-module-cannot-put-the-operators-account-in-a-group/00-report.md index 8451f060..34e38f59 100644 --- a/04-ISSUES/247-a-module-cannot-put-the-operators-account-in-a-group/00-report.md +++ b/04-ISSUES/247-a-module-cannot-put-the-operators-account-in-a-group/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-host internal/apply (the user resource's groups), mesh-controller internal/catalogue (accountsFirst), mesh-catalog modules/openrazer] -fixed-by: [mesh-host PR 54, mesh-controller PR 139, mesh-catalog PR 125] -amended-design: 03-DESIGN/01-to-be/41-the-shell-and-the-accounts-environment.md -replay-none: not an incident of something that ran wrongly but a capability the manifest could not use; there is no earlier run to replay. The fix's own tests in each repository hold it (ADR 0252, how it is checked) --- # 247 — A module cannot put the operator's account in a group diff --git a/04-ISSUES/248-the-controllers-event-consumer-replayed-a-week-and-held-every-merge-behind-it/00-report.md b/04-ISSUES/248-the-controllers-event-consumer-replayed-a-week-and-held-every-merge-behind-it/00-report.md index ac710b8a..471f4da3 100644 --- a/04-ISSUES/248-the-controllers-event-consumer-replayed-a-week-and-held-every-merge-behind-it/00-report.md +++ b/04-ISSUES/248-the-controllers-event-consumer-replayed-a-week-and-held-every-merge-behind-it/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-controller internal/broker] -fixed-by: mesh-controller PR #51 -amended-design: --- # 248 — The controller's event consumer replayed a week, and held every new merge behind it diff --git a/04-ISSUES/249-a-modules-new-state-is-refused-until-a-push-the-merge-did-not-make/00-report.md b/04-ISSUES/249-a-modules-new-state-is-refused-until-a-push-the-merge-did-not-make/00-report.md index 205d5242..27e8036b 100644 --- a/04-ISSUES/249-a-modules-new-state-is-refused-until-a-push-the-merge-did-not-make/00-report.md +++ b/04-ISSUES/249-a-modules-new-state-is-refused-until-a-push-the-merge-did-not-make/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-controller cmd/mesh-controller] -fixed-by: mesh-controller PR #54 -amended-design: 03-DESIGN/01-to-be/30-the-mesh-updates-itself-on-a-push.md --- # 249 — A module's new state is refused until a push the merge did not make diff --git a/04-ISSUES/250-a-merge-made-through-the-forges-tool-is-announced-twice/00-report.md b/04-ISSUES/250-a-merge-made-through-the-forges-tool-is-announced-twice/00-report.md index 9064f3cc..410b765f 100644 --- a/04-ISSUES/250-a-merge-made-through-the-forges-tool-is-announced-twice/00-report.md +++ b/04-ISSUES/250-a-merge-made-through-the-forges-tool-is-announced-twice/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-catalog modules/gitea] -fixed-by: mesh-catalog PR #63, PR #66 -amended-design: --- # 250 — A merge made through the forge's tool is announced twice diff --git a/04-ISSUES/251-the-records-checkout-could-not-sync-after-it-ran-as-another-account/00-report.md b/04-ISSUES/251-the-records-checkout-could-not-sync-after-it-ran-as-another-account/00-report.md index 86f032bd..b89b4cbf 100644 --- a/04-ISSUES/251-the-records-checkout-could-not-sync-after-it-ran-as-another-account/00-report.md +++ b/04-ISSUES/251-the-records-checkout-could-not-sync-after-it-ran-as-another-account/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-catalog modules/records] -fixed-by: mesh-catalog PR #64 -amended-design: --- # 251 — The record's checkout could not sync after it ran as another account diff --git a/04-ISSUES/252-a-merges-changed-modules-were-read-wrong/00-report.md b/04-ISSUES/252-a-merges-changed-modules-were-read-wrong/00-report.md index a9526f45..74deed76 100644 --- a/04-ISSUES/252-a-merges-changed-modules-were-read-wrong/00-report.md +++ b/04-ISSUES/252-a-merges-changed-modules-were-read-wrong/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-catalog modules/gitea, mesh-controller cmd/mesh-controller] -fixed-by: mesh-catalog PR #63, mesh-controller PR #54 -amended-design: 03-DESIGN/01-to-be/30-the-mesh-updates-itself-on-a-push.md --- # 252 — A merge's changed modules were read wrong, in both directions diff --git a/04-ISSUES/253-the-stores-collector-would-delete-every-archive-the-mesh-keeps/00-report.md b/04-ISSUES/253-the-stores-collector-would-delete-every-archive-the-mesh-keeps/00-report.md index 62ee3c47..3636f72b 100644 --- a/04-ISSUES/253-the-stores-collector-would-delete-every-archive-the-mesh-keeps/00-report.md +++ b/04-ISSUES/253-the-stores-collector-would-delete-every-archive-the-mesh-keeps/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-controller internal/builder, mesh-controller internal/artifacts, mesh-catalog modules/distribution] -fixed-by: novox/mesh-controller PR #53 (ed25fd6), novox/mesh-host PR #23, novox/mesh-catalog PR #62, novox/mesh-catalog PR #67 (082f8de) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix was proved on the live store, where the controller's collection command counted 134 of 134 kept archives held before real collection was turned on -amended-design: 03-DESIGN/01-to-be/18-building-a-module.md --- # 253 — The store's collector would delete every archive the mesh keeps diff --git a/04-ISSUES/254-plans-for-successive-merges-run-over-each-other-and-one-was-left-open/00-report.md b/04-ISSUES/254-plans-for-successive-merges-run-over-each-other-and-one-was-left-open/00-report.md index 5d100f28..5853a005 100644 --- a/04-ISSUES/254-plans-for-successive-merges-run-over-each-other-and-one-was-left-open/00-report.md +++ b/04-ISSUES/254-plans-for-successive-merges-run-over-each-other-and-one-was-left-open/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-controller cmd/mesh-controller, mesh-controller internal/inventory] -fixed-by: mesh-controller PR #54 -amended-design: 03-DESIGN/01-to-be/30-the-mesh-updates-itself-on-a-push.md --- # 254 — Plans for successive merges run over each other, and one was left open diff --git a/04-ISSUES/255-the-journal-verb-read-nothing-for-a-system-service/00-report.md b/04-ISSUES/255-the-journal-verb-read-nothing-for-a-system-service/00-report.md index 4fe8becd..709ab135 100644 --- a/04-ISSUES/255-the-journal-verb-read-nothing-for-a-system-service/00-report.md +++ b/04-ISSUES/255-the-journal-verb-read-nothing-for-a-system-service/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-catalog modules/systemd] -fixed-by: mesh-catalog PR #65 -amended-design: --- # 255 — The journal verb read nothing for a system service diff --git a/04-ISSUES/256-a-first-machines-report-read-as-stale-between-the-two-sends/00-report.md b/04-ISSUES/256-a-first-machines-report-read-as-stale-between-the-two-sends/00-report.md index c425b50a..408f0579 100644 --- a/04-ISSUES/256-a-first-machines-report-read-as-stale-between-the-two-sends/00-report.md +++ b/04-ISSUES/256-a-first-machines-report-read-as-stale-between-the-two-sends/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-controller cmd/mesh-controller] -fixed-by: mesh-controller PR #55 -amended-design: --- # 256 — A first machine's report read as stale between the two sends diff --git a/04-ISSUES/257-a-plan-waited-on-a-declaration-its-first-machine-never-reported/00-report.md b/04-ISSUES/257-a-plan-waited-on-a-declaration-its-first-machine-never-reported/00-report.md index 127822e8..367fa408 100644 --- a/04-ISSUES/257-a-plan-waited-on-a-declaration-its-first-machine-never-reported/00-report.md +++ b/04-ISSUES/257-a-plan-waited-on-a-declaration-its-first-machine-never-reported/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-host] -fixed-by: novox/mesh-host PR #24 (89a7796) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, `TestAReconcileAppliesWhatWasKeptWhenItsTurnComes`, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 257. A plan waited on a declaration its first machine never reported diff --git a/04-ISSUES/258-every-machine-bound-the-resolver-to-itself/00-report.md b/04-ISSUES/258-every-machine-bound-the-resolver-to-itself/00-report.md index 9525d346..87705f5d 100644 --- a/04-ISSUES/258-every-machine-bound-the-resolver-to-itself/00-report.md +++ b/04-ISSUES/258-every-machine-bound-the-resolver-to-itself/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller#59 (4b382ce) -amended-design: --- # 258. Every machine bound the mesh's resolver to itself diff --git a/04-ISSUES/259-a-named-push-sent-every-machine/00-report.md b/04-ISSUES/259-a-named-push-sent-every-machine/00-report.md index 639e5db5..391a34ba 100644 --- a/04-ISSUES/259-a-named-push-sent-every-machine/00-report.md +++ b/04-ISSUES/259-a-named-push-sent-every-machine/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller#64 (002d5e5) -amended-design: 03-DESIGN/01-to-be/30-the-mesh-updates-itself-on-a-push.md --- # 259. A push to one machine sent every machine diff --git a/04-ISSUES/260-the-resolver-started-before-its-zones-file-existed/00-report.md b/04-ISSUES/260-the-resolver-started-before-its-zones-file-existed/00-report.md index 189b711c..7a3496aa 100644 --- a/04-ISSUES/260-the-resolver-started-before-its-zones-file-existed/00-report.md +++ b/04-ISSUES/260-the-resolver-started-before-its-zones-file-existed/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-host, mesh-catalog] -fixed-by: novox/mesh-host PR #25 (a566add) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, `restart_order_test.go`, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 260. The resolver was restarted before the file it reads existed diff --git a/04-ISSUES/261-a-module-was-applied-and-given-back-half-a-minute-later/00-report.md b/04-ISSUES/261-a-module-was-applied-and-given-back-half-a-minute-later/00-report.md index f8d65f45..fedfdef7 100644 --- a/04-ISSUES/261-a-module-was-applied-and-given-back-half-a-minute-later/00-report.md +++ b/04-ISSUES/261-a-module-was-applied-and-given-back-half-a-minute-later/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-host] -fixed-by: novox/mesh-host PR #24 (89a7796) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, `TestAReconcileAppliesWhatWasKeptWhenItsTurnComes`, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 261. A module was applied and given back half a minute later diff --git a/04-ISSUES/262-an-alpine-container-could-not-find-a-machine-by-its-mesh-name/00-report.md b/04-ISSUES/262-an-alpine-container-could-not-find-a-machine-by-its-mesh-name/00-report.md index 15aa40d1..ce515b07 100644 --- a/04-ISSUES/262-an-alpine-container-could-not-find-a-machine-by-its-mesh-name/00-report.md +++ b/04-ISSUES/262-an-alpine-container-could-not-find-a-machine-by-its-mesh-name/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-catalog] -fixed-by: novox/mesh-catalog#71 (20603b6), novox/mesh-controller#65 (df9231c), novox/mesh-catalog#73 (b4b86c1) -replay: R262 -amended-design: --- # 262. An Alpine container could not find a machine by its mesh name diff --git a/04-ISSUES/263-every-consumer-pays-for-the-tightest-backends-name-limit/00-report.md b/04-ISSUES/263-every-consumer-pays-for-the-tightest-backends-name-limit/00-report.md index 6be0fa15..8834b63f 100644 --- a/04-ISSUES/263-every-consumer-pays-for-the-tightest-backends-name-limit/00-report.md +++ b/04-ISSUES/263-every-consumer-pays-for-the-tightest-backends-name-limit/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller internal/catalogue, mesh-controller cmd/mesh-controller, mesh-catalog modules] -fixed-by: novox/mesh-controller PR #76 (146c48f), novox/mesh-catalog PR #83 (e5cb7b0) -replay: R263 -amended-design: --- # 263. Every consumer pays for the tightest backend's name limit diff --git a/04-ISSUES/264-a-self-updating-engine-lost-the-report-of-the-apply-that-delivered-it/00-report.md b/04-ISSUES/264-a-self-updating-engine-lost-the-report-of-the-apply-that-delivered-it/00-report.md index aaa44e64..54d0f9e7 100644 --- a/04-ISSUES/264-a-self-updating-engine-lost-the-report-of-the-apply-that-delivered-it/00-report.md +++ b/04-ISSUES/264-a-self-updating-engine-lost-the-report-of-the-apply-that-delivered-it/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-host] -fixed-by: novox/mesh-host PR #29 (64defd4) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 264. A self-updating engine lost the report of the apply that delivered it diff --git a/04-ISSUES/265-a-push-outlived-its-caller-and-its-answer-was-refused/00-report.md b/04-ISSUES/265-a-push-outlived-its-caller-and-its-answer-was-refused/00-report.md index efc4a7c8..88b20459 100644 --- a/04-ISSUES/265-a-push-outlived-its-caller-and-its-answer-was-refused/00-report.md +++ b/04-ISSUES/265-a-push-outlived-its-caller-and-its-answer-was-refused/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller internal/link, mesh-controller cmd/mesh-controller, mesh-tools node-tools/internal/console] -fixed-by: novox/mesh-controller PR #72 (eda457f), novox/mesh-tools PR #15 (730b404) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 265. A push outlived its caller, and its answer was refused diff --git a/04-ISSUES/266-a-merge-on-the-bus-was-never-handed-to-the-controller/00-report.md b/04-ISSUES/266-a-merge-on-the-bus-was-never-handed-to-the-controller/00-report.md index a14bbfce..0a53e983 100644 --- a/04-ISSUES/266-a-merge-on-the-bus-was-never-handed-to-the-controller/00-report.md +++ b/04-ISSUES/266-a-merge-on-the-bus-was-never-handed-to-the-controller/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-catalog, mesh-controller] -fixed-by: novox/mesh-catalog PR #81 (cc2f191), novox/mesh-controller PR #73 (d1fc25f) -replay: R266 -amended-design: --- # 266. A merge on the bus was never handed to the controller diff --git a/04-ISSUES/267-a-reconciles-report-overtook-the-apply-that-followed-it/00-report.md b/04-ISSUES/267-a-reconciles-report-overtook-the-apply-that-followed-it/00-report.md index 9d58cfbf..f6d8836b 100644 --- a/04-ISSUES/267-a-reconciles-report-overtook-the-apply-that-followed-it/00-report.md +++ b/04-ISSUES/267-a-reconciles-report-overtook-the-apply-that-followed-it/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-host, mesh-controller] -fixed-by: novox/mesh-host PR #30 (7f98478), novox/mesh-controller PR #74 (e096b45) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 267. A reconcile's report overtook the apply that followed it diff --git a/04-ISSUES/268-letta-printed-its-passwords-into-its-log/00-report.md b/04-ISSUES/268-letta-printed-its-passwords-into-its-log/00-report.md index 34bf93e4..d6bd0706 100644 --- a/04-ISSUES/268-letta-printed-its-passwords-into-its-log/00-report.md +++ b/04-ISSUES/268-letta-printed-its-passwords-into-its-log/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-06 -located-in: [mesh-catalog modules/letta, mesh-catalog modules/docker, mesh-controller cmd/mesh-controller] -fixed-by: -amended-design: --- # 268. letta printed its passwords into its log diff --git a/04-ISSUES/269-the-controller-cannot-write-a-work-queues-cancelled-set/00-report.md b/04-ISSUES/269-the-controller-cannot-write-a-work-queues-cancelled-set/00-report.md index 8144edac..8a1d8a4c 100644 --- a/04-ISSUES/269-the-controller-cannot-write-a-work-queues-cancelled-set/00-report.md +++ b/04-ISSUES/269-the-controller-cannot-write-a-work-queues-cancelled-set/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller PR #78 (cf4834a), novox/mesh-host PR #32 (93efe41) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, a write of the set as the controller against a server holding its composed grant, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 269. The controller cannot write a work queue's cancelled set diff --git a/04-ISSUES/270-phase-1-watches-signals-that-come-later-and-hears-only-the-controllers-faults/00-report.md b/04-ISSUES/270-phase-1-watches-signals-that-come-later-and-hears-only-the-controllers-faults/00-report.md index 715083a0..b512ac01 100644 --- a/04-ISSUES/270-phase-1-watches-signals-that-come-later-and-hears-only-the-controllers-faults/00-report.md +++ b/04-ISSUES/270-phase-1-watches-signals-that-come-later-and-hears-only-the-controllers-faults/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-06 -located-in: [mesh-controller] -fixed-by: -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 270. Phase 1 watches signals that come later, and hears only the controller's own bus faults diff --git a/04-ISSUES/271-a-new-consumer-replayed-the-morning-to-the-operator/00-report.md b/04-ISSUES/271-a-new-consumer-replayed-the-morning-to-the-operator/00-report.md index 8429f422..821f63bb 100644 --- a/04-ISSUES/271-a-new-consumer-replayed-the-morning-to-the-operator/00-report.md +++ b/04-ISSUES/271-a-new-consumer-replayed-the-morning-to-the-operator/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-06 -located-in: [mesh-catalog modules/messenger] -fixed-by: mesh-catalog PR #88 -amended-design: --- # 271. A new consumer replayed the morning to the operator diff --git a/04-ISSUES/272-the-sdks-provider-loop-says-nothing-on-the-bus/00-report.md b/04-ISSUES/272-the-sdks-provider-loop-says-nothing-on-the-bus/00-report.md index 38f488cc..6f951dd0 100644 --- a/04-ISSUES/272-the-sdks-provider-loop-says-nothing-on-the-bus/00-report.md +++ b/04-ISSUES/272-the-sdks-provider-loop-says-nothing-on-the-bus/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-06 -located-in: [mesh-sdk src/provisioner] -fixed-by: -amended-design: --- # 272. The SDK's provider loop says nothing on the bus diff --git a/04-ISSUES/273-a-rule-for-the-resolver-moved-a-machines-databases/00-report.md b/04-ISSUES/273-a-rule-for-the-resolver-moved-a-machines-databases/00-report.md index 322294b4..df54840f 100644 --- a/04-ISSUES/273-a-rule-for-the-resolver-moved-a-machines-databases/00-report.md +++ b/04-ISSUES/273-a-rule-for-the-resolver-moved-a-machines-databases/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller PR #86 -replay: R273 -amended-design: --- # 273. A rule for the resolver moved a machine's databases diff --git a/04-ISSUES/274-a-provider-was-granted-consumers-bound-elsewhere/00-report.md b/04-ISSUES/274-a-provider-was-granted-consumers-bound-elsewhere/00-report.md index 04161f78..c2958fee 100644 --- a/04-ISSUES/274-a-provider-was-granted-consumers-bound-elsewhere/00-report.md +++ b/04-ISSUES/274-a-provider-was-granted-consumers-bound-elsewhere/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller PR #87 (4b25af2) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 274. A provider was granted consumers bound elsewhere diff --git a/04-ISSUES/275-a-machine-waiting-for-its-push-was-said-urgent/00-report.md b/04-ISSUES/275-a-machine-waiting-for-its-push-was-said-urgent/00-report.md index fae56e9e..dfeef8b6 100644 --- a/04-ISSUES/275-a-machine-waiting-for-its-push-was-said-urgent/00-report.md +++ b/04-ISSUES/275-a-machine-waiting-for-its-push-was-said-urgent/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller PR #89 (4d05385) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 275. A machine waiting for its push was said to be urgent diff --git a/04-ISSUES/276-a-handler-that-did-its-work-was-offered-it-five-times/00-report.md b/04-ISSUES/276-a-handler-that-did-its-work-was-offered-it-five-times/00-report.md index 6c206e8d..dde9af19 100644 --- a/04-ISSUES/276-a-handler-that-did-its-work-was-offered-it-five-times/00-report.md +++ b/04-ISSUES/276-a-handler-that-did-its-work-was-offered-it-five-times/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-media-catalog modules/plex, mesh-tools node-tools/internal/launch, mesh-sdk src/stdio, mesh-sdk go, mesh-catalog modules/audit-logger, mesh-catalog modules/model-usage] -fixed-by: novox/mesh-media-catalog PR #6 (c72ac95), novox/mesh-tools PR #17 (c2a0683), novox/mesh-sdk PR #10 (89da342), novox/mesh-catalog PR #94 (7f99fb4) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: --- # 276. A handler that did its work was offered it five times diff --git a/04-ISSUES/277-one-unanswered-question-was-an-urgent-alert-nobody-could-read/00-report.md b/04-ISSUES/277-one-unanswered-question-was-an-urgent-alert-nobody-could-read/00-report.md index 8b898d4a..37db14fb 100644 --- a/04-ISSUES/277-one-unanswered-question-was-an-urgent-alert-nobody-could-read/00-report.md +++ b/04-ISSUES/277-one-unanswered-question-was-an-urgent-alert-nobody-could-read/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller] -fixed-by: novox/mesh-controller PR #91 (81f497e) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 277. One unanswered question was an urgent alert nobody could read diff --git a/04-ISSUES/278-a-module-held-by-no-machine-was-read-as-shared-code/00-report.md b/04-ISSUES/278-a-module-held-by-no-machine-was-read-as-shared-code/00-report.md index f921aa68..70203424 100644 --- a/04-ISSUES/278-a-module-held-by-no-machine-was-read-as-shared-code/00-report.md +++ b/04-ISSUES/278-a-module-held-by-no-machine-was-read-as-shared-code/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller cmd/mesh-controller, mesh-catalog modules/gitea] -fixed-by: novox/mesh-controller PR #93 (0090bf6), novox/mesh-catalog PR #96 (1ba2c05) -replay-none: opened and fixed before ADR 0237 made a replay a condition of resolving; the fix's own tests, named above, guard it, but none was laid over the commit before the fix and registered, and doing so now would be a new test written after the fact rather than a replay -amended-design: 03-DESIGN/01-to-be/30-the-mesh-updates-itself-on-a-push.md --- # 278. A module held by no machine was read as shared code diff --git a/04-ISSUES/279-a-folder-cannot-be-owned-by-the-account-a-module-runs-as/00-report.md b/04-ISSUES/279-a-folder-cannot-be-owned-by-the-account-a-module-runs-as/00-report.md index 052f6d0c..d12f2ce4 100644 --- a/04-ISSUES/279-a-folder-cannot-be-owned-by-the-account-a-module-runs-as/00-report.md +++ b/04-ISSUES/279-a-folder-cannot-be-owned-by-the-account-a-module-runs-as/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-06 -located-in: [] -fixed-by: -amended-design: --- # 279. A folder cannot be owned by the account a module runs as diff --git a/04-ISSUES/280-a-rebuild-of-an-unchanged-source-was-read-as-a-new-bus/00-report.md b/04-ISSUES/280-a-rebuild-of-an-unchanged-source-was-read-as-a-new-bus/00-report.md index 6e2ad11b..5f9e4eee 100644 --- a/04-ISSUES/280-a-rebuild-of-an-unchanged-source-was-read-as-a-new-bus/00-report.md +++ b/04-ISSUES/280-a-rebuild-of-an-unchanged-source-was-read-as-a-new-bus/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller cmd/mesh-controller, mesh-controller internal/builder, mesh-controller internal/inventory] -fixed-by: novox/mesh-controller PR #99, novox/mesh-controller PR #101 -replay-none: fixed on 2026-10-06, before ADR 0237's replay rule began; the controller's fingerprint tests hold it, and a faithful replay would need the image builder's non-reproducible digests, which a laid-over test cannot raise -amended-design: --- # 280. A rebuild of an unchanged source was read as a new bus diff --git a/04-ISSUES/281-a-tier-sent-one-module-at-a-time-blamed-a-module-for-its-machine/00-report.md b/04-ISSUES/281-a-tier-sent-one-module-at-a-time-blamed-a-module-for-its-machine/00-report.md index e886be31..ab5f7e61 100644 --- a/04-ISSUES/281-a-tier-sent-one-module-at-a-time-blamed-a-module-for-its-machine/00-report.md +++ b/04-ISSUES/281-a-tier-sent-one-module-at-a-time-blamed-a-module-for-its-machine/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-06 -located-in: [mesh-controller cmd/mesh-controller] -fixed-by: novox/mesh-controller PR #100 -replay-none: fixed on 2026-10-06, before ADR 0237's replay rule began; the controller's tier and gate tests in the fix hold it, and none was registered in the lab -amended-design: --- # 281. A tier sent one module at a time blamed a module for its machine diff --git a/04-ISSUES/282-a-secret-on-a-command-line-is-kept-in-the-runtimes-events/00-report.md b/04-ISSUES/282-a-secret-on-a-command-line-is-kept-in-the-runtimes-events/00-report.md index ebeb4493..cf214e9a 100644 --- a/04-ISSUES/282-a-secret-on-a-command-line-is-kept-in-the-runtimes-events/00-report.md +++ b/04-ISSUES/282-a-secret-on-a-command-line-is-kept-in-the-runtimes-events/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-07 -located-in: [mesh-catalog modules/mosquitto, mesh-catalog modules/docker, mesh-catalog modules/keycloak, mesh-catalog modules/minio, mesh-catalog modules/gitea] -fixed-by: -amended-design: --- # 282. A secret on a command line is kept in the runtime's events diff --git a/04-ISSUES/285-the-merge-gate-compared-broken-to-broken-and-passed/00-report.md b/04-ISSUES/285-the-merge-gate-compared-broken-to-broken-and-passed/00-report.md index 1dca86c6..76f66adf 100644 --- a/04-ISSUES/285-the-merge-gate-compared-broken-to-broken-and-passed/00-report.md +++ b/04-ISSUES/285-the-merge-gate-compared-broken-to-broken-and-passed/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller cmd/mesh-controller, mesh-controller internal/facts, mesh-controller internal/builder] -fixed-by: novox/mesh-controller PR #104, novox/mesh-controller PR #106 -replay-none: the fix's own tests (TestIssue282… in the controller's merge_gate_test.go, named for the issue's number before renumbering) use what the fix added, and on 2026-10-08 mesh-lab's prover found they do not build at the commit before it, so they cannot be laid over it. A replay written only with the older gate would have to raise the gate's store for a module on the bus, and none was written. -amended-design: --- # 285. The merge gate compared broken to broken, and passed diff --git a/04-ISSUES/286-a-merge-check-passed-on-an-agents-machine-and-failed-on-the-build-seat/00-report.md b/04-ISSUES/286-a-merge-check-passed-on-an-agents-machine-and-failed-on-the-build-seat/00-report.md index 47ba0983..a206a3cf 100644 --- a/04-ISSUES/286-a-merge-check-passed-on-an-agents-machine-and-failed-on-the-build-seat/00-report.md +++ b/04-ISSUES/286-a-merge-check-passed-on-an-agents-machine-and-failed-on-the-build-seat/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller internal/builder, mesh-controller cmd/mesh-controller, mesh-host internal/bootstrap] -fixed-by: novox/mesh-controller PR #104, novox/mesh-host PR #46 -replay-none: the cause was the environment — another Go release's gofmt, siblings at another ref, another user — not a code path, so no commit-before/commit-after replay can hold it; the controller's check-here runs a check as the seat does instead -amended-design: --- # 286. A merge check passed on an agent's machine and failed on the build seat diff --git a/04-ISSUES/287-a-seat-and-a-module-of-one-name-were-both-unreachable/00-report.md b/04-ISSUES/287-a-seat-and-a-module-of-one-name-were-both-unreachable/00-report.md index 8615dbb9..15ce3273 100644 --- a/04-ISSUES/287-a-seat-and-a-module-of-one-name-were-both-unreachable/00-report.md +++ b/04-ISSUES/287-a-seat-and-a-module-of-one-name-were-both-unreachable/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-tools node-tools/internal/console] -fixed-by: novox/mesh-tools PR #19 -replay-none: the fix's test, TestASeatAndAModuleOfOneNameAreEachReached in the console, calls the index the fix introduced and does not build at the commit before it (checked 2026-10-08). The lab's prover also cannot yet run a test in the node tools, whose Go module is a subdirectory of its repository. -amended-design: --- # 287. A seat and a module of one name were both unreachable diff --git a/04-ISSUES/288-the-facts-snapshot-still-names-the-installation/00-report.md b/04-ISSUES/288-the-facts-snapshot-still-names-the-installation/00-report.md index 55cb6fe9..2300f725 100644 --- a/04-ISSUES/288-the-facts-snapshot-still-names-the-installation/00-report.md +++ b/04-ISSUES/288-the-facts-snapshot-still-names-the-installation/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-07 -located-in: [mesh-controller internal/facts, mesh-controller cmd/mesh-controller] -fixed-by: mesh-controller PR #105 -amended-design: --- # 288. The facts snapshot still names the installation diff --git a/04-ISSUES/289-a-verb-answered-during-a-handover-could-not-run-its-own-build/00-report.md b/04-ISSUES/289-a-verb-answered-during-a-handover-could-not-run-its-own-build/00-report.md index 0b9b7c80..104beb9a 100644 --- a/04-ISSUES/289-a-verb-answered-during-a-handover-could-not-run-its-own-build/00-report.md +++ b/04-ISSUES/289-a-verb-answered-during-a-handover-could-not-run-its-own-build/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller cmd/mesh-controller, mesh-controller internal/link, mesh-host internal/witness, mesh-tools node-tools/internal/bus] -fixed-by: novox/mesh-controller PR #108, novox/mesh-host PR #48, novox/mesh-tools PR #20 -replay-none: the fix's tests (TestAVerbRunsWhileItsBuildIsMovedOrDeleted and its neighbours in the controller's selfexec_test.go) use the self-execution the fix added, and on 2026-10-08 mesh-lab's prover found they do not build at the commit before it. The incident needs a build moved or deleted under a running verb on a real machine, which the lab cannot raise. -amended-design: --- # 289. A verb answered during a handover could not run its own build diff --git a/04-ISSUES/290-a-delivery-adopted-while-it-waited-never-got-its-check/00-report.md b/04-ISSUES/290-a-delivery-adopted-while-it-waited-never-got-its-check/00-report.md index 59ea4d12..ef0f8b1d 100644 --- a/04-ISSUES/290-a-delivery-adopted-while-it-waited-never-got-its-check/00-report.md +++ b/04-ISSUES/290-a-delivery-adopted-while-it-waited-never-got-its-check/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-catalog modules/mesh-delivery] -fixed-by: novox/mesh-catalog PR #101 -amended-design: --- # 290. A delivery adopted while it waited never got its check diff --git a/04-ISSUES/291-a-planned-maintenance-window-failed-the-applies-that-met-it/00-report.md b/04-ISSUES/291-a-planned-maintenance-window-failed-the-applies-that-met-it/00-report.md index ddaa0964..0f070670 100644 --- a/04-ISSUES/291-a-planned-maintenance-window-failed-the-applies-that-met-it/00-report.md +++ b/04-ISSUES/291-a-planned-maintenance-window-failed-the-applies-that-met-it/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-host internal/apply, mesh-host internal/store] -fixed-by: novox/mesh-host PR #49 -replay-none: the node-engine's internal/apply/store_away_test.go uses the bounds the fix added, and on 2026-10-08 mesh-lab's prover found it does not build at the commit before. A faithful replay needs a store's maintenance window to meet an apply in flight on a real runtime, which the lab does not raise. -amended-design: --- # 291. A planned maintenance window failed the applies that met it diff --git a/04-ISSUES/292-a-drill-was-counted-as-a-repair/00-report.md b/04-ISSUES/292-a-drill-was-counted-as-a-repair/00-report.md index 11380ec2..ea4a1c42 100644 --- a/04-ISSUES/292-a-drill-was-counted-as-a-repair/00-report.md +++ b/04-ISSUES/292-a-drill-was-counted-as-a-repair/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller cmd/mesh-controller (handacts.go, signals.go S15)] -fixed-by: novox/mesh-controller PR #109 -replay: R292 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 292. A drill was counted as a repair diff --git a/04-ISSUES/293-a-warning-on-a-required-check-blocked-the-merge/00-report.md b/04-ISSUES/293-a-warning-on-a-required-check-blocked-the-merge/00-report.md index 403ee5e7..52766534 100644 --- a/04-ISSUES/293-a-warning-on-a-required-check-blocked-the-merge/00-report.md +++ b/04-ISSUES/293-a-warning-on-a-required-check-blocked-the-merge/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-catalog modules/gitea (pulls.ts, delivery.ts, index.ts)] -fixed-by: novox/mesh-catalog PR #102 -replay-none: the prover in mesh-lab runs replays with go test only, and the fix is in the forge module's TypeScript. Its test/pulls.test.ts runs every verdict against every repository-check fact and asserts that none sets warning. -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 293. A warning on a required check blocked the merge diff --git a/04-ISSUES/294-a-quoted-value-cannot-hold-a-quote/00-report.md b/04-ISSUES/294-a-quoted-value-cannot-hold-a-quote/00-report.md index a352ad7d..7c1ebe5a 100644 --- a/04-ISSUES/294-a-quoted-value-cannot-hold-a-quote/00-report.md +++ b/04-ISSUES/294-a-quoted-value-cannot-hold-a-quote/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-07 -located-in: [] -fixed-by: -amended-design: --- # 294. A quoted value cannot hold a quote diff --git a/04-ISSUES/295-a-recorded-build-was-carried-by-a-plans-send/00-report.md b/04-ISSUES/295-a-recorded-build-was-carried-by-a-plans-send/00-report.md index 1be6e3af..cebca6e8 100644 --- a/04-ISSUES/295-a-recorded-build-was-carried-by-a-plans-send/00-report.md +++ b/04-ISSUES/295-a-recorded-build-was-carried-by-a-plans-send/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller (cmd/mesh-controller release.go, plan.go, push.go), mesh-catalog modules/mailu] -fixed-by: novox/mesh-controller PR #115, novox/mesh-catalog PR #106 -replay-none: the fix lives inside the whole send (sendToEach). A replay written only with what the controller had before would have to drive a real send over a bus, with an identity store and grants, and the controller's tests raise neither for a send. The fix's own test, TestARecordedBuildIsCarriedOnlyByAPersonsPush, replays the case through the composition marker the fix introduced, so it cannot be laid over the commit before. -amended-design: --- # 295. A recorded build was carried by a plan's send, and mail went down with a health check diff --git a/04-ISSUES/296-a-plans-clock-restarted-at-every-save/00-report.md b/04-ISSUES/296-a-plans-clock-restarted-at-every-save/00-report.md index c931d2b0..74c6fa69 100644 --- a/04-ISSUES/296-a-plans-clock-restarted-at-every-save/00-report.md +++ b/04-ISSUES/296-a-plans-clock-restarted-at-every-save/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller cmd/mesh-controller (release_plan.go, watchdogs.go, status.go)] -fixed-by: novox/mesh-controller PR #119 -replay: R296 -amended-design: --- # 296. A plan's clock restarted at every save diff --git a/04-ISSUES/297-two-open-decisions-always-conflict/00-report.md b/04-ISSUES/297-two-open-decisions-always-conflict/00-report.md index 7361177e..8ea1d675 100644 --- a/04-ISSUES/297-two-open-decisions-always-conflict/00-report.md +++ b/04-ISSUES/297-two-open-decisions-always-conflict/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [hq (02-DECISIONS/README.md, 00-META/checks/index.py)] -fixed-by: [hq PR #182, mesh-catalog PR #115] -amended-design: --- # 297. Two open decisions always conflict diff --git a/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md b/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md index c36d3e09..c5383df0 100644 --- a/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md +++ b/04-ISSUES/298-a-new-seat-verb-deadlocks-across-two-repositories/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller internal/catalogue (seats.go, verbs.go), mesh-catalog (the seats' holders)] -fixed-by: novox/mesh-controller PR #117, novox/mesh-controller PR #114 -replay: R298 -amended-design: 03-DESIGN/01-to-be/33-the-tools-the-mesh-answers.md --- # 298. A new seat verb deadlocks across two repositories diff --git a/04-ISSUES/299-an-optional-verb-makes-a-holder-look-silent/00-report.md b/04-ISSUES/299-an-optional-verb-makes-a-holder-look-silent/00-report.md index 68ac4f84..2812b721 100644 --- a/04-ISSUES/299-an-optional-verb-makes-a-holder-look-silent/00-report.md +++ b/04-ISSUES/299-an-optional-verb-makes-a-holder-look-silent/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller cmd/mesh-controller (probes.go, the self-check's D3)] -fixed-by: novox/mesh-controller PR #121 -replay: R299 -amended-design: --- # 299. An optional verb makes a holder look silent diff --git a/04-ISSUES/300-a-new-module-is-not-built-at-its-merge/00-report.md b/04-ISSUES/300-a-new-module-is-not-built-at-its-merge/00-report.md index 14707ef7..493b21ea 100644 --- a/04-ISSUES/300-a-new-module-is-not-built-at-its-merge/00-report.md +++ b/04-ISSUES/300-a-new-module-is-not-built-at-its-merge/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller cmd/mesh-controller (upgrades.go, the merge handler)] -fixed-by: novox/mesh-controller PR #122 -replay: R300 -amended-design: --- # 300. A new module is not built at its merge diff --git a/04-ISSUES/301-a-persons-push-of-a-recorded-build-was-counted-as-a-repair/00-report.md b/04-ISSUES/301-a-persons-push-of-a-recorded-build-was-counted-as-a-repair/00-report.md index 0cb6dd6d..e974d4bf 100644 --- a/04-ISSUES/301-a-persons-push-of-a-recorded-build-was-counted-as-a-repair/00-report.md +++ b/04-ISSUES/301-a-persons-push-of-a-recorded-build-was-counted-as-a-repair/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller cmd/mesh-controller (handacts.go, recorded_push.go, signals.go S15)] -fixed-by: novox/mesh-controller PR #126 -replay: R301 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 301. A person's push of a recorded build was counted as a repair diff --git a/04-ISSUES/302-the-labs-go-replays-were-never-checked-before-merge/00-report.md b/04-ISSUES/302-the-labs-go-replays-were-never-checked-before-merge/00-report.md index dd3ffab6..b59f7a65 100644 --- a/04-ISSUES/302-the-labs-go-replays-were-never-checked-before-merge/00-report.md +++ b/04-ISSUES/302-the-labs-go-replays-were-never-checked-before-merge/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-07 -located-in: [mesh-controller internal/builder (check.go, the build agent's merge check), mesh-lab merge-check.sh] -fixed-by: novox/mesh-controller PR #125, novox/mesh-lab PR #59 -replay: R302 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 302. The lab's Go replays were never checked before merge diff --git a/04-ISSUES/303-a-media-servers-previews-were-reached-through-a-link-its-container-never-mounted/00-report.md b/04-ISSUES/303-a-media-servers-previews-were-reached-through-a-link-its-container-never-mounted/00-report.md index f899a56f..758e593b 100644 --- a/04-ISSUES/303-a-media-servers-previews-were-reached-through-a-link-its-container-never-mounted/00-report.md +++ b/04-ISSUES/303-a-media-servers-previews-were-reached-through-a-link-its-container-never-mounted/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-05 -located-in: [mesh-media-catalog modules/plex] -fixed-by: mesh-media-catalog#2 -amended-design: --- # 303 — A media server's previews were reached through a link its container never mounted diff --git a/04-ISSUES/304-setting-a-modules-settings-replaces-the-whole-layer-and-nothing-shows-it-first/00-report.md b/04-ISSUES/304-setting-a-modules-settings-replaces-the-whole-layer-and-nothing-shows-it-first/00-report.md index e16d0867..985c232f 100644 --- a/04-ISSUES/304-setting-a-modules-settings-replaces-the-whole-layer-and-nothing-shows-it-first/00-report.md +++ b/04-ISSUES/304-setting-a-modules-settings-replaces-the-whole-layer-and-nothing-shows-it-first/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-05 -located-in: [mesh-controller cmd/mesh-controller (settings), mesh-controller internal/inventory (SetSettings)] -fixed-by: novox/mesh-controller PR #50 -amended-design: 03-DESIGN/01-to-be/44-no-change-takes-effect-unseen.md --- # 304 — Setting a module's settings replaces the whole layer, and nothing shows it first diff --git a/04-ISSUES/305-a-recheck-left-the-old-verdict-standing/00-report.md b/04-ISSUES/305-a-recheck-left-the-old-verdict-standing/00-report.md index eb5e4895..7405e3b3 100644 --- a/04-ISSUES/305-a-recheck-left-the-old-verdict-standing/00-report.md +++ b/04-ISSUES/305-a-recheck-left-the-old-verdict-standing/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-catalog modules/mesh-delivery (verbs.go, the recheck verb), mesh-catalog modules/gitea (delivery.ts, the commit status tool)] -fixed-by: novox/mesh-catalog PR #118 -replay: R305 -amended-design: --- # 305. A recheck left the old verdict standing diff --git a/04-ISSUES/306-a-check-on-the-control-node-ran-past-its-timeout/00-report.md b/04-ISSUES/306-a-check-on-the-control-node-ran-past-its-timeout/00-report.md index eb8eac1e..9bb263ca 100644 --- a/04-ISSUES/306-a-check-on-the-control-node-ran-past-its-timeout/00-report.md +++ b/04-ISSUES/306-a-check-on-the-control-node-ran-past-its-timeout/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller internal/builder (check.go, the throwaway store; kill.go), mesh-controller cmd/mesh-builder (the holder's start)] -fixed-by: novox/mesh-controller PR #133 -amended-design: --- # 306. A check on the control node ran past its timeout diff --git a/04-ISSUES/307-the-labs-beds-still-dialled-the-bus-and-runtime-the-mesh-had-left/00-report.md b/04-ISSUES/307-the-labs-beds-still-dialled-the-bus-and-runtime-the-mesh-had-left/00-report.md index 566acf2b..3d14b229 100644 --- a/04-ISSUES/307-the-labs-beds-still-dialled-the-bus-and-runtime-the-mesh-had-left/00-report.md +++ b/04-ISSUES/307-the-labs-beds-still-dialled-the-bus-and-runtime-the-mesh-had-left/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-lab test/integration (mesh.test.ts, builds.test.ts), mesh-lab scripts/build-module-runtime.sh, mesh-lab replays/cmd/prove, mesh-lab src/lifecycle/raise.ts, mesh-controller examples/objectstore-provisioner] -fixed-by: -amended-design: --- # 307. The lab's beds still dialled the bus and the runtime the mesh had left diff --git a/04-ISSUES/308-a-lab-unit-test-passed-or-failed-by-the-machine-it-ran-on/00-report.md b/04-ISSUES/308-a-lab-unit-test-passed-or-failed-by-the-machine-it-ran-on/00-report.md index 6fb92f90..28386398 100644 --- a/04-ISSUES/308-a-lab-unit-test-passed-or-failed-by-the-machine-it-ran-on/00-report.md +++ b/04-ISSUES/308-a-lab-unit-test-passed-or-failed-by-the-machine-it-ran-on/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-lab src/incus/client.ts, mesh-lab test/enumerate.test.ts] -fixed-by: -amended-design: --- # 308. A lab unit test passed or failed by the machine it ran on diff --git a/04-ISSUES/309-two-order-rules-ordered-one-pair-both-ways/00-report.md b/04-ISSUES/309-two-order-rules-ordered-one-pair-both-ways/00-report.md index 4dd92c5f..74cb1f38 100644 --- a/04-ISSUES/309-two-order-rules-ordered-one-pair-both-ways/00-report.md +++ b/04-ISSUES/309-two-order-rules-ordered-one-pair-both-ways/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (delivery.go, orderOf), mesh-catalog modules/mesh-delivery (holder.go, the group's state)] -fixed-by: novox/mesh-controller PR #134, novox/mesh-catalog PR #119 -replay: R309 -amended-design: 03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md --- # 309. Two order rules ordered one pair both ways diff --git a/04-ISSUES/310-a-pull-request-ran-its-own-copy-of-its-check/00-report.md b/04-ISSUES/310-a-pull-request-ran-its-own-copy-of-its-check/00-report.md index 4fee15f9..bb9f8530 100644 --- a/04-ISSUES/310-a-pull-request-ran-its-own-copy-of-its-check/00-report.md +++ b/04-ISSUES/310-a-pull-request-ran-its-own-copy-of-its-check/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller internal/builder (check.go, the build agent's merge check), the forge's branch protection of mesh-media-catalog] -fixed-by: mesh-controller#135, mesh-lab#65 -replay: R310 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 310. A pull request ran its own copy of its repository's check diff --git a/04-ISSUES/311-the-media-catalogues-check-ran-no-typescript-tests/00-report.md b/04-ISSUES/311-the-media-catalogues-check-ran-no-typescript-tests/00-report.md index a2091775..55dde4da 100644 --- a/04-ISSUES/311-the-media-catalogues-check-ran-no-typescript-tests/00-report.md +++ b/04-ISSUES/311-the-media-catalogues-check-ran-no-typescript-tests/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-media-catalog merge-check.sh] -fixed-by: mesh-media-catalog#14 -amended-design: --- # 311 — The media catalogue's check ran no tests for ten of its twelve modules diff --git a/04-ISSUES/312-no-tool-said-a-machines-disk-load/00-report.md b/04-ISSUES/312-no-tool-said-a-machines-disk-load/00-report.md index 649d972b..45c4375d 100644 --- a/04-ISSUES/312-no-tool-said-a-machines-disk-load/00-report.md +++ b/04-ISSUES/312-no-tool-said-a-machines-disk-load/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-catalog modules/disk-load] -fixed-by: novox/mesh-catalog PR #120 -amended-design: --- # 312. No tool said a machine's disk load diff --git a/04-ISSUES/313-history-was-held-for-a-person-and-its-views-retried-for-ever/00-report.md b/04-ISSUES/313-history-was-held-for-a-person-and-its-views-retried-for-ever/00-report.md index 09d7ff71..427daeaf 100644 --- a/04-ISSUES/313-history-was-held-for-a-person-and-its-views-retried-for-ever/00-report.md +++ b/04-ISSUES/313-history-was-held-for-a-person-and-its-views-retried-for-ever/00-report.md @@ -1,9 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-catalog modules/mesh-delivery (holder.go, adoption of a merge from the forge's word; effects.go, the owed effects; table.go, the state table)] -fixed-by: mesh-catalog#121, mesh-controller#136 -amended-design: 03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md --- # 313. History was held for a person, and its views were retried for ever diff --git a/04-ISSUES/314-a-large-answer-was-lost-on-its-way-back/00-report.md b/04-ISSUES/314-a-large-answer-was-lost-on-its-way-back/00-report.md index 6b481f40..a6f39b0e 100644 --- a/04-ISSUES/314-a-large-answer-was-lost-on-its-way-back/00-report.md +++ b/04-ISSUES/314-a-large-answer-was-lost-on-its-way-back/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller internal/link (seattools.go, calls.go, the reply to a seat's verb), mesh-controller cmd/mesh-controller (conditions.go, readable.go, doctor.go, seatverbs.go: the overviews), mesh-tools node-tools/internal/bus (bus.go: the asker and a module's reply)] -fixed-by: novox/mesh-controller PR #138, novox/mesh-tools PR #22, novox/mesh-lab PR #66 -replay: R314 -amended-design: --- # 314. A large answer was lost on its way back diff --git a/04-ISSUES/315-a-failed-unit-of-a-module-was-never-raised/00-report.md b/04-ISSUES/315-a-failed-unit-of-a-module-was-never-raised/00-report.md index 1f0734a4..936e65e3 100644 --- a/04-ISSUES/315-a-failed-unit-of-a-module-was-never-raised/00-report.md +++ b/04-ISSUES/315-a-failed-unit-of-a-module-was-never-raised/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-host (liveness judged only long-running resources; nothing read the service managers' failed units), mesh-controller (no finding for a degraded service manager)] -fixed-by: novox/mesh-host PR #53, novox/mesh-controller PR #137 -amended-design: --- # 315. A failed unit of a module was never raised diff --git a/04-ISSUES/316-a-group-member-held-before-its-composed-check-answered-stayed-held-after-it-passed/00-report.md b/04-ISSUES/316-a-group-member-held-before-its-composed-check-answered-stayed-held-after-it-passed/00-report.md index 1078438c..eaefc30b 100644 --- a/04-ISSUES/316-a-group-member-held-before-its-composed-check-answered-stayed-held-after-it-passed/00-report.md +++ b/04-ISSUES/316-a-group-member-held-before-its-composed-check-answered-stayed-held-after-it-passed/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-catalog modules/mesh-delivery (holder.go, groupTurns and Checked; table.go, the rows out of held)] -fixed-by: -amended-design: --- # 316. A group member held before its composed check answered stayed held after it passed diff --git a/04-ISSUES/317-a-held-deliverys-module-was-walked-by-a-later-merges-plan/00-report.md b/04-ISSUES/317-a-held-deliverys-module-was-walked-by-a-later-merges-plan/00-report.md index 129de146..32fc49f8 100644 --- a/04-ISSUES/317-a-held-deliverys-module-was-walked-by-a-later-merges-plan/00-report.md +++ b/04-ISSUES/317-a-held-deliverys-module-was-walked-by-a-later-merges-plan/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (release_plan.go, supersededBy), mesh-catalog modules/mesh-delivery (table.go, no row out of held for a superseded walk)] -fixed-by: -amended-design: --- # 317. A held delivery's module was walked by a later merge's plan diff --git a/04-ISSUES/318-one-modules-wait-for-a-new-login-held-every-other-modules-walk/00-report.md b/04-ISSUES/318-one-modules-wait-for-a-new-login-held-every-other-modules-walk/00-report.md index 45d09cb4..5dd92da1 100644 --- a/04-ISSUES/318-one-modules-wait-for-a-new-login-held-every-other-modules-walk/00-report.md +++ b/04-ISSUES/318-one-modules-wait-for-a-new-login-held-every-other-modules-walk/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (release.go, gatedSend and ungatedIn; gate.go, judgeMoves; the walk of the builds waiting for a gate), mesh-host cmd/mesh-host (main.go, the health statement: whose manager a unit runs in)] -fixed-by: novox/mesh-host PR #55, novox/mesh-controller PR #142, novox/mesh-lab PR #67 -replay: R318 -amended-design: 03-DESIGN/01-to-be/48-a-module-says-how-it-is-healthy.md --- # 318. One module's wait for a new login held every other module's walk diff --git a/04-ISSUES/319-a-held-delivery-a-later-commit-superseded-has-no-end-but-release/00-report.md b/04-ISSUES/319-a-held-delivery-a-later-commit-superseded-has-no-end-but-release/00-report.md index 968d347f..102e6aec 100644 --- a/04-ISSUES/319-a-held-delivery-a-later-commit-superseded-has-no-end-but-release/00-report.md +++ b/04-ISSUES/319-a-held-delivery-a-later-commit-superseded-has-no-end-but-release/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-catalog modules/mesh-delivery (table.go, the rows out of held and its bound; verbs.go, retire-history, close and stop), 03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md (the state table)] -fixed-by: -amended-design: --- # 319. A held delivery that a later commit superseded has no end but release diff --git a/04-ISSUES/320-the-operator-could-not-read-the-meshs-notifications/00-report.md b/04-ISSUES/320-the-operator-could-not-read-the-meshs-notifications/00-report.md index 94e0c2c0..f1829b7f 100644 --- a/04-ISSUES/320-the-operator-could-not-read-the-meshs-notifications/00-report.md +++ b/04-ISSUES/320-the-operator-could-not-read-the-meshs-notifications/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller internal/conditions (the condition's words), mesh-controller cmd/mesh-controller (every producer of a condition), mesh-catalog modules/messenger (compose, the digest, the answers), mesh-catalog modules/dunst (the desk's actions)] -fixed-by: novox/mesh-controller PR #141, novox/mesh-catalog PR #126 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 320. The operator could not read the mesh's notifications diff --git a/04-ISSUES/321-a-copied-base-was-recorded-by-nothing-and-a-let-go-index-kept-its-platforms/00-report.md b/04-ISSUES/321-a-copied-base-was-recorded-by-nothing-and-a-let-go-index-kept-its-platforms/00-report.md index 7a64a20e..0fa6fe2e 100644 --- a/04-ISSUES/321-a-copied-base-was-recorded-by-nothing-and-a-let-go-index-kept-its-platforms/00-report.md +++ b/04-ISSUES/321-a-copied-base-was-recorded-by-nothing-and-a-let-go-index-kept-its-platforms/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller internal/builder (standingOn, the copy of a base), internal/inventory (the keep set), internal/artifacts (LetGo), cmd/mesh-controller (the sweep); mesh-catalog modules/artifact-store-tools (classification)] -fixed-by: -amended-design: 03-DESIGN/01-to-be/51-the-registries-keep-what-is-named.md --- # 321. A copied base was recorded by nothing, and a let-go index kept its platforms diff --git a/04-ISSUES/322-package-retention-read-no-lockfile-and-said-zero-bytes-for-every-kept-version/00-report.md b/04-ISSUES/322-package-retention-read-no-lockfile-and-said-zero-bytes-for-every-kept-version/00-report.md index d67b15a1..4cdbe266 100644 --- a/04-ISSUES/322-package-retention-read-no-lockfile-and-said-zero-bytes-for-every-kept-version/00-report.md +++ b/04-ISSUES/322-package-retention-read-no-lockfile-and-said-zero-bytes-for-every-kept-version/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-catalog modules/gitea (the npm-registry bundle: refs.go, retention.go)] -fixed-by: -amended-design: 03-DESIGN/01-to-be/51-the-registries-keep-what-is-named.md --- # 322. Package retention read no lockfile, and said zero bytes for every kept version diff --git a/04-ISSUES/323-an-image-a-definition-pins-under-an-older-name-of-the-store-reads-as-unrecorded/00-report.md b/04-ISSUES/323-an-image-a-definition-pins-under-an-older-name-of-the-store-reads-as-unrecorded/00-report.md index c2e4e06d..149fb289 100644 --- a/04-ISSUES/323-an-image-a-definition-pins-under-an-older-name-of-the-store-reads-as-unrecorded/00-report.md +++ b/04-ISSUES/323-an-image-a-definition-pins-under-an-older-name-of-the-store-reads-as-unrecorded/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-08 -located-in: [] -fixed-by: -amended-design: --- # 323. An image a definition pins under an older name of the store reads as unrecorded diff --git a/04-ISSUES/324-a-desk-click-could-answer-in-the-operators-name/00-report.md b/04-ISSUES/324-a-desk-click-could-answer-in-the-operators-name/00-report.md index fd3bd9c6..f57432bf 100644 --- a/04-ISSUES/324-a-desk-click-could-answer-in-the-operators-name/00-report.md +++ b/04-ISSUES/324-a-desk-click-could-answer-in-the-operators-name/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-catalog modules/messenger (the answers, the quiet rule), mesh-catalog modules/dunst (the desk's actions), mesh-controller internal/conditions (the plain rule, the change of words)] -fixed-by: novox/mesh-controller PR #145, novox/mesh-controller PR #147, novox/mesh-catalog PR #131 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 324. A desk click could answer in the operator's name diff --git a/04-ISSUES/325-assign-said-no-such-module-while-its-build-ran/00-report.md b/04-ISSUES/325-assign-said-no-such-module-while-its-build-ran/00-report.md index 98e63d0b..4bf28da4 100644 --- a/04-ISSUES/325-assign-said-no-such-module-while-its-build-ran/00-report.md +++ b/04-ISSUES/325-assign-said-no-such-module-while-its-build-ran/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (acts.go, the assign act; upgrades.go, the merge's build request), mesh-controller internal/inventory (the build request and pending assignment records)] -fixed-by: mesh-controller#150, mesh-lab#68 -replay: R325 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 325. Assign said "no module of that name" while the module's build ran diff --git a/04-ISSUES/326-mesh-delivery-writes-a-delivery-whether-or-not-it-changed/00-report.md b/04-ISSUES/326-mesh-delivery-writes-a-delivery-whether-or-not-it-changed/00-report.md index f7a0be9e..c9f22f5e 100644 --- a/04-ISSUES/326-mesh-delivery-writes-a-delivery-whether-or-not-it-changed/00-report.md +++ b/04-ISSUES/326-mesh-delivery-writes-a-delivery-whether-or-not-it-changed/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-catalog modules/mesh-delivery (holder.go, keep, moved, settleAndKeep, walkMoved and Reconcile; effects.go, Flush)] -fixed-by: -amended-design: --- # 326. mesh-delivery writes a delivery whether or not it changed diff --git a/04-ISSUES/327-every-controller-verb-opens-its-own-bus-connection-so-the-connection-count-hides-a-reconnect-loop/00-report.md b/04-ISSUES/327-every-controller-verb-opens-its-own-bus-connection-so-the-connection-count-hides-a-reconnect-loop/00-report.md index 8d92db5d..0c52b091 100644 --- a/04-ISSUES/327-every-controller-verb-opens-its-own-bus-connection-so-the-connection-count-hides-a-reconnect-loop/00-report.md +++ b/04-ISSUES/327-every-controller-verb-opens-its-own-bus-connection-so-the-connection-count-hides-a-reconnect-loop/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (seatverbs.go, a verb runs as a fresh process; handacts.go onTheBus, acting.go forACommand, queue.go dialTheBus, localDoctor, each opening its own connection; plan_retry.go buildSeatPause, a connection per watchdog tick), mesh-controller internal/broker (jetstream.go Dial, every connection named "mesh-controller")] -fixed-by: mesh-controller#161, mesh-catalog#139, mesh-lab#71 -replay: R327 -amended-design: 03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md --- # 327. Every controller verb opens its own bus connection, so the connection count hides a reconnect loop diff --git a/04-ISSUES/328-jetstream-api-errors-are-counted-and-attributed-to-nothing/00-report.md b/04-ISSUES/328-jetstream-api-errors-are-counted-and-attributed-to-nothing/00-report.md index d7fc0f1a..b839b9ad 100644 --- a/04-ISSUES/328-jetstream-api-errors-are-counted-and-attributed-to-nothing/00-report.md +++ b/04-ISSUES/328-jetstream-api-errors-are-counted-and-attributed-to-nothing/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-08 -located-in: [] -fixed-by: -amended-design: --- # 328. JetStream API errors are counted, and attributed to nothing diff --git a/04-ISSUES/329-an-event-consumer-a-module-stops-declaring-stays-on-the-bus/00-report.md b/04-ISSUES/329-an-event-consumer-a-module-stops-declaring-stays-on-the-bus/00-report.md index b1f77515..a00e6e65 100644 --- a/04-ISSUES/329-an-event-consumer-a-module-stops-declaring-stays-on-the-bus/00-report.md +++ b/04-ISSUES/329-an-event-consumer-a-module-stops-declaring-stays-on-the-bus/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (busobjects.go, moduleConsumers and EnsureConsumer on every send; modules.go, the consumer made when a module's bus user is minted)] -fixed-by: -amended-design: --- # 329. An event consumer a module stops declaring stays on the bus diff --git a/04-ISSUES/330-the-dead-letter-stream-design-25-promises-does-not-exist/00-report.md b/04-ISSUES/330-the-dead-letter-stream-design-25-promises-does-not-exist/00-report.md index 1b9464f6..4d00ecf1 100644 --- a/04-ISSUES/330-the-dead-letter-stream-design-25-promises-does-not-exist/00-report.md +++ b/04-ISSUES/330-the-dead-letter-stream-design-25-promises-does-not-exist/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller internal/broker (streams.go, the streams the controller declares; derived.go, each event consumer's maximum), mesh-controller internal/link (advisories.go, the maximum-deliveries advisory)] -fixed-by: mesh-controller#159, mesh-tools#24, mesh-lab#70, mesh-host#60 -replay: R330 -amended-design: 03-DESIGN/01-to-be/25-the-bus-on-nats.md --- # 330. The dead-letter stream design 25 promises does not exist diff --git a/04-ISSUES/331-a-declared-tool-check-is-never-asked-on-the-live-link/00-report.md b/04-ISSUES/331-a-declared-tool-check-is-never-asked-on-the-live-link/00-report.md index 9ddafb18..d9d07206 100644 --- a/04-ISSUES/331-a-declared-tool-check-is-never-asked-on-the-live-link/00-report.md +++ b/04-ISSUES/331-a-declared-tool-check-is-never-asked-on-the-live-link/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-host internal/link (hearing_nats.go, the NATS link; queue.go, AskTool)] -fixed-by: novox/mesh-host PR #57, novox/mesh-host PR #58, novox/mesh-lab PR #69 -replay: R331 -amended-design: --- # 331. A declared tool check is never asked on the live link diff --git a/04-ISSUES/332-the-service-manager-cannot-clear-or-explain-a-failed-unit/00-report.md b/04-ISSUES/332-the-service-manager-cannot-clear-or-explain-a-failed-unit/00-report.md index bfacc5fe..1f003161 100644 --- a/04-ISSUES/332-the-service-manager-cannot-clear-or-explain-a-failed-unit/00-report.md +++ b/04-ISSUES/332-the-service-manager-cannot-clear-or-explain-a-failed-unit/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller internal/catalogue (seats.go, the node-service-manager seat's verbs), mesh-catalog modules/systemd (the seat's holder)] -fixed-by: -amended-design: --- # 332. The service manager cannot clear or explain a failed unit diff --git a/04-ISSUES/333-an-agent-on-the-control-node-can-become-root-without-a-person/00-report.md b/04-ISSUES/333-an-agent-on-the-control-node-can-become-root-without-a-person/00-report.md index 5be38fba..db403929 100644 --- a/04-ISSUES/333-an-agent-on-the-control-node-can-become-root-without-a-person/00-report.md +++ b/04-ISSUES/333-an-agent-on-the-control-node-can-become-root-without-a-person/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-catalog modules/claude-code, mesh-catalog modules/sudo, mesh-controller internal/catalogue, mesh-host internal/accounts] -fixed-by: -amended-design: 03-DESIGN/01-to-be/36-the-operators-agent-on-a-machine.md --- # 333. An agent on the control node can become root without a person diff --git a/04-ISSUES/334-an-ask-a-seats-worker-gave-up-on-can-only-be-dropped/00-report.md b/04-ISSUES/334-an-ask-a-seats-worker-gave-up-on-can-only-be-dropped/00-report.md index 86d62ec5..cd8424af 100644 --- a/04-ISSUES/334-an-ask-a-seats-worker-gave-up-on-can-only-be-dropped/00-report.md +++ b/04-ISSUES/334-an-ask-a-seats-worker-gave-up-on-can-only-be-dropped/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-08 -located-in: [mesh-controller internal/link (deadletters.go, AgainTo), mesh-controller internal/broker (nats.go, the controller's grants)] -fixed-by: -amended-design: --- # 334. An ask a seat's worker gave up on can only be dropped diff --git a/04-ISSUES/335-a-passed-gate-was-failed-by-the-first-machines-later-reports/00-report.md b/04-ISSUES/335-a-passed-gate-was-failed-by-the-first-machines-later-reports/00-report.md index 5ac1c4c2..e80dfe07 100644 --- a/04-ISSUES/335-a-passed-gate-was-failed-by-the-first-machines-later-reports/00-report.md +++ b/04-ISSUES/335-a-passed-gate-was-failed-by-the-first-machines-later-reports/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (release_plan.go, nextRollout and failFirstSend)] -fixed-by: mesh-controller#165, mesh-lab#72 -replay: R335 -amended-design: --- # 335. A build that passed its gate was failed and put back by the first machine's later reports diff --git a/04-ISSUES/336-a-send-held-for-the-bus-step-raises-nothing/00-report.md b/04-ISSUES/336-a-send-held-for-the-bus-step-raises-nothing/00-report.md index d1b04adf..d40df124 100644 --- a/04-ISSUES/336-a-send-held-for-the-bus-step-raises-nothing/00-report.md +++ b/04-ISSUES/336-a-send-held-for-the-bus-step-raises-nothing/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (push.go sendToEach and bus_step.go busHeld, the hold; signals.go S3 and bus_step.go probe DB, the conditions that do not say it; merge_gate.go and delivery.go, which do not say it before the merge)] -fixed-by: -amended-design: --- # 336. A send held for the bus's planned step raises nothing, and the operator is never asked diff --git a/04-ISSUES/337-the-stores-reader-can-read-the-controllers-signing-key/00-report.md b/04-ISSUES/337-the-stores-reader-can-read-the-controllers-signing-key/00-report.md index c5db4244..4fab9009 100644 --- a/04-ISSUES/337-the-stores-reader-can-read-the-controllers-signing-key/00-report.md +++ b/04-ISSUES/337-the-stores-reader-can-read-the-controllers-signing-key/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-08 -located-in: [mesh-catalog modules/postgres (cmd/postgres-provider/client.go, the reader's grant)] -fixed-by: mesh-catalog#143 -amended-design: -replay-none: The hole is a grant on a store, not a behaviour of the core a lab replay can lay over a commit. The module's own tests hold it against a real throwaway server, and the one that uses only what the module had before the fix reads a fixture signing key on the commit before it and is refused on the fix. --- # 337. The store's reader can read the controller's signing key diff --git a/04-ISSUES/338-a-module-built-from-a-shared-repository-moves-on-every-merge-to-it/00-report.md b/04-ISSUES/338-a-module-built-from-a-shared-repository-moves-on-every-merge-to-it/00-report.md index 92ecced7..77726660 100644 --- a/04-ISSUES/338-a-module-built-from-a-shared-repository-moves-on-every-merge-to-it/00-report.md +++ b/04-ISSUES/338-a-module-built-from-a-shared-repository-moves-on-every-merge-to-it/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller cmd/mesh-controller (upgrades.go, mergeCandidates and readsFrom), mesh-controller internal/inventory (dependencies.go, the packages edge), mesh-controller internal/builder (builder.go and source.go, a context's fingerprint), mesh-catalog modules/route-proxy and modules/build-agent (their recipes and build contexts)] -fixed-by: -amended-design: --- # 338. A module built from a shared repository moves on every merge to it diff --git a/04-ISSUES/339-a-verb-can-place-a-directory-at-the-machines-own/00-report.md b/04-ISSUES/339-a-verb-can-place-a-directory-at-the-machines-own/00-report.md index 415f36ed..9e1e1e3e 100644 --- a/04-ISSUES/339-a-verb-can-place-a-directory-at-the-machines-own/00-report.md +++ b/04-ISSUES/339-a-verb-can-place-a-directory-at-the-machines-own/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-08 -located-in: [mesh-controller (internal/catalogue/placement.go, internal/catalogue/settings.go, cmd/mesh-controller/modules.go, cmd/mesh-controller/seatverbs.go), mesh-host (internal/apply/apply.go, the directory, access and container appliers)] -fixed-by: -amended-design: --- # 339. Any caller of the settings verb can have the node-engine hand a system directory to an account diff --git a/04-ISSUES/340-an-agent-can-plant-a-hook-in-every-agent-session-on-the-mesh/00-report.md b/04-ISSUES/340-an-agent-can-plant-a-hook-in-every-agent-session-on-the-mesh/00-report.md index dfe116d7..6e6a3d8a 100644 --- a/04-ISSUES/340-an-agent-can-plant-a-hook-in-every-agent-session-on-the-mesh/00-report.md +++ b/04-ISSUES/340-an-agent-can-plant-a-hook-in-every-agent-session-on-the-mesh/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-catalog (modules/claude-code), mesh-controller (internal/catalogue/terminal_keys.go)] -fixed-by: -amended-design: 03-DESIGN/01-to-be/36-the-operators-agent-on-a-machine.md --- # 340. An agent can plant a hook in every agent session on the mesh diff --git a/04-ISSUES/341-a-merge-check-judges-the-head-not-what-merging-it-makes/00-report.md b/04-ISSUES/341-a-merge-check-judges-the-head-not-what-merging-it-makes/00-report.md index 8baf4f30..7b929c65 100644 --- a/04-ISSUES/341-a-merge-check-judges-the-head-not-what-merging-it-makes/00-report.md +++ b/04-ISSUES/341-a-merge-check-judges-the-head-not-what-merging-it-makes/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-controller cmd/mesh-controller (checks.go, the check request names the pull request's head as the ref), mesh-controller internal/builder (check.go, the check clones and checks out that ref and never merges the base), mesh-catalog modules/mesh-delivery (table.go, a ready delivery is rechecked only when a person asks or its group changes; holder.go, a merge on the trunk leaves the repository's other open deliveries as they were)] -fixed-by: -amended-design: --- # 341. A merge check judges the pull request's head, not what merging it makes diff --git a/04-ISSUES/342-a-password-is-taken-as-a-setting-and-outranks-the-vaults/00-report.md b/04-ISSUES/342-a-password-is-taken-as-a-setting-and-outranks-the-vaults/00-report.md index d8df5551..0b39cadd 100644 --- a/04-ISSUES/342-a-password-is-taken-as-a-setting-and-outranks-the-vaults/00-report.md +++ b/04-ISSUES/342-a-password-is-taken-as-a-setting-and-outranks-the-vaults/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-09 -located-in: [] -fixed-by: -amended-design: --- # 342. A password is taken as a setting, and outranks the vault's diff --git a/04-ISSUES/343-the-controllers-terminal-has-no-command/00-report.md b/04-ISSUES/343-the-controllers-terminal-has-no-command/00-report.md index 81b68b7d..a6d21797 100644 --- a/04-ISSUES/343-the-controllers-terminal-has-no-command/00-report.md +++ b/04-ISSUES/343-the-controllers-terminal-has-no-command/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-catalog (a new module, mesh-cli), mesh-host (a local socket the node-engine serves), mesh-controller (the answer on the bus), mesh-sdk (the shared request)] -fixed-by: -amended-design: --- # 343. The controller's terminal has no command diff --git a/04-ISSUES/344-known-gaps-in-the-agents-boundary-accepted-for-now/00-report.md b/04-ISSUES/344-known-gaps-in-the-agents-boundary-accepted-for-now/00-report.md index 9956fcfe..41bd2407 100644 --- a/04-ISSUES/344-known-gaps-in-the-agents-boundary-accepted-for-now/00-report.md +++ b/04-ISSUES/344-known-gaps-in-the-agents-boundary-accepted-for-now/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-09 -located-in: [] -fixed-by: -amended-design: --- # 344. Known gaps in the agent's boundary, accepted for now diff --git a/04-ISSUES/345-a-reminder-window-shows-transparent-and-empty/00-report.md b/04-ISSUES/345-a-reminder-window-shows-transparent-and-empty/00-report.md index 44fbcfb1..366d0460 100644 --- a/04-ISSUES/345-a-reminder-window-shows-transparent-and-empty/00-report.md +++ b/04-ISSUES/345-a-reminder-window-shows-transparent-and-empty/00-report.md @@ -1,9 +1,5 @@ --- -status: diagnosing opened: 2026-10-09 -located-in: [] -fixed-by: -amended-design: --- # 345. A calendar reminder shows as a transparent, empty window, and the mesh had no tool to look at it diff --git a/04-ISSUES/346-a-setting-a-verb-may-set-is-pasted-raw-into-its-file/00-report.md b/04-ISSUES/346-a-setting-a-verb-may-set-is-pasted-raw-into-its-file/00-report.md index d98e62f0..61a7ae42 100644 --- a/04-ISSUES/346-a-setting-a-verb-may-set-is-pasted-raw-into-its-file/00-report.md +++ b/04-ISSUES/346-a-setting-a-verb-may-set-is-pasted-raw-into-its-file/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-controller (internal/catalogue/setting_into.go settingInto, internal/catalogue/bound_into_files.go plainly, internal/catalogue/terminal_keys.go), mesh-catalog (every file a module marks "trusted": false)] -fixed-by: -amended-design: --- # 346. A setting a verb may set is pasted raw into its file, so an untrusted file is an injection point diff --git a/04-ISSUES/347-a-pull-request-opened-after-its-push-is-never-checked/00-report.md b/04-ISSUES/347-a-pull-request-opened-after-its-push-is-never-checked/00-report.md index e6a8a2bb..f43056cb 100644 --- a/04-ISSUES/347-a-pull-request-opened-after-its-push-is-never-checked/00-report.md +++ b/04-ISSUES/347-a-pull-request-opened-after-its-push-is-never-checked/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-catalog (modules/gitea, the announcer in index.ts and the client; modules/mesh-delivery, saying it), mesh-controller (its words)] -fixed-by: -amended-design: --- # 347. A pull request opened after its push is never checked, and nothing says so diff --git a/04-ISSUES/348-a-resolver-that-stopped-answering-ran-on-unnoticed-and-builds-sent-after-it-were-blamed/00-report.md b/04-ISSUES/348-a-resolver-that-stopped-answering-ran-on-unnoticed-and-builds-sent-after-it-were-blamed/00-report.md index 407e8183..83c8bc9c 100644 --- a/04-ISSUES/348-a-resolver-that-stopped-answering-ran-on-unnoticed-and-builds-sent-after-it-were-blamed/00-report.md +++ b/04-ISSUES/348-a-resolver-that-stopped-answering-ran-on-unnoticed-and-builds-sent-after-it-were-blamed/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-catalog modules/dnsmasq, mesh-controller cmd/mesh-controller (gate.go, machine_network.go, probes.go), mesh-controller internal/conditions, mesh-catalog modules/docker, mesh-catalog modules/netcheck] -fixed-by: -amended-design: --- # 348. A resolver that stopped answering ran on unnoticed, and builds sent after it were blamed for it diff --git a/04-ISSUES/349-a-merge-acted-on-late-superseded-the-merge-after-it-and-built-the-older-commit/00-report.md b/04-ISSUES/349-a-merge-acted-on-late-superseded-the-merge-after-it-and-built-the-older-commit/00-report.md index 914f0da7..fadeadb2 100644 --- a/04-ISSUES/349-a-merge-acted-on-late-superseded-the-merge-after-it-and-built-the-older-commit/00-report.md +++ b/04-ISSUES/349-a-merge-acted-on-late-superseded-the-merge-after-it-and-built-the-older-commit/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-controller cmd/mesh-controller (release_plan.go supersededBy, upgrades.go), mesh-controller internal/inventory (release_plan)] -fixed-by: -amended-design: --- # 349. A merge acted on late superseded the merge after it, and built the older commit diff --git a/04-ISSUES/351-a-held-delivery-whose-module-a-backlog-walk-carried-is-never-covered/00-report.md b/04-ISSUES/351-a-held-delivery-whose-module-a-backlog-walk-carried-is-never-covered/00-report.md index 743eff70..d520f43f 100644 --- a/04-ISSUES/351-a-held-delivery-whose-module-a-backlog-walk-carried-is-never-covered/00-report.md +++ b/04-ISSUES/351-a-held-delivery-whose-module-a-backlog-walk-carried-is-never-covered/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-catalog modules/mesh-delivery (holder.go, creditBacklog and carries)] -fixed-by: mesh-catalog #163 -amended-design: --- # 351. A held delivery whose module a backlog walk carried to every machine is never covered diff --git a/04-ISSUES/352-a-gate-read-another-sends-report-and-a-put-back-chose-a-controller-older-than-its-store/00-report.md b/04-ISSUES/352-a-gate-read-another-sends-report-and-a-put-back-chose-a-controller-older-than-its-store/00-report.md index 2bcceb5c..c7f3a8e0 100644 --- a/04-ISSUES/352-a-gate-read-another-sends-report-and-a-put-back-chose-a-controller-older-than-its-store/00-report.md +++ b/04-ISSUES/352-a-gate-read-another-sends-report-and-a-put-back-chose-a-controller-older-than-its-store/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-controller cmd/mesh-controller (gate.go, release.go, release_plan.go, acting.go, push.go), mesh-controller internal/inventory, mesh-controller internal/catalogue] -fixed-by: -amended-design: --- # 352. A gate read another send's report, and a put-back chose a controller older than its store diff --git a/04-ISSUES/353-the-controller-asked-before-the-bus-held-its-grant/00-report.md b/04-ISSUES/353-the-controller-asked-before-the-bus-held-its-grant/00-report.md index f1e81cc9..b651c185 100644 --- a/04-ISSUES/353-the-controller-asked-before-the-bus-held-its-grant/00-report.md +++ b/04-ISSUES/353-the-controller-asked-before-the-bus-held-its-grant/00-report.md @@ -1,10 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-controller cmd/mesh-controller (asker.go, asker_wire.go), mesh-controller internal/broker (users.go, asksSeatOf)] -fixed-by: mesh-controller pull request 186 -amended-design: -replay-none: the whole of it is one process's record against one bus's user list; the controller's own test drives the asker with the bus's word held and withheld (TestNothingIsAskedWhileTheBusLacksTheControllersGrant), and a container runtime adds nothing to that --- # 353. The controller asked before the bus held its grant diff --git a/04-ISSUES/354-a-decided-rename-was-never-scheduled-and-the-operator-believed-it-live/00-report.md b/04-ISSUES/354-a-decided-rename-was-never-scheduled-and-the-operator-believed-it-live/00-report.md index 26d32691..1d083425 100644 --- a/04-ISSUES/354-a-decided-rename-was-never-scheduled-and-the-operator-believed-it-live/00-report.md +++ b/04-ISSUES/354-a-decided-rename-was-never-scheduled-and-the-operator-believed-it-live/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-host (the node-engine: its repository, module, binary, units, launcher and paths), mesh-tools node-tools (the tool runner: its module, unit and bus account), mesh-controller (the names it keys the core on, and the words it shows), mesh-catalog (the registrations, and the modules that name the two), hq (the designs' code lines, repos.md, the glossary's identifier lines)] -fixed-by: -amended-design: --- # 354. A decided rename was never scheduled, and the operator believed it live diff --git a/04-ISSUES/355-a-held-delivery-of-a-module-that-runs-on-one-machine-only-is-never-covered/00-report.md b/04-ISSUES/355-a-held-delivery-of-a-module-that-runs-on-one-machine-only-is-never-covered/00-report.md index a5a9d3f1..fa4418c6 100644 --- a/04-ISSUES/355-a-held-delivery-of-a-module-that-runs-on-one-machine-only-is-never-covered/00-report.md +++ b/04-ISSUES/355-a-held-delivery-of-a-module-that-runs-on-one-machine-only-is-never-covered/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-09 -located-in: [] -fixed-by: -amended-design: --- # 355. A held delivery of a module that runs on one machine only is never covered diff --git a/04-ISSUES/356-the-operators-command-ran-a-stale-engine-and-a-hand-over-had-no-channel/00-report.md b/04-ISSUES/356-the-operators-command-ran-a-stale-engine-and-a-hand-over-had-no-channel/00-report.md index b5a5c89a..42c0db98 100644 --- a/04-ISSUES/356-the-operators-command-ran-a-stale-engine-and-a-hand-over-had-no-channel/00-report.md +++ b/04-ISSUES/356-the-operators-command-ran-a-stale-engine-and-a-hand-over-had-no-channel/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-host (cmd/mesh-host, internal/upgrade, internal/link), mesh-controller (cmd/mesh-controller/nodes.go, internal/broker, internal/link), mesh-catalog (checks/words)] -fixed-by: -amended-design: --- # 356. The operator's command on a node ran a stale engine, and a hand-over had no channel diff --git a/04-ISSUES/357-what-adr-0273-left-undecided-has-no-owner/00-report.md b/04-ISSUES/357-what-adr-0273-left-undecided-has-no-owner/00-report.md index 6edec2c9..14ad3414 100644 --- a/04-ISSUES/357-what-adr-0273-left-undecided-has-no-owner/00-report.md +++ b/04-ISSUES/357-what-adr-0273-left-undecided-has-no-owner/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-09 -located-in: [] -fixed-by: -amended-design: --- # 357. What ADR 0273 left undecided has no owner diff --git a/04-ISSUES/358-a-mesh-directory-outside-a-home-is-changed-by-path-through-any-link/00-report.md b/04-ISSUES/358-a-mesh-directory-outside-a-home-is-changed-by-path-through-any-link/00-report.md index 4e7886b5..ec28facb 100644 --- a/04-ISSUES/358-a-mesh-directory-outside-a-home-is-changed-by-path-through-any-link/00-report.md +++ b/04-ISSUES/358-a-mesh-directory-outside-a-home-is-changed-by-path-through-any-link/00-report.md @@ -1,9 +1,5 @@ --- -status: open opened: 2026-10-09 -located-in: [mesh-host (internal/apply/apply.go applyDirectory, internal/apply/home_links.go chmodDirPath, chownPath)] -fixed-by: -amended-design: --- # 358. A mesh directory outside a home is given its mode and owner by path, through any link in its path diff --git a/04-ISSUES/359-a-secret-given-reached-the-operator-as-needs-a-look/00-report.md b/04-ISSUES/359-a-secret-given-reached-the-operator-as-needs-a-look/00-report.md index 985cda29..89af2b85 100644 --- a/04-ISSUES/359-a-secret-given-reached-the-operator-as-needs-a-look/00-report.md +++ b/04-ISSUES/359-a-secret-given-reached-the-operator-as-needs-a-look/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-09 -located-in: [mesh-controller (cmd/mesh-controller/desk_secret.go, internal/conditions/plain.go)] -fixed-by: -amended-design: --- # 359. A secret given reached the operator as "needs a look", and nothing said why diff --git a/04-ISSUES/360-the-operator-cannot-choose-a-notifications-action-on-a-touchpad/00-report.md b/04-ISSUES/360-the-operator-cannot-choose-a-notifications-action-on-a-touchpad/00-report.md index 532245f0..5adc5602 100644 --- a/04-ISSUES/360-the-operator-cannot-choose-a-notifications-action-on-a-touchpad/00-report.md +++ b/04-ISSUES/360-the-operator-cannot-choose-a-notifications-action-on-a-touchpad/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-10 -located-in: [mesh-catalog modules/dunst (the dunstrc's click lines and its context menu)] -fixed-by: -amended-design: --- # 360. The operator cannot choose a notification's action on a touchpad diff --git a/04-ISSUES/361-the-control-nodes-agent-account-is-never-judged/00-report.md b/04-ISSUES/361-the-control-nodes-agent-account-is-never-judged/00-report.md index bddcc81a..ad4a14e4 100644 --- a/04-ISSUES/361-the-control-nodes-agent-account-is-never-judged/00-report.md +++ b/04-ISSUES/361-the-control-nodes-agent-account-is-never-judged/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-10 -located-in: [mesh-host (internal/accounts, rootsearch), mesh-controller (cmd/mesh-controller/agent_account.go, internal/link)] -fixed-by: -amended-design: --- # 361. The control-node's agent account is never judged: its search for setuid programs cannot finish in fifteen minutes diff --git a/04-ISSUES/362-two-merges-seconds-apart-left-their-delivery-waiting-for-a-person/00-report.md b/04-ISSUES/362-two-merges-seconds-apart-left-their-delivery-waiting-for-a-person/00-report.md index 5b5a2e3c..76bd4b99 100644 --- a/04-ISSUES/362-two-merges-seconds-apart-left-their-delivery-waiting-for-a-person/00-report.md +++ b/04-ISSUES/362-two-merges-seconds-apart-left-their-delivery-waiting-for-a-person/00-report.md @@ -1,10 +1,5 @@ --- -status: resolved opened: 2026-10-10 -located-in: [mesh-catalog modules/mesh-delivery (holder.go deliveryWalking), mesh-controller cmd/mesh-controller (upgrades.go SourceMoved, release_plan.go laterOnTheBranch)] -fixed-by: mesh-catalog#171, mesh-controller#197 -replay: R362 -amended-design: 03-DESIGN/01-to-be/47-delivery-from-commit-to-delivered.md --- # 362. Two catalogue merges seconds apart left their delivery waiting for a person diff --git a/04-ISSUES/363-adr-0267-was-decided-and-never-built/00-report.md b/04-ISSUES/363-adr-0267-was-decided-and-never-built/00-report.md index 127528bc..cf9bdbfb 100644 --- a/04-ISSUES/363-adr-0267-was-decided-and-never-built/00-report.md +++ b/04-ISSUES/363-adr-0267-was-decided-and-never-built/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-10 -located-in: [mesh-controller internal/builder (what a build says it was made from, and what an image compiling Go is handed), mesh-controller cmd/mesh-controller (the planner's mapping, touchedBy and readsFrom), mesh-controller internal/inventory (the packages edge), mesh-catalog modules/route-proxy and modules/build-agent (the package each recipe compiles)] -fixed-by: -amended-design: --- # 363. ADR 0267 was decided and never built diff --git a/04-ISSUES/364-the-gate-refuses-a-module-that-uses-a-seat-another-module-declares/00-report.md b/04-ISSUES/364-the-gate-refuses-a-module-that-uses-a-seat-another-module-declares/00-report.md index 79996cd1..48eae969 100644 --- a/04-ISSUES/364-the-gate-refuses-a-module-that-uses-a-seat-another-module-declares/00-report.md +++ b/04-ISSUES/364-the-gate-refuses-a-module-that-uses-a-seat-another-module-declares/00-report.md @@ -1,9 +1,5 @@ --- -status: located opened: 2026-10-10 -located-in: [mesh-controller cmd/mesh-controller (check.go moduleCheckFor), mesh-controller internal/builder (check.go gateLayer)] -fixed-by: -amended-design: --- # 364. The merge gate refuses a module that uses a seat another module declares diff --git a/04-ISSUES/README.md b/04-ISSUES/README.md index ca0d6b13..57c964d5 100644 --- a/04-ISSUES/README.md +++ b/04-ISSUES/README.md @@ -38,10 +38,13 @@ opened: YYYY-MM-DD --- ``` -The report's first heading is `# NNN. The title`, the title the tracker holds. A report opened after the -import of slice 3 carries no `status:`, `located-in:`, `fixed-by:`, `amended-design:`, `replay:` or -`replay-none:`; `cycle.py` refuses them. The folders numbered 001 to 364 keep those keys as the snapshot the -import took, dated in ADR 0275; they are not kept up to date, and nobody edits them. +The report's first heading is `# NNN. The title`, the title the tracker holds. A report carries no +`status:`, `located-in:`, `fixed-by:`, `amended-design:`, `replay:` or `replay-none:`; `cycle.py` refuses them. +The folders numbered 001 to 364 carried them until the import of slice 3 had taken them into the tracker; what +they said then is in this repository's history at the commit the import read, which every imported issue names. + +A folder here keeps the public narrative of a design or governance issue. A plain bug needs no folder: it is +whole in the tracker. ## Rules