From 266e88105217024ed9e9a13fe9733635b49c6028 Mon Sep 17 00:00:00 2001 From: Javid Date: Thu, 6 Aug 2026 11:47:16 +0200 Subject: [PATCH 1/6] Add organization bug issue form --- ISSUE_TEMPLATE/bug.yml | 44 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 ISSUE_TEMPLATE/bug.yml diff --git a/ISSUE_TEMPLATE/bug.yml b/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..b5446b4 --- /dev/null +++ b/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,44 @@ +name: Bug report +description: Report a reproducible defect in this repository +title: "[Bug]: " +body: + - type: textarea + id: problem + attributes: + label: Problem + description: What happened, and what should have happened? + validations: + required: true + - type: textarea + id: reproduce + attributes: + label: Reproduction + description: Minimal steps, request, or test that reproduces the defect. + validations: + required: true + - type: input + id: version + attributes: + label: Version or commit + placeholder: Release, image digest, package version, or commit SHA + validations: + required: true + - type: textarea + id: tenant_security + attributes: + label: Tenant and security impact + description: State tenant/isolation/auth/privacy impact, or "None observed". + validations: + required: true + - type: input + id: parent + attributes: + label: Parent Product Epic or Feature + placeholder: https://github.com/CoreLinkPlatform/product-planning/issues/... + validations: + required: true + - type: textarea + id: evidence + attributes: + label: Evidence + description: Logs, failing tests, screenshots without secrets, or other retained evidence. From cbfda346032efe6cd1876d2ad2ac3a4b4cc1f569 Mon Sep 17 00:00:00 2001 From: Javid Date: Thu, 6 Aug 2026 11:47:18 +0200 Subject: [PATCH 2/6] Add organization Product Epic issue form --- ISSUE_TEMPLATE/product-epic.yml | 57 +++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 ISSUE_TEMPLATE/product-epic.yml diff --git a/ISSUE_TEMPLATE/product-epic.yml b/ISSUE_TEMPLATE/product-epic.yml new file mode 100644 index 0000000..2758100 --- /dev/null +++ b/ISSUE_TEMPLATE/product-epic.yml @@ -0,0 +1,57 @@ +name: Product Epic +description: Define a cross-repository product outcome (product-planning only) +title: "[EPIC] " +body: + - type: markdown + attributes: + value: "Product Epics are authoritative only in CoreLinkPlatform/product-planning. If this form is inherited in another repository, stop and create the Epic there instead." + - type: textarea + id: problem + attributes: + label: Problem statement + validations: + required: true + - type: textarea + id: values + attributes: + label: Business and technical value + validations: + required: true + - type: textarea + id: metrics + attributes: + label: Success metrics + validations: + required: true + - type: textarea + id: scope + attributes: + label: Scope / out of scope + validations: + required: true + - type: textarea + id: acceptance + attributes: + label: Acceptance and exit criteria + value: "- [ ] " + validations: + required: true + - type: textarea + id: repositories + attributes: + label: Repositories and child Features + description: Link executable Issues in their owning repositories. + validations: + required: true + - type: input + id: milestone + attributes: + label: Product milestone + validations: + required: true + - type: textarea + id: risks + attributes: + label: Dependencies, risks, security/license/privacy/release impact + validations: + required: true From 068fcb17c2de777812fa961a05c511e07d27d28c Mon Sep 17 00:00:00 2001 From: Javid Date: Thu, 6 Aug 2026 11:47:19 +0200 Subject: [PATCH 3/6] Add organization implementation issue form --- ISSUE_TEMPLATE/implementation.yml | 57 +++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 ISSUE_TEMPLATE/implementation.yml diff --git a/ISSUE_TEMPLATE/implementation.yml b/ISSUE_TEMPLATE/implementation.yml new file mode 100644 index 0000000..1e3f01f --- /dev/null +++ b/ISSUE_TEMPLATE/implementation.yml @@ -0,0 +1,57 @@ +name: Implementation work +description: Create a Story, Technical Task, Bug follow-up, or Chore in the owning repository +title: "[Task]: " +body: + - type: markdown + attributes: + value: "Implementation Issues stay in the repository that executes the work and link to exactly one primary Product Epic." + - type: dropdown + id: work_type + attributes: + label: Work type + options: + - Story + - Technical Task + - Chore + validations: + required: true + - type: input + id: parent_epic + attributes: + label: Primary Product Epic + placeholder: https://github.com/CoreLinkPlatform/product-planning/issues/... + validations: + required: true + - type: textarea + id: background + attributes: + label: Background and goal + validations: + required: true + - type: textarea + id: scope + attributes: + label: Scope / out of scope + validations: + required: true + - type: textarea + id: acceptance + attributes: + label: Acceptance criteria + value: "- [ ] " + validations: + required: true + - type: textarea + id: dependencies + attributes: + label: Dependencies + description: Blocking Issues/decisions and cross-repository links, or "None". + validations: + required: true + - type: textarea + id: evidence + attributes: + label: Validation and retained evidence + description: Tests, CI, runtime/deployment evidence expected before closure. + validations: + required: true From 9c41410bb6787ae28bdca4a23cc66c4d7ef86c86 Mon Sep 17 00:00:00 2001 From: Javid Date: Thu, 6 Aug 2026 11:47:20 +0200 Subject: [PATCH 4/6] Document issue-form ownership hierarchy --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index fb59615..6b5837b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ repositories. - `CODE_OF_CONDUCT.md`: community behavior policy. - `SECURITY.md`: vulnerability-reporting policy. - `GOVERNANCE.md`: project governance. -- `ISSUE_TEMPLATE/`: bug, feature and documentation issue forms. +- `ISSUE_TEMPLATE/`: organization-wide bug, feature, implementation, Product Epic and documentation forms. - `PULL_REQUEST_TEMPLATE.md`: pull-request checklist. - `profile/README.md`: organization profile shown on GitHub. @@ -21,6 +21,6 @@ local development, copy or sync the reviewed files to the organization's special `.github` repository before relying on GitHub to display or enforce them. -Platform changes must also follow the architecture rules in the `platform` +Product Epics are owned by `product-planning`; executable Features/Tasks stay in the repository that implements them and link to exactly one primary Product Epic. Repository-local templates may narrow these defaults but must preserve that hierarchy.\n\nPlatform changes must also follow the architecture rules in the `platform` repository, including tenant isolation, upstream-adapter boundaries, audit and documentation review. From 5001ddb4a8587f5ac30b2d67b73a1a54cb4f0eb8 Mon Sep 17 00:00:00 2001 From: Javid Date: Thu, 6 Aug 2026 11:47:21 +0200 Subject: [PATCH 5/6] Add organization feature issue form --- ISSUE_TEMPLATE/feature.yml | 60 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 ISSUE_TEMPLATE/feature.yml diff --git a/ISSUE_TEMPLATE/feature.yml b/ISSUE_TEMPLATE/feature.yml new file mode 100644 index 0000000..fc2dda3 --- /dev/null +++ b/ISSUE_TEMPLATE/feature.yml @@ -0,0 +1,60 @@ +name: Feature +description: Propose an executable feature owned by this repository +title: "[Feature]: " +body: + - type: markdown + attributes: + value: "A Feature has exactly one implementation repository and one primary Product Epic. Cross-repository outcomes belong in product-planning." + - type: input + id: parent_epic + attributes: + label: Primary Product Epic + placeholder: https://github.com/CoreLinkPlatform/product-planning/issues/... + validations: + required: true + - type: textarea + id: problem + attributes: + label: Problem and outcome + validations: + required: true + - type: textarea + id: scope + attributes: + label: Scope + validations: + required: true + - type: textarea + id: out_of_scope + attributes: + label: Out of scope + validations: + required: true + - type: textarea + id: acceptance + attributes: + label: Acceptance criteria + value: "- [ ] " + validations: + required: true + - type: textarea + id: dependencies + attributes: + label: Dependencies + description: Blocking Issues/decisions and cross-repository links, or "None". + validations: + required: true + - type: textarea + id: done + attributes: + label: Definition of done + value: | + - [ ] Tests / executable evidence + - [ ] Contract impact reviewed + - [ ] Security / tenant / privacy impact reviewed + - [ ] Migration / rollback reviewed where applicable + - [ ] Observability / runbook updated where applicable + - [ ] Documentation / release notes updated + - [ ] Linked PR merged + validations: + required: true From ab55e27d8dfc836006452585fdeb059d495688cb Mon Sep 17 00:00:00 2001 From: Javid Date: Thu, 6 Aug 2026 11:56:00 +0200 Subject: [PATCH 6/6] Validate organization Issue forms --- .github/workflows/community-health.yml | 31 ++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/community-health.yml diff --git a/.github/workflows/community-health.yml b/.github/workflows/community-health.yml new file mode 100644 index 0000000..6d07aa7 --- /dev/null +++ b/.github/workflows/community-health.yml @@ -0,0 +1,31 @@ +name: Community Health CI + +on: + pull_request: + push: + branches: [main] + +permissions: + contents: read + +jobs: + issue-forms: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Validate Issue form YAML + shell: ruby {0} + run: | + require "yaml" + paths = Dir["ISSUE_TEMPLATE/*.yml"].sort + abort "no issue forms found" if paths.empty? + paths.each do |path| + doc = YAML.safe_load(File.read(path), aliases: true) + abort "#{path}: root must be a mapping" unless doc.is_a?(Hash) + next if path.end_with?("config.yml") + %w[name description body].each do |key| + abort "#{path}: missing #{key}" unless doc[key] + end + abort "#{path}: body must be an array" unless doc["body"].is_a?(Array) + end + puts "validated #{paths.length} issue-form files"