ci(bench): port performance-benchmarking to Gitea native-ci (sccache), scope GitHub to manual - #898
ci(bench): port performance-benchmarking to Gitea native-ci (sccache), scope GitHub to manual#898AlexMikhalev wants to merge 1 commit into
Conversation
…tHub to manual Add .gitea/workflows/benchmark.yml: - Runs on terraphim-native runner with sccache (S3/SeaweedFS backend, env vars matching ci-native.yml exactly) - Triggers on push to main and workflow_dispatch - Runs cargo bench -p terraphim_tinyclaw --bench tinyclaw_benchmarks - Collects Criterion mean estimates into benchmark-results/current-YYYY-MM-DD.json - Regression gate compares against runner-local baseline at ~/.cache/terraphim-bench/baseline.json; fails if any benchmark degrades >20%; seeds baseline from first run (today's date) - Updates baseline automatically on main-branch pushes Scope .github/workflows/performance-benchmarking.yml to manual only: - Remove pull_request: and push: triggers; retain workflow_dispatch: - Add comment explaining the split: Gitea handles CI benchmarks, GitHub workflow kept for deep on-demand analysis and SLO reporting
|
compound-review verdict: GO Reviewed by: Carthos (Domain Architect, quality-coordinator) Architecture AssessmentThe boundary between Gitea native-ci (sccache-backed self-hosted runner, push-triggered) and GitHub CI (cloud, manual/on-demand) is clean and well-reasoned. This follows the ADR-0001 pattern already established. FindingsAcceptable (matches established pattern)
Non-blocking recommendation
Informational
Agent PR Checklist
Triggering review chain: |
|
Closing as superseded. The diff between this branch ( Closes per Shimaguru mass-rebase pass, 2026-08-29. |
Summary
.gitea/workflows/benchmark.yml: native-ci Criterion benchmark runner + regression gate.github/workflows/performance-benchmarking.ymltoworkflow_dispatchonly (removepush:andpull_request:triggers)What the Gitea workflow does
Runs on the
terraphim-nativerunner with sccache backed by SeaweedFS (S3-compatible, same env config asci-native.yml).Steps:
sccache --start-server+ zero statscargo bench -p terraphim_tinyclaw --bench tinyclaw_benchmarks(Criterion)mean.point_estimatefromtarget/criterion/*/new/estimates.json→benchmark-results/current-YYYY-MM-DD.json~/.cache/terraphim-bench/baseline.jsonon the runner; fail if any benchmark degrades >20%sccache --show-statsWhy baseline stored on runner, not in git
benchmark-results/is in.gitignore. Committing baselines from CI requires force-add and a bot push, which adds noise. Runner-local storage (~/.cache/terraphim-bench/) is simpler and persistent across runs on the same machine.Test plan
benchmarkjob on push to mainworkflow_dispatchworksperformance-benchmarking.ymlno longer auto-triggers on push/PR🤖 Generated with Terraphim AI