Skip to content

chore: align repository governance and release policy #70

Closed
6 of 6 issues completed
Closed

Description

@ss-o

Context

A repository audit on 2026-08-14 found that zpmod is active and its default-branch CI is green, but its branch model, release class, repository settings, work queue, and automation are not aligned with current Z-Shell policy.

Maintainer decision: classify zpmod as a class 2 versioned compiled tool/package and use trunk-based development on main. Record the corresponding organization-policy update separately in z-shell/.github.

Required work

Original audit evidence (2026-08-14)

Current blocker

#98 is the only open native sub-issue. Live verification on 2026-08-27 found no repository Renovate configuration, no current Dependency Dashboard or configuration-warning issue, no Renovate branch or recent Renovate-authored commit, and only historical onboarding PR #1 from 2022. Dependabot security updates remain enabled, with zero current Dependabot alerts.

Organization rollout owner z-shell/.github#452 remains open. Keep this parent Blocked until #98 records current hosted-processing evidence, proves non-overlapping routine-update ownership, and closes as completed or is explicitly descoped.

Acceptance criteria

  • The default branch and release path match the recorded class-2 trunk-on-main decision.
  • Required checks gate merges and the public Pages/release surfaces consume reviewed main commits only.
  • All open issues and pull requests have an explicit current disposition.
  • Repository files, labels, workflows, and dependency automation match canonical organization policy.

Activity

  1. added
    area:metaOrganization-wide policy, templates, or meta-repo work.
    meta:org-trackedIndicates this issue has cross-repository tracking implications (synced to Linear).
    type:maintenanceNon-feature maintenance, cleanup, or org work.
    on Aug 14, 2026
  2. moved this to Triage in Z-shell Deliveryon Aug 17, 2026
  3. ss-o commented on Aug 22, 2026

    @ss-o
    MemberAuthor

    Status check on the checklist (audited 2026-08-22):

    Done

    Still outstanding

    • Pages still deploys from develop, and develop is still unprotected. Publication needs to move to the accepted branch/tag path before this item is done.
    • Workflow actions are still pinned to tags (@v4, @v3, ...), not full commit SHAs.
    • cleanup-workflows.yml still has an emoji in its name.
    • Legacy emoji-style labels (bug :lady_beetle:, bug 🐛, stale 👻, ...) remain alongside the type:/area: taxonomy and haven't been migrated or removed.
    • Renovate migration is blocked on chore(deps): migrate repositories to hybrid Renovate ownership .github#452, which is still open.
    • For the record: PR Introduces significant updates to streamline project management and module codebase #61 was merged as-is (2026-08-17), after this issue asked for it to be replaced with focused PRs instead. Noting the discrepancy rather than trying to reverse a merged change.

    New finding, not in the original checklist

    • ci.yml and docs.yml are both disabled_manually at the repo level, but the main ruleset's required status checks still reference ci.yml job names (Lint scripts on Linux, Build standalone module on Linux/macOS, etc.). Those checks can never be produced while the workflow stays disabled. Recent merges (docs: restore root README and LICENSE #88, fix: skip ZWC compilation for non-regular sources #89) only went through because write/maintain/admin roles have an unconditional ruleset bypass. Recommend either re-enabling ci.yml or removing its job names from required_status_checks so the requirement matches what actually runs.

    Keeping this open — real work remains.

  4. ss-o commented on Aug 22, 2026

    @ss-o
    MemberAuthor

    Update (2026-08-22), following #88, #89, #91 and the pending #90.

    Newly completed

    • Pages no longer deploys from develop. ci.yml and docs.yml now trigger on main only (chore(ci): stop triggering CI and Pages from develop #91), and the post-merge run on main completed with Build docs (container): success and Deploy to Pages: success, so the public surface is served from a reviewed main commit.
    • develop is retired and deleted. Before deletion it was verified to hold zero unique files against main (compare/main...develop reported unique_files: 0); its 169 "ahead" commits were duplicated pre-CMake history already superseded on main. Recovery ref, if ever needed: 68e0a88beab8398c86c0bef3dde475ca9cd80345.
    • Pages source metadata moved from develop to main.
    • Every workflow action is now pinned to a full commit SHA. ci.yml and docs.yml were the remaining offenders (chore(ci): stop triggering CI and Pages from develop #91); release.yml and cleanup-workflows.yml were already pinned.
    • ci.yml and docs.yml are re-enabled. They had been disabled_manually because every run failed at Set up job under the repository's allowed-actions policy, which is the same unpinned-action problem fixed above.

    Corrections to the earlier status comment

    • The required status checks in the main ruleset named eight contexts that no workflow produced (Lint scripts on Linux, Build standalone module on Linux, and similar). A commit status query against a PR head returned state: pending with an empty statuses array, so those contexts sat unreported forever and every merge depended on the write/maintain/admin bypass. The list is now set to the job names actually emitted: Native Tests (ubuntu-latest), Native Tests (macos-latest), Docker Tests (minimal), Docker Tests (full-dev), Smoke Tests, Build docs (container), Analyze (actions), Analyze (c-cpp). Deploy to Pages is deliberately excluded because it is conditional and skips on pull requests. All other rules (deletion, linear history, Copilot review, non-fast-forward, pull request) are unchanged.
    • docs.yml had a second latent defect: the deploy job carried no event guard, so it attempted a Pages deployment on every pull request and was rejected outright by the github-pages environment branch policy, which permits main only. It is now gated to push on main.

    Still outstanding

  5. 3 remaining items

  6. ss-o commented on Aug 27, 2026

    @ss-o
    MemberAuthor

    Legacy-label migration archive — before write

    Live all-state usage and archived definitions:

    Legacy label Color Description Record Canonical disposition
    chore 🔧 c5def5 Routine maintenance, no behavior change issue #83 add type:maintenance, remove legacy
    refactor ♻️ 5319e7 Code refactor, no behavior change issue #81 add type:maintenance, remove legacy
    bug 🐛 d73a4a Something isn't working issue #80 add type:bug, remove legacy
    ci :robot: 5319e7 Work that improves the continuous integration. PR #61 add area:ci, remove legacy
    bug :lady_beetle: B60205 Inconsistencies or issues which will cause a problem for users or implementors. PR #60 replace type:maintenance with type:bug, remove legacy
    stale 👻 ffffff No activity for quite some time. issue #31 remove obsolete state marker; retain type:question

    No open issue or pull request uses any of these labels, and no repository configuration references them. Each definition will be deleted only after its all-state usage is re-read as zero. This comment is the restoration archive required by the label-maintenance runbook.

  7. ss-o commented on Aug 27, 2026

    @ss-o
    MemberAuthor

    Legacy-label reconciliation completed and verified: all six archived variants were migrated off their closed records, each definition was deleted only after all-state usage reached zero, and the canonical labels-sync.rb --repo z-shell/zpmod --json dry run now reports repos_with_drift: 0 with no missing, updated, legacy, or unknown labels.

  8. added
    status:blockedCannot proceed until an external dependency or decision changes.
    on Aug 27, 2026
  9. ss-o commented on Aug 27, 2026

    @ss-o
    MemberAuthor

    Parent reconciliation - 2026-08-27

    Live verification confirms that the original governance remediation is complete except for Renovate ownership proof:

    #98 is the sole remaining sub-issue. It remains Blocked by open organization rollout z-shell/.github#452, and current repository evidence still does not prove hosted Renovate processing. Dependabot security updates remain enabled with zero alerts.

    Parent disposition: keep #70 open, add status:blocked, and move its Z-shell Delivery status to Blocked. The sole next action is to resume #98 only after hosted-processing or equivalent approved validation evidence becomes available.

  10. moved this from In Progress to Blocked in Z-shell Deliveryon Aug 27, 2026
  11. moved this from Blocked to In Progress in Z-shell Deliveryon Sep 18, 2026
  12. removed
    status:blockedCannot proceed until an external dependency or decision changes.
    on Sep 27, 2026
  13. added
    status:blockedCannot proceed until an external dependency or decision changes.
    on Oct 3, 2026
  14. ss-o commented on Oct 3, 2026

    @ss-o
    MemberAuthor

    The remaining governance deliverable is Renovate processing under #98. The issue already specifies: "Keep this parent Blocked until #98 records current hosted-processing evidence, proves non-overlapping routine-update ownership, and closes as completed or is explicitly descoped."

    #98 remains open, and its implementation PR #138 still needs its review of record and subsequent hosted-processing evidence. Project status is Blocked with the matching status:blocked label and a native blocked-by link to #98. The next action is to complete #98's remaining acceptance criteria; the other governance work is already recorded as complete.

  15. moved this from In Progress to Blocked in Z-shell Deliveryon Oct 3, 2026
  16. ss-o commented on Oct 15, 2026

    @ss-o
    MemberAuthor

    The remaining Renovate deliverable under #98 is complete: Dashboard #140 and routine update PRs demonstrate hosted processing, strict validation passes on the unchanged merged configuration, routine-update ownership does not overlap, and Dependabot retains security remediation. The organization blocker z-shell/.github#452 is closed.

    All required sub-issues #93 through #98 are complete. Current main 5d5c798 retains the recorded class 2, trunk-on-main model; required checks, pull-request and thread-resolution gates, read-only workflow defaults, and immutable v2.0.6 publication remain in place. Main CI passes native Linux/macOS, Docker and smoke tests. Docs builds and deploys Pages from main. The organization routing and approved review-skill content check passes.

    The remaining open queue is routine dependency maintenance, with these dispositions: #141 waits for its minimum-release-age status and review; #147 needs a separate Ubuntu 26.04 compatibility investigation for its failing Docker and smoke checks; #157 needs its failing Trunk check and minimum-release-age status resolved before review. These updates remain open under the Dependency Dashboard; they are not outstanding deliverables from the original governance remediation. Broader Renovate coverage remains open under z-shell/.github#613.

  17. removed
    status:blockedCannot proceed until an external dependency or decision changes.
    on Oct 15, 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:metaOrganization-wide policy, templates, or meta-repo work.meta:org-trackedIndicates this issue has cross-repository tracking implications (synced to Linear).priority:highNeeds prompt attention.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