s1: flock autodeploy+auto-merge versionados + guard CI/no-/srv #58

Open
ci-bot wants to merge 2 commits from r31-s1-lock-ci into main
Collaborator

S1 (r31): fix del incidente 02:06:29Z.

Causa raíz (evidencia): el autodeploy desplegaba el merge #12 (sudo systemctl restart desde PWD=/srv/bitcoinhotels a las 02:06:23, journal) mientras mi rama e2 se creaba en el MISMO árbol (commit b3fad57 a las 02:06:22). El check de identidad del autodeploy vio HEAD=b3fad57 ≠ build 95fd559 → rollback con OLD=ea83ae6 (HEAD capturado pre-deploy) → pisó la rama e2. El runner de CI es inocente: job 201 corrió 02:08:08 con "Working directory is /root/.cache/act/ad9bb11e508e14dc/hostexecutor" (log del job) — nunca en /srv.

Fixes ya instalados en el VPS (este PR los versiona):

  1. flock compartido /run/lock/cayce-git-ops.lock entre autodeploy (-n, salta ciclo) y auto-merger (-w 240). Probado: journal 03:00:01 "auto-merge (u otra op) mantiene el lock — paso de este ciclo"; run manual adquirió lock y fluyó normal.
  2. Runner ya no corre como root: act-runner.service User=ci-runner + config /etc/cayce/act-runner.yaml con workdir_parent=/var/lib/gitea-act/work (dedicado, fuera de /srv). Los jobs no pueden leer /srv/*/.env (el probe de isolation.yml lo verifica en este PR).
  3. Guard en ci.yml: workspace bajo /srv/* → job revienta.
  4. Zombies parados+disabled: bitcoinhotels.service (legacy, 10.514 restarts crash-loop EADDRINUSE 3002 contra producción) y gitea-act-runner.service (8.679 restarts por lock del .runner). Producción verificada 200 antes/después.

NOTE: toca paths protegidos (cayce-auto-merge) → requiere TU merge.

S1 (r31): fix del incidente 02:06:29Z. **Causa raíz (evidencia):** el autodeploy desplegaba el merge #12 (sudo systemctl restart desde PWD=/srv/bitcoinhotels a las 02:06:23, journal) mientras mi rama e2 se creaba en el MISMO árbol (commit b3fad57 a las 02:06:22). El check de identidad del autodeploy vio HEAD=b3fad57 ≠ build 95fd559 → rollback con OLD=ea83ae6 (HEAD capturado pre-deploy) → pisó la rama e2. **El runner de CI es inocente**: job 201 corrió 02:08:08 con "Working directory is /root/.cache/act/ad9bb11e508e14dc/hostexecutor" (log del job) — nunca en /srv. **Fixes ya instalados en el VPS (este PR los versiona):** 1. flock compartido /run/lock/cayce-git-ops.lock entre autodeploy (-n, salta ciclo) y auto-merger (-w 240). Probado: journal 03:00:01 "auto-merge (u otra op) mantiene el lock — paso de este ciclo"; run manual adquirió lock y fluyó normal. 2. Runner ya no corre como root: act-runner.service User=ci-runner + config /etc/cayce/act-runner.yaml con workdir_parent=/var/lib/gitea-act/work (dedicado, fuera de /srv). Los jobs no pueden leer /srv/*/.env (el probe de isolation.yml lo verifica en este PR). 3. Guard en ci.yml: workspace bajo /srv/* → job revienta. 4. Zombies parados+disabled: bitcoinhotels.service (legacy, 10.514 restarts crash-loop EADDRINUSE 3002 contra producción) y gitea-act-runner.service (8.679 restarts por lock del .runner). Producción verificada 200 antes/después. NOTE: toca paths protegidos (cayce-auto-merge) → requiere TU merge.
ci-bot added 1 commit 2026-11-03 03:03:20 +00:00
s1: autodeploy+auto-merge con flock compartido (versionados) + guard de workflow
isolation-test / probe (pull_request) Failing after 0s
ci / lint-test (pull_request) Failing after 1s
5cc3fd6419
- Incidente 02:06:29Z: el rollback del autodeploy (git reset --hard $OLD)
  pisó la rama e2-fuentes-y-sellos porque el árbol cambió de branch a mitad
  de deploy. Causa: ninguna exclusión mutua entre autodeploy, auto-merger y
  ops manuales sobre los mismos árboles.
- Lock: /run/lock/cayce-git-ops.lock (tmpfiles.d, 0664 root:ubuntu).
  autodeploy flock -n (salta ciclo), auto-merge flock -w 240 (espera).
- Guard en ci.yml: un job cuyo workspace caiga bajo /srv/* revienta.
CODEOWNERS rules requested review from pattern 2026-11-03 03:03:20 +00:00
cayce added 1 commit 2026-11-03 03:10:38 +00:00
ci: retrigger (workdir_parent absoluto en el runner)
isolation-test / probe (pull_request) Successful in 0s
ci / lint-test (pull_request) Successful in 1s
6b1b2f83b7
All checks were successful
ci / lint-test (pull_request) Successful in 1s
Required
Details
isolation-test / probe (pull_request) Successful in 0s
This pull request has official review requests.
You are not authorized to merge this pull request.
This branch is out-of-date with the base branch
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin r31-s1-lock-ci:r31-s1-lock-ci
git checkout r31-s1-lock-ci
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cayce/cayce-ops#58