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.
5.2 KiB
status, initiated, touches, became
| status | initiated | touches | became | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| graduated | 2026-10-10 |
|
|
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:
- The smallest useful first slice: what the module holds, which tools it serves, which events it emits, and what it explicitly leaves out.
- 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.
- How the 357 issue folders are imported and consolidated (duplicates, still-open ones, grouping).
- How the controller's conditions, the router's asks and deliveries relate to issues.
- How the operator sees issues: through the mesh's tools first, through a view onto the bus later.
- 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.