7.7 KiB
STATUS — cc-ci Phase 5 Builder
Phase: 5 — Verify /recipe-upgrade + testme-on-pr.sh end-to-end flow
SSOT: /srv/cc-ci/cc-ci-plan/plan-phase5-verify-upgrade-flow.md
Started: 2026-05-31
Current focus
Minimal enrollment fix for lasuite-meet is committed (f28a2a3). Current work is verifying the live
bridge rollout so Phase-5 V5/V6 can continue on lasuite-meet PR #2. Verification is currently paused
on host reachability: after nixos-rebuild test --flake path:/root/builder-clone#cc-ci, cc-ci
stopped answering Tailscale SSH.
Fixes applied (A5-1, A5-2, related)
A5-2 FIX: bridge/bridge.py commit 5d48436: post_commit_status() added. Bridge POSTs
Gitea commit status on recipe PR's head SHA (pending→trigger, success/failure→finish).
A5-1 FIX: nix/modules/bridge.nix commit 5d48436: recipe-maintainers/custom-html-tiny
added to POLL_REPOS. Bridge rebuilt: cc-ci-bridge:3761c4221042 (via nixos-rebuild build --flake path:/root/builder-clone#cc-ci on cc-ci + cc-ci-reconcile-bridge).
open-recipe-pr.sh FIX (orchestrator repo): 0df57c6 — replaced python3 with jq (cc-ci
has jq, not python3).
testme-on-pr.sh FIX (orchestrator repo): 6910b19 — reads cc-ci/testme context URL
instead of first-status URL (fixes wrong BUILD URL when multiple statuses exist).
A5-3 FIX (orchestrator repo, uncommitted): testme-on-pr.sh now ignores a pre-existing
cc-ci/testme status on the same PR head after POST=1 until the status tuple changes, so a
fresh re-!testme no longer returns a stale prior GREEN/build URL.
ci-test-review helper FIX (orchestrator repo, uncommitted): verify-pr.sh and
run-all-recipes.sh now resolve the live host checkout dynamically (/root/builder-clone
preferred, /root/cc-ci fallback) instead of hard-coding /root/cc-ci.
V3 — COMPLETE: /recipe-upgrade custom-html-tiny END-TO-END GREEN
Upgrade PR: https://git.autonomic.zone/recipe-maintainers/custom-html-tiny/pulls/2
- Branch:
upgrade-1.1.0+2.42.0, head sha156a49ac - Changes: compose.yml sws 2.38.0→2.42.0; compose.git-pull.yml alpine/git v2.36.3→v2.52.0; version 1.0.1+2.38.0→1.1.0+2.42.0
- !testme posted → Drone build #29 triggered → SUCCESS (install PASS, upgrade PASS, backup N/A)
- Commit status:
cc-ci/testme state=success target=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/29 POST=0 /srv/cc-ci/.claude/skills/recipe-upgrade/testme-on-pr.sh custom-html-tiny 2→VERDICT=GREEN BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/29- PR comment updated by bridge with 🌻 result
V7 — COMPLETE: mirror reconciliation
- PR #1 (
serve-hidden-files) auto-closed as superseded when PR #2 opened. - PR #4 (
already-in-upstream-v7) auto-closed as merged-upstream. - Mirror
mainforce-synced to upstreammain(435df8fc).
V1/V2 partial evidence:
- V1: !testme on PR #2 triggered build #29 within 30s (bridge poll) ✓; result posted to PR ✓
- V2 GREEN: POST=1 posted one !testme; POST=0 polled and returned VERDICT=GREEN BUILD= ✓
- V2 RED: poll-only on PR #5 returned VERDICT=RED BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/34 ✓
- V2 rerun edge:
POST=1 MAX_WAIT=80 INTERVAL=5 /srv/cc-ci/.claude/skills/recipe-upgrade/testme-on-pr.sh custom-html-tiny 5now returns the fresh rerun build#43(not the stale prior#37); PR comments4 -> 5✓
V4 — COMPLETE: 2-run regression loop (within the 3-run budget)
Regression PR: https://git.autonomic.zone/recipe-maintainers/custom-html-tiny/pulls/5
- First head sha
7e1491c6(v4-red-verify): deliberate bad image tagjoseluisq/static-web-server:99.0.0-bad-tag POST=0 /srv/cc-ci/.claude/skills/recipe-upgrade/testme-on-pr.sh custom-html-tiny 5→VERDICT=RED BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/34- Build #34 result: install PASS, upgrade FAIL, clean_teardown=true, no_secret_leak=true
- Fix pushed on the same PR branch: head sha
4bd8416a, restoring the known-good upgrade files fromupgrade-1.1.0+2.42.0 - Re-
!testmeon PR #5 → Drone build #37 →VERDICT=GREEN BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/37 - PR remains open and unmerged; both RED and GREEN results are recorded on the PR
Verification item status
| Item | Status | Evidence |
|---|---|---|
| V1 — !testme trigger + result-back | PARTIAL | build #29 triggered in <30s; commit status + PR comment posted ✓ |
| V2 — testme-on-pr.sh reads verdict | DONE | GREEN ✓ (build #29/#35); RED ✓ (build #34); rerun fix ✓ (build #43) |
| V3 — /recipe-upgrade sandbox GREEN | DONE | custom-html-tiny PR#2; build #29 SUCCESS |
| V4 — 3-iter regression loop | DONE | custom-html-tiny PR#5; build #34 RED, build #37 GREEN |
| V5 — stale-test DEFAULT = comment | TODO | |
| V6 — --with-tests opens+verifies cc-ci test PR | TODO | |
| V7 — mirror reconciliation | DONE | PR#1 superseded, PR#4 merged-upstream, main=upstream ✓ |
| V8 — /upgrade-all DEFAULT run | TODO | |
| V8a — cc-ci-upgrader agent | TODO | |
| V9 — cleanup | TODO |
V5/V6 groundwork in progress
- Added orchestration helpers in
/srv/cc-ci-orch/.claude/skills/:recipe-upgrade/post-pr-comment.sh— post explanatory/cross-link PR comments via Gitea APIci-test-review/open-cc-ci-pr.sh— open/updaterecipe-maintainers/cc-ciPRs from a dedicated branch
- Live candidate check:
ssh cc-ci "abra recipe upgrade n8n -m -n"shows a real n8n upgrade path (n8nio/n8n 2.20.6 -> 2.23.1,pgautoupgrade 17-alpine -> 18-alpine). - Live recipe PR proof:
https://git.autonomic.zone/recipe-maintainers/n8n/pulls/2(upgrade-3.3.0+2.23.1, headc8d27a2).!testmebuild #47 returnedVERDICT=GREEN BUILD=https://drone.ci.commoninternet.net/recipe-maintainers/cc-ci/47. - Conclusion:
n8nis a good sandbox for V5/V6, but this real upgrade did not naturally surface the stale-test path. Next step is to seed the stale-test case explicitly on a sandbox/scratch branch per Phase 5 §2, then exercise DEFAULT comment-only and--with-testsflows against that seeded case. - Second live candidate check:
cryptpadapp imageversion-2026.2.0 -> version-2026.5.1plusnginx 1.29 -> 1.31on PRhttps://git.autonomic.zone/recipe-maintainers/cryptpad/pulls/3(upgrade-0.5.5+v2026.5.1, head9db61d3) also went GREEN on!testmebuild#50. - Additional live finding:
lasuite-meethas a real upgrade path (v1.16.0 -> v1.17.0), but its PRhttps://git.autonomic.zone/recipe-maintainers/lasuite-meet/pulls/2stayedVERDICT=PENDING BUILD=?across repeatedPOST=0polls becauserecipe-maintainers/lasuite-meetis not in the bridge's enrolled poll list. That makes it unusable for V5/V6 until explicitly enrolled. - Enrollment fix authored and pushed:
f28a2a3 fix(bridge): enroll lasuite-meet for !testmeaddsrecipe-maintainers/lasuite-meettonix/modules/bridge.nixPOLL_REPOS.
Verification next step
- When
ssh cc-cireturns, verify the live bridge poller logs includerecipe-maintainers/lasuite-meet, then re-runPOST=1/POST=0 /srv/cc-ci/.claude/skills/recipe-upgrade/testme-on-pr.sh lasuite-meet 2.
Phase 5 gates
(None claimed yet.)
Blocked
cc-cihost is currently unreachable over Tailscale afternixos-rebuild test --flake path:/root/builder-clone#cc-ci(used to activate thelasuite-meetbridge enrollment without touching the bootloader). Current probes from the orchestrator:ssh cc-ci ...->connect to host 100.95.31.88 port 22: Connection timed outtailscale statusshows100.95.31.88 cc-ci ... active; relay "nue"; offlinetailscale ping -c 3 cc-ci->no replyThe code change is pushed; live verification is blocked until host reachability returns.