fix(binjovi-flux-deployer): let the Codeberg observation outlast Codeberg's read lag #365

Merged
binjovi-bot merged 1 commit from fix/flux-deployer-codeberg-observe into trunk 2026-09-14 20:21:40 +00:00
Owner

What

binjovi-flux-deploy pushes the released revision to Codeberg main, then observes it there before asking Flux to reconcile. The observe loop was five reads three seconds apart. Codeberg's read path lags its write path by more than that: every seanfarm deploy today failed its first attempt ~16 s after the push (push status 0) and passed on retry-deploy in six seconds once the ref was visible.

  • New confirm_codeberg_main URL REVISION PUSH_STATUS: up to 30 reads, 3 s apart (CODEBERG_OBSERVE_ATTEMPTS); the failure names the read count, push status and last value seen.
  • The observation is kept (a push status is not proof); only its bound changed.
  • VERSION 10 → 11. scripts/check-binjovi-flux-deployer.sh drives the function with a stubbed git that shows the ref on the ninth read (red before, green after) and proves the bound still fails closed.

Follow-up

sean/binjovi pins build/binjovi-flux-deployer:v10@sha256:0431ab… in its Dockerfile (two FROM lines) and container_contract_test.exs; that bump follows once v11 is published.

https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6

## What `binjovi-flux-deploy` pushes the released revision to Codeberg `main`, then observes it there before asking Flux to reconcile. The observe loop was five reads three seconds apart. Codeberg's read path lags its write path by more than that: every seanfarm deploy today failed its first attempt ~16 s after the push (push status 0) and passed on `retry-deploy` in six seconds once the ref was visible. - New `confirm_codeberg_main URL REVISION PUSH_STATUS`: up to 30 reads, 3 s apart (`CODEBERG_OBSERVE_ATTEMPTS`); the failure names the read count, push status and last value seen. - The observation is kept (a push status is not proof); only its bound changed. - `VERSION` 10 → 11. `scripts/check-binjovi-flux-deployer.sh` drives the function with a stubbed `git` that shows the ref on the ninth read (red before, green after) and proves the bound still fails closed. ## Follow-up `sean/binjovi` pins `build/binjovi-flux-deployer:v10@sha256:0431ab…` in its `Dockerfile` (two `FROM` lines) and `container_contract_test.exs`; that bump follows once v11 is published. https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
fix(binjovi-flux-deployer): let the Codeberg observation outlast Codeberg's read lag
All checks were successful
binjovi/ci Binjovi completed the frozen plan
2b870c7f10
Every seanfarm deploy today failed its first attempt and passed on
retry-deploy. The deploy record said only flux_deployment_failed; the native
task said "exited with status 1" about sixteen seconds after it was claimed.
Sixteen seconds is the push plus the old observe loop: five reads of Codeberg
main three seconds apart. The push had returned 0. Codeberg's read path had
not caught up with its write path, the loop gave up, and the retry thirty
seconds later found the ref where it belonged and passed in six seconds.

The observation stays -- a push status is not proof, independent observation
is the rule -- but it now outlasts the lag: confirm_codeberg_main reads up to
thirty times, three seconds apart (CODEBERG_OBSERVE_ATTEMPTS), and its failure
names the count, the push status and the last value seen instead of a bare
"did not contain". The check script drives the function with a stubbed git
that shows the ref on the ninth read, and proves the bound still fails
closed.

Version 10 -> 11. sean/binjovi pins this image in its Dockerfile; that bump
follows in the same sitting.

Claude-Session: https://claude.ai/code/session_01XdBRc9CHgFhAxCyHbdVtt6
binjovi-bot deleted branch fix/flux-deployer-codeberg-observe 2026-09-14 20:21:41 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
sean/builder-images!365
No description provided.