Some checks failed
Tests / PR mergeability (push) Successful in 1m37s
Tests / Base branch health (push) Successful in 11s
Tests / Detect test scope (push) Successful in 17s
Tests / lint-tests (push) Failing after 2m16s
Tests / plugin-validate (push) Successful in 1m6s
Tests / test (ubuntu-latest, 24, shard 1/3) (push) Failing after 25s
Tests / test (ubuntu-latest, 24, shard 2/3) (push) Failing after 20s
Tests / test (ubuntu-latest, 24, shard 3/3) (push) Failing after 20s
Tests / test (ubuntu-latest, 24) (push) Failing after 19s
Tests / test (inert CI) (push) Has been skipped
Tests / QA loop walk (smell ratchet) (push) Failing after 19s
Tests / Coverage gate (merged shards) (push) Has been skipped
Tests / Publish emitted-baseline artifact (push) Has been skipped
Dismiss Unauthorized PR Approvals / dismiss-unauthorized-approval (push) Successful in 9s
Close Draft PRs (sweep) / Sweep open draft PRs (push) Successful in 8s
Tests / conformance test (macos-latest, 24) (push) Has been cancelled
Tests / conformance test (windows-latest, 24, shard 1/3) (push) Has been cancelled
Tests / conformance test (windows-latest, 24, shard 2/3) (push) Has been cancelled
Tests / conformance test (windows-latest, 24, shard 3/3) (push) Has been cancelled
Tests / Required tests (push) Has been cancelled
The fork lives on the golem15 Gitea forge, not GitHub. Package identity now parses either host and derives in-place raw URLs for Gitea; the identity-drift lint accepts the new host; README drops GitHub-only badges and the npm quickstart in favour of the checkout installer.
5.6 KiB
5.6 KiB
Triage Labels
Maps the five canonical triage roles to the actual label strings in golem15/msd-core.
| Canonical role | Label in this repo | Notes |
|---|---|---|
needs-triage |
needs-triage |
Auto-applied by GitHub Action on every new issue |
needs-info |
needs-reproduction |
Waiting on reporter — cannot reproduce, more info required |
ready-for-agent |
confirmed-bug |
Bug verified + fully specified — AFK agent can pick up. This is the fix gate (RULESET.CONTRIB.CLASSIFY.fix); bug-remediation workflows scope on it. |
ready-for-human |
approved-enhancement / approved-feature |
Enhancement/feature approved by maintainer — human codes it |
wontfix |
wontfix |
Will not be actioned |
possible-duplicate |
possible-duplicate |
Applied by the Duplicate check workflow when a new issue's title closely matches existing open issues. The reporter (or a maintainer) replies justifying why it is not a duplicate within 24h, or the Duplicate auto-close sweep closes it. A reply clears this label and applies needs-maintainer-review for human adjudication. React 👎 to the bot comment to veto auto-close. |
needs-version |
needs-version |
Applied by the Version gate workflow when a bug report is auto-closed for missing a valid MSD Version. Edit the issue to add the version and reopen it. |
version-exempt |
version-exempt |
Maintainer-only opt-out label. Prevents the Version gate from closing an issue where a version genuinely does not apply. |
Notes on this repo's label model
confirmed-bugis the AFK-agent-ready signal for bugs. It means "verified reproducible bug" and is the gate the fix workflow requires before any code is written. Apply it (in addition tobug) when triage reproduces/verifies a bug. The legacyconfirmedlabel ("bug verified to exist") is retained only for back-compat in the duplicate-sweep exempt list — useconfirmed-bugfor new triage.- For enhancements and features, maintainer approval is
approved-enhancement/approved-featurerespectively. A contributor (human or agent) may not write code until one of these is applied. - There is no separate "ready-for-human" vs "ready-for-agent" distinction for enhancements — both flow through the same
approved-*labels. If the work requires human judgment (design decisions, external access), note it in the issue body. needs-triageis removed when any other state label is applied.needs-reproductionis used instead of the genericneeds-info— be specific in triage comments about what reproduction steps or information are missing.
Duplicate detection lifecycle
The possible-duplicate label is managed by three GitHub Actions workflows that together form a self-service deduplication loop:
- Detect on open — When an issue is opened,
duplicate-check.ymlscores its title against all other open issues using Dice-coefficient similarity. If any match clears the threshold, the bot posts a challenge comment listing the similar issues and appliespossible-duplicate. - Challenge comment + reporter window — The reporter (or a maintainer) has
DEFAULT_WINDOW_HOURS(24h) to reply explaining why the issue is not a duplicate. Reacting 👎 to the bot comment also signals the reporter objects to auto-close. - Daily sweep auto-close —
duplicate-sweep.ymlruns at 07:00 UTC daily. For each open issue withpossible-duplicate, it checks whether the window has elapsed, whether the reporter replied, and whether a 👎 reaction exists. Issues with exempt labels (priority: critical,pinned,confirmed-bug,confirmed,fix-pending) are never auto-closed. Issues that pass the close check receive a closing comment and are closed withstate_reason: duplicate. - Reporter reply clears label —
remove-duplicate-label.ymlfires on every new non-bot comment. If the issue still carriespossible-duplicate, it removes that label and appliesneeds-maintainer-review(the value ofHUMAN_REVIEW_LABELinscripts/issue-dedupe.cjs), routing the issue to a maintainer for manual adjudication.
Version gate lifecycle
The needs-version label is managed by a single GitHub Actions workflow that runs immediately on issue open:
- Gate on open — When an issue is opened,
version-gate.ymlchecks whether it is a bug report (has thebuglabel, or its body contains a### MSD Versionheading from the bug template). Non-bug issues are skipped. - Version check — The gate extracts the value under the
### MSD Versionheading. A value is considered valid if it contains a semver-ish token (e.g.1.18.0,v1.4.1,1.18.0-dev) or a git commit SHA (7-40 hex chars). Missing, blank,_No response_, or junk values likeidkare treated as absent. - Auto-close — If the version is absent or invalid, the workflow posts a comment with instructions and closes the issue as
not_planned, then appliesneeds-version. - Reopen path — The reporter edits the issue to add a valid version and reopens it. Alternatively, a maintainer can add the
version-exemptlabel to any bug where a version does not apply (e.g. docs bugs, spec questions), which prevents the gate from closing it on future edits.
The gate logic lives in scripts/issue-version-gate.cjs (pure exports, no GitHub API dependency) and is covered by tests/issue-version-gate.test.cjs.