From 20ca8b571392bae5b9ddb55b0bd54f0d2c21784d Mon Sep 17 00:00:00 2001 From: Conal <33135619+Conalh@users.noreply.github.com> Date: Thu, 21 May 2026 16:22:57 -0700 Subject: [PATCH] Tighten feedback evidence templates --- .github/ISSUE_TEMPLATE/false-positive.yml | 20 ++++++++++++++-- .github/ISSUE_TEMPLATE/missing-signal.yml | 29 ++++++++++++++++++++--- docs/TEAM_VALIDATION_PLAYBOOK.md | 5 ++++ test/issue-template.test.mjs | 23 ++++++++++++++++++ 4 files changed, 72 insertions(+), 5 deletions(-) create mode 100644 test/issue-template.test.mjs diff --git a/.github/ISSUE_TEMPLATE/false-positive.yml b/.github/ISSUE_TEMPLATE/false-positive.yml index cbc4f9a..37ff572 100644 --- a/.github/ISSUE_TEMPLATE/false-positive.yml +++ b/.github/ISSUE_TEMPLATE/false-positive.yml @@ -3,6 +3,22 @@ description: Report a TaskBound finding that should be quieter or more precise. title: "[false positive]: " labels: ["detector", "false-positive"] body: + - type: input + id: evidence-link + attributes: + label: Evidence link + description: Link the PR, Action run, TaskBound report, or a redacted note that shows the finding. + placeholder: https://github.com/org/repo/pull/123 + validations: + required: true + - type: input + id: team-context + attributes: + label: Team or repository context + description: Share the repo type, language, or team workflow if public; use a redacted summary if needed. + placeholder: TypeScript app with AI-agent PRs, redacted private repo, etc. + validations: + required: true - type: textarea id: finding attributes: @@ -18,9 +34,9 @@ body: validations: required: true - type: textarea - id: expected + id: expected-routing attributes: label: Expected behavior - description: Explain whether TaskBound should ignore it, lower severity, or infer scope differently. + description: Explain whether TaskBound should ignore it, lower severity, infer scope differently, or support repo-specific policy. validations: required: true diff --git a/.github/ISSUE_TEMPLATE/missing-signal.yml b/.github/ISSUE_TEMPLATE/missing-signal.yml index a8f6288..e9cb778 100644 --- a/.github/ISSUE_TEMPLATE/missing-signal.yml +++ b/.github/ISSUE_TEMPLATE/missing-signal.yml @@ -3,6 +3,22 @@ description: Ask TaskBound to infer scope or detect another post-session drift p title: "[signal]: " labels: ["detector", "new-signal"] body: + - type: input + id: evidence-link + attributes: + label: Evidence link + description: Link the PR, Action run, diff, or a redacted note that shows the missing signal. + placeholder: https://github.com/org/repo/pull/123 + validations: + required: true + - type: input + id: team-context + attributes: + label: Team or repository context + description: Share the repo type, language, or team workflow if public; use a redacted summary if needed. + placeholder: Python monorepo with AI-agent PRs, redacted private repo, etc. + validations: + required: true - type: input id: signal attributes: @@ -11,9 +27,16 @@ body: validations: required: true - type: textarea - id: examples + id: expected-finding + attributes: + label: Expected finding + description: Describe the stated task, the out-of-scope edits, and the finding TaskBound should have produced. + validations: + required: true + - type: textarea + id: team-impact attributes: - label: Task and drift examples - description: Describe the stated task and the out-of-scope edits that should produce findings. + label: Team impact + description: Explain whether this is a one-off detector request or a repeated team workflow need. validations: required: true diff --git a/docs/TEAM_VALIDATION_PLAYBOOK.md b/docs/TEAM_VALIDATION_PLAYBOOK.md index fc027be..5639d81 100644 --- a/docs/TEAM_VALIDATION_PLAYBOOK.md +++ b/docs/TEAM_VALIDATION_PLAYBOOK.md @@ -72,6 +72,11 @@ For each team, collect feedback tied to a real PR or install attempt: Open a public issue when the team can share details. Use a redacted note in issue #8 when the team cannot share repository details publicly. +False-positive and missing-signal reports should include a PR, Action run, +TaskBound report, or redacted evidence note plus team or repository context. Do +not count reports toward issue #8 when they cannot be tied to real usage or a +real install attempt. + ## Evidence Protocol Only count external evidence in issue #8. diff --git a/test/issue-template.test.mjs b/test/issue-template.test.mjs new file mode 100644 index 0000000..d15b254 --- /dev/null +++ b/test/issue-template.test.mjs @@ -0,0 +1,23 @@ +import assert from 'node:assert/strict'; +import fs from 'node:fs'; +import test from 'node:test'; + +function readTemplate(name) { + return fs.readFileSync(`.github/ISSUE_TEMPLATE/${name}`, 'utf8'); +} + +test('feedback issue templates collect evidence needed for validation tracking', () => { + const falsePositive = readTemplate('false-positive.yml'); + const missingSignal = readTemplate('missing-signal.yml'); + + for (const template of [falsePositive, missingSignal]) { + assert.match(template, /id: evidence-link/); + assert.match(template, /id: team-context/); + } + + assert.match(falsePositive, /id: finding/); + assert.match(falsePositive, /id: expected-routing/); + + assert.match(missingSignal, /id: signal/); + assert.match(missingSignal, /id: expected-finding/); +});