| title | Label Color Strategy Specification | ||||||
|---|---|---|---|---|---|---|---|
| description | Comprehensive color strategy for the 150 canonical labels based on semantic meaning and workflow state | ||||||
| file_type | documentation | ||||||
| version | v1.1.2 | ||||||
| created_date | 2026-05-31 | ||||||
| last_updated | 2026-06-19 | ||||||
| authors |
|
||||||
| maintainer | LightSpeed Team | ||||||
| owners |
|
||||||
| license | GPL-3.0 | ||||||
| tags |
|
||||||
| domain | governance | ||||||
| stability | stable |
Version: v1.1.2 Created: 2026-05-31 Updated: 2026-06-19 Owner: LightSpeed Team Status: Active
This document defines a comprehensive color strategy for the 150 canonical labels in the LightSpeed .github repository. The strategy organises labels into semantic families with consistent color assignments, improving visual navigation, workflow clarity, and maintainability of the label taxonomy.
Key Improvements:
- Reduces color fragmentation (31 unique colors → 8 primary families)
- Establishes clear semantic associations between color and label purpose
- Provides explicit assignment rules for new labels
- Ensures full WCAG 2.2 AA accessibility compliance (≥ 4.5:1 contrast ratio)
- Creates a maintainable, scalable foundation for label expansion
| Family | Hex Codes | Semantic Meaning | Label Categories | Count |
|---|---|---|---|---|
| Green (Ready/Done) | #1A7F37, #2A7A3B, #ABEBC6 |
Positive completion, resolution, readiness | status:done, status:ready, type:enhancement (✓merged), design:approved | 18 |
| Blue (Planning/Review) | #0969DA, #3467D3, #C5DEF5 |
Discussion, collaboration, needs input | type:documentation, type:discussion, status:needs-review, area:ci, lang:* | 53 |
| Yellow (Testing/Audit) | #D29922, #F2D06D, #FCE2B7 |
Validation, testing, audit workflows | status:needs-testing, type:bug (when testing), type:audit | 24 |
| Red (Blocked/Impediment) | #CF222E, #B91C1C, #FCE2E2 |
Blockers, duplicates, critical issues | status:blocked, status:duplicate, priority:critical, type:security | 18 |
| Orange (On-Hold/Deferred) | #9A6700, #D5A87B, #FDBF7C |
Delayed, deferred, rejected, wontfix | status:wontfix, status:on-hold, type:epic (when deferred), priority:minor | 16 |
| Purple (Design Workflows) | #8957E5, #B4A7E8, #D89AF6 |
Design, UX, accessibility | type:design, type:ui, type:a11y, design:* | 14 |
| Gray (Meta/Infrastructure) | #57606A, #B1BAC4, #D0D7DE |
Process, meta, automation, infrastructure | meta:, type:chore, domain: | 11 |
| Teal (Integration/External) | #007580, #0D7F6F, #9FE1E3 |
External systems, integrations, dependencies | area:integration, area:external, type:dependency, platform:* | 16 |
Total Coverage: 150 labels across 8 families
Purpose: Signal positive completion, readiness for next phase, or approved state
Hex Codes (in order of preference):
#1A7F37— Primary (dark green, WCAG AA compliant — 5.3:1 against white)#2A7A3B— Secondary (deep forest green for standard labels)#ABEBC6— Tertiary (light mint — GitHub label background only, use with black text)
Assignment Rules:
- All
status:done*labels →#1A7F37 - All
status:ready*labels →#1A7F37 - Approved/accepted labels (design:approved, reviewed:accepted) →
#1A7F37 - Enhancement/feature labels when merged →
#2A7A3B
Label Examples:
- status:done (merged)
- status:ready-for-review
- status:ready-for-merge
- design:approved
- reviewed:approved
Accessibility: Primary and secondary meet WCAG AA (≥ 4.5:1) against white. Tertiary (#ABEBC6) is a GitHub label background colour — use black text only; do not use as a foreground text colour on white.
Purpose: Indicate discussion, planning, code review, or work awaiting input
Hex Codes (in order of preference):
#0969DA— Primary (strong, readable blue — 5.1:1 against white)#3467D3— Secondary (slightly lighter, softer tone — 5.3:1 against white)#C5DEF5— Tertiary (very light blue — GitHub label background only, use with black text)
Assignment Rules:
- All
status:needs-*labels →#0969DA - All
type:documentationlabels →#3467D3 - All
type:discussionlabels →#3467D3 - All
lang:*(language) labels →#C5DEF5 - All
area:cilabels →#C5DEF5(Blue tertiary — CI is a planning/infrastructure workflow) - Code review related (needs-review, awaiting-feedback) →
#0969DA - Discussion/question labels →
#3467D3
Label Examples:
- status:needs-review
- status:needs-feedback
- type:discussion
- type:documentation
- area:ci
- lang:php
- lang:javascript
Accessibility: Primary and secondary meet WCAG AA against white. Tertiary (#C5DEF5) is a GitHub label background colour — use black text only.
Purpose: Signal validation workflows, testing phases, and audit activities
Hex Codes (in order of preference):
#D29922— Primary (gold — GitHub label background only; black text gives 8.3:1 ✓)#F2D06D— Secondary (light yellow — GitHub label background only, use with black text)#FCE2B7— Tertiary (pale amber — GitHub label background only, use with black text)
Assignment Rules:
- All
status:testing*labels →#D29922 - All
type:audit*labels →#D29922 - Performance/testing related →
#F2D06D - QA/validation labels →
#FCE2B7
Label Examples:
- status:testing
- type:audit
- type:performance
- priority:normal (when used for testing triage)
Accessibility: All yellow family colours are GitHub label backgrounds — auto-selected black text provides ≥ 8:1 contrast. Do not use these colours as foreground text on white backgrounds.
Purpose: Highlight blockers, duplicates, critical bugs, and impediments to progress
Hex Codes (in order of preference):
#CF222E— Primary (dark danger red — 5.3:1 against white)#B91C1C— Secondary (deep crimson — 6.4:1 against white)#FCE2E2— Tertiary (very light red — GitHub label background only, use with black text)
Assignment Rules:
- All
status:blocked*labels →#CF222E - All
status:duplicatelabels →#CF222E - All
priority:criticallabels →#CF222E - All
type:security*labels →#CF222E - Bug labels with critical impact →
#B91C1C
Label Examples:
- status:blocked
- status:duplicate
- priority:critical
- type:security
- type:bug (critical variants)
Accessibility: Primary and secondary meet WCAG AA against white. Tertiary is GitHub label background only.
Purpose: Indicate deferred decisions, rejected features, or items on hold
Hex Codes (in order of preference):
#9A6700— Primary (dark amber — 5.0:1 against white)#D5A87B— Secondary (muted amber — GitHub label background only, use with black text)#FDBF7C— Tertiary (light orange — GitHub label background only, use with black text)
Assignment Rules:
- All
status:wontfixlabels →#9A6700 - All
status:on-hold*labels →#9A6700 - Deferred/postponed items →
#FDBF7C - Epic/larger-scope labels when on hold →
#D5A87B
Label Examples:
- status:wontfix
- status:on-hold
- status:postponed
Accessibility: Primary (#9A6700) meets WCAG AA against white. Secondary and tertiary are GitHub label backgrounds with black text only.
Purpose: Identify design, UX, accessibility, and user-experience-focused work
Hex Codes (in order of preference):
#8957E5— Primary (vibrant purple — 4.6:1 against white)#B4A7E8— Secondary (lighter purple — GitHub label background only, use with black text)#D89AF6— Tertiary (soft purple — GitHub label background only, use with black text)
Assignment Rules:
- All
type:design*labels →#8957E5 - All
type:uilabels →#8957E5 - All
type:accessibility*labels →#8957E5 - All
design:*state labels →#B4A7E8 - UX-related, user feedback →
#D89AF6
Label Examples:
- type:design
- type:ui
- type:accessibility
- design:approved
- design:pending-review
Accessibility: Primary meets WCAG AA against white. Secondary and tertiary are GitHub label backgrounds with auto-selected black text.
Purpose: Mark infrastructure, meta-workflow, automation, and process-related items
Hex Codes (in order of preference):
#57606A— Primary (dark gray — 6.4:1 against white)#B1BAC4— Secondary (medium gray — GitHub label background only, use with black text)#D0D7DE— Tertiary (light gray — GitHub label background only, use with black text)
Assignment Rules:
- All
meta:*labels →#57606A - All
area:cilabels →#C5DEF5(Blue tertiary — CI is in the Blue family) - All
type:chorelabels →#57606A - Domain/organisation labels →
#B1BAC4 - Infrastructure/automation supporting labels →
#D0D7DE
Label Examples:
- meta:needs-changelog
- meta:stale
- type:chore
- area:maintenance
Accessibility: Primary meets WCAG AAA against white. Secondary and tertiary are GitHub label backgrounds with black text.
Purpose: Indicate external dependencies, integrations, and platform-specific work
Hex Codes (in order of preference):
#007580— Primary (deep teal — 5.6:1 against white)#0D7F6F— Secondary (forest teal — 4.9:1 against white)#9FE1E3— Tertiary (light teal — GitHub label background only, use with black text)
Assignment Rules:
- All
area:integration*labels →#007580 - All
area:external*labels →#007580 - All
type:dependency*labels →#007580 - Platform/vendor-specific labels →
#0D7F6F - External system coordination →
#9FE1E3
Label Examples:
- area:integration
- area:external
- type:dependency
- platform:github
- platform:github-actions
Accessibility: Primary and secondary meet WCAG AA against white. Tertiary is GitHub label background only.
Some labels span multiple categories. Use these rules when a label fits multiple families:
| Scenario | Resolution | Example |
|---|---|---|
| Bug found during testing | Use Yellow (testing context takes precedence) | type:bug + status:testing → Yellow |
| Documentation needs review | Use Blue (review/discussion takes precedence) | type:documentation + status:needs-review → Blue |
| Security vulnerability | Use Red (urgency/severity takes precedence) | type:security + type:bug → Red |
| Accessibility issue | Use Purple (type takes precedence over urgency) | type:a11y + priority:critical → Purple |
When creating new labels, follow this hierarchy:
- Determine primary purpose (type, status, area, etc.)
- Map to appropriate family using Table 1 (Section 1.1)
- Choose hex code based on emphasis level:
- Primary color (first in family) — for high-visibility labels (WCAG AA compliant)
- Secondary color (second) — for standard labels
- Tertiary color (third) — GitHub label backgrounds only (do not use as text on white)
- Verify contrast against light and dark backgrounds
- Document the rationale in label frontmatter
- ✅ This specification document (v1.1.0)
- ✅ WCAG 2.2 AA accessibility audit and color remediation
- ✅ Provides explicit color assignment rules
- ✅ Establishes semantic color families
- ✅ Reassign all 150 labels to new color families
- ✅ Replace WCAG AA non-compliant colors
- Add comments documenting family assignment
- Update LABELING.md with visual reference
- Create label colour palette reference
- Document best practices for label selection
All primary and secondary colors in this strategy meet WCAG 2.2 AA requirements (minimum 4.5:1 ratio) against white backgrounds. Tertiary colours are designated GitHub label backgrounds only and rely on GitHub's auto-selected black text for accessibility.
| Color | Hex | Contrast Ratio | WCAG Level | Status |
|---|---|---|---|---|
#1A7F37 (Green primary) |
#1A7F37 | 5.3:1 | ✅ AA | ✅ Compliant |
#0969DA (Blue primary) |
#0969DA | 5.1:1 | ✅ AA | ✅ Compliant |
#D29922 (Yellow primary) |
#D29922 | Label bg only* | ✅ Label use | ✅ Black text 8.3:1 |
#CF222E (Red primary) |
#CF222E | 5.3:1 | ✅ AA | ✅ Compliant |
#9A6700 (Orange primary) |
#9A6700 | 5.0:1 | ✅ AA | ✅ Compliant |
#8957E5 (Purple primary) |
#8957E5 | 4.6:1 | ✅ AA | ✅ Compliant |
#57606A (Gray primary) |
#57606A | 6.4:1 | ✅ AAA | ✅ Compliant |
#007580 (Teal primary) |
#007580 | 5.6:1 | ✅ AA | ✅ Compliant |
*Yellow primary is used exclusively as a GitHub label background colour. GitHub auto-selects black text (8.3:1 contrast ✓). Do not use #D29922 as foreground text on white.
Secondary colors (dark variants):
#2A7A3B(Green) 4.75:1 ✓,#3467D3(Blue) 5.3:1 ✓,#B91C1C(Red) 6.4:1 ✓,#0D7F6F(Teal) 4.9:1 ✓
Tertiary colors (light pastels) — GitHub label backgrounds only:
- Use exclusively as label chip backgrounds; GitHub auto-selects black text for all light colours
- Do NOT use as foreground text colours on white backgrounds
- Examples:
#ABEBC6,#C5DEF5,#FCE2B7,#FCE2E2,#FDBF7C,#D89AF6,#D0D7DE,#9FE1E3
Green Family (Ready/Done):
████ #1A7F37 ████ #2A7A3B ████ #ABEBC6
Blue Family (Planning/Review):
████ #0969DA ████ #3467D3 ████ #C5DEF5
Yellow Family (Testing/Audit):
████ #D29922 ████ #F2D06D ████ #FCE2B7
Red Family (Blocked/Impediment):
████ #CF222E ████ #B91C1C ████ #FCE2E2
Orange Family (On-Hold/Deferred):
████ #9A6700 ████ #D5A87B ████ #FDBF7C
Purple Family (Design):
████ #8957E5 ████ #B4A7E8 ████ #D89AF6
Gray Family (Meta/Infrastructure):
████ #57606A ████ #B1BAC4 ████ #D0D7DE
Teal Family (Integration/External):
████ #007580 ████ #0D7F6F ████ #9FE1E3
- Define color families and semantic mapping
- Document assignment rules and rationale
- WCAG 2.2 AA accessibility audit and color remediation
- Create visual palette reference
- Update labels.yml with colour assignments (Issue #683)
- Update LABELING.md with strategy reference (Issue #685)
- Create label selection guidance for contributors
New colors should only be added if:
- A new semantic family is needed (not existing 8 families)
- Current families cannot accommodate the label
- All new primary/secondary colors must meet WCAG AA (≥ 4.5:1 against white)
- Owner team approves the addition
Deprecated colours (not in this spec) will be gradually migrated to this strategy through:
- Issue #683: Reassignment of existing labels
- Gradual phase-out in new label creation
- Documentation of old→new mapping for auditability
This specification should be reviewed annually or when:
- New label categories are introduced
- Accessibility standards change
- GitHub's colour palette capabilities expand
- User feedback indicates confusion
- LABELING.md — Comprehensive labeling guide
- ISSUE_FIELDS.md — Issue field mapping
.github/labels.yml— Canonical label configuration- Issue #650: Wave 5.2 Audit (parent)
- Issue #683: Type Mapping Reconciliation (dependent)
- Issue #685: Supporting Documentation Updates (dependent)
| Date | Change | Author |
|---|---|---|
| 2026-06-19 | v1.1.2 — Correct Blue and Gray label family count totals: Blue 52→53, Gray 12→11 (Gemini review follow-up #994) | LightSpeed Team |
| 2026-06-18 | v1.1.1 — Correct area:ci classification: moved from Gray family to Blue family in Table 1 and Section 2.2; removed from Gray family label examples in Section 2.7 (Gemini review follow-up #992) |
LightSpeed Team |
| 2026-06-18 | v1.1.0 — WCAG 2.2 AA audit: replace 7 non-compliant primary/secondary colors; add tertiary guidance; update accessibility table | LightSpeed Team |
| 2026-05-31 | v1.0.0 — Initial specification: 8 color families, 150 label mapping | LightSpeed Team |
Document Status: ✅ Active Last Updated: 2026-06-19 Next Review: 2027-06-18 (annual) Owner: LightSpeed Team