Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions .github/workflows/community-health.yml
Original file line number Diff line number Diff line change
@@ -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"
44 changes: 44 additions & 0 deletions ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -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.
60 changes: 60 additions & 0 deletions ISSUE_TEMPLATE/feature.yml
Original file line number Diff line number Diff line change
@@ -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
57 changes: 57 additions & 0 deletions ISSUE_TEMPLATE/implementation.yml
Original file line number Diff line number Diff line change
@@ -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
57 changes: 57 additions & 0 deletions ISSUE_TEMPLATE/product-epic.yml
Original file line number Diff line number Diff line change
@@ -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
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.

Expand All @@ -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.
Loading