Canonical source for LightSpeed GitHub project operations across issue and PR metadata, branching conventions, and GitHub Projects usage.
Keep contributor docs lean and current by describing operational rules while treating live config and workflows as the source of automation truth.
.github/labels.yml(canonical labels).github/labeler.yml(branch/file-to-label mappings).github/issue-types.yml(issue-type mappings).github/issue-fields.yml(project field mappings and defaults).github/workflows/labeling.yml(label automation).github/workflows/metadata-governance.yml(assignee, milestone, and relationship metadata).github/workflows/project-meta-sync.yml(project field sync)
Use one unified template with two profile presets:
client_deliveryproduct_delivery
Both profiles share one field model and one automation contract. Profile differences should stay in view presets, milestones, and cadence naming only.
- Fields:
Status,Priority,Type,Start date,Target date,Parent issue,Sub-issue progress, plus approved custom issue fields from.github/issue-fields.yml. - One issue type per issue.
- Labels are routing and automation signals; fields are project operating state.
client_delivery: UAT and go-live naming emphasis (for example milestone naming and views).product_delivery: release train emphasis (for examplevX.Y.Zmilestone views).
feat/, fix/, hotfix/, release/, refactor/, chore/, docs/, test/, perf/, ci/, build/, deps/, security/, revert/, research/, design/, a11y/, ux/, i18n/, ops/
- Product-oriented optional:
proto/,ds/,api/,schema/,telemetry/ - Client-oriented optional:
content/,seo/,config/,migrate/,qa/,uat/
Rule: branch guidance must remain aligned to actual prefix handling in .github/labeler.yml.
For issues and PRs, enforce one-hot families:
- exactly one
status:* - exactly one
priority:* - exactly one
type:*
Use at least one scope label where relevant (area:* or comp:*).
meta:needs-changelog: default for user-facing work.meta:no-changelog: internal-only changes with no user-facing impact.- Never apply both on the same item.
Template labels must remain canonical and pass:
node scripts/agents/includes/check-template-labels.js
project-meta-sync.yml currently synchronises project fields through canonical derivation for:
StatusPriorityTypeEffortStart dateandTarget dateonly whenstatus:readyorstatus:in-progressis present
Derivation source notes:
Status,Priority, andTypeare mapped from labels via.github/issue-fields.ymlmappings.Effortuses the configured default from canonical issue-fields configuration.Start dateandTarget datestay empty at creation time and are only populated after kickoff-ready metadata is present (status:readyorstatus:in-progress).- Metadata governance for assignees, milestones, and relationships is handled separately by
.github/workflows/metadata-governance.yml.
Current preflight conditions must be satisfied before sync runs:
LS_PROJECT_URLLS_APP_IDLS_APP_PRIVATE_KEY
Safe automation boundary:
- Active write path is limited to the five core derived fields plus kickoff-aware date handling.
- Additional direct issue-field writes are out of scope until a dedicated follow-up verification approves extension.
Verification reference: .github/reports/audits/2026-06-07-private-project-issue-field-write-verification-879.md.
npx markdownlint-cli2 "**/*.md"
git diff --check
node scripts/agents/includes/check-template-labels.js
node scripts/validation/validate-labeling-configs.cjs
node scripts/validation/validate-issue-fields.cjs
npm run validate:workflowsGitHub-Branching-Strategy.md-> Branching ContractGitHub-Label-Automation-Strategy.md-> Metadata Contract + Canonical Automation SourcesGitHub-Project-Field-Defaults.md-> Unified Template Model + Project Meta Sync ContractGitHub-Project-Views.md-> Profile Deltas and local project view presetsProjects-Client-Delivery-Project-Template*.md-> Unified Template Model +client_deliveryprofileProjects-Product-Delivery-Project-Template*.md-> Unified Template Model +product_deliveryprofile
Retained:
- branch-to-label automation
- label-first metadata discipline
- project field synchronisation from canonical mappings
Deprecated:
- maintaining separate long-form client and product template document suites
- duplicate strategy docs that restate YAML workflow logic instead of referencing canonical sources