Commit Graph

89 Commits

Author SHA1 Message Date
288cdeeb47 review: close A2 (live: default janitor spares fresh orphan; janitor(0) reaps env-less orphan via reconstruction) — all A1-A4 closed
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 10:44:00 +01:00
4b204930a3 review: D10 5/6 VERIFIED via real !testme (3-stage green + outcome-reflected); 6th (lasuite upgrade) blocked on registry creds
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 10:41:29 +01:00
6232d2649c STATUS: feature-complete except 6th D10 recipe; DONE gated on registry creds + Adversary
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 10:36:09 +01:00
1257542d01 BACKLOG: M9 docs complete (D9); M10 5/6 real-!testme green, lasuite gated on registry creds
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 10:35:04 +01:00
9b58fd0dfb M9/D9: add architecture.md + runbook.md — docs set complete
All checks were successful
continuous-integration/drone/push Build is passing
architecture.md: components, the !testme flow, network/TLS, resource safety, enrollment.
runbook.md: where to look, common failure modes (timeout/rate-limit/auth/skip/health/data), orphan
cleanup, re-trigger, cancel. Completes the D9 doc set (README+install+enroll+secrets+arch+runbook).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 10:34:37 +01:00
7eec8b3efd lasuite: halt retries pending Docker Hub creds (3rd rate-limit confirmation); pivot to M9
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 10:33:00 +01:00
8aaeb29187 review: independently confirmed Docker Hub rate-limit (remaining=1/100) gating lasuite upgrade — real A1 blocker, not harness defect
Some checks reported errors
continuous-integration/drone/push Build is passing
continuous-integration/drone Build was killed
2026-05-27 10:24:44 +01:00
dc5aca90bd M10 finding: Docker Hub rate limit blocks lasuite-docs upgrade — A1 registry creds needed (5/6 green)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 10:09:23 +01:00
432487f4e8 M10: 5/6 recipes green via real !testme; lasuite-docs upgrade failed (retrying)
Some checks reported errors
continuous-integration/drone/push Build is passing
continuous-integration/drone Build was killed
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 09:31:49 +01:00
ed3f087875 M10: real-!testme path proven on custom-html (build #84, 3 stages green via PR)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 08:35:14 +01:00
4d5f7e25c6 fix: abra app upgrade -o (offline) — was 401'ing fetching tags from the private mirror origin
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 08:31:40 +01:00
a2f3b14745 fix: upstream tag fetch needs explicit refspec (bare --tags errors 'no remote HEAD')
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is failing
git fetch --tags <url> without a refspec errors 'couldn't find remote ref HEAD'; use
'refs/tags/*:refs/tags/*'. Verified: brings custom-html's 18 upstream version tags into the mirror
PR clone so the upgrade stage finds a previous published version (was skipping).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 08:28:22 +01:00
c277029f84 M10/D10: enable real-!testme path — fetch upstream tags + enroll 6 recipes in POLL_REPOS
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
fetch_recipe (SRC+REF/PR path) now read-only fetches published version tags from the public upstream
into the mirror clone, so the upgrade stage finds a previous published version (mirror PR branches
carry no tags → upgrade would skip). Guardrail-safe: only fetches tags, never pushes to the recipe
repo; plain git so the bot token isn't sent to upstream. Adds the 6 D10 recipes to the bridge
POLL_REPOS so !testme on their PRs triggers runs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 08:21:43 +01:00
27cce50f4c review: M8/D7 PASS — overview matches reality (6 recipes, corroborated build #s), badges, PR outcome reflection
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 08:11:32 +01:00
38f83c85ea M8/D7 gate CLAIMED: PR-comment outcome reflection verified; dashboard live
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 08:04:53 +01:00
2c8ee4297c M8/D7: bridge reflects final pass/fail onto the PR comment + content-hash image tag
Some checks failed
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is failing
After triggering a build, the bridge spawns a watcher thread that polls the Drone build to
completion and edits its run-link PR comment to  passed /  <status> (Gitea PATCH
issues/comments/{id}, verified). post_comment now returns the comment id. Also gives the bridge
image a content-hash tag so the swarm service actually rolls on bridge.py changes (was stuck on
:latest). Completes the D7 'PR comment reflects outcome' requirement.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 08:00:40 +01:00
6bb3df0139 review: M7/D6 PASS — secret-grep clean across logs+dashboard+git; sops rotation doc matches reality
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 07:55:33 +01:00
537fd47818 M7/D6 gate CLAIMED: rotation doc + redaction; M6.5 PASS recorded
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:45:19 +01:00
fc07d15800 M7/D6: secrets rotation doc + log redaction filter
All checks were successful
continuous-integration/drone/push Build is passing
docs/secrets.md documents the 3 secret classes (A1 external, A2 internal-generated, B recipe-app),
the sops-nix decryption chain, and rotation procedures for each (cert version bump, sops re-encrypt +
swarm-secret version bump, recipe-app ephemeral). run_recipe_ci streams each stage's output through a
redaction filter that masks any /run/secrets/* value (>=8 chars) before it reaches Drone logs —
belt-and-suspenders over 'harness never prints secrets + abra doesn't echo'. Live streaming + exit
code preserved (locally tested). Recipe-ci clones cc-ci fresh per build, so this applies next run.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:44:53 +01:00
b832a8d844 STATUS/BACKLOG: M8 dashboard overview+badges live; remaining = PR-outcome reflection, M7, M9
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:27:40 +01:00
c39d4fb936 M8/D7: dashboard overview + badges live at ci.commoninternet.net (verified via gateway)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:27:02 +01:00
307c7dc91e review: M6.5 PASS — all 6 recipes 3-stage green (Drone builds corroborated) + D5 (no harness surgery) + bluesky-swap documented
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 07:24:43 +01:00
2f3d1df1c7 dashboard: content-hash image tag so stack deploy rolls on code change (not stuck on :latest)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:24:21 +01:00
9ede87c7cc dashboard: don't list the cc-ci repo itself as a recipe row (Adversary !testme noise)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:20:42 +01:00
60d917646b M8/D7: results dashboard — overview + SVG badges at ci.commoninternet.net
All checks were successful
continuous-integration/drone/push Build is passing
Stdlib HTTP service (like the bridge): polls the Drone API for recipe-CI builds (event=custom),
groups latest-run-per-recipe, renders a YunoHost-CI-like overview table with pass/fail/running
badges + links to the canonical Drone run, plus /badge/<recipe>.svg. Nix-built OCI image, swarm
service on proxy, traefik Host(ci.commoninternet.net) (the bridge's /hook rule stays higher
priority by length). Reuses the Drone token (read-only). Reconcile oneshot like bridge/drone.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:17:12 +01:00
8b4dc16227 M6.5: n8n canonical Drone #63 success — all 6 D10 recipes green via pipeline
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:14:51 +01:00
91b241f89e M6.5 CLAIMED: n8n (recipe #6) full 3-stage green — all 6 D10 recipes done across all categories
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 07:09:15 +01:00
d4f78e374a BACKLOG: recipe #6 = n8n (bluesky swapped); dedupe M6.5 lines
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:49:35 +01:00
1cc225949e M6.5: lasuite-docs canonical Drone #57 success (5 recipes green via pipeline)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:49:09 +01:00
032f314eff M6.5: enroll n8n (recipe #6, workflow automation) — tests authored (single-service, .n8n volume)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:48:39 +01:00
689913b140 DECISIONS: D10 #6 bluesky-pds (TLS-passthrough) swapped to n8n — caddy self-ACME conflicts with no-ACME design
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:42:37 +01:00
69c3cf9574 M6.5: lasuite-docs (recipe #5, multi-service+S3) full 3-stage green; TIMEOUT fix; Drone #57 in flight
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:41:01 +01:00
daf67e53b9 M6.5: enroll lasuite-docs (recipe #5, multi-service + S3/MinIO) — install verified green
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
9-service stack (frontend/backend/celery/y-provider/docspec/postgres/redis/minio/nginx) converges
9/9 and serves the SPA; install 2 passed on host. Root-caused a deploy timeout: cold-pulling ~9
large images exceeds abra's default 300s convergence TIMEOUT -> bumped to 900 via EXTRA_ENV (the
generic per-recipe mechanism, no harness surgery). upgrade/backup use a postgres marker (docs/docs)
exercising the pg_backup.sh DB-dump hook; verifying next.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 06:32:23 +01:00
7558654d98 review: reconciliation — all gates M0-M6 PASS (<24h); STATUS CLAIMED strings stale; M6.5 in-flight, no open claim
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 06:18:07 +01:00
b2bf51f754 review: M6.5 running evidence — cryptpad #46 + matrix-synapse #51 3-stage corroborated (4 recipes green)
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 06:13:51 +01:00
79550d3887 M6.5: matrix-synapse canonical Drone run #51 success (4 recipes now green via pipeline)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 05:56:31 +01:00
d5c79773d4 M6.5: matrix-synapse (recipe #4) full 3-stage green on host (postgres-marker DB-hook); Drone #51 in flight
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 05:46:04 +01:00
d6a8f421a7 M6.5: enroll matrix-synapse (recipe #4, DB+media/large-volume) — install verified green
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
install 2 passed on host (~2.7m): synapse client API 200 + real versions JSON, no extra config
(SYNAPSE_SERVER_NAME=DOMAIN). upgrade/backup author postgres-marker assertions exercising the
recipe's pg_backup.sh dump/restore hook (the meaningful matrix data path); verifying next.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 05:38:40 +01:00
9b5910bef8 review: close A3 (verified teardown reaps env-less orphan via docker fallback); A2 mechanism verified, live janitor sweep pending idle
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 05:02:40 +01:00
2a288cac08 M6.5: cryptpad canonical Drone run #46 success (3 recipes now green via pipeline)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 05:01:57 +01:00
daa0a7e6c4 M6.5: cryptpad (recipe #3) full 3-stage green on host; record set_env/RESTIC backup fix
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 04:56:12 +01:00
451cca3ebd fix: set_env newline-safe — RESTIC_REPOSITORY was glued onto a comment line (backups broke)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
backup-bot-two's .env.sample ends with a newline-less comment, so set_env's bare
append concatenated RESTIC_REPOSITORY onto it (commenting it out). The backupbot
container then lacked RESTIC_REPOSITORY and 'abra app backup create' KeyError'd —
breaking the backup stage for recipes without a custom backup hook (cryptpad).
set_env now ensures a trailing newline before appending (applied to drone.nix too,
same latent bug). Re-verify keycloak backup, which earlier passed off an older deploy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 04:50:16 +01:00
26cbc06120 review: M6 PASS — custom-html 3-stage + keycloak full 3-stage (build #39 corroborated) + D4 recipe-local (own run) + D5
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 04:43:41 +01:00
ebb4c0cbca M6.5: enroll cryptpad (recipe #3, stateful/no-DB) + generic per-recipe EXTRA_ENV
All checks were successful
continuous-integration/drone/push Build is passing
Adds a shared-harness EXTRA_ENV mechanism (recipe_meta.py dict or domain-callable),
applied in deploy_app at every deploy path — no per-recipe harness surgery (D5).
cryptpad uses it for its required distinct SANDBOX_DOMAIN. Tests assert data
survival via a marker file in the backed-up cryptpad_data volume (exec_in_app,
since cryptpad data isn't HTTP-served).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 04:41:44 +01:00
2ade2914c1 STATUS: M3 PASS; keycloak 3-stage green; cryptpad (recipe #3) next with recon
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 04:12:24 +01:00
180094a366 M6.5: keycloak full 3-stage green via recipe-ci pipeline (build #39, DB data survival)
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 04:10:35 +01:00
fa410ea4c6 review: D6 leak scan extended to recipe-CI build logs — clean (no app-secret leak)
All checks were successful
continuous-integration/drone/push Build is passing
2026-05-27 04:04:51 +01:00
d6f0f67d49 review: M3 PASS (live: !testme 12s trigger, re-run, !testmexyz no-trigger, org-auth); close A4 (cap=1 mitigates)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2026-05-27 03:14:49 +01:00
b477274e67 STATUS/JOURNAL: A4 mitigated by capacity=1; A2/A3 fixed-in-code, awaiting Adversary re-test
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 03:10:36 +01:00
17e9896516 STATUS/JOURNAL/BACKLOG: recipe-ci integration green (build #33), bridge→Drone→harness wired
All checks were successful
continuous-integration/drone/push Build is passing
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-27 03:08:32 +01:00