ADR 0283: an agent moves an issue to fixing under its own name, and resolves only from fixing (issue 399)
Two agents could start on one issue without seeing each other, and an issue could be resolved without anyone having said they started its fix. Adds the status fixing, the issue's worker (by, who@node) with take-over and a stale bound, and resolved only from fixing; settles what to-be 53 left out as claims, under the new glossary word worker. Amends to-be 53, playbook 03 and the hq-diagnose and hq-status skills, with pointer notes on ADR 0275 and 0281.
This commit is contained in:
@@ -71,10 +71,20 @@ import read, which every imported issue names (`imported.commit` in `issue-track
|
||||
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
|
||||
same folder as well — dated, including what was ruled out. The status moves through `issue-tracker.move`:
|
||||
to `diagnosing`, then to `located` with `located-in`, which the tracker refuses without a registered owner.
|
||||
3. Resolve. `issue-tracker.move` to `resolved` with `fixed-by`, and, if the root cause was a design gap,
|
||||
2. Investigate. **Before you start, move the issue to `diagnosing` with `by`**: who works on it and its node, as
|
||||
who@node (`fix-399@g14`, `jochen@shanks`). The tracker keeps you as the issue's **worker**, and `get` and `list`
|
||||
show it with since when. The trail goes in `issue-tracker.note`, and, for a folder-backed issue, in
|
||||
`01-diagnosis.md` in the same folder as well — dated, including what was ruled out. A note keeps you the worker; a
|
||||
worker with nothing done on the issue for a day is stale. Then move it to `located` with `located-in`, which the
|
||||
tracker refuses without a registered owner; that ends your work on it.
|
||||
3. Fix. **Before you start the fix, move the issue to `fixing` with `by`**, even when you diagnosed it yourself. The
|
||||
tracker refuses the move while another worker is current, naming them: ask them, or take it over with
|
||||
`take-over` saying why, which is noted on the issue. A stale worker may be taken over from without a reason.
|
||||
Name the fix in `fixed-by` when it merges, with a move to `fixing` that gives `by` again; the issue stays
|
||||
`fixing` until the acceptance is proven live
|
||||
([ADR 0283](../../02-DECISIONS/0283-an-agent-moves-an-issue-to-fixing-under-its-own-name-and-an-issue-is-resolved-only-from-fixing.md),
|
||||
[ADR 0281](../../02-DECISIONS/0281-an-issue-knows-whether-its-fix-is-delivered-and-a-fix-stuck-after-its-merge-is-loud.md)).
|
||||
4. Resolve. `issue-tracker.move` to `resolved`, which the tracker takes only from `fixing`, with `fixed-by`, and, if the root cause was a design gap,
|
||||
run playbook [02](02-graduation.md) and give `amended-design`. **A core issue** — its `located-in`
|
||||
names the controller, the node-engine, the tool runner, the SDK, or the catalogue's bus, forge or build
|
||||
agent — resolves with `replay`, the id of its replay in mesh-lab's replays register, proved to fail on
|
||||
@@ -97,8 +107,11 @@ import read, which every imported issue names (`imported.commit` in `issue-track
|
||||
- An issue whose answer is a general lesson should also be written to the knowledge base, so
|
||||
the next person searching a symptom finds it. Both, not either.
|
||||
- `wontfix` is legitimate and requires a sentence saying why; the tracker refuses it without one.
|
||||
- **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
|
||||
- **An agent says when it starts work on an issue**, by moving it to `diagnosing` or `fixing` with `by`. Two agents
|
||||
never start the same work without knowing: the second is refused, naming the first.
|
||||
- **A rule states how it is checked.** The cycle's rules on an issue — a status one of the six, `diagnosing` and
|
||||
`fixing` with a worker and no other current one, `located` with an owner, `resolved` only from `fixing` and 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 with the day it was
|
||||
`opened:`, and no report carries a status key.
|
||||
|
||||
Reference in New Issue
Block a user