Ops automation

Hourly feedback triage

scripts/feedback-triage.mjs runs hourly from the host crontab (installed

2026-07-07, guarded by flock):


0 * * * * flock -n /tmp/paidup-feedback-triage.lock /usr/bin/node /srv/shared/Projects/paidup/scripts/feedback-triage.mjs >> /srv/paidup/logs/feedback-triage.log 2>&1

What it does per run:

feedback table through docker exec paidup-postgres psql (the DB has no

published port; DATABASE_URL is read from /srv/paidup/.env).

unit-tested in scripts/feedback-triage.test.mjs): kind=bug always,

otherwise defect-language heuristics.

isolated git worktree under /srv/paidup/triage-worktrees on branch

fix/feedback-<id> and a codex exec --full-auto investigation with a

20-minute budget. Commits present → branch kept for human review; no

commits / codex failure → worktree and branch are dropped.

into meta.triage (bug_like, outcome, branch, detail,

triaged_at).

(from env or /srv/paidup/.env); logged and skipped when unset.

Review fix branches with git branch --list 'fix/feedback-*'; merge or drop.