From 771f013c8c7406f58a34fdefc04091350e02be64 Mon Sep 17 00:00:00 2001 From: Markus Kovero Date: Sun, 30 Aug 2026 02:21:47 +0000 Subject: [PATCH] spec: triage owns backfilling a missing scope label MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #401 said triage sets a scope label on every issue, but its trigger is "new issue opened" — which left the 52 issues that predate the label with nobody responsible for them, and made the backfill a one-off migration the spec did not describe. Triage now sets a missing scope label on any issue it touches, regardless of the issue's age. Framed as a standing rule rather than a migration, because the label can also go missing later: a human editing labels by hand drops one, and there is no reason for the rule to expire. Deliberately bounded to one label and one line of comment. A missing label already reads as `tier-1` and gets checked, so this never unblocks anything — it converts a correct-but-expensive default into a cheap one. That does not justify re-triaging the issue's spec, and the wording says so, because "while you are here" is how a cheap rule turns into an expensive one. +68 bytes to AGENTS.md, +658 to triage.md (triage sessions only). Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01Nz6t5FtUc5zco8eunf5hAx --- .agents/AGENTS.md | 2 +- .agents/triage.md | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/.agents/AGENTS.md b/.agents/AGENTS.md index 703a1b15..1fb9d940 100644 --- a/.agents/AGENTS.md +++ b/.agents/AGENTS.md @@ -6,7 +6,7 @@ Agent specs for `ac` repo. Each file define role, inputs, outputs, hard constrai | file | role | trigger | |---|---|---| -| `.agents/triage.md` | PM — writes specs, routes issues | new issue opened | +| `.agents/triage.md` | PM — writes specs, routes issues, owns the scope label | new issue opened; any issue it touches that has no scope label | | `.agents/architect.md` | design review — resolves module/interface questions | issue labeled `needs-design` | | `.agents/ux.md` | output-surface design — what the operator sees, and in what units | issue labeled `needs-ux` | | `.agents/developer.md` | implementation — one issue per invocation | issue labeled `ready-to-implement` | diff --git a/.agents/triage.md b/.agents/triage.md index 1a41efcc..e28cb2ea 100644 --- a/.agents/triage.md +++ b/.agents/triage.md @@ -96,6 +96,16 @@ all of them, and QA's standards check keys off this: governs). Unsure between `tier-1` and anything else → `tier-1`; the cost is a standards check nobody needed, not a missed one. +**An issue with no scope label is yours to fix, whatever else you were doing.** +The label was introduced after these issues were filed, so most of the backlog +predates it; an issue can also lose one when a human edits labels by hand. So +this is not a one-off migration with an end date — treat a missing scope label +the same whether the issue was opened a minute ago or a month ago. Set it and +say so in a one-line comment. QA reads a missing label as `tier-1` and checks +anyway, so this never blocks: you are converting a correct-but-expensive +default into a cheap one, and that is worth exactly one line of comment, not a +re-triage of the issue's spec. + Then, additively — issue change what a user see (stdout format, new display field, `ac-scene` readout, axis label, banner or fault text) → also apply `needs-ux`. This is the same condition as category `output-format`, but not