Skip to content

feat: spec-labels - Align lifecycle tracking with GitHub Spec Kit #1944

Description

@ashleyshaw

Feature Summary

Align this historical lifecycle-label request with GitHub Spec Kit and the existing specification-label consolidation.

The documented target family is spec:*, not speckit:*. Current canonical configuration still declares openspec:*; the target namespace must not be described as already implemented or approved.

This update reconciles the original requirement with existing migration work. It does not establish a second migration owner or authorise implementation.

Context and Sources

Repository: lightspeedwp/.github.

Verified develop revision: b63f9bb.

  • Spec 008, FR-011, identifies spec:* as the target successor to openspec:*; current declarations remain authoritative until the approved configuration change is applied.
  • FR-013 distinguishes speckit tooling/process terminology from spec/specs artefact and label terminology.
  • Canonical labels currently contain nine openspec:* declarations.
  • Label-family validation retains openspec: as active and identifies spec: and spec-id: as Stage 2 targets.
  • Existing mapping tooling distinguishes straightforward renames from judgement calls requiring approval.

These are repository-source findings, not verification of every live GitHub label, synchronised Linear record or deployed automation.

Linked Stories/Tasks

These references do not create native relationships or closing associations.

Proposed Solution

Track the existing consolidation rather than introduce speckit:* or duplicate its implementation.

The nine declared lifecycle labels have the following documented target mapping. This table records the intended mapping; it does not approve or apply it.

Current declaration Documented target
openspec:discovery spec:discovery
openspec:planning spec:planning
openspec:specification-in-progress spec:specification-in-progress
openspec:specification-complete spec:specification-complete
openspec:implementation-pending spec:implementation-pending
openspec:implementation-in-progress spec:implementation-in-progress
openspec:status-testing spec:status-testing
openspec:status-production spec:status-production
openspec:implementation-complete spec:implementation-complete

The original six-label description includes openspec:specification-pending, which is absent from the inspected canonical declarations. Mapping tooling proposes spec:planning for that gap as a judgement call requiring approval.

Numeric specification identifiers belong to the separately documented spec-id:* family; they are not lifecycle labels.

Label names, including status-production and implementation-complete, do not independently establish deployment, acceptance or release.

Scope and Constraints

Included:

  • Reconcile the historical lifecycle requirements with the existing nine-label migration.
  • Record mapping decisions, approval dependencies and verified migration evidence.
  • Identify any genuinely unmet requirement without automatically creating additional work.

Excluded:

  • A second implementation of the existing consolidation.
  • Introducing a speckit:* label family.
  • Repository edits, live-label changes or synchronisation changes through this issue update.
  • Bulk issue/PR description rewriting or execution of the historical auto-update script.
  • OpenSpec path migration, organisation-wide cleanup or unrelated template changes.
  • Automatic closure, duplicate marking, reparenting or reassignment of any issue.

Milestones & Timeline

No new dates, milestones or delivery commitments are proposed.

Implementation verification depends on the existing migration’s approved mapping and Stage 2 configuration evidence.

Acceptance Criteria

  • The nine current declarations and documented target mappings are reconciled against the approved migration decision.
  • The historical specification-pending gap has an explicit approved mapping or retirement decision.
  • Dated approval and relevant configuration evidence are linked when available; unresolved evidence remains explicitly identified.
  • Lifecycle requirement coverage is checked against the existing migration, with residual gaps recorded for a separate scope decision.
  • Historical completion claims remain distinguishable from verified current results.
  • No duplicate migration, new label family, bulk rewriting or unrelated path migration is introduced.

Designs / References

No design assets are required for this record reconciliation. Repository sources and related work are linked above.

Dependencies

Changes to protected .github/labels.yml require the repository’s [LABEL-UPDATE-REQUEST] process and explicit approval. Approved configuration must precede live renaming.

Existing migration work owns its implementation sequencing and dependencies. This issue update does not alter those relationships.

Testing Approach

This assessment used static repository and record inspection. No commands or tests were executed.

Any later implementation verification must reference the actual approved configuration revision and relevant consumer, validation and migration evidence. Historical test counts are not treated as current passing results.

Branch instructions

Not applicable to this reconciliation-only update: no separate repository change is proposed.

Repository implementation remains within the existing consolidation. Any residual implementation requires separately verified scope, branch/base, naming policy, PR template, implementing targets and approval.

Expected file changes

None proposed by this record update. No branch creation, repository edits or PR associations are authorised.

Definition of Ready — Current Reconciliation

  • Existing migration scope and the historical lifecycle requirements have been reconciled.
  • Outstanding mapping and approval decisions are explicit.
  • Any residual implementation scope is separately agreed before work starts.

Definition of Done — Current Reconciliation

  • Acceptance evidence and unresolved findings are recorded without overstating completion.
  • Historical claims and checkbox states remain preserved and clearly separated from current evidence.
  • No implementation, deployment, acceptance or release is inferred from this record update.

Historical OpenSpec Record — Retained, Not Revalidated

The original description follows unchanged. Its “Delivered”, “COMPLETE”, “Production Ready”, test counts and checked criteria are preserved historical assertions, not endorsed current findings. PR #1943 is closed without merging; this does not by itself prove that equivalent work was never delivered elsewhere.

Overview

Add OpenSpec status labels and comprehensive automation infrastructure to enable tracking of specification and implementation phases for all agents, projects, and initiatives.

Description

The labeling system needed explicit support for tracking OpenSpec lifecycle phases. This feature adds:

  1. 6 standardized OpenSpec labels — Track specification/implementation phases
  2. Auto-update-all.js script — Automated label and template management

Scope

OpenSpec Status Labels (Delivered)

Label Status Color Purpose
openspec:specification-pending ⏳ Pending Blue OpenSpec specification needed
openspec:specification-in-progress 🔄 In Progress Yellow OpenSpec specification being written
openspec:specification-complete ✅ Complete Green OpenSpec specification complete
openspec:implementation-pending ⏳ Pending Blue Implementation pending (spec complete)
openspec:implementation-in-progress 🔄 In Progress Yellow Implementation in progress
openspec:implementation-complete ✅ Complete Green Implementation complete and tested

Auto-Update Script (Delivered)

Comprehensive automation for repository maintenance:

  • Auto-detects issue types from titles
  • Adds missing labels (65+ issues)
  • Injects template sections (104+ issues)
  • Updates PR descriptions (15+ PRs)
  • Batch processing and statistics tracking

Test Coverage (Delivered)

  • 25+ comprehensive test cases
  • Label configuration validation
  • Template section detection
  • Integration testing

Benefits

  • Visibility: Clear view of specification/implementation phases
  • Standardization: Consistent labeling across all projects
  • Automation: Reduces manual maintenance burden
  • Coordination: Supports cross-project sequencing
  • Testing: Comprehensive validation coverage

Implementation Status

✅ COMPLETE — All acceptance criteria met

  • 6 labels defined in .github/labels.yml
  • Labels follow openspec:{phase}-{status} naming convention
  • Color scheme consistent (Blue→Yellow→Green lifecycle)
  • PR created with implementation (feat: Add OpenSpec status labels for specification/implementation lifecycle #1943)
  • Auto-update script created and tested
  • Comprehensive test suites added (2 test files, 25+ cases)
  • All 300+ issues updated with labels and templates
  • All 21+ PRs updated with proper templates

Related Issues/PRs

PR: #1943 — OpenSpec Status Labels + Auto-Update Script
Automation Results: 184 updates across 321 items
Test Coverage: 25+ test cases

Definition of Ready (DoR)

✅ COMPLETE

Definition of Done (DoD)

✅ COMPLETE

Version

  • Phase: Phase 1A (Labels Infrastructure)
  • Status: ✅ Production Ready
  • Target Merge: develop branch

Owner / Assignee

Responsible Party: [To be assigned]

Team/Area: [Identify relevant team or codebase area]

Acceptance Criteria

  • [Specific, testable requirement 1]
  • [Specific, testable requirement 2]
  • [Specific, testable requirement 3]

Chat planning decision and namespace conflict — 14 November 2026

Decision required from Chris

This description currently requires spec:* and explicitly excludes speckit:*. The migration chat and GIT-2521 namespace addendum selected speckit:*.

Preserve this conflicting evidence. Chris must explicitly reconcile the intended namespace and dependent requirements before implementation. This section does not silently override the existing requirements.

Accepted B1 planning design

Ash accepted B1 revision 1 as a planning design, not save or implementation authorisation:

  • Consolidate openspec:specification-pending into speckit:planning, not discovery.
  • Retain six automated progression states within nine recognised labels.
  • Preserve existing event wiring and transition/rollback edges.
  • Keep additional safeguards as separately proposed scope.

The accepted description changes are:

  • speckit:planning: "Spec Kit planning phase - planning/scoping or awaiting specification drafting"
  • speckit:specification-in-progress: "Spec Kit specification phase - specification being drafted or revised"

The planning description broadens the old "improvement plan documented" meaning. This is an explicit semantic decision, not merely a prefix replacement.

Nine-label planning candidate

Canonical source Chat target candidate
openspec:discovery speckit:discovery
openspec:planning speckit:planning
openspec:specification-in-progress speckit:specification-in-progress
openspec:specification-complete speckit:specification-complete
openspec:implementation-pending speckit:implementation-pending
openspec:implementation-in-progress speckit:implementation-in-progress
openspec:status-testing speckit:status-testing
openspec:status-production speckit:status-production
openspec:implementation-complete speckit:implementation-complete

Preserve canonical colours. Existing Linear sources use the corresponding spec:* names and workspace identities. No speckit:specification-pending label is proposed.

Live slash-style testing/production labels require explicit reconciliation. Existing spec:planning and spec:implementation-pending create many-to-one source cases. Migration markers remain separately reviewed retirement candidates.

Numeric spec:001 is a specification identifier, with proposed destination spec-id:001; it must not become speckit:001.

Automation boundary

The inspected PR-driven progression was:

Current state expressed in the chat target namespace Existing PR trigger and next state
speckit:planning PR opened → specification-in-progress
speckit:specification-in-progress PR merged → specification-complete
speckit:specification-complete PR opened → implementation-pending
speckit:implementation-pending PR opened → implementation-in-progress
speckit:implementation-in-progress PR merged → implementation-complete
speckit:implementation-complete No automatic outgoing transition

Discovery, testing and production had no inspected automatic edges. Do not invent those transitions or infer deployment evidence from a label.

The inspected workflow synchronises issue labels but does not initialise phase labels or advance phases on status-label additions. No new wiring is included.

Coordinated consumer changes to prepare

  • Amend Spec 008 FR-011 after namespace resolution.
  • Align .github/labels.yml and scripts/automation/label-mapping.cjs.
  • In scripts/automation/includes/phase-state-machine.cjs, classify planning explicitly as specification/pending rather than relying on its suffix.
  • Align scripts/automation/handlers/handle-issue-created.cjs with approved state constants and distinguish all recognised labels from progression states.
  • Coordinate orchestrate-phase-progression.cjs, sync-labels-on-event.cjs, handle-issue-labeled.cjs and includes/label-validator.cjs.
  • Align scripts/validation/lib/label-families.cjs, mapping evidence and affected tests.
  • Preserve unknown-gap rejection, identifier separation, historical source keys and existing trust/write boundaries.

Repository inspection was pinned to b63f9bb. Refresh before implementation.

Proposed verification

Verify nine canonical labels, six automated states, canonical initial outputs, planning classification, unchanged transition/rollback edges, safe missing/ambiguous-state handling, assignment preservation and unchanged native Linear fields.

Unknown-state guards, workflow success checks, invalid-transition status writes and terminal-status corrections remain separate proposed safeguards requiring scope decisions. Tests were inspected, not executed; no passing or deployment claim is made.

Live inventory, remaining semantic holds, consumer coverage, synchronisation behaviour and mandatory approvals remain execution gates.

Activity

  1. linear-code commented on Aug 12, 2026

    @linear-code
  2. github-actions commented on Aug 12, 2026

    @github-actions
    Contributor

    ✅ Template check passed after update. Thanks for fixing the issue body.

  3. github-actions commented on Aug 12, 2026

    @github-actions
    Contributor

    ⏱️ Aging and SLA annotation

    • Age: 0 day(s)
    • SLA state: Within SLA
    • Thresholds: warn at 7 days, breach at 14 days
    • Last updated: 2026-08-13T03:32:41.281Z

    Maintained by project-meta-sync workflow.

  4. self-assigned this
    on Aug 29, 2026
  5. added this to the v1.1 milestone on Aug 29, 2026
  6. 5 remaining items

  7. changed the title [-]feat: openspec-labels - Add lifecycle status labels[/-] [+]feat: spec-labels - Align lifecycle tracking with GitHub Spec Kit[/+] on Nov 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Fields

Priority

None yet

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions