Skip to content

epic: label-governance - Stabilise canonical labels and harden workflow automation #449

Open
0 of 3 issues completed

Description

@ashleyshaw

Epic Summary

Stabilise label governance by resolving orphan labels, enforcing canonical label definitions, and hardening workflow policies that consume label metadata.

The epic also tracks the Audit routing and Review title-handling correction in #3737. This description update does not authorise implementation or locked-configuration changes.

Linked Child Issues/Stories/Tasks/PRs

Current child issues

Original related work

These four original issues are closed. Their historical closure does not establish completion of the reopened epic or its current children.

Milestones & Timeline

The existing GitHub milestone is v1.3. No new milestone, deadline or estimate is proposed.

The original sequencing placed #95 before #66, #67 and #69. Current child dependencies remain defined in their own issues.

For #3737, any separately approved metadata correction on PR #3725 must follow the fix’s merge.

Acceptance Criteria

  • Orphan label set is remediated and documented.
  • Canonical label source of truth and seeding workflow are aligned.
  • README regeneration automation is scoped to changed paths and race-safe.
  • Review order policy is codified and validated in workflows.
  • The Audit routing and Review title-handling acceptance criteria in fix: label-governance - Align Audit routing and Review title handling #3737 are met.
  • All linked stories/tasks completed
  • Documentation and changelog updated
  • Tests/QA complete
  • PR description updated with relevant details
  • Changelog entry prepared for PR (if applicable)
  • Labels/types match org standards

Criteria remain unchecked; this update does not claim completed implementation, QA or approval.

Dependencies / Blockers

Additional Context

The original description assigns this epic to .github/projects/active/label-governance-stabilisation-2026-05-27/.

That directory was not found on current develop. The reference is retained for traceability; its current location requires confirmation.

The epic was historically reported complete in May 2026, but is currently open with active children. Historical inventory counts and completion comments are not current validation.

This concerns repository governance and automation, not a WordPress application runtime. Locked taxonomy and template files are not being edited.


Definition of Ready (DoR)

  • Epic goal and scope defined
  • Linked stories/tasks listed
  • Milestones and timeline mapped
  • Dependencies/blockers identified
  • Estimate added (if applicable)
  • Stakeholders/approvers listed
  • Success criteria and measurable outcomes documented
  • Timeline and resource estimates provided
  • Stakeholder alignment confirmed

Definition of Done (DoD)

  • Approved by at least one maintainer
  • All linked stories/tasks completed and closed
  • Documentation/changelog updated
  • QA and testing complete
  • All child issues closed before epic can be closed
  • Epic issue must be updated with latest status before being closed
  • Epic acceptance criteria met
  • Epic documentation and summary updated
  • Release notes and announcement prepared
  • Post-launch monitoring and support plan in place
  • Retrospective completed (if applicable)

Label governance and expansion — planning consolidation, 14 November 2026

Approved delivery approach

Accurate labels and canonical-source-driven automation are a high-importance delivery outcome. Chris leads unresolved decisions, subject to existing mandatory approvals.

Distinguish shared workflow labels, GitHub-only labels and Linear-only labels. Absence from another platform must not automatically trigger creation or deletion.

Proposed lasting expansion procedure

  1. Request the purpose, name, description, colour, scope, applicable systems and automation consumers.
  2. Check reusable labels, duplicate meanings, collisions, source/target assignments and dependent rules.
  3. Record Chris's decision and all mandatory approvals against an exact candidate.
  4. Change the appropriate authoritative definition: approved repository sources for shared/GitHub-workflow labels; separately governed Linear definitions with exact identities/scopes and synchronisation exclusions for Linear-only labels.
  5. Apply changes only to applicable systems, preserving assignments and native Linear fields.
  6. Verify routing, synchronisation, metadata and recovery; retain evidence and a future drift/change path.

This is the proposed operational procedure for the approved approach. It is not evidence that the procedure has been implemented or tested.

Legacy disposition amendment revision 2

The following exact-source dispositions remain proposals. They replace generic retirement reasoning at planning level only:

Source Candidate disposition
openspec:domain/automation area:automation; confirm consumer scope
openspec:domain/workflow area:workflows; canonical-import dependency
openspec:domain/agent-design Conditional aiops:agents; confirm design scope and prefix dependency
openspec:domain/governance Conditional area:governance; clarify destination definition
openspec:domain/testing area:testing; preserve domain rather than lifecycle meaning
openspec:domain/documentation area:documentation; assess active metadata
openspec:domain/ci-cd Hold; CI/deployment meaning unresolved
openspec:phase/planning Conditional speckit:planning; requires a separate semantic decision and namespace resolution
openspec:phase/implementation Hold; pending versus active unresolved
openspec:phase/deployment Hold; no evidenced lifecycle equivalent
openspec:priority/high Conditional priority:high; preserve distinction from important
openspec:priority/medium Conditional priority:normal; approve this exact-source mapping
openspec:priority/low Conditional priority:low; preserve distinction from minor
openspec:status/blocked Conditional status:blocked; dependency blockage only

The adjacent openspec:status/implementation label retains its separate unresolved hold.

Saved audit rows proposing retirement with null targets are not approval or proof of semantic equivalence. Generator fragment rules such as openspec:domain do not establish mappings for concrete slash labels.

Existing targets and dependencies

The ten proposed shared targets already have distinct workspace-scoped, active, ungrouped Linear identities. Resolve and preserve those exact identities before execution; do not create same-named replacements or collapse separate migrate labels.

Eight targets are canonical and live in GitHub. area:workflows exists live but lacks a canonical declaration; its current live colour ededed differs from the proposed import colour 0F448A. Import and metadata changes require exact approval.

aiops:agents exists in Linear but was absent from canonical/live GitHub, where ai-ops:agents remains the current spelling. Do not silently substitute or duplicate these identities.

Several live GitHub descriptions are empty despite canonical definitions. These are recorded discrepancies, not incidental repair authorisation.

Linear priority-label descriptions preserve native priority as authoritative. status:blocked does not change native status, establish completion or grant approval.

Consolidation and retirement gates

  • Inventory source and occupied-target assignments and overlap before choosing a procedure.
  • Preserve target identity, assignments and metadata unless separately approved.
  • Verify destination assignments before source retirement.
  • Check Discussions, active metadata, generic prefix consumers and external dependencies.
  • Preserve historical source names and evidence; do not rewrite historical snapshots as current findings.
  • Obtain exact per-label disposition and applicable repository approvals.

The 12 November investigation found no GitHub issue/PR assignments on the 14 sources, but target usage was substantial. Zero assignments do not authorise deletion. No retirement, consolidation or metadata change is approved by this section.

Activity

  1. linear-code commented on May 27, 2026

    @linear-code
  2. ashleyshaw commented on May 27, 2026

    @ashleyshaw
    MemberAuthor

    Tracking links for this epic:\n- #95 (batch-00 triage)\n- #66 (batch-01 execution)\n- #67 (batch-01 execution)\n- #69 (batch-01 execution)\n\nSequencing note: #95 first, then #66/#67/#69 as execution tasks.

  3. ashleyshaw commented on May 27, 2026

    @ashleyshaw
    MemberAuthor

    Progress update (execution started from #95):\n\nCompleted:\n- Refreshed #95 orphan-label audit against current .\n- Confirmed counts: repo labels 180, canonical 149, canonical missing 0, orphan 31.\n- Confirmed active-use scan: orphan labels on open issues/PRs = 0.\n\nLinks updated:\n- #95: inventory + interpretation + proposed disposition path\n- #66, #67, #69: marked sequencing dependency satisfied and ready to execute in parallel\n\nNext in execution order:\n1. Finalise orphan disposition policy in #95 (remove vs exception list)\n2. Execute canonical/seeding hardening in #66\n3. Execute README regen scope/concurrency in #67\n4. Execute review-order enforcement in #69

  4. ashleyshaw commented on May 27, 2026

    @ashleyshaw
    MemberAuthor

    Progress update (execution started from #95) — corrected repost (supersedes malformed shell-expanded comment)

    Completed:

    • Refreshed 🏷️ Orphan Labels Detected (30) #95 orphan-label audit against current develop.
    • Confirmed counts: repo labels 180, canonical 149, canonical missing 0, orphan 31.
    • Confirmed active-use scan: orphan labels on open issues/PRs = 0.

    Links updated:

    Next in execution order:

    1. Finalise orphan disposition policy in 🏷️ Orphan Labels Detected (30) #95 (remove vs exception list)
    2. Execute canonical/seeding hardening in [Workflows/Docs] Canonical labels + org seeding workflow #66
    3. Execute README regen scope/concurrency in [Workflows] Scope README regen to changed paths with concurrency guard #67
    4. Execute review-order enforcement in [Workflows] Enforce CodeRabbit before Copilot on PRs #69
  5. ashleyshaw commented on May 27, 2026

    @ashleyshaw
    MemberAuthor

    Sequence progress: first execution PR is open for #66.\n\n- #66 implementation PR: #450\n- Focus: canonical label sync execution + workflow seeding hardening\n\nNext steps after this merges:\n1. Continue #67 README regen scope/concurrency hardening\n2. Continue #69 review-order enforcement

  6. ashleyshaw commented on May 27, 2026

    @ashleyshaw
    MemberAuthor

    Execution started from the dedicated epic worktree/branch:\n- Worktree: \n- Branch: \n\nDependency-first update:\n- #95 refreshed with live orphan-label evidence (31 orphan labels, 0 missing canonical labels).\n- #95 remains the gate for final canonical cleanup decisions.\n\nPlanned execution order from here:\n1. Finalise #95 decision table for ambiguous legacy labels.\n2. Execute #66 (canonical labels + seeding workflow).\n3. Execute #67 and #69 in parallel once #95 decisions are locked.

  7. ashleyshaw commented on May 27, 2026

    @ashleyshaw
    MemberAuthor

    Correction: reposting this update cleanly due to shell-escaping noise in the previous comment.

    Execution started from the dedicated epic worktree and branch:

    • Worktree: /Users/ash/.codex/worktrees/epic-449-label-governance
    • Branch: codex/449-label-governance-hardening

    Dependency-first update:

    Planned execution order from here:

    1. Finalise 🏷️ Orphan Labels Detected (30) #95 decision table for ambiguous legacy labels.
    2. Execute [Workflows/Docs] Canonical labels + org seeding workflow #66 (canonical labels + seeding workflow).
    3. Execute [Workflows] Scope README regen to changed paths with concurrency guard #67 and [Workflows] Enforce CodeRabbit before Copilot on PRs #69 in parallel once 🏷️ Orphan Labels Detected (30) #95 decisions are locked.
  8. 31 remaining items

  9. ashleyshaw commented on Oct 2, 2026

    @ashleyshaw
    MemberAuthor

    @eleshar, the child issue #3737 has been recreated in .github and linked to the label-governance parent #449. Please review both issues, including the child’s Audit routing and Review title-handling acceptance criteria.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

Fields

Priority

None yet

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions