The gap is closed in the proxy: policy applies, the four capabilities exist, the table is keyed by host and path with a total ordering, and the two failure modes that rot quietly are held by tests — a declaration carrying a credential refused rather than served, an unreadable secret failing closed. Resolved rather than left open because the issue reports a gap in the proxy and that gap is gone. But the record says plainly what it does not yet allow: an operator still cannot move the affected routes, because that needs the mesh side — a manifest able to declare these values and the controller minting the secret auth names. Until both exist the capability is reachable only by writing the routes file by hand. That is the ordinary build-out of a contract this issue's decision created, and it belongs to to-be 08 rather than here. The open questions are marked answered and kept rather than deleted, pointing at ADR 0108 — what was rejected and why is the half worth having, and a section still saying "the fix should not be written before these are answered" after the fix was written reads as though nobody looked. One finding kept in the record: priority was read with the reader for ports, which caps at 65535, and the one real rule this reproduces is declared at 100000. It parsed to zero, so refusal and path scoping would have shipped looking complete and doing nothing on the only case that motivated them. A validator borrowed from a neighbouring field is a silent default.
04-ISSUES
The front door for "something is wrong" at the level of the mesh's design or governance. Diagnosis happens here, where the whole mesh is in view; the fix lands in the owning code repository.
What belongs here
| Belongs here | Belongs in the knowledge base |
|---|---|
| The design permits a failure to be silent | How to fix one occurrence of it |
| A documented rule is enforced by nothing | A command that works around it |
| A stated invariant is false in practice | A node-specific quirk |
| The owner is unknown and finding it needs the whole mesh in view | Symptom → fix, once the answer is known |
The knowledge base already holds the operational record and is indexed on symptoms. This folder is not a second copy of it. An issue here is a question HQ must answer; an entry there is an incident someone must clear. An issue whose answer is a general lesson belongs in both.
Structure
NNN-short-name/
00-report.md the symptom as observed, with the evidence; status in frontmatter
01-diagnosis.md the investigation trail, dated, including what was ruled out
Frontmatter, on 00-report.md
---
status: open | diagnosing | located | resolved | wontfix
opened: YYYY-MM-DD
located-in: [] # owning repo(s) or module(s), filled by diagnosis
fixed-by: # pull request or commit reference, filled at resolution
amended-design: # design doc path, when the root cause was a design gap
---
Rules
- Anyone may open an issue. No localisation is required to report one.
- The full flow is playbook
00-META/process/03-issues.md. - Closed issues are never deleted — they are the mesh's symptom-to-component memory.
wontfixis legitimate and requires a sentence saying why.