Skip to content

CI-17: Add a fail-closed Linux-only private-cutover rehearsal across all workflows #3170

Description

@Chris0Jeky

Wave: Smart CI Fabric / private-repository cutover. Trackers: CI-00 #2324 and CI-13 #2337. Related runner boundary: CI-04 #2328.

Context

The settled v0.3 posture has a $0 GitHub Actions hard ceiling. After the development repository becomes private and before any self-hosted runner is associated, the cutover must prove private-mode behaviour without consuming private hosted Windows minutes.

The existing release plan excluded the Windows release archive job, but required CI still invokes Windows work through ci-required.yml and called/reusable workflows, including the worktree-helper, backend-unit, frontend-unit, and API-integration Windows lanes. A post-privacy R0/R2/R4 rehearsal would therefore violate the budget and runner ordering unless the entire workflow graph has a trusted Linux-only rehearsal mode.

This is a release-control mechanism, not a permanent reduction in Windows coverage. Full Windows evidence resumes on the already-proven isolated runner classes after association, or after an explicit maintainer budget re-ruling.

Scope

  • Add one explicit, trusted private-cutover rehearsal mode that is evaluated from protected-base workflow code and cannot be enabled or altered by untrusted PR-head code.
  • Thread that mode through ci-required.yml and every called/reusable workflow that can schedule Windows work.
  • Suppress every private hosted Windows job in rehearsal mode, including current Windows worktree-helper, backend-unit, frontend-unit, API-integration, and release jobs.
  • Preserve the intended Linux, control-plane, security, governance, and receipt evidence. A Linux-only rehearsal must not turn required checks into vacuous skipped-success contexts.
  • Fail closed when the mode is absent where required, malformed, inconsistent across the workflow graph, bypassed, or when a Windows job would still be schedulable.
  • Add a workflow-contract inventory/test that discovers Windows runner selectors and fails when a new or existing Windows job is not covered by the rehearsal guard.
  • Emit an auditable summary/receipt listing the mode, trusted source, selected jobs, suppressed Windows jobs, commit, policy/config identity, and final result.
  • Exercise the post-privacy, pre-association matrix owned by CI-13 [HUMAN GATE]: Private-repository cutover — prove private-mode CI, budgets, runner trust; maintainer flips visibility for v0.3.0 #2337: R0/R2/R4 PRs, a normal merge, nightly dispatch, and a no-publish release rehearsal.
  • Update the private-cutover checklist, release readiness material, and CI testing guide with activation, verification, abort, and rollback instructions.

Security and trust constraints

  • Ordinary pull requests cannot self-select the trusted rehearsal mode.
  • No self-hosted runner is associated while this rehearsal executes.
  • No release credential is exposed to ordinary hosted or persistent CI runners.
  • The mode must not weaken normal public CI, later hybrid CI, weekly full Windows coverage, or exact-tag Windows qualification.
  • The cutover stops if any private hosted Windows job is scheduled or if expected Linux/control/security evidence is missing.

Acceptance

  • Contract tests enumerate the full workflow graph and fail when any Windows job lacks the trusted rehearsal guard.
  • Negative fixtures prove malformed, untrusted, inconsistent, and bypassed mode inputs fail closed.
  • A public-mode dry run proves the same selection logic before the visibility change.
  • The private post-flip rehearsal schedules zero hosted Windows jobs while producing all expected Linux/control/security checks and evidence.
  • R0/R2/R4, normal-merge, nightly, and no-publish release scenarios are recorded against exact commits and workflow/config identities.
  • The mechanism is documented in docs/ci/PRIVATE_REPO_CUTOVER_CHECKLIST.md, docs/releases/V0_3_0_READINESS.md, and docs/TESTING_GUIDE.md or their current authoritative successors.
  • CI-13 [HUMAN GATE]: Private-repository cutover — prove private-mode CI, budgets, runner trust; maintainer flips visibility for v0.3.0 #2337 records the maintainer-reviewed evidence before runner association.

Non-goals

  • This issue does not authorize the repository visibility flip, runner registration, branch-protection mutation, storage deletion, release publication, or a change to the $0 budget ruling.
  • This issue does not replace the full Windows weekly/release contract or the isolated exact-tag Windows build.

Blocks the private cutover and final v0.3.0 tag until completed or explicitly re-ruled.

Activity

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

    Priority IRelease-blocking or trust-breaking now; release scope still requires milestone membership.ciCI/CD pipeline, workflow, and build infrastructure changes.securityAuthentication, authorization, data protection, abuse prevention, and compliance-related changes.testingTest coverage, harnesses, regression prevention, and verification pipeline work.

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions