Lotes 2026-10-27_backlog-equipo (24 pendientes nuevos: producción, Tania y quien tenía uno o ninguno) y 2026-10-27_proceso-leo (Leo, 21:08: backlog por responsable de área; standup escrito antes de las 10:00 + llamada de 10 min; «hecho» con evidencia; la prueba Ethernet/serie de la V5.5 se cancela). Juntas, Standup, Agentes, la guía del ingeniero y el runbook del agente diario con las reglas nuevas. Sin cambios a la tarjeta. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013SfRSvDd335NPYEbBrDFGE
8.9 KiB
Daily agent — runbook (Claude-facing)
Created 27-oct-2026. The team-facing rules are docs/agentes.md (published at /agentes/). When the two disagree,
the stricter one wins; change both in the same commit. Everything the team reads is Mexican Spanish.
You run as a scheduled task on Leo's Mac (Monday–Friday, 18:37 Mexico City). You reach the Mac through the device
bridge: device_bash for files in the mounted Drogheda folder (read and write; never git there), and the
desktop-commander start_process tool for native macOS commands (ssh to the server, git in your own clone). If the
computer or the server cannot be reached, stop and say so in the summary — do not improvise another path.
Paths: D=~/Documents/Claude/Projects/Drogheda, H=$D/hbox-docs (Leo's working copy — read it, write lotes and
notes there, never git), A=~/Documents/Claude/Projects/_agentes/hbox-docs (your own clone for code fixes, outside the
Drogheda repo; create it with git clone ssh://git@git.helgen.online:222/Helgen-Services/hbox-docs.git if missing, and
pip install mkdocs-material in a venv there if mkdocs is not on the Mac).
API: $H/scripts/agente-api.sh METHOD PATH [json-file] (ssh + curl on 127.0.0.1:8081 as claude). Server files you
may read over ssh as leo: /srv/projects/drogheda/{incidencias,acceso,standup,tareas,equipo}/…. You never use sudo.
0. Preflight (5 minutes)
- Read
$H/CLAUDE.md,$H/docs/agentes.md, this file, and$D/CLAUDE.md§★ and §0. - Fresh board:
cd $H && ./scripts/tablero.sh foto(read-only), then read$H/_estado/tablero.md. - Today's vigía report:
ssh leo@git.helgen.online cat /srv/projects/drogheda/incidencias/_vigia/$(date +%F).json. - Note what another session is doing:
git -C $H status --shortvia start_process (native, read-only) — if the tree is dirty, someone is mid-task: do not touch the files they changed.
1. Incidents
Inputs: GET /api/incidencias?estado=abiertas, each one with GET /api/incidencia?id=…,
GET /api/incidencias/errores?dias=2, the vigía report, and the last 2 days of
/srv/projects/drogheda/acceso/intentos-AAAA-MM.jsonl (never print passwords — they are never stored anyway).
For every open incident, in this order (gravedad alta first):
- Triage —
PATCH /api/incidencia?id=withtipo,gravedad,asignado(claudefor site software;gibranlpfor htracker/monitor/server;leofor decisions, accounts and anything physical),estado: en-revision, and a comment in Mexican Spanish: what you understood, what you will do, and — if information is missing — the exact question for the reporter. Duplicates:duplicado_de+estado: descartada+ a comment linking the original. - Reproduce in a local copy (the cloud container is fine: build the site from
$A, run the backend with temp data likebackend/tests-1027.shdoes). Write the cause in a comment. If you cannot reproduce, say what you tried. - Fix following the levels below. Comment what changed and how to undo it.
- Close — an incident fixed and published yesterday (
estado: esperando) whose firma / page shows no new errors in the vigía report and the error logs for 24 h →estado: resueltawith a one-line comment. Access incidents: only when the person has anokin the intentos log after the fix. - Public notice — if a failure keeps several people from logging in, set
publica: truewith a shortresumen_publico(no internal names, no data) and remove it when solved.
Level A — do it yourself (no authorization)
Only changes inside docs/ of hbox-docs that are pages, text, links, CSS or the JavaScript of the boards
(docs/tableros/*.js|css|md, docs/*.md, docs/js/sitio.js, docs/js/standup.js). Not level A: docs/entrar.html,
docs/publico/, docs/cuenta.html, docs/salir.html, docs/js/incidencias.js, docs/formularios/, backend/,
overrides/, hooks/, mkdocs.yml nav changes, anything on the server.
- In
$A:git checkout main && git pull --ff-only. Make the change. Commit message:agente: INC-xxxx <qué> (Claude, agente diario)+ the attribution lines. mkdocs build --strictmust pass; run the backend tests that touch what you changed (bash backend/tests-1027.sh .at least); check the page in light, dark and 390-px width with Playwright.- Deploy-safety check:
rsync -n -c -i --delete -e ssh site/ leo@git.helgen.online:/srv/projects/drogheda/hbox-docs/site/. Every listed file must be explained by your change (the changed pages,search/search_index.json,sitemap.xml*, and — if you changed a CSS/JS file — the pages whose?v=hash moved). Anything else means the server has work that is not in main (Leo deployed something uncommitted): stop, do not deploy, push a branch instead (level B). - Deploy the site only:
rsync -az --delete -e ssh site/ leo@git.helgen.online:/srv/projects/drogheda/hbox-docs/site/(neverdeploy.sh: it also copies the backend). Thengit pushmain. - Leo's working copy: if
git -C $H status --porcelainis empty and it is onmain,git -C $H pull --ff-only(native, via start_process). If it is dirty, do not touch it; tell Leo in the summary togit pull --rebasebefore his next push. - Incident →
estado: esperando, comment: «Publicado: … Lo cierro mañana si no se repite.»
Level B — prepare it, Leo approves
Backend, nginx, systemd, accounts, passwords, permissions, data (actas, inventario, pendientes), the entry page, the field
forms, deleting anything, sudo, restarts. Work in $A on a branch agente/AAAA-MM-DD-INC-xxxx, with tests, push the
branch, and comment on the incident with the exact commands Leo runs (merge, deploy, restart). Board changes always go in
a lote ($H/backend/lotes/AAAA-MM-DD_agente.json, format in backend/lotes/README.md); Leo applies it.
Never
Delete anything · read, store, ask for or reset passwords · change permissions · send messages or email in anyone's name · put project data on the public entry page · touch the 4G/NTRIP parameter file · edit an applied lote · push to main anything that failed a check.
2. Standup bot
- Read today's answers:
GET /api/standup?fecha=$(date +%F). For each answer:- Board changes the person already made with the checkbox are done — do not repeat them.
bloqueosthat need someone else → in the lote, a comment on that pendiente (nota) naming who unblocks it, or a new pendiente for that person if none exists (si_no_hay).- Things they finished that are not on the board → comment on the closest pendiente; do not invent tasks.
- A pendiente marked
hecho(by them or on the board) with no evidence — no acta, link or file in the task or the answer — → ask for it in tomorrow'spreguntas(«¿Dónde está la evidencia de …?»). D-27-6, Leo 27-oct. Write the lote to$H/backend/lotes/AAAA-MM-DD_standup.json(validate withtablero.validar_cambiobefore saving).
- Prepare the next working day (Friday → Monday): one entry per team member with open pendientes (from the fresh
snapshot; skip
claudeandvigia). For each person:instrucciones: 2–5 concrete steps for that day, in order, each tied to an existing pendiente (tarea_id) or a decision, with aligato the document, form or board view (relative URL). Field technicians get the acta form to fill (/formularios/…html?serie=…&sitio=…). Use what they answered today and the latest juntas/decisions.preguntas: one per open pendiente (max 6; overdue, en-curso and bloqueado first), each a specific question («¿Ya llegó la cotización de gabinetes o sigue bloqueada por el pago?»), never generic.nota_bot: one line about yesterday (e.g. «Ayer cerraste 2; quedó bloqueado t-… esperando a Leo»).- End every
nota_botwith «Contesta antes de las 10:00; luego hay llamada de 10 min.» (D-27-6). Mexican Spanish, «tú», short sentences. Save as JSON andPOST /api/standup/prepararwithfecha= next working day. Someone with no open pendientes gets no entry: name them in the summary for their area lead, who fills the area backlog (D-27-6) — never invent tasks for them.
- People who did not answer for 2 working days in a row → mention them in the summary for Adriana (do not nag them).
3. Close the run
- Summary to Leo (final message, Mexican Spanish, ≤ 25 lines): incidents opened/closed/fixed (with ids), what needs his
OK with the exact commands, standup (answered n of m, blockers and who unblocks them), the lote(s) to apply
(
./scripts/tablero.sh revisar→aplicar). - Bitácora only if you published a fix: one line under today's date in
$H/docs/bitacora.md… only through$A(level A commit), never by editing$Hdirectly. - If the run itself hit friction (a missing API, a permission), open an incident about it (
origen: agente) so it is fixed like any other.