diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 000000000..d01082d22 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,56 @@ +# SPDX-License-Identifier: MPL-2.0 +name: Bug / defect +description: A reproducible defect in THIS repository (a spec, script, reusable workflow, seed, config, or tool). Estate-wide defects belong in the estate register, not here — see docs/ISSUE-INTAKE-SPEC.adoc. +title: ": " +labels: [bug] +body: + - type: dropdown + id: scope + attributes: + label: Scope + description: "Where the actionable fix lives. Rules: scope:repo = fix touches a file in this repo; scope:estate = fix lives in other repos/org settings (then justify why it is filed here — usually this repo is the fix source)." + options: + - scope:repo (fix is in this repository) + - scope:estate (fix is estate-wide; this repo is the source) + validations: + required: true + - type: textarea + id: evidence + attributes: + label: Evidence + description: "The command, its actual output, and the expected result. An issue without evidence is untriageable and will be closed." + placeholder: | + $ + + Expected: + validations: + required: true + - type: textarea + id: affected + attributes: + label: Affected + description: "File(s) and line(s) in this repository, and — if this repo is the propagation source — the estate population affected (count + how it was measured)." + validations: + required: true + - type: textarea + id: acceptance + attributes: + label: Acceptance criteria + placeholder: "- [ ] " + value: "- [ ] " + validations: + required: true + - type: input + id: wave + attributes: + label: Wave / umbrella (if part of a batch) + description: "Issue number of the meta:campaign umbrella this finding belongs to. Blank only if this is a standalone finding." + validations: + required: false + - type: input + id: dedup + attributes: + label: Related issues checked + description: "Issue numbers you searched before filing (deduplication obligation, Intake Spec Rule 2). 'searched: ' is acceptable." + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/campaign.yml b/.github/ISSUE_TEMPLATE/campaign.yml new file mode 100644 index 000000000..97822be6a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/campaign.yml @@ -0,0 +1,36 @@ +# SPDX-License-Identifier: MPL-2.0 +name: Campaign / wave umbrella +description: A multi-step or multi-repo effort. Per the Intake Spec (docs/ISSUE-INTAKE-SPEC.adoc), a wave of more than five findings MUST have exactly one umbrella like this, opened before the findings. +title: "[campaign] (UMBRELLA)" +labels: [meta:campaign] +body: + - type: textarea + id: source + attributes: + label: Source of findings + description: "The audit/checkpoint documents this wave came from, by name and location. If an agent produced them, name the session. Duplicated or conflicting source documents must be reconciled here before findings are filed (Intake Spec Rule 8)." + validations: + required: true + - type: textarea + id: scope + attributes: + label: Scope and boundaries + description: "What is in the wave, what is explicitly out, and which repos/estates it touches. Estate-wide steps belong in the estate register; list them by pointer." + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps / acceptance criteria + placeholder: | + - [ ] Step 1 — (issue: #) + - [ ] Step 2 — (issue: #) + validations: + required: true + - type: textarea + id: stopconditions + attributes: + label: Stop / park conditions + description: "What would park this wave (owner ruling, cost, dependency) so it is parked deliberately rather than decaying silently." + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..341917463 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: MPL-2.0 +# Blank issues are disabled deliberately. +# Intake Spec (docs/ISSUE-INTAKE-SPEC.adoc) Rule 4: an issue that fits none of +# the templates (bug / decision / campaign) does not fit this repository. +# The blank form is how the 2026-09-22 unstructured bulk-filing shape becomes +# possible again; it is not an acceptable intake path. +blank_issues_enabled: false diff --git a/.github/ISSUE_TEMPLATE/decision.yml b/.github/ISSUE_TEMPLATE/decision.yml new file mode 100644 index 000000000..4ba07154e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/decision.yml @@ -0,0 +1,44 @@ +# SPDX-License-Identifier: MPL-2.0 +name: Decision / owner ruling +description: A point where work is blocked on an owner decision. The answer should be batchable — one reply resolves it. +title: "[decision] " +labels: [decision, status:needs-ruling] +body: + - type: textarea + id: question + attributes: + label: The question + description: "One question, answerable in one sentence." + validations: + required: true + - type: textarea + id: options + attributes: + label: Options + description: "Each option, with its cost and what it blocks." + placeholder: | + A)