Repository navigation
docs(triage): add triage duty tooling - #3082
Conversation
Signed-off-by: Evan Lezar <elezar@nvidia.com>
Signed-off-by: Evan Lezar <elezar@nvidia.com>
Signed-off-by: Evan Lezar <elezar@nvidia.com>
Signed-off-by: Evan Lezar <elezar@nvidia.com>
Signed-off-by: Evan Lezar <elezar@nvidia.com>
|
This pull request has had no activity for 14 days and is now marked stale. It may be closed in 7 days if there is no further activity. |
purp
left a comment
There was a problem hiding this comment.
The two-skill split is the right shape: queue review stays read-only, and application covers one ID at a time behind preview-and-confirm. Most of what follows is about making the skills safe to keep in a public repo and making their state survive a duty handoff.
Must address
-
Internal Slack sources are hardcoded in a public repo. On
main, nothing under.agents/references internal Slack. This PR adds channel IDs atreview-triage-queue/SKILL.md:40-41andnvidia.enterprise.slack.comlinks attriage-duty-playbook.md:33-34. That publishes internal identifiers, and community users running the skill would be told to scan channels they cannot reach. Suggested fix:- Put the intake sources in a committed
.agents/triage-intake.yaml, with an add-only, gitignored.agents/triage-intake.local.yamloverlay for internal sources. - Give every source a required
trust: community|internalfield. - Never allow an internal identifier into an external write or a committable file.
- Without the overlay, the skill falls back to GitHub-only.
- Put the intake sources in a committed
-
The intake-gap lane re-surfaces issues that were already triaged.
triage-issuereplacesstate:triage-neededwhen it records an outcome (CONTRIBUTING.md"replace the previous assessment state"). The predicate atreview-triage-queue/SKILL.md:34keys on that label being absent, soneeds-info,validated, and later-state issues match it. As of 2026-09-02, 28 of 101 matches were false positives. Suggested fix: an issue is eligible only if it is notstate:staleand carries no lifecyclestate:*label. Discover that label set at run time per Label Discovery rather than enumerating it (sync-agent-infrastep 3). -
apply R-02can resolve to a different item than the one the engineer read. IDs are report-local and reused (review-triage-queue/SKILL.md:75).apply-triage-actionresolves against the newest report (apply-triage-action/SKILL.md:8), and deferred items get renumbered each run. Suggested fix: key each ID to the intake object rather than the row:I2991for issues andP3082for PRs, and a short Crockford-base32 hash for CI runs and Slack threads.R-nncan stay as display order only. -
Rebase onto current
main. The PR conflicts withmain, andmainhas since adopted conventions this branch predates:- Both skills need
metadata.internal: true; all 19 existing contributor skills have it. CONTRIBUTING.mdnow requires every non-dependency PR to close an issue, and this PR says "No issue required".agents/openai.yamlnow exists only forcreate-rfc. Confirm the two new ones are wanted.
- Both skills need
Should address
-
Deferred items crowd out new intake. Pending and deferred items count against the same five slots (
review-triage-queue/SKILL.md:82). Once five are deferred, no new ordinary intake reaches Needs your decision. Suggested fix: give new intake and deferred items separate budgets. The oldest-first backlog sweep also needs its own cursor, because recency timestamps don't advance through an age-ordered list. -
Triage history doesn't survive a handoff. All dispositions stay local (
triage-duty-playbook.md:134), so the next person on duty inherits nothing. Suggested fix:- If a deferral reason is shareable (waiting on the reporter, a dependency, or PR changes), post it on the issue through the apply gate, usually with
state:needs-info. - Keep only private reasons local.
- The
trustfield from the first item already sorts community state from internal state.
- If a deferral reason is shareable (waiting on the reporter, a dependency, or PR changes), post it on the issue through the apply gate, usually with
Minor
architecture/plans/is gitignored (.gitignore:227), and the playbook is force-added past that rule. Consider an RFC, or land only the skills.- Closing an issue is the highest-consequence action, but it's folded into the duplicate entry (
apply-triage-action/SKILL.md:39). Give it its own line. - The report is described as "immutable" but carries a
Current dispositionfield. State which record is authoritative. - A report template would let consecutive reports diff cleanly.
.markdownlint-cli2.jsoncdisables MD013 for single-line prose, but parts of all three files are hard-wrapped.
|
+1 to removing the slack tooling, that isn't relevant outside of the GitHub context. |
|
Also remove the plan document since we no longer have the architecture/ directory |
Signed-off-by: Jim Meyer <jimeyer@nvidia.com>
Signed-off-by: Jim Meyer <jimeyer@nvidia.com>
Signed-off-by: Jim Meyer <jimeyer@nvidia.com>
Summary
Add the triage-duty queue review and user-gated action workflows, including a
local playbook and explicit continuation order for in-progress triage passes.
Related Issue
No issue required: triage-process tooling and documentation. Replaces #2978 and #3081.
Changes
in the checkpoint.
Testing
git diff --check origin/main...HEADmise run pre-commit(not run:miseis unavailable in this environment)Checklist