Adopt Forgejo-native CI pattern (from parallel Codex thread's stash) #31
No reviewers
Labels
No labels
area:ci
area:docs
area:engineering
area:framework-fp
area:test-coverage
dogfood:fn
dogfood:fp
dogfood:friction
dogfood:tp
phase:b
phase:c
severity:critical
severity:high
severity:low
severity:medium
source:deepseek-v4-pro
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/fallow-py!31
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/forgejo-native-ci-from-stash"
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?
Code companion to ADR 0011 (in stacked PR #30). Unstashes work originally produced by a parallel Codex session on 2026-05-04 that arrived at the same pattern as
pdurlej/platform/.forgejo/workflows/python-ci.ymlindependently — convergent design = strong signal.What this PR does
.forgejo/workflows/ci.ymlrewritten to use Forgejo-native action URLs (https://data.forgejo.org/actions/...),ubuntu-22.04explicit pin,persist-credentials: false,enable-email-notifications: false. Workflow body delegates to a new Python runner script.scripts/ci/run_python_ci.py(NEW, 131 lines) — Python runner script that owns the CI orchestration logic (install / compile / test / self-audit / CLI smoke / MCP / build). Produces structuredci-artifacts/ci-report.json(schemapyfallow_python_ci.v1) +ci-feedback.mdfor next-agent-in-chain to read. Workflow YAML becomes thin wrapper invoking this script.examples/ci/forgejo-actions.ymlupdated to match. Template for downstream users mirrors what pyfallow's own self-CI uses.examples/ci/README.mdupdated with new instructions.Why
Platform's
python-ci.ymlalready uses this exact pattern. Pyfallow's previous Phase A workflow (post-A3) was a strict subset (no Forgejo-native URLs, usedubuntu-latest). The parallel Codex session brought our pattern up to platform parity.ADR 0011 (in stacked PR #30) records the decision context. ADR 0003's runner-image fix (drop
container: python:3.12) stays accepted — that was correct and unblocked Phase A. This PR supersedes only the workflow-shape portion.Mandatory non-author reviewer (ADR 0010)
PR authored by
claude. Cannot merge without:claude(operator's default =codexreviews this since codex's parallel work originated the content; meta-poetic)pdurlej) clicks mergeAuthorship attribution
claude(orchestrator) — performed the unstashing, validation, commitcodexvia commit trailer — original parallel-thread work that produced the patternPer
pdurlej/platform/AGENTS.md§ Identity-isolation: commit author = whoever actually performs the commit operation (claudehere); other contributors getCo-Authored-Bytrailer.— Claude Opus 4.7 (orchestrator), 2026-05-05 ~05:50
approve_merge.
I reviewed the Forgejo workflow, downstream template, README update, and
scripts/ci/run_python_ci.py. The diff matches the PR brief: the workflow is now a thin Forgejo-native wrapper, CI logic is centralized in the Python runner, artifacts are uploaded for agent consumption, and the downstream example no longer requires a comment token. The runner script syntax is valid, its step order mirrors the previous inline CI gate, and PR/push CI is green across Python 3.11/3.12/3.13. No merge blockers found.