From ac3744b12d09e353427ee9dd05d77d174af85b08 Mon Sep 17 00:00:00 2001 From: stephane-segning Date: Thu, 13 Aug 2026 15:19:02 +0200 Subject: [PATCH] chore: add the governance issue forms This repo had no issue templates, so anything filed here arrived with no title prefix, no label and no issue type - invisible to the roadmap board, which groups by exactly those. Seeds the org kit (Epic / User Story / Dev Ticket + config) and sets the native `type:` on each form so the taxonomy holds at creation time. Co-Authored-By: Claude Opus 5 (1M context) --- .github/ISSUE_TEMPLATE/config.yml | 11 ++ .github/ISSUE_TEMPLATE/dev-ticket.yml | 169 ++++++++++++++++++++++++++ .github/ISSUE_TEMPLATE/epic.yml | 153 +++++++++++++++++++++++ .github/ISSUE_TEMPLATE/user-story.yml | 150 +++++++++++++++++++++++ 4 files changed, 483 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/dev-ticket.yml create mode 100644 .github/ISSUE_TEMPLATE/epic.yml create mode 100644 .github/ISSUE_TEMPLATE/user-story.yml diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..b810e73 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,11 @@ +blank_issues_enabled: false +contact_links: + - name: AI Governance — source of truth + url: https://adorsys-gis.github.io/ai-governance/ + about: The canonical governance home. Read this before opening issues or PRs. + - name: AI Working Agreement + url: https://adorsys-gis.github.io/ai-governance/12-ai-working-agreement + about: Humans own intent, verification, and consequences. AI output is not truth. + - name: The Doctrine + url: https://adorsys-gis.github.io/ai-governance/13-doctrine + about: AI may accelerate the work, but it must not launder ignorance into polished artifacts. diff --git a/.github/ISSUE_TEMPLATE/dev-ticket.yml b/.github/ISSUE_TEMPLATE/dev-ticket.yml new file mode 100644 index 0000000..e003ea9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/dev-ticket.yml @@ -0,0 +1,169 @@ +name: Development Ticket +description: Implementation work, bugs, refactors, technical tasks, spikes, or operational work. +title: "[Ticket]: " +labels: ["ticket"] +type: Task +body: + - type: markdown + attributes: + value: | + Use this for **implementation work**, bugs, refactors, technical tasks, spikes, or operational work. + + If the developer cannot explain the intent, the ticket is not ready. + See the governance source of truth: https://adorsys-gis.github.io/ai-governance/ + + - type: dropdown + id: type + attributes: + label: Type + description: Select one. + options: + - Feature + - Bug + - Refactor + - Technical debt + - Spike / Investigation + - Security + - Performance + - Documentation + - Operational task + validations: + required: true + + - type: textarea + id: summary + attributes: + label: Summary + description: We need to [do what] because [why]. Describe the expected result in plain but precise language. + placeholder: | + We need to … because … + + Expected result: + > + validations: + required: true + + - type: textarea + id: intent + attributes: + label: Intent + description: The real intention of this ticket. If the developer cannot explain this intent, the ticket is not ready. + validations: + required: true + + - type: textarea + id: source-of-truth + attributes: + label: Source of truth (links) + description: Epic/story, product decision, bug report/incident, customer request, ADR, technical investigation, security requirement. Use full URLs or #123 references. + placeholder: | + Link the epic/story, product decision, incident, customer request, ADR, or security requirement. + No source of truth means this ticket must be challenged — no source of truth = not ready. + validations: + required: true + + - type: textarea + id: current-behavior + attributes: + label: Current Behavior + description: How the system behaves today, with evidence (logs, screenshots, error messages, metrics, user reports). + + - type: textarea + id: expected-behavior + attributes: + label: Expected Behavior + description: How the system should behave after this ticket is completed. + + - type: textarea + id: acceptance-criteria + attributes: + label: Acceptance Criteria + description: Testable Given/When/Then criteria, safe error handling, no regressions, tests added/updated, verification evidence provided. + placeholder: | + - [ ] Given …, when …, then … + - [ ] Error cases are handled safely. + - [ ] Existing behavior is not broken. + - [ ] Relevant tests are added or updated. + - [ ] Verification evidence is provided. + validations: + required: true + + - type: textarea + id: out-of-scope + attributes: + label: Out of Scope + description: What this ticket does not include. Do not silently implement out-of-scope work. + + - type: textarea + id: technical-context + attributes: + label: Technical Context + description: Relevant files, services, modules, or systems; important technical notes; known constraints. + + - type: textarea + id: risks + attributes: + label: Risks + description: Potential risks and their mitigations. + + - type: textarea + id: test-plan + attributes: + label: Test Plan + description: Required checks (unit/integration/e2e/manual/regression/security/performance), commands to run, and expected results. + + - type: textarea + id: verification-evidence + attributes: + label: Verification evidence + description: Test output, manual verification steps, screenshots/video, logs checked, metrics checked, known remaining limitations. + placeholder: | + Test output: … + Manual verification steps: … + Logs / metrics checked: … + validations: + required: true + + - type: input + id: human-owner + attributes: + label: Human accountable owner + description: The person who accepts responsibility for the final result. + placeholder: "@github-handle / Name" + validations: + required: true + + - type: dropdown + id: ai-usage + attributes: + label: AI Usage Declaration + description: Declare how AI was used — select all that apply, or "Not used". AI output is not truth. + multiple: true + options: + - Drafting the ticket + - Understanding code + - Proposing implementation + - Generating code + - Refactoring + - Generating tests + - Reviewing the diff + - Writing documentation + - Not used + validations: + required: true + + - type: checkboxes + id: human-verification + attributes: + label: Human verification completed + description: Tick what you completed. The final accountability box is required; the governance CI check on the PR is the substantive gate. + options: + - label: I understood the intent + - label: I checked the source of truth + - label: I reviewed all AI-generated text/code + - label: I verified the implementation manually + - label: I verified the tests + - label: I checked for hallucinated assumptions + - label: I documented remaining risks + - label: I am the accountable owner and accept responsibility for this ticket. + required: true diff --git a/.github/ISSUE_TEMPLATE/epic.yml b/.github/ISSUE_TEMPLATE/epic.yml new file mode 100644 index 0000000..aed4a05 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/epic.yml @@ -0,0 +1,153 @@ +name: Epic +description: A large initiative spanning multiple stories with a meaningful business or technical objective. +title: "[Epic]: " +labels: ["epic"] +type: Epic +body: + - type: markdown + attributes: + value: | + Use this when the work is **large**, spans multiple tickets, and represents a meaningful business or technical objective. + + An epic exists to solve a real problem — not merely to produce code, tickets, documentation, or AI-generated artifacts. + See the governance source of truth: https://adorsys-gis.github.io/ai-governance/ + + - type: textarea + id: executive-summary + attributes: + label: Executive Summary + description: We want to [outcome] because [business, user, operational, or technical reason]. This epic exists to solve [the real problem]. + placeholder: | + We want to … because … + This epic exists to solve … + validations: + required: true + + - type: textarea + id: strategic-intent + attributes: + label: Strategic Intent + description: The core intention in 1–3 sentences. A person must be able to explain this verbally without reading this document. + placeholder: The intent of this epic is … + validations: + required: true + + - type: textarea + id: problem-statement + attributes: + label: Problem Statement + description: Current pains/problems, and the impact on users, developers/operations, and business/security/compliance. + validations: + required: true + + - type: textarea + id: desired-outcome + attributes: + label: Desired Outcome + description: What is true when this epic is complete. Describe the observable improvement. + + - type: textarea + id: scope + attributes: + label: Scope (In / Out) + description: What is clearly included and what is explicitly excluded. Anything not listed must be clarified before implementation. + placeholder: | + ### In Scope + - + + ### Out of Scope + - + validations: + required: true + + - type: textarea + id: source-of-truth + attributes: + label: Source of truth (links) + description: Product decisions, stakeholder input, incidents, ADRs, designs, compliance requirements. Use full URLs or #123 references. + placeholder: | + Link the product decision, stakeholder request, incident, ADR, design, or compliance requirement. + If no source of truth exists, this epic is NOT ready — do not proceed. + validations: + required: true + + - type: textarea + id: stakeholders + attributes: + label: Stakeholders + description: Product Owner, Technical Lead, Delivery Owner, Security/Compliance, Engineering Team. + + - type: textarea + id: assumptions + attributes: + label: Key Assumptions + description: Each assumption must be validated, rejected, or converted into a risk before delivery. + + - type: textarea + id: constraints + attributes: + label: Constraints + description: Technical, security, compliance, timeline, dependency, and operational constraints. + + - type: textarea + id: risks + attributes: + label: Risks + description: Risk / Probability / Impact / Mitigation. + + - type: textarea + id: success-metrics + attributes: + label: Success metrics + description: How we will know this epic succeeded. Metric / current value / target value / measurement source. Measure outcomes, not activity. + placeholder: | + | Metric | Current | Target | Source | + | ------ | ------- | ------ | ------ | + validations: + required: true + + - type: textarea + id: child-stories + attributes: + label: Child User Stories + description: Each child story must have its own acceptance criteria and verification evidence. + + - type: input + id: human-owner + attributes: + label: Human accountable owner + description: The person who owns the final decision and accepts responsibility for this epic. + placeholder: "@github-handle / Name" + validations: + required: true + + - type: dropdown + id: ai-usage + attributes: + label: AI Usage Declaration + description: Declare how AI was used — select all that apply, or "Not used". AI output is not truth. + multiple: true + options: + - Drafting + - Summarization + - Research + - Ticket decomposition + - Technical proposal + - Not used + validations: + required: true + + - type: checkboxes + id: human-verification + attributes: + label: Human verification completed + description: Tick what you completed. The final accountability box is required; the governance CI check on the PR is the substantive gate. + options: + - label: Intent checked against source of truth + - label: Scope reviewed by Product Owner + - label: Technical feasibility reviewed by Technical Lead + - label: Risks reviewed + - label: Acceptance criteria reviewed + - label: No unverified AI claim remains + - label: I am the accountable owner and accept responsibility for this epic. + required: true diff --git a/.github/ISSUE_TEMPLATE/user-story.yml b/.github/ISSUE_TEMPLATE/user-story.yml new file mode 100644 index 0000000..5eee83a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/user-story.yml @@ -0,0 +1,150 @@ +name: User Story +description: A user need or a valuable capability, with testable acceptance criteria. +title: "[Story]: " +labels: ["user-story"] +type: Story +body: + - type: markdown + attributes: + value: | + Use this when the work describes **a user need** or **a valuable capability**. + + A story is not ready if its intent is only copied from an AI-generated summary. + See the governance source of truth: https://adorsys-gis.github.io/ai-governance/ + + - type: textarea + id: story-statement + attributes: + label: Story Statement + description: As a [user/actor], I want [capability/action], so that [benefit/outcome]. + placeholder: | + As a …, + I want …, + so that … + validations: + required: true + + - type: textarea + id: real-intent + attributes: + label: Real Intent + description: Explain why this story matters. Not ready if the intention is only copied from an AI-generated summary. + validations: + required: true + + - type: textarea + id: background + attributes: + label: Background and Context + description: Current behavior, limitation, and pain; and why we need to change it. + + - type: textarea + id: source-of-truth + attributes: + label: Source of truth (links) + description: Customer/user request, product decision, design, incident/bug report, data/metric, architecture decision. Use full URLs or #123 references. + placeholder: | + Link the customer request, product decision, design, incident, metric, or ADR. + If the source of truth is missing, the story must NOT enter sprint planning — no source of truth means not ready. + validations: + required: true + + - type: textarea + id: acceptance-criteria + attributes: + label: Acceptance Criteria + description: Functional (Given/When/Then), negative/edge cases, and non-functional criteria. Must be testable. + placeholder: | + ### Functional + - [ ] Given …, when …, then … + + ### Negative / Edge Cases + - [ ] Given …, when …, then … + + ### Non-Functional + - [ ] Performance / Security / Observability / Accessibility / Compatibility + validations: + required: true + + - type: textarea + id: out-of-scope + attributes: + label: Out of Scope + description: What this story does not include. If someone wants these, they must create a separate story. + + - type: textarea + id: dependencies + attributes: + label: Dependencies and Blockers + description: What this story depends on and what blocks it. + + - type: textarea + id: assumptions + attributes: + label: Assumptions + description: Before implementation, the developer must decide whether each assumption is acceptable or needs clarification. + + - type: textarea + id: implementation-notes + attributes: + label: Implementation Notes + description: Suggested approach — guidance, not unquestionable truth. The developer may challenge it for a safer, simpler, more maintainable option. + + - type: textarea + id: test-expectations + attributes: + label: Test Expectations + description: Unit / integration / e2e / manual / regression / security / performance, plus required test cases. + + - type: textarea + id: verification-evidence + attributes: + label: Verification evidence + description: Test results (link/command/screenshot), manual verification notes, logs/metrics checked, recordings, reviewer focus. No verification evidence means the story is not done. + placeholder: | + Test results: … + Manual verification notes: … + Logs / metrics checked: … + validations: + required: true + + - type: input + id: human-owner + attributes: + label: Human accountable owner + description: The person who owns the final decision and accepts responsibility for this story. + placeholder: "@github-handle / Name" + validations: + required: true + + - type: dropdown + id: ai-usage + attributes: + label: AI Usage Declaration + description: Declare how AI was used — select all that apply, or "Not used". AI output is not truth. + multiple: true + options: + - Drafting this story + - Refining acceptance criteria + - Suggesting implementation + - Generating code + - Generating tests + - Reviewing code + - Not used + validations: + required: true + + - type: checkboxes + id: human-verification + attributes: + label: Human verification completed + description: Tick what you completed. The final accountability box is required; the governance CI check on the PR is the substantive gate. + options: + - label: I checked the story against the source of truth + - label: I confirmed the acceptance criteria + - label: I reviewed the implementation approach + - label: I verified generated code manually + - label: I verified generated tests manually + - label: I removed or corrected unsupported AI claims + - label: I am the accountable owner and accept responsibility for this story. + required: true