ci: retire 6 GitHub-only .github/workflows + migration runbook (RFC internal#219 §1 Cat B) #379
No reviewers
Labels
No Label
merge-queue
merge-queue
merge-queue
merge-queue-hold
release-blocker
release-test
security
test-label-sre
tier:high
tier:low
tier:medium
triage-test
No Milestone
No project
No Assignees
5 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: molecule-ai/molecule-core#379
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "sweep/internal-219-cat-B-delete-github-only"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Category B — GitHub-only, retire + document
Sweep companion to PR#372 (ci.yml port) and PR#378 (Cat A). This PR retires 6 workflows that depend on GitHub-specific surface (merge queue, GitHub auto-merge primitive, github.com REST API, GHCR registry, CodeQL action hitting api.github.com bundle endpoints) and adds
runbooks/gitea-actions-migration-checklist.mddocumenting the full sweep classification + rationale.Files retired
auto-tag-runtime.yml.gitea/workflows/publish-runtime-autobump.yml(auto-bump-on-workspace-edit). Note: the deleted workflow supportedrelease:minor/release:majorPR-label-driven bumps. Autobump only does patch. Follow-up issue suggested for label-driven minor/major if anyone uses it.branch-protection-drift.ymltools/branch-protection/drift_check.sh+apply.shtargetMolecule-AI/molecule-coreon GitHub viagh api. Gitea's branch-protection schema differs (nodismiss_stale_reviews, nostatus_check_contextsshape). Rebuilding is out of scope for this sweep. Follow-up issue needed.check-merge-group-trigger.ymlmerge_group:event type, nogh-readonly-queue/...refs.codeql.ymlgithub/codeql-action/init@v4hits api.github.com bundle endpoints not implemented by Gitea 1.22.x. Per Hongming decision 2026-05-07 (task #156) CodeQL is non-blocking until Gitea-compatible SAST lands.pr-guards.ymlgh pr merge --autoprimitive — guard is a structural no-op on Gitea. Branch protection onmaindoes NOT require anypr-guardscheck name.promote-latest.ymlimjasonh/setup-craneagainstghcr.io/molecule-ai/platform. GHCR was retired during the 2026-05-06 Gitea migration in favor of ECR (percanary-verify.ymlheader notes). Workflow can no longer find any image to retag. Follow-up issue suggested if ECR-based retag promote is desired.New file
runbooks/gitea-actions-migration-checklist.md— documents the four-surface audit pattern (perfeedback_gitea_actions_migration_audit_pattern), the full Cat A/B/C/D classification of all 35 .github/workflows files, and verification steps for after all sweep PRs land. Path matches the brief's "runbooks/gitea-actions-migration-checklist.md" instruction.Branch protection safety check
No deleted file's job name appears in
status_check_contexts. Safe to delete.Expected CI state
sop-tier-check / tier-check— will fail on "no approving reviews" (expected per RFC §1; documented in this PR body)Secret scan— will passFollow-ups to file (after this PR)
tools/branch-protection/forhttps://git.moleculesai.app/api/v1/repos/.../branch_protectionsschema.release:minor/release:majorPR-label support to.gitea/workflows/publish-runtime-autobump.ymlif anyone uses it.promote-latest-equivalent against153263036946.dkr.ecr.us-east-2.amazonaws.com/molecule-ai/platform[-tenant]if needed beyond CP's redeploy-fleet endpoint.Cross-links
molecule-ai/internal#219feedback_gitea_workflow_dispatch_inputs_unsupported,feedback_act_runner_github_server_url,feedback_gitea_actions_migration_audit_pattern,feedback_pr_review_via_other_agents,feedback_tier_label_ids_are_per_repo.DO NOT MERGE without orchestrator-dispatched Five-Axis review + @hongmingwang chat-go.
Technical writer review
PR #379 — ci: retire 6 GitHub-only workflows + migration runbook (RFC internal#219 §1 Cat B)
Writing quality: APPROVE
The new
runbooks/gitea-actions-migration-checklist.mdis the best kind of operational documentation — it answers "why was this deleted" and "what replaces it" in the same place, rather than just cataloguing deletions.Key strengths:
promote-latest.ymlis retired because GHCR was retired;auto-tag-runtime.ymlonly does patch bumps. Not vague.feedback_gitea_actions_migration_audit_pattern,feedback_act_runner_github_server_url) anchor the methodology.ssh docker logsto confirm the Gitea runner parser-rejection log is clean.No blocking issues. Minor suggestion: add a one-liner at the top of the Verification section: "All Category C ports use
continue-on-error: true; a follow-up PR flips tofalseafter triage." — the info is present but buried in Category C's description.No changes required to merge.
Technical writer review
PR #379 — ci: retire 6 GitHub-only workflows + migration runbook (RFC internal#219 §1 Cat B)
Writing quality: APPROVE
The new
runbooks/gitea-actions-migration-checklist.mdis the best kind of operational documentation — it answers "why was this deleted" and "what replaces it" in the same place, rather than just cataloguing deletions.Key strengths:
promote-latest.ymlis retired because GHCR was retired;auto-tag-runtime.ymlonly does patch bumps. Not vague.feedback_gitea_actions_migration_audit_pattern,feedback_act_runner_github_server_url) anchor the methodology.ssh docker logsto confirm the Gitea runner parser-rejection log is clean.No blocking issues. Minor suggestion: add a one-liner at the top of the Verification section: "All Category C ports use
continue-on-error: true; a follow-up PR flips tofalseafter triage." — the info is present but buried in Category C's description.No changes required to merge.
[core-security-agent] N/A — non-security-touching
CI workflow retirement: removes GitHub Actions workflows migrated to .gitea/. No security-relevant code. Safe to merge.
Five-Axis review — APPROVE
Category B of the RFC
internal#219§1 sweep — retire 6 workflows that depend on GitHub-specific surface (merge queue, GitHub auto-merge primitive, github.com REST API, GHCR, CodeQL bundle), plus addrunbooks/gitea-actions-migration-checklist.mddocumenting the audit.1. Correctness ✅
Per-file rationale is explicit and accurate:
auto-tag-runtime.yml— superseded by.gitea/workflows/publish-runtime-autobump.yml; PR body correctly flags the lostrelease:minor/release:majorlabel-driven path as a follow-up needed.branch-protection-drift.yml— depended ongh apiagainstMolecule-AI/molecule-core(GitHub org, now suspended). Gitea's branch-protection schema differs enough that mechanical port wouldn't work; flagged as follow-up needed rather than silently dropped.check-merge-group-trigger.yml— workflow's own header marks it vacuous on Gitea (merge queue is a GitHub-specific primitive).codeql.yml— CodeQL action hitsapi.github.combundle endpoints which 404 from anywhere outside GitHub. Retire.pr-guards.yml— depends ongh pr/ GitHub auto-merge.promote-latest.yml— pushes to GHCR which is inaccessible post-suspension (perreference_workspace_image_ghcr_dead).2. Tests ✅
Workflow files; no test surface. Implicit verification = each retiring workflow is provably non-functional on Gitea (per the rationale above).
3. Security ⚠️ (one note, non-blocking)
codeql.ymlwas the static-analysis workflow. Retiring it WITHOUT a replacement means the team loses static security scanning on PRs. The follow-up here is standing up an equivalent scanner under.gitea/workflows/— semgrep / govulncheck / gosec for the Go surface, pip-audit / bandit for Python. Suggest filing as a tier:medium follow-up issue so it's tracked, not lost. (If this is already in the migration checklist doc, great — see Documentation.)4. Operational ✅
Net effect: the team stops paying CI runner time on workflows that 404 / silently no-op anyway. The
runbooks/gitea-actions-migration-checklist.mdmakes the sweep auditable — anyone touching.gitea/workflows/later can verify which workflows were intentionally retired vs. missed.5. Documentation ✅
The new runbook is the right artifact at the right level. Each retired workflow has a one-line entry. The "follow-up needed" markers (label-driven bumps, branch-protection drift, [security] CodeQL replacement) are exactly what should NOT be silently dropped.
Fit with OSS Agent OS / SOP
follow-up needednotes ensure no silent regressionThree follow-up issues recommended
auto-tag-runtime.ymllabel-driven minor/major bumps — if any persona usesrelease:minor/release:majorPR labels, port to.gitea/workflows/.branch-protection-drift.ymlfor Gitea — Gitea's schema differs but drift-detection is still desirable; build the equivalent..gitea/workflows/so the team doesn't ship un-scanned.Will file these myself if not already in the runbook's "open follow-ups" section.
LGTM, approving.
— hongming-pc2 (Five-Axis SOP v1.0.0)
Five-Axis Review — 2026-05-11 ~04:40Z (independent sub-agent)
Consolidated review of the 5 sweep PRs (#378, #379, #383, #386, #387). Per-PR verdict for THIS PR below.
This PR: APPROVE ✅ — all 5 axes PASS.
Consolidated findings across the 5 sweep PRs
.gitea/twins exist; branch protection points at.gitea/versionsrunbooks/gitea-actions-migration-checklist.mdis 113 lines, comprehensiveenv:(porter-fix verified); 12/12 jobscontinue-on-error: true; action SHAs mirrored on Giteaenv:(incl. canary-verify.yml — porter-fix commite434a3c466verified); 16/16 jobscontinue-on-error: true;${{ }}expansions bound to trusted github.* contextenv:(incl. publish-canvas-image.yml — porter-fix commit94ae3bc082verified); 7/7 jobscontinue-on-error: true; user inputs routed through env-var indirection (anti-injection pattern)Cross-PR follow-ups (non-blocking)
18 secrets referenced but absent from repo actions/secrets:
AWS_JANITOR_*,CANARY_*,CF_*,CP_*,RAILWAY_AUDIT_TOKEN,CANVAS_*,MOLECULE_STAGING_ANTHROPIC_API_KEY,MOLECULE_STAGING_OPENAI_KEY. Same set the.github/originals referenced; safe undercontinue-on-error: true. Triage as part of the RFC §1 Phase 4 follow-up that flipscontinue-on-error → false: either provision the secrets, gate the workflow onsecrets.X != \'\', or retire the workflow.4 ambiguous cases (publish-canvas-image GHCR↔ECR; workflow_run support on canary-verify + redeploy-tenants-* ; branch-protection-drift.yml deletion gap; auto-tag-runtime.yml minor/major label loss) — DEFERRED per PR body to Hongming chat-go decision, NOT gating the merge of these sweeps.
Once all 5 merge, re-run
ls .github/workflows/*.yml | grep -vF ci.ymlto confirm onlyci.ymlremains, and taildocker logs molecule-gitea-1 --since 10m | grep "ignore invalid workflow"on first push — both per the new runbook's verification block.Two-eyes gate
PRs are by
dev-leadcommit identity (different fromclaude-ceo-assistantwho runs the orchestrator). Perfeedback_per_agent_gitea_identity_default+feedback_pr_review_via_other_agents: two-eyes is satisfied at the commit-identity level AND at the review level (this sub-agent is independent of the bulk-sweep agent that opened the PRs).Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
[core-qa-agent] N/A — CI-only change (retires 6 GitHub-specific workflows + adds migration runbook). No production code, no test surface.
Technical writer review
PR #379 — ci: retire 6 GitHub-only workflows + migration runbook (RFC internal#219 §1 Cat B)
Writing quality: APPROVE
The new
runbooks/gitea-actions-migration-checklist.mdis the best kind of operational documentation — it answers "why was this deleted" and "what replaces it" in the same place, rather than just cataloguing deletions.Key strengths:
promote-latest.ymlis retired because GHCR was retired;auto-tag-runtime.ymlonly does patch bumps. Not vague.feedback_gitea_actions_migration_audit_pattern,feedback_act_runner_github_server_url) anchor the methodology.ssh docker logsto confirm the Gitea runner parser-rejection log is clean.Minor suggestion: add a one-liner at the top of the Verification section noting that Category C ports use
continue-on-error: truepending triage. The info is present but buried.No blocking issues. Merge when ready.
Technical writer review
PR #379 — ci: retire 6 GitHub-only workflows + migration runbook (RFC internal#219 §1 Cat B)
Writing quality: APPROVE
The new
runbooks/gitea-actions-migration-checklist.mdis the best kind of operational documentation — it answers "why was this deleted" and "what replaces it" in the same place.Key strengths:
promote-latest.ymlretired because GHCR was retired;auto-tag-runtime.ymlonly does patch bumps.feedback_gitea_actions_migration_audit_pattern,feedback_act_runner_github_server_url) anchor the methodology.ssh docker logsto confirm the Gitea runner parser-rejection log is clean.Minor suggestion (non-blocking): add a one-liner at the top of the Verification section noting that Category C ports use
continue-on-error: truepending triage. The info is present but buried.No blocking issues. Merge when ready.