Files
hq/01-RESEARCH/042-the-mesh-keeps-its-own-issues/00-overview.md
T
jochen 015ff1adfb
mesh/merge-gate pass: the change touches no module of the mesh's graph
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered
Graduate research 042 into ADR 0275 and to-be 53, so issue numbers stop colliding
Numbers taken by reading a repository many branches write at once collide;
one counter in a module of the mesh's own, advanced by compare-and-set,
ends that at the source. The operator delegated the five open questions
on 2026-10-10; each is decided as the research recommended. The glossary
gains the issue tracker, retires "ticketing system" and lists ticket as a
homonym, since ADR 0258 already uses it for an answer's one-time token.
2026-10-10 12:31:32 +02:00

5.2 KiB

status, initiated, touches, became
status initiated touches became
graduated 2026-10-10
02-DECISIONS/0019-how-this-repository-works.md
02-DECISIONS/0080-the-development-cycle-is-checked.md
00-META/process/03-issues.md
00-META/glossary.md
the runtime's state verbs and the SDK's state interface
03-DESIGN/01-to-be/53-the-issue-tracker.md
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

042 — The mesh keeps its own issues

What

Whether the mesh should keep its issues in a module of its own, on the bus, instead of only as numbered folders in this repository's 04-ISSUES/, and what the smallest useful first version of that module is. The operator's ask of 2026-10-10: work on a ticketing system on the bus, consolidate every current issue into it, start small and extend the module along the way.

The effort answers six questions, in 01-findings.md:

  1. The smallest useful first slice: what the module holds, which tools it serves, which events it emits, and what it explicitly leaves out.
  2. Where the truth lives during and after the move: the folders here, the module, or a split between them, and what each choice does to the public-repository rule, playbook 03 and the hq checks.
  3. How the 357 issue folders are imported and consolidated (duplicates, still-open ones, grouping).
  4. How the controller's conditions, the router's asks and deliveries relate to issues.
  5. How the operator sees issues: through the mesh's tools first, through a view onto the bus later.
  6. The open questions for the operator, and the slices after the first.

The operator also named an existing project as inspiration: hits, a headless issue tracker built as NATS micro services on JetStream, with an MCP server for agents. Its model is studied in the findings, along with whether to reuse its code or build on its model.

Why

Numbers collide. Playbook 03 tells an author to take the next free number across main and every open pull request, and issue 155 records the second collision reaching main with every check passing. cycle.py now refuses two records sharing a number, which catches a collision after it happens and does not prevent one. On main at the time of writing, 31 commits mention a renumbering. On 2026-10-07 three decision numbers collided in one evening. On 2026-10-10 an open pull request still carries a branch named for issue 349 and a title naming issue 350, because 349 was taken on main first. The operator's answer on 2026-10-07 was that numbering belongs to the mesh's own issue tracker.

Status is also hard to see. Of 357 issue folders on main, 73 are not closed (27 open, 45 located, 1 diagnosing). Finding them means reading frontmatter across the repository. Nothing connects a condition the controller raises to the issue that would fix it: on 2026-10-10 a condition was silenced with the words "hq issue to follow", and nothing records whether one followed.

What it touches

  • ADR 0019 (statuses live in frontmatter) and ADR 0080 (the cycle is checked), with playbook 03 and 00-META/checks/cycle.py.
  • ADR 0201 (a module keeps its state in key-value buckets it declares), ADR 0197 (tools announce themselves on the bus) and ADR 0041 (events are declared).
  • The conditions of ADR 0231 and the asks of ADR 0259.
  • The records module, which indexes this repository for agents.

Graduated 2026-10-10 into ADR 0275 and to-be 53. The operator delegated the five open questions; each was decided as recommended. touches: names what the decision changes.

Words

The glossary's word for one of these is issue (The record: "a report in 04-ISSUES/"). This effort keeps that word for the thing the module holds, and proposes issue tracker for the module that holds them, with the module named issues. It does not use ticket, the operator's word in the ask, or item, the word hits uses. If the glossary entry is widened (an issue is then held by the issue tracker, and its narrative may live in 04-ISSUES/), ticket would go on its Not: line. That change belongs to the decision this effort graduates into, not to the effort itself.

Open questions for the operator

Listed in 01-findings.md § 7, each with a recommendation.