mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 02:25:56 +00:00
Ship the issue triage contract
Change-source: pulse-maintainer
This commit is contained in:
@@ -29,8 +29,11 @@ released builds still go through Pulse's release qualification process.
|
||||
and the evidence used to qualify a release.
|
||||
- **Issue triage and support.** Automated issue and discussion replies post
|
||||
under the dedicated `pulse-triage` bot identity and link back to this page.
|
||||
Automated issue state changes use that identity as well. Automated support
|
||||
replies are sent as Pulse Triage and link here as well.
|
||||
Automated issue state changes use that identity as well. Mixed reports follow
|
||||
the [topic-integrity triage contract](ISSUE_TRIAGE.md): automation can surface
|
||||
declared secondary topics, but a maintainer or triage agent must give every
|
||||
actionable topic a linked disposition. Automated support replies are sent as
|
||||
Pulse Triage and link here as well.
|
||||
- **Change provenance.** Commits made by the continuously running maintainer
|
||||
carry a dedicated bot author and committer identity. Issue-driven changes
|
||||
link back to the originating report where applicable.
|
||||
|
||||
@@ -41,7 +41,10 @@ and installer tooling.
|
||||
- State the Pulse version and image or package you are actually running.
|
||||
- Include screenshots, logs, API output, or diagnostics when they clarify the
|
||||
problem.
|
||||
- Separate bug reports from feature requests; avoid mixing both into one issue.
|
||||
- Lead with one primary bug or operator outcome. If the context also exposes
|
||||
another actionable topic, put it in the issue form's dedicated field. Triage
|
||||
will preserve it with a linked disposition; you do not need to refile text
|
||||
you already supplied. See [Issue Triage and Topic Integrity](docs/ISSUE_TRIAGE.md).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -0,0 +1,55 @@
|
||||
# Issue Triage and Topic Integrity
|
||||
|
||||
Pulse issue triage must preserve every actionable topic a reporter contributes.
|
||||
Resolving the primary defect does not dispose of secondary bugs, feature requests,
|
||||
documentation gaps, or operator workflows described in the same report.
|
||||
|
||||
## Intake contract
|
||||
|
||||
Issue forms ask for one primary outcome and provide an **Additional actionable
|
||||
topics** field. Entering anything other than `None` applies the
|
||||
`needs-decomposition` label automatically. This is a queue-integrity signal,
|
||||
not a statement that every topic will be built.
|
||||
|
||||
Reporters may still write free-form issues, edit form output, or discover a
|
||||
second topic during discussion. Triage owns decomposition in those cases; it
|
||||
must not require the reporter to refile information they already supplied.
|
||||
|
||||
## Required disposition
|
||||
|
||||
Before removing `needs-decomposition` or declaring a mixed report triaged:
|
||||
|
||||
1. Enumerate each independently actionable topic in the issue body and comments.
|
||||
2. Keep the original issue focused on its primary reproducible problem.
|
||||
3. Give every other topic one linked disposition:
|
||||
- a new or existing issue for a distinct defect or independently actionable
|
||||
product request;
|
||||
- a demand-ledger entry for evidence that is useful but not yet build-ready;
|
||||
- a Discussion or support path when there is no reproducible defect or
|
||||
product decision to track;
|
||||
- an explicit decline, with the reason, when the topic conflicts with Pulse's
|
||||
product or safety boundaries.
|
||||
4. Use GitHub sub-issue relationships when separate issues share the same source
|
||||
report and the authenticated mutation path supports them. A plain backlink
|
||||
remains in each child body so the evidence survives clients that do not
|
||||
render sub-issues and remains the fallback for bounded bot identities.
|
||||
5. Post a concise topic-to-disposition summary on the source issue. Never say a
|
||||
topic is “recorded” without naming where it is recoverable.
|
||||
|
||||
Decomposition does not multiply demand. Every child points to the same reporter
|
||||
and source thread, and the demand ledger counts that as one signal per capability.
|
||||
Do not copy credentials, private diagnostics, or personal data into a child
|
||||
issue; summarize only the minimum sanitized evidence needed to preserve the
|
||||
operator problem.
|
||||
|
||||
## Automation boundary
|
||||
|
||||
The label synchronizer detects the structured form field deterministically and
|
||||
fails quietly for legacy forms. It does not use keyword heuristics to invent
|
||||
topics or create issues automatically. A maintainer or triage agent reviews the
|
||||
source context, chooses the correct destination, creates links, and is
|
||||
accountable for the disposition.
|
||||
|
||||
This boundary is deliberate: preserving an explicit reporter declaration is
|
||||
safe to automate, while deciding whether two observations are one root cause is
|
||||
a product and technical judgment.
|
||||
Reference in New Issue
Block a user