Skip to content

ci: 33 repositories schedule a sync-labels workflow that no longer exists #472

Open
1 of 1 issue completed

Description

@ss-o

Problem

33 repositories schedule a weekly workflow that calls a reusable workflow which does not exist.

Each carries .github/workflows/sync-labels.yml containing:

on:
  schedule:
    - cron: "22 2 * * 2"
jobs:
  labels:
    uses: z-shell/.github/.github/workflows/sync-labels.yml@main

z-shell/.github/.github/workflows/sync-labels.yml returns 404. It is not on main and is not in the workflow directory.

Two independent reasons to remove these

  1. They are broken. Any repository whose scheduled run is still active fails weekly against a missing callee. The sampled caller (z-shell/fzy) shows state=disabled_inactivity, so GitHub has auto-disabled some after 60 days of repository inactivity — which masks the breakage rather than fixing it. Repositories that see activity will start failing again.
  2. sync-labels.yml is an explicitly deprecated pattern. The workspace AGENTS.md "Deprecated patterns — never add these" table lists it by name, with the remedy "Remove; apply labels via API script". scripts/labels-sync.rb in this repository is that API script.

Affected repositories (33)

  • z-shell/any-gem
  • z-shell/any-node
  • z-shell/apr
  • z-shell/asciidoctor
  • z-shell/brew-completions
  • z-shell/dircolors-material
  • z-shell/doctoc
  • z-shell/ecs-cli
  • z-shell/firefox-dev
  • z-shell/fzy
  • z-shell/H-S-MW
  • z-shell/ls_colors
  • z-shell/pyenv
  • z-shell/remark
  • z-shell/subversion
  • z-shell/system-completions
  • z-shell/z-a-bin-gem-node
  • z-shell/z-a-default-ice
  • z-shell/z-a-patch-dl
  • z-shell/z-a-readurl
  • z-shell/z-a-rust
  • z-shell/z-a-submods
  • z-shell/z-a-test
  • z-shell/z-a-unscope
  • z-shell/zbrowse
  • z-shell/zconvey
  • z-shell/zi-rbenv
  • z-shell/zsh-bin
  • z-shell/zsh-cmd-architect
  • z-shell/zsh-editing-workbench
  • z-shell/zsh-unique-id
  • z-shell/ztrace
  • z-shell/zzcomplete

How this was found

A consumer audit for #461 swept every label-related file path across all 86 active, non-fork, non-archived repositories using the trees and contents API. These callers turned up in that sweep. They do not read lib/labels.yml — they never reached the label file at all — so they did not block #461.

Suggested fix

Delete .github/workflows/sync-labels.yml from each of the 33 repositories. Nothing replaces it: label rollout is handled by scripts/labels-sync.rb, run deliberately rather than on a schedule.

Worth batching, and worth confirming per repository that the file contains only this caller job before removing it — the sweep matched paths, not full contents.

Related

Activity

  1. added
    type:maintenanceNon-feature maintenance, cleanup, or org work.
    area:ciContinuous integration or GitHub Actions work.
    status:triageAwaiting initial review or classification.
    meta:org-trackedIndicates this issue has cross-repository tracking implications (synced to Linear).
    on Jul 21, 2026
  2. ss-o commented on Jul 27, 2026

    @ss-o
    MemberAuthor

    Read-only 33-repository label-sync preflight

    Live GET-only review completed on 2026-07-27.

    • The live issue list, master-plan list, and Batch A-D union reconcile at 33 unique repositories.
    • All 33 default-branch caller files exist and parse as a single reusable caller with no repository-specific steps, conditions, matrices, environments, permissions, local commands, or additional jobs.
    • All 33 caller paths currently have Actions state disabled_inactivity.
    • All 11 open pull requests across the set had their changed-file lists inspected; none removes or modifies .github/workflows/sync-labels.yml.
    • Classification: 32 mechanical-delete-ready, 1 target-live, 0 in every other class.

    The 32 callers using z-shell/.github/.github/workflows/sync-labels.yml@main still target a missing file. z-shell/zsh-editing-workbench is the exception: it uses @v1.0.8, and that exact reusable target resolves and declares workflow_call. It should be reviewed separately rather than included under the missing-target rationale.

    Ready batches:

    • Batch A (10): any-gem, any-node, apr, asciidoctor, brew-completions, dircolors-material, doctoc, ecs-cli, firefox-dev, fzy.
    • Batch B (6): H-S-MW, ls_colors, pyenv, remark, subversion, system-completions.
    • Batch C (8): z-a-bin-gem-node, z-a-default-ice, z-a-patch-dl, z-a-readurl, z-a-rust, z-a-submods, z-a-test, z-a-unscope.
    • Batch D ready (8): zbrowse, zconvey, zi-rbenv, zsh-bin, zsh-cmd-architect, zsh-unique-id, ztrace, zzcomplete.
    • Batch D separate decision (1): zsh-editing-workbench (target-live).

    Next gate: review this preflight. If implementation is then authorized, use one branch, one deletion commit, and one pull request per ready repository, in batch order. Decide the target-live exception separately.

    No file deletion, repository branch, commit, pull request, workflow run, tracker comment, or settings mutation occurred during this preflight.

  3. removed
    status:triageAwaiting initial review or classification.
    on Aug 16, 2026
  4. moved this to Triage in Z-shell Deliveryon Aug 17, 2026
  5. ss-o commented on Aug 28, 2026

    @ss-o
    MemberAuthor

    State refresh, 2026-08-27

    Re-measured live. Read-only; no workflow was enabled, disabled, or deleted.

    The callee is still missing

    z-shell/.github/.github/workflows/sync-labels.yml still returns 404 on
    main, so every caller remains broken.

    34 active repositories still ship the caller

    One more than the 33 originally recorded. The full list is in the issue's
    existing sample; the count is now 34 across 91 active repositories.

    Every one of them is currently dormant

    This qualifies the "fails weekly" framing in the problem statement. All 34
    report workflow state disabled_inactivity, meaning GitHub has already
    auto-disabled the schedule after 60 days without repository activity. None of
    them is failing on a weekly cadence today.

    That does not make the cleanup unnecessary, and it should not be read as a
    reason to close. Per runbooks/recurring-operations.md, disabled_inactivity
    is live state rather than evidence that a workflow should be retired, and any
    repository activity re-enables the schedule. The practical effect is that these
    are latent breakages that reactivate exactly when a repository becomes active
    again, which is the least convenient moment. Notably, several of these
    repositories received label configuration pull requests this week, so some are
    close to reactivation.

    Effect on priority

    The urgency is lower than "34 repositories failing weekly", but the fix is
    unchanged and the cleanup remains worth doing as a single mechanical pass.
    Removing a workflow file from 34 repositories is a mutation across many
    repositories, so it is left for explicit maintainer authorization rather than
    performed as part of this review.

  6. ss-o commented on Sep 30, 2026

    @ss-o
    MemberAuthor

    Project 28 triage pass. Blank values filled on this issue (existing values left unchanged):

    • Impact: Low. The 2026-08-27 refresh finds every caller disabled_inactivity, and none is failing on a weekly cadence today; the breakage is latent.
    • Effort: M. One mechanical deletion pull request per repository across 34 repositories, plus a separate decision for zsh-editing-workbench.
  7. ss-o commented on Oct 1, 2026

    @ss-o
    MemberAuthor

    Project 28 triage pass (2026-10-02): Status Triage -> Todo.

    • Premise confirmed on main at b849468: .github/workflows/sync-labels.yml absent from z-shell/.github main at b849468 (scripts/labels-sync.rb present). Callers still exist on default branches: fzy (blob b9b9843c), z-a-test (b9b9843c), zzcomplete (c9881679), zsh-editing-workbench (ca62482f, the @v1.0.8 target-live exception). Preflight comment of 2026-07-27 already batches the 32 mechanical deletions. ci: retire labeler, sync-labels, and assign; plain trunk workflow z-a-default-ice#10 (merged, 'ci: retire labeler, sync-labels, and assign') indicates one listed repository is already done; not re-verified by file read.
    • Disposition: implement. Next action: implement against the acceptance criteria above; the work is ready to start.
  8. ss-o commented on Oct 3, 2026

    @ss-o
    MemberAuthor

    Agent handoff

    Status: In progress
    Repository: z-shell/.github
    Tracker/Issue: #472; dependency of #485

    Current state

    The fzy canary is complete: PR #5 merged as d15e979d1cc2be9df92035c061b416db7e814b92. The merged main tree lacks the caller, and all 12 retained file blobs and modes match the original head. Its owning issue #4 is closed, and both records are Done in Project 28. The next removal is any-gem, after its own current-head premise check and owning issue; the remaining cross-repository work stays open. The inventory below records the pre-canary snapshot, not a newly collected inventory.

    The October 3 inventory finds 31 remaining .github/workflows/sync-labels.yml callers across 84 active public nonfork repositories, from 91 public repositories enumerated. Thirty callers reference the missing main reusable workflow. The zsh-editing-workbench caller references v1.0.8, which resolves and needs its own removal rationale. Existing P2 priority, Low impact and M effort remain appropriate for dormant cross-repository cleanup.

    Two repositories from the original list are already complete: z-a-default-ice PR #10 removed the caller, and z-a-patch-dl commit 4d4a356 removed its caller. Both current default branches lack the file. The remaining set is the original 33 minus those two; the later count of 34 is superseded by this inventory.

    Verification

    All 31 files parse as a Tuesday 02:22 UTC schedule, manual dispatch and one reusable labels job, with no repository-specific execution steps. They form four unique source blobs. All 31 Actions records are disabled_inactivity. Recent scheduled-run queries return no retained runs, so execution success, failure rate and cost are unavailable. Nine open pull requests across the caller repositories have no changed-file overlap with this path.

    The reusable target is absent from .github main at daee4d0. The exception's v1.0.8 target declares workflow_call, but its fetch step still requests .github/lib/labels.yml from current main, which returns 404. This is a static downstream defect, not an observed failing run; the conditional job may skip.

    The current label runbook makes scripts/labels-sync.rb the deliberate manual route. Its read-only fzy audit succeeds and reports one missing canonical label. The old deprecated-pattern table quoted in this issue is absent from current AGENTS.md; the removal rationale rests on the missing target and current label and recurring-operations policy instead.

    GitHub documents inactivity disabling and reactivation on a commit changing the cron schedule. Ordinary repository activity alone is not proof of reactivation. Dormancy is not, by itself, a retirement reason.

    Removal scope

    Remove only .github/workflows/sync-labels.yml in the 30 missing-target repositories listed below, using fzy as the first canary and then one owning issue and narrow pull request per repository. Preserve every other workflow, all labels and repository settings. Remove the zsh-editing-workbench exception separately under its own rationale: its target exists, but the legacy manifest dependency and deliberate manual label ownership make it obsolete.

    Before each change, recheck its current head and caller blob, applicable repository guidance and open pull requests. Require the repository's full applicable checks and current-head review. After each merge, verify the caller is absent on the target branch and reconcile its owning issue. Rollback is a reviewed revert restoring the caller from the immutable source linked below. Keep #472 open until every agreed removal is verified. #485 remains dependent on that outcome.

    Immutable caller inventory, 30 missing targets and one legacy exception

    Blockers

    The remaining work is the per-repository removal and verification for the other 29 missing-target repositories and the separate zsh-editing-workbench removal. Each pull request requires a current-head review and a maintainer merge decision. #472 remains open and In Progress.

    Next steps

    1. Deliver any-gem through its owning issue and pull request after its own current-head premise check, then verify its merged target.
    2. Continue through the other missing-target repositories one repository at a time. Handle zsh-editing-workbench separately and reconcile ci: 33 repositories schedule a sync-labels workflow that no longer exists #472 only after all agreed removals are verified.
  9. added a commit that references this issue on Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:ciContinuous integration or GitHub Actions work.meta:org-trackedIndicates this issue has cross-repository tracking implications (synced to Linear).type:maintenanceNon-feature maintenance, cleanup, or org work.

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions