Check every rule of ADR 0285, point ADR 0253 at it under its verdict rule, and cite the pull requests
Review of hq#299.
This commit is contained in:
@@ -524,6 +524,7 @@ asking, never the act. **Decided by** ADR 0152, 0175, 0234, 0259, 0272.
|
||||
it means; the line said when it clears. Its **actions** are the answers a notification offers. Carried by
|
||||
the condition beside its **summary**, which keeps the plans, commits and verbs for whoever looks closer
|
||||
([ADR 0253](../02-DECISIONS/0253-a-condition-says-itself-to-the-operator-in-plain-words-beside-its-summary.md)).
|
||||
The router may override "Nothing for you to do." in what it says, from the **tracking line** (ADR 0285).
|
||||
- **ask** — a request for the operator's input, of a declared kind (yes-no, one-of, text, number,
|
||||
date, acknowledge). An **authorising ask** is one whose chosen option its asker performs. The router
|
||||
holds every ask, checks each answer's proofs and issues a **warrant**; the asker acts on it with its
|
||||
|
||||
+8
-6
@@ -117,16 +117,18 @@ What the mesh had, on the main branches of 2026-10-08:
|
||||
"agent", no "session", and `needs` never says "by hand". `needs` is one sentence ending in a full stop.
|
||||
Words that break the rule are replaced by the scope's words and reported; a condition is never refused
|
||||
for its words.
|
||||
> **The mechanism changed — 2026-10-10, by [ADR 0285](0285-an-issue-tracks-a-condition-by-its-key-and-every-message-about-the-condition-says-the-issue-and-where-it-stands.md).** What stands: the condition's own
|
||||
> words, their plain rule and their verdict, made where the condition is made. What moved: the router adds the
|
||||
> **tracking line** below the explanation, naming the issue that tracks the condition by its number (the one
|
||||
> numbered id a message may carry), and changes "Nothing for you to do." to "Needs you: answer issue N." while that
|
||||
> issue waits for the operator, or leaves it out while nobody works on any issue tracking it.
|
||||
|
||||
4. **Whether the operator is needed is decided per condition, by its producer.** "Nothing for you to do."
|
||||
is said where the mesh handles it or it passes by itself; "Needs you:" where only the operator can do
|
||||
the next thing. A condition a healer gave up on (`resolver: operator` with attempts) that needed nothing
|
||||
now needs the operator: its verdict becomes "Needs you:".
|
||||
> **The mechanism changed — 2026-10-10, by [ADR 0285](0285-an-issue-tracks-a-condition-by-its-key-and-every-message-about-the-condition-says-the-issue-and-where-it-stands.md).** What stands: the producer
|
||||
> decides the condition's own verdict (rule 4), and the condition's words keep the plain rule (rule 3). What moved: the
|
||||
> router says, below the explanation, the **tracking line** naming the issue that tracks the condition by its number,
|
||||
> the one numbered id a message may carry; and in what it says, it overrides "Nothing for you to do." in two cases:
|
||||
> it becomes "Needs you: answer issue N." while that issue waits for the operator, and it is left out while nobody
|
||||
> works on any issue tracking the condition. Why: the operator could not tell from a notification whether its cause
|
||||
> was known and being fixed (issue 400), and the producer of a condition does not know the issues that track it.
|
||||
|
||||
5. **A warning that needs nothing is not sent.** The operator channel keeps it open, its history says it
|
||||
was kept quiet, and it is said the moment it needs the operator: when it becomes urgent at its bound, or
|
||||
when its words change to "Needs you:". An urgent condition is always said. At this decision these kinds
|
||||
|
||||
+6
-2
@@ -109,7 +109,8 @@ way. It is a read: it changes nothing and emits nothing.
|
||||
The router invokes `issue-tracker.tracking` over the bus, outside its work: at most once a minute, waiting at most
|
||||
5 seconds, and a failed ask is tried again a minute later. It uses an answer for **10 minutes**. Every message about
|
||||
a condition (raised, reopened, reminded, escalated, quiet reminder) says one line below the explanation and before
|
||||
since when, the **tracking line**. A clearing and a silence say none, and neither does a module's notice.
|
||||
since when, the **tracking line**. A clearing and a silence say none, and neither does a module's notice, nor a
|
||||
message whose words the content rule withheld whole.
|
||||
|
||||
| The issue | The tracking line says |
|
||||
|---|---|
|
||||
@@ -135,7 +136,7 @@ as issue N:", at most **3**, then "And K more issues." Times are the operator's,
|
||||
|
||||
### 4. The verdict
|
||||
|
||||
- "Nothing for you to do." becomes **"Needs you: answer issue N."** while an issue tracking the condition needs
|
||||
- "Nothing for you to do." becomes **"Needs you: answer issue N."** ("answer issues N and M." for several) while an issue tracking the condition needs
|
||||
the operator (`needs: operator`), is not closed, and has no fix merged. **The router never says "Nothing for you
|
||||
to do." about a condition whose issue waits for the operator.**
|
||||
- "Nothing for you to do." is **left out** while nobody works on any issue tracking the condition: each is closed
|
||||
@@ -181,6 +182,8 @@ issue tracks it links that issue first, so the silence and the message agree. Pl
|
||||
| `tracking` answers by key, those not closed first, at most ten per key, with worker, stale, needs and fix; only the keys asked when given; a key not of a key's shape refused | the tracker's tests (mesh-catalog `modules/mesh-issues`, `tracking_test.go`) |
|
||||
| Its answer carries no title, report or note | the tracker's verb test, over an issue whose note holds a secret's shape |
|
||||
| `fix` follows the delivery's facts, in the delivery line's order | the tracker's table test of `FixState`, one row per state |
|
||||
| `tracking` is a read: it emits nothing and writes nothing | the tracker's verb test calls it and finds no event said and no revision changed |
|
||||
| The link is set by whoever opens the issue or works on it, an agent at once; never by the triage or the controller | no code sets a `condition` link (the triage's and the controller's code hold none, which the review of each change to them sees); that agents set it is checked by nothing mechanical: a condition an issue is about that says "No issue tracks this yet." is the visible gap, and playbook 03's reviewer looks for the link |
|
||||
| Live | on the mesh, issue 352 linked to the rolled-back healer-wanted key and 379 and 386 to the mounts key: the next message about each names its issues and where they stand |
|
||||
|
||||
## References
|
||||
@@ -189,4 +192,5 @@ issue tracks it links that issue first, so the silence and the message agree. Pl
|
||||
- [ADR 0253](0253-a-condition-says-itself-to-the-operator-in-plain-words-beside-its-summary.md): the plain words and the verdict this record extends
|
||||
- [ADR 0284](0284-an-agent-moves-an-issue-to-fixing-under-its-own-name-and-an-issue-is-resolved-only-from-fixing.md): the worker this record says
|
||||
- [ADR 0281](0281-an-issue-knows-whether-its-fix-is-delivered-and-a-fix-stuck-after-its-merge-is-loud.md): where a fix is
|
||||
- mesh-catalog#191 (the tracker's `tracking` and the router's tracking line) and hq#299 (this record)
|
||||
- [To-be 53](../03-DESIGN/01-to-be/53-the-issue-tracker.md) and [to-be 45](../03-DESIGN/01-to-be/45-a-core-that-cannot-fail-silently.md): the designs this record amends
|
||||
|
||||
Reference in New Issue
Block a user