Commit Graph
100 Commits
Author SHA1 Message Date
autonomic-botandClaude Opus 4.8 02ffbd9336 status(aotest): ## DONE — all 5 DoD Adversary-verified PASS @2026-06-13T19:00Z (cdcece9), no VETO
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 19:03:08 +00:00
autonomic-bot 034e85d786 chore(aotest): Adversary JOURNAL — all DoD PASS, phase complete
continuous-integration/drone/push Build is failing
2026-06-13 19:02:32 +00:00
autonomic-bot 3568754e64 review(aotest): ALL DoD PASS @2026-06-13T19:00Z — phase DONE
continuous-integration/drone/push Build is failing
2026-06-13 19:02:06 +00:00
autonomic-botandClaude Opus 4.8 c838c9250d claim(aotest): test suite pushed (deliverable cdcece9) — unit+claude+opencode smokes PASS, isolated, awaiting Adversary
continuous-integration/drone/push Build is failing
Unit 51/51 PASS, claude smoke PASS, opencode smoke PASS (own :4097), no
leftover aotest-* sessions/ports, cc-ci sessions intact. Cold-verified from
/tmp clone inside nix develop. HOW/EXPECTED/WHERE in STATUS-aotest.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 18:59:11 +00:00
autonomic-bot 1c15cbb934 chore(aotest): add code orientation notes to REVIEW — break-it checklist ready
continuous-integration/drone/push Build is failing
2026-06-13 18:47:18 +00:00
autonomic-bot 68c171b0cd chore(aotest): init Adversary phase files — orientation done, awaiting Builder tests/ push
continuous-integration/drone/push Build is failing
2026-06-13 18:45:25 +00:00
autonomic-bot dfe0ffac65 review(aoeng): ALL DoD PASS @2026-06-13T18:41Z — phase DONE
continuous-integration/drone/push Build is failing
Cold-verified commit 289ef07 (v0.1.0 annotated tag) from /tmp clean checkout.

DoD-1: repo + main + annotated v0.1.0 tag — PASS
DoD-2: grep -rIE 'cc-ci|/srv/cc-ci|recipe|upgrad' *.py → zero hits — PASS
DoD-3: selftest 3/3 PASS; status sane table; --help documents all verbs — PASS
DoD-4: smoke.sh runs isolated sandbox, assembles kickoff, tears down clean — PASS
DoD-5: nix develop: tomllib OK, tmux 3.5a + git 2.47.2 on PATH — PASS
DoD-6: README covers schema + verbs + AI-PO contract + nix develop — PASS

No findings. No veto. Phase aoeng complete.
2026-06-13 18:42:04 +00:00
autonomic-bot 4a98df5271 chore(aoeng): init Adversary phase files — orientation done, awaiting Builder
continuous-integration/drone/push Build is failing
2026-06-13 18:25:01 +00:00
autonomic-bot 162f731e91 status(pxgate): ## DONE — M1+M2 PASS, cycle broken, cold-boot sim confirms no deadlock
continuous-integration/drone/push Build is failing
M2 verified: nixos-rebuild @13:43Z deployed /api/version probe; deploy-proxy
active(exited) in 279ms (nixos-rebuild) and 17ms (cold-boot sim) — no alert, no
deadlock. All 9 services 1/1. Running server unaffected. Adversary PASS @13:44Z.
BUILDER-INBOX consumed.
2026-06-13 13:47:42 +00:00
autonomic-bot 0a32854853 review(pxgate-M2): PASS — cold-boot sim confirms cycle broken, proxy active without dashboard
continuous-integration/drone/push Build is failing
nixos-rebuild deployed fix; new nix store path 8qjh8apxcbs85 with /api/version probe;
deploy-proxy active(exited) at 13:43:15 UTC; cold-boot sim: proxy started active(exited)
with dashboard stopped; all 9 services 1/1; alert dir empty; rollback gate unchanged.
Phase pxgate DoD fully met. Builder may write ## DONE.
2026-06-13 13:45:25 +00:00
autonomic-bot 8f69e0bc49 chore(pxgate): pre-stage builder-clone on main; fix nixos-rebuild instructions
continuous-integration/drone/push Build is failing
builder-clone was on restructure/concurrency (caef217, 288 behind main).
Switched to main at d23baf8. STATUS updated with git checkout main safeguard.
Adversary idle probes all PASS @13:31Z.
2026-06-13 13:33:53 +00:00
autonomic-bot d23baf8d36 review(pxgate): idle break-it probes PASS @13:31Z — M2 pending orchestrator nixos-rebuild
continuous-integration/drone/push Build is failing
2026-06-13 13:31:57 +00:00
autonomic-bot 0115e220d2 chore(pxgate): builder poll @13:24Z — M2 monitoring, old probe still live
continuous-integration/drone/push Build is failing
2026-06-13 13:25:51 +00:00
autonomic-botandClaude Sonnet 4.6 67e13f3a1f chore(pxgate): M2 blocked on orchestrator nixos-rebuild — old probe still live
continuous-integration/drone/push Build is failing
Active nix store (km6173hm5a...) calls ls5d6s7q...-runner/warm_reconcile.py which
still has health_domain=ci.commoninternet.net (OLD probe). Fix 0e9fd38 in git but not
deployed. Waiting for: cd /root/builder-clone && git pull && nixos-rebuild switch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 13:03:36 +00:00
autonomic-botandClaude Sonnet 4.6 39eff962ba status(pxgate): M1 PASS in — M2 awaits orchestrator nixos-rebuild
continuous-integration/drone/push Build is failing
M1 PASS @2026-06-13T13:00Z (Adversary, commit c96766e). Fix verified:
- /api/version probe dashboard-independent ✓
- Controlled reproduction (dashboard=0): old=404 new=200 ✓
- Consumer ordering unchanged ✓
- Gate has teeth: health_code returns 0 on failure → rollback ✓

M2 needs orchestrator to nixos-rebuild cc-ci with main@0e9fd38, then
Adversary cold-verifies deploy-proxy reaches active (not failed).
Exact nixos-rebuild command and verification steps in STATUS-pxgate.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 12:53:17 +00:00
autonomic-botandClaude Sonnet 4.6 c96766e1d4 review(pxgate-M1): PASS — cycle broken, /api/version probe dashboard-independent, rollback intact
continuous-integration/drone/push Build is failing
Cold verification of commit 0e9fd38:

1. Code change correct: health_path="/api/version", health_domain absent (falls back to
   traefik.ci.commoninternet.net). Probe is traefik's own API, no backend dependency.
2. Controlled repro (dashboard=0): new probe → 200; old probe → 404. Cycle broken.
3. Consumer ordering unchanged: all After=deploy-proxy services unaffected; deploy-proxy
   itself has no After=dashboard. Fix does not change any service ordering.
4. Alert dir empty: stale alert cleared.
5. proxy.nix comment updated correctly.
6. Gate has teeth: on curl failure, health_code() returns 0 (not 999 as STATUS claimed —
   non-blocking doc discrepancy); 0 not in health_ok=(200,) → rollback triggers. Functional PASS.
7. DEFERRED entry closed, DECISIONS logged.

No blocking findings. M2 pending orchestrator cold-boot.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 12:50:23 +00:00
autonomic-botandClaude Sonnet 4.6 0e9fd388d2 claim(pxgate-M1): change traefik health probe to /api/version (A1 cycle fix)
continuous-integration/drone/push Build is failing
Break the deploy-proxy ↔ dashboard health-gate circular dependency (Adversary A1, pvfix):

- runner/warm_reconcile.py: remove health_domain override (was ci.commoninternet.net,
  the dashboard). Change health_path from / to /api/version. The probe now uses
  traefik.ci.commoninternet.net/api/version — traefik's own API, no backend/dashboard dep.
- nix/modules/proxy.nix: update comment to reflect new health probe.
- machine-docs/DECISIONS.md: pxgate fix logged (supersedes pvfix manual workaround).
- machine-docs/DEFERRED.md: 2026-06-13 circular-dependency entry closed.
- Consumed BUILDER-INBOX.md (Adversary orientation msg).

Controlled reproduction (dashboard swarm scaled to 0):
  OLD probe (ci.commoninternet.net): HTTP 404  ← gate would loop → timeout
  NEW probe (traefik.../api/version): HTTP 200  ← passes immediately
Stale false-alarm alert 20260613T054428Z-traefik-unhealthy-on-latest.json cleared on host.
No After=deploy-proxy consumers changed (ordering preserved).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 12:46:34 +00:00
autonomic-botandClaude Sonnet 4.6 6e40bd6eb9 chore(pxgate): pre-M1 probes P3+P5 PASS, endpoint stability confirmed
continuous-integration/drone/push Build is failing
P5: alert files contain no secrets (version strings only).
P3: all After=deploy-proxy consumers still ordered correctly.
Endpoint: /api/version returns 200 reliably (3/3 probes, no backend dep).
P1-negative deferred to M1 gate time (needs controlled traefik stop).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 12:44:30 +00:00
autonomic-botandClaude Sonnet 4.6 c798292598 chore(pxgate): BUILDER-INBOX — orientation done, live bug proven
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 12:43:32 +00:00
autonomic-botandClaude Sonnet 4.6 a9e67af61e chore(pxgate): init Adversary phase files — root cause cold-verified, M1/M2 PENDING
continuous-integration/drone/push Build is failing
Independent cold read confirms the circular dependency (proxy health-gate polls
ci.commoninternet.net served by dashboard which is After=deploy-proxy). Root cause
is PROVEN LIVE by today's alert: 20260613T054428Z-traefik-unhealthy-on-latest.json.

Fix endpoint independently verified: /api/version on traefik.ci.commoninternet.net
returns 200 as soon as traefik is up, no dashboard dependency.

REVIEW-pxgate.md: orientation, M1/M2 acceptance criteria.
BACKLOG-pxgate.md: break-it probes P1–P5 to run at M1 gate.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 12:42:30 +00:00
autonomic-botandClaude Opus 4.8 1c671ed045 status(cf48): ## DONE — M1+M2 PASS, NO COVERAGE LOST cross-validated (Sonnet 4.6 + Opus 4.8)
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 06:34:33 +00:00
autonomic-botandClaude Opus 4.8 b66c9227a3 review(cf48-M2): M2 PASS — NO COVERAGE LOST, independently cold-verified, no VETO
continuous-integration/drone/push Build is failing
Cold re-clone @a6f967f: cardinal (recipe,filename) set identical 64=64; 0 added/0
deleted test files, 5 non-R100 renames are docstring/comment only (no assertion/wait/
skip/sys.path change); orphan-test hunt found no droppable recipe-local test; alias
probe warns on both deprecated dirs; unit suite 18 passed; cfold sweep evidence audited
directly (all 20 recipes 5/5, custom counts match baseline, live_pr_apps=0). M1+M2 PASS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 06:33:47 +00:00
autonomic-botandClaude Opus 4.8 db61a84614 journal(cf48): resumed to close phase; M2 claimed, awaiting Adversary
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 06:32:12 +00:00
autonomic-botandClaude Opus 4.8 61ad3560f1 claim(cf48-M2): no-loss verdict — M1 PASS in, M2 reuses verified evidence
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 06:31:55 +00:00
autonomic-bot a6f967f719 status(ghost): ## DONE — M1+M2 PASS, ghost upgrade infra-confounded confirmed
continuous-integration/drone/push Build is failing
Build #612 level 5/5 PASS (post-proxy, 06:13Z). All prior failures pre-proxy-fix.
PR#4 operator-ready; PR#3 and PR#5 closed. No ghost leaks. Adversary signed off @06:38Z.
2026-06-13 06:28:59 +00:00
autonomic-bot 383868212d review(ghost-M1+M2): M1 PASS + M2 PASS — build #612 post-proxy L5/5, PR#4 operator-ready
continuous-integration/drone/push Build is failing
M1 PASS @2026-06-13T06:38Z:
- !testme on PR#4 (d88f5801) triggered 06:12:48Z, post-proxy (fix at 05:38Z)
- Drone build #612 started 06:13:02Z (Drone sqlite DB), RECIPE=ghost REF=d88f5801
- results.json level=5, all stages pass; JUnit confirms genuine execution
- clean_teardown=True, no_secret_leak=True
- Pre-proxy failures (515/517/519/557) dated 2026-06-12 — infra-confounded

M2 PASS @2026-06-13T06:38Z:
- Exactly 1 open PR: PR#4 only
- PR#3 closed, PR#5 closed (Gitea API verified)
- No ghost stacks/services/volumes on cc-ci
- Operator comment at 06:22:11Z with 5-tier pass table + infra-confound analysis
- All adversary findings A1/A2/A3 resolved

Builder may write ## DONE.
2026-06-13 06:27:57 +00:00
autonomic-bot 13a951de69 claim(ghost-M1+M2): build #612 level 5/5 PASS — ghost upgrade infra-confounded, PR#4 operator-ready
continuous-integration/drone/push Build is failing
Post-proxy fresh !testme on PR#4 (d88f5801) at 06:12Z on 2026-06-13:
- All 5 tiers pass: install/upgrade/backup/restore/custom
- MySQL 8.0→8.4 upgrade converged cleanly without load pressure
- All 4 prior failures (builds 515/517/519/557) dated 2026-06-12, pre proxy-fix (05:38Z)

M1: pre-proxy failures correctly classified as infra-confounded (not recipe regression)
M2: PR#4 green + operator comment; PR#3 closed (superseded); PR#5 closed (cfold probe); no ghost leaks
2026-06-13 06:23:52 +00:00
autonomic-bot 13b964b9d1 status(ghost): init phase — PR inventory done, post-proxy !testme triggered on PR#4
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
PR#4 (d88f5801) is the correct upgrade PR. All prior failures were pre-proxy-fix (2026-06-12).
Fresh !testme triggered at 06:12:48Z on 2026-06-13 — post proxy /16 fix (05:38Z).
PR#5 is a cfold probe artifact (close after M2); PR#3 superseded (close).
2026-06-13 06:12:59 +00:00
autonomic-botandClaude Sonnet 4.6 1c15f7c236 status(pvcheck): ## DONE — M1+M2 PASS, proxy /16 confirmed safe in production
continuous-integration/drone/push Build is failing
M1 PASS @06:10Z: control plane healthy, all routes up, 0 VIP exhaustion post-fix
M2 PASS @06:14Z: hedgedoc build #608 level 5, allocator proof 0 leaks, Step-0 guard confirmed
[A2] CLOSED: upgrade-all SKILL.md guard description updated (orchestrator 84e13a7)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 06:08:43 +00:00
autonomic-bot a1c8003187 review(pvcheck-M2): M2 PASS — real CI run + allocator proof verified cold
continuous-integration/drone/push Build is failing
Cold verify 2026-06-13T06:14Z:
- hedgedoc run #608 confirmed: triggered 06:02:48Z (after proxy fix 05:38Z),
  all tiers pass (install/upgrade/backup/restore/custom), level 5, clean teardown,
  no-secret-leak. Gitea comment #14506 confirms pass.
- Proxy endpoints clean after run: 7 (back to M1 baseline).
- Zero VIP exhaustion since 05:38Z.
- Allocator headroom: Adversary's independent 5-stack probe + Builder's matching proof.
All pvcheck Definition-of-Done items verified.
2026-06-13 06:07:47 +00:00
autonomic-botandClaude Sonnet 4.6 935b6ae7bc claim(pvcheck-M2): real CI run + allocator proof — M2 evidence complete
continuous-integration/drone/push Build is failing
Real deploy: hedgedoc build #608 triggered 06:02Z (post-proxy-fix at 05:38Z),
passed 06:04Z at level 5. Proxy endpoints: 7 (clean teardown, no leaks).

Allocator headroom: 5 throwaway nginx stacks deployed+removed concurrently.
BASELINE=8, AFTER_DEPLOY=13, AFTER_RM=8 (baseline restored). 0 VIP errors,
0 leaked endpoints, 0 residue. Consistent with Adversary's independent probe.

VIP exhaustion since 05:38Z: 0 errors.
[A2] CLOSED by Adversary (orchestrator commit 84e13a7 confirmed).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 06:06:23 +00:00
autonomic-bot 17cf4d249f review(pvcheck-M1): M1 PASS — control plane and routing verified cold
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
Cold verify 2026-06-13T06:10Z: proxy 10.10.0.0/16/7 endpoints confirmed,
all 9 services 1/1, ci=200/drone=303/report=200, zero VIP exhaustion since
05:38Z, swarm.nix e6349a9 confirmed, Step-0 guard text updated in 84e13a7.
[A2] closed — stale description fix confirmed in orchestrator.
2026-06-13 06:01:26 +00:00
autonomic-botandClaude Sonnet 4.6 3df0ee154d claim(pvcheck-M1): control plane and routing verified post-proxy-recreation
continuous-integration/drone/push Build is failing
proxy subnet: 10.10.0.0/16, 7 endpoints (6 services + lb)
All 9 swarm services: 1/1
Routes: ci (200), drone (303), report (200)
VIP exhaustion since 05:38Z: 0 errors
Upgrade-all Step-0 guard confirmed in SKILL.md §0
[A2] SKILL.md stale description fixed (orchestrator commit 84e13a7)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 06:00:03 +00:00
autonomic-bot 99482cb387 review(pvcheck): Adversary independent headroom probe — 0 leaks, 0 VIP errors
continuous-integration/drone/push Build is failing
5 concurrent throwaway stacks deploy+rm. Zero leaked endpoints, zero GC races,
zero VIP exhaustion errors, zero residue after prune. /16 headroom confirmed cold.
Still waiting for Builder M1/M2 claims.
2026-06-13 05:59:59 +00:00
autonomic-bot 692e6d2108 review(pvcheck): init Adversary state files + baseline precondition probe PASS
continuous-integration/drone/push Build is failing
Cold verify: proxy 10.10.0.0/16 confirmed, all 9 services 1/1, routes 200/303.
No VIP exhaustion errors post-05:38Z. Step-0 guard verified present in upgrade-all skill.
[A2] filed: stale description in SKILL.md (guard text still says 'until that lands').
M1 and M2 pending Builder claim.
2026-06-13 05:57:07 +00:00
autonomic-botandClaude Sonnet 4.6 9b3e77a57f status(pvfix): ## DONE — M1+M2 PASS, proxy live as /16
continuous-integration/drone/push Build is failing
Both gates Adversary-verified 2026-06-13:
- M1 PASS @05:33Z: patch + procedure cold-verified
- M2 PASS @05:49Z: live host confirmed 10.10.0.0/16, all 9 services 1/1, routes healthy

Adversary finding A1 (health gate circular dependency) deferred to DEFERRED.md —
pre-existing D8 risk, not introduced by pvfix, not a VETO.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 05:52:18 +00:00
autonomic-bot ccd93da65c review(pvfix-M2): M2 PASS + [adversary] A1 health gate deadlock
continuous-integration/drone/push Build is failing
M2 PASS: proxy confirmed 10.10.0.0/16 (created 05:38:02Z), all 9 services 1/1,
swarm-init active script has --subnet, ci.commoninternet.net=200,
drone.ci.commoninternet.net=303.

A1 [adversary]: deploy-proxy health gate (ci.commoninternet.net=200) circular
with deploy-dashboard After=deploy-proxy ordering — deadlocks on fresh boot
(TimeoutStartSec=900). Pre-existing; pvfix exposed it. Needs fix before D8 pass.
2026-06-13 05:50:22 +00:00
autonomic-bot 227335f978 decisions(pvfix): nixos-rebuild submodule protocol + health gate ordering
continuous-integration/drone/push Build is failing
2026-06-13 05:47:35 +00:00
autonomic-botandClaude Sonnet 4.6 71319d7096 claim(pvfix-M2): proxy recreated as /16 — all routes healthy
continuous-integration/drone/push Build is failing
Live maintenance executed 2026-06-13T05:33–05:46Z:
- Removed 6 stacks from proxy (traefik, drone, bridge, dashboard, reports, warm-keycloak)
- Waited for proxy to drain, removed old 10.0.1.0/24 network
- nixos-rebuild switch with git+file:///?submodules=1 → swarm-init restarted
- proxy recreated: Subnet 10.10.0.0/16, gateway 10.10.0.1
- All 9 swarm services running 1/1
- ci.commoninternet.net → HTTP/2 200; drone → 303

Adversary: verify from host that proxy subnet is /16 and routes healthy.
Full evidence in STATUS-pvfix.md.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 05:47:04 +00:00
autonomic-bot b42353ebce review(pvfix): pre-verification probe — host already at /16, all routes healthy
continuous-integration/drone/push Build is failing
2026-06-13 05:46:28 +00:00
autonomic-bot caef217fa0 review(pvfix-M1): M1 PASS — patch + procedure verified cold
continuous-integration/drone/push Build is failing
Patch: swarm.nix line 47 adds --subnet 10.10.0.0/16 correctly.
Safety: live host full subnet table confirms 10.10.0.0/16 clear.
Procedure: service names verified against host, sequencing sound,
backups stack correctly excluded, nixos-rebuild will restart swarm-init.
Non-blocking note: explicit systemctl restart swarm-init recommended
as belt-and-braces after nixos-rebuild.
2026-06-13 05:34:13 +00:00
autonomic-botandClaude Sonnet 4.6 e6349a9dfe claim(pvfix-M1): proxy /16 patch + maintenance plan ready
continuous-integration/drone/push Build is failing
Patch nix/modules/swarm.nix to create the `proxy` overlay with
--subnet 10.10.0.0/16 (~65k VIPs, 258× headroom over the exhausted /24).

Live host survey confirms 10.10.0.0/16 is clear of all existing
Docker networks (ingress 10.0.0.0/24, existing per-stack overlays
10.0.1-4.0/24, host routes). Exact maintenance procedure in
STATUS-pvfix.md including pre-checks, stack teardown order, drain
wait, remove/recreate proxy, nixos-rebuild, deploy-* restart chain,
and health verification steps.

Adversary: please cold-review the patch + procedure before any live
disruptive action.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 05:31:21 +00:00
autonomic-bot 836ab1398f review(cf48): M1 PASS — NO COVERAGE LOST confirmed independently
continuous-integration/drone/push Build is failing
Cold-ran all 12 acceptance checks: 64 custom tests, 0 stale folders, IDENTICAL
(recipe,filename) set pre vs post cfold, 18 unit tests pass, RUNG name unchanged,
deprecated-alias probe fires warnings + discovers all 3 subdirs. cf55+cf48 agree.

Also seeds pvfix Adversary state files (REVIEW-pvfix.md, BACKLOG-pvfix.md):
live host confirmed at 10.0.1.0/24, swarm.nix has no --subnet. Fix needed.
Awaiting Builder M1 claim (patch + procedure + live inspection).
2026-06-13 05:30:33 +00:00
autonomic-botandClaude Opus 4.8 580c250497 claim(cf48): Opus 4.8 cold review matrix complete — NO COVERAGE LOST
continuous-integration/drone/push Build is failing
Independent cross-validation of cfold 44e0242. All 7 categories PASS:
cardinal (recipe,filename) coverage set identical pre/post (64=64), per-recipe
counts match baseline, no assertions weakened, deprecated aliases warn, lifecycle
overlays top-level, RUNG name intact, cfold M2 sweep all-20 L5 zero leaks.
cf55(sonnet-4.6) vs cf48(opus-4.8) FULL agreement; cf48 also caught a cf55
narrative slip (keycloak sys.path unchanged, not depth-adjusted).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-13 05:24:46 +00:00
autonomic-bot 42413b647a status(cf55): mark phase DONE — M1+M2 PASS, NO COVERAGE LOST
continuous-integration/drone/push Build is failing
Adversary REVIEW-cf55.md 2026-06-13T05:13:45Z: M1 PASS + M2 NO COVERAGE LOST.
All 7 review categories passed independently. Phase cf55 complete.
2026-06-13 05:16:04 +00:00
autonomic-botandClaude Sonnet 4.6 4311a8fc9f review(cf55): M1 PASS + M2 NO COVERAGE LOST
continuous-integration/drone/push Build is failing
Cold-verified all 8 Builder checks against claim commit 8b23f7b:
- 64 canonical custom tests, 0 in deprecated dirs, per-recipe counts match
- 18 unit tests pass, 0 lifecycle overlays in custom/, RUNG name unchanged
- Deprecated-alias probe: 2 warnings + both files found
- Clean working tree

All 7 required review categories pass independently. No coverage lost.
Builder may write ## DONE.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-13 05:15:18 +00:00
autonomic-bot 8b23f7b676 claim(cf55): M1 review matrix complete — NO COVERAGE LOST
continuous-integration/drone/push Build is failing
Full cf55 review of cfold commit 44e0242:
- 64 custom tests in canonical custom/ dirs, per-recipe counts exact match
- zero tests in deprecated functional/+playwright/ trees
- assertions preserved: all moves were git mv + path-comment/sys.path adjustments
- deprecated-alias warnings fire; lifecycle overlays at top-level only
- RUNG name 'functional' unchanged; unit suite 18 passed
- cfold M1+M2 evidence audited; full sweep green at L5 across 20 recipes

Verdict: NO COVERAGE LOST. Awaiting Adversary PASS.
2026-06-13 05:13:15 +00:00
autonomic-bot fb4ae40af1 status(cf55): seed blocked phase state
continuous-integration/drone/push Build is failing
2026-06-13 04:13:45 +00:00
autonomic-bot f73bcf225e inbox(cf55): consume adversary launcher mismatch note
continuous-integration/drone/push Build is failing
2026-06-13 04:13:36 +00:00
autonomic-bot d1fc6b9747 review(cf55): record launcher mismatch blocker
continuous-integration/drone/push Build is failing
2026-06-13 04:12:38 +00:00
autonomic-bot aeadb9f523 status(cfold): mark phase done
continuous-integration/drone/push Build is failing
2026-06-13 04:07:53 +00:00
autonomic-bot eedecf4d19 review(cfold): M2 PASS full sweep green
continuous-integration/drone/push Build is failing
2026-06-13 04:06:40 +00:00
autonomic-bot abe5e33dde claim(cfold): claim M2 full sweep green
continuous-integration/drone/push Build is failing
2026-06-13 04:04:14 +00:00
autonomic-bot d44f799de9 fix(cfold): wait for ghost db in entrypoint
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-06-13 03:58:59 +00:00
autonomic-bot 5004b32cfb review(cfold): record idle audit with clean teardown
continuous-integration/drone/push Build is failing
2026-06-13 03:54:37 +00:00
autonomic-bot 79949de624 review(cfold): record idle audit with clean teardown
continuous-integration/drone/push Build is failing
2026-06-13 03:34:14 +00:00
autonomic-bot 74cdd9dcb0 review(cfold): record idle audit with clean teardown
continuous-integration/drone/push Build is failing
2026-06-13 03:13:49 +00:00
autonomic-bot 67fa9b5c7f review(cfold): record idle audit with clean teardown
continuous-integration/drone/push Build is failing
2026-06-13 02:53:49 +00:00
autonomic-bot 3714f0fd09 review(cfold): record idle audit status
continuous-integration/drone/push Build is failing
2026-06-13 02:32:10 +00:00
autonomic-bot ee6b613ff3 fix(cfold): delay ghost app retry during db crossover
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-06-13 02:18:17 +00:00
autonomic-bot ecdf4172b4 review(cfold): record idle audit with no M2 claim
continuous-integration/drone/push Build is failing
2026-06-13 02:12:38 +00:00
autonomic-bot 8f637cf78a review(cfold): record bridge replay-fix audit
continuous-integration/drone/push Build is failing
2026-06-13 01:52:21 +00:00
autonomic-bot 07cce4ed17 status(cfold): record live bridge rollout
continuous-integration/drone/push Build is failing
2026-06-13 00:31:19 +00:00
autonomic-bot 23f1861b7a fix(bridge): ignore pre-start trigger comments
continuous-integration/drone/push Build is failing
2026-06-13 00:27:22 +00:00
autonomic-bot ddefc96eef review(cfold): log M2 artifact audit
continuous-integration/drone/push Build is failing
2026-06-13 00:24:13 +00:00
autonomic-bot fb8762acb9 status(cfold): record fresh ghost probe
continuous-integration/drone/push Build is failing
2026-06-13 00:14:11 +00:00
autonomic-bot 626773d5f7 status(cfold): sync latest adversary audit
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-06-12 23:46:05 +00:00
autonomic-bot 61a25a5a40 review(cfold): record ghost follow-up audit
continuous-integration/drone/push Build is failing
2026-06-12 23:45:38 +00:00
autonomic-bot 5e41b9a54a status(cfold): record ghost follow-up audit
continuous-integration/drone/push Build is failing
2026-06-12 23:29:20 +00:00
autonomic-bot ff687b0370 review(cfold): record idle audit
continuous-integration/drone/push Build is failing
2026-06-12 23:06:49 +00:00
autonomic-bot 8ef3b1425a review(cfold): log cold ghost artifact audit
continuous-integration/drone/push Build is failing
2026-06-12 22:47:02 +00:00
autonomic-bot d24bb8f3ae status(cfold): record M2 sweep snapshot
continuous-integration/drone/push Build is failing
2026-06-12 22:26:44 +00:00
autonomic-bot 8599e899e1 review(cfold): log idle break-it audit
continuous-integration/drone/push Build is failing
2026-06-12 22:26:05 +00:00
autonomic-bot 93f56ae467 review(cfold): log idle audit while awaiting M2
continuous-integration/drone/push Build is failing
2026-06-12 22:06:06 +00:00
autonomic-bot 39e53d739e status(cfold): record M1 pass and start M2
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-06-12 16:15:08 +00:00
autonomic-bot 4b4d665ede review(cfold): M1 PASS cold verification
continuous-integration/drone/push Build is failing
2026-06-12 16:12:54 +00:00
autonomic-bot e1d623a361 claim(cfold): M1 canonical custom folder migration
continuous-integration/drone/push Build is failing
2026-06-12 16:10:19 +00:00
autonomic-bot 44e02425ab feat(cfold): canonicalize custom test layout
continuous-integration/drone/push Build is failing
2026-06-12 16:08:18 +00:00
autonomic-bot 87928a9096 status(cfold): seed phase state and consume inbox
continuous-integration/drone/push Build is passing
2026-06-12 15:57:50 +00:00
autonomic-bot 8fba68e27c review(cfold): record cold pre-claim audit
continuous-integration/drone/push Build is passing
2026-06-12 15:57:02 +00:00
autonomic-bot 87566b1c95 review(cfold): note missing phase status file
continuous-integration/drone/push Build is passing
2026-06-12 15:55:55 +00:00
autonomic-bot 574306ea9c chore(cfold): init Adversary state files + pre-migration baseline inventory
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2026-06-11 22:55:30 +00:00
autonomic-botandClaude Sonnet 4.6 720c6584b4 status(drone): ## DONE — M1+M2 PASS; build #506 L5; Adversary M2 PASS @2026-06-11T22:30Z
continuous-integration/drone/push Build is passing
continuous-integration/drone Build was killed
Adversary M2 PASS (commit 7b4081c): all 6 verification steps passed, §7.1 signed off.
Phase drone DONE. PR recipe-maintainers/drone#1 open for operator merge.

- install+upgrade+custom+lint PASS, backup/restore intentional skip (PARITY.md)
- DG4.1: deploy-count=2/2; clean_teardown=true; no_secret_leak=true
- SCM test verified against per-run dep gitea (not production git.autonomic.zone)
- Build-creation gap accepted as proportionate deferral (Adversary §7.1 sign-off)
- DEFERRED.md updated by Adversary with MAXIMAL SUBSET COMPLETE

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:29:02 +00:00
autonomic-botandClaude Sonnet 4.6 7b4081cb42 review(drone): M2 PASS @2026-06-11T22:30Z — build #506 L5; bridge !testme verified; §7.1 signed
continuous-integration/drone/push Build is passing
Adversary M2 verdict: PASS. Evidence independently verified:

- results.json build #506: level=5, install+upgrade+custom+lint PASS, backup intentional skip,
  clean_teardown=True, no_secret_leak=True, no unintentional skips
- Drone API: event=custom, status=success, params={PR:1,RECIPE:drone,REF:049438e1cb47},
  sender=autonomic-bot — genuine bridge !testme trigger, not manual
- POLL_REPOS: recipe-maintainers/drone confirmed in bridge.nix
- Screenshot: real drone landing page ("Hello, Welcome to Drone") visually verified
- Gitea dep gite-4c9694 provisioned per-run; SCM test used dep client_id (not production)

DEFERRED build-creation gap §7.1 sign-off: drone OAuth + .drone.yml build-creation API
accepted as a proportionate deferral (harness capability gap, not recipe gap). Maximal
subset (install+upgrade+SCM-configured+lint) proven in build #506. Remaining DEFERRED:
build-creation API automation only.

Phase drone DONE. PR open for operator merge.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:27:45 +00:00
autonomic-botandClaude Sonnet 4.6 cdd141841d claim(drone): M2 — CI build #506 L5; !testme via bridge; SCM test PASS
continuous-integration/drone/push Build is passing
Build #506, event=custom (bridge-triggered !testme on recipe-maintainers/drone PR #1):
- deploy-count=2/2 (DG4.1 PASS), level=5
- install+upgrade+custom+lint all PASS
- test_login_redirects_to_gitea_dep PASS (dep gitea @ gite-4c9694; correct client_id)
- upgrade path: 1.8.0+2.25.0 → 1.9.0+2.26.0 ✓
- backup/restore: intentional skip (not backup-capable, per PARITY.md)
- clean_teardown=true, no_secret_leak=true

ADVERSARY-INBOX-drone.md written requesting M2 PASS verdict.
Screenshot: machine-docs/screenshots/drone-m2-build506.png

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:25:06 +00:00
autonomic-botandClaude Sonnet 4.6 1be74fb9e1 fix(lint): F821 undefined 'e' in test_scm_configured; shfmt/ruff auto-fixes
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
- test_scm_configured.py: remove reference to exception variable `e` outside
  its except block (F821); assert message doesn't need the code value
- shfmt auto-formatted install_steps.sh (spacing in write_env call)
- ruff auto-fixed one remaining issue
- 19/19 unit tests pass; lint PASS

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:17:19 +00:00
autonomic-botandClaude Sonnet 4.6 4f8943d10e feat(drone): enroll recipe-maintainers/drone in bridge POLL_REPOS (M2 !testme path)
continuous-integration/drone/push Build is failing
Bridge polls recipe-maintainers/drone every 30s for !testme PR comments.
This is the expected enrollment step per bridge.nix comment §4.1:
"Enrollment = add the repo to POLL_REPOS (csv) + ensure tests/<recipe>/ exists."

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:14:41 +00:00
autonomic-botandClaude Sonnet 4.6 3de5925614 review(drone): M1 PASS @2026-06-11T22:22Z — build run 5 L5; all DoD + ADV findings verified
continuous-integration/drone/push Build is failing
Adversary M1 verdict: PASS. Evidence:

- results.json: level=5, install+upgrade+custom+lint PASS, backup_restore intentional skip,
  clean_teardown=True, no_secret_leak=True, no unintentional skips
- SCM test has teeth: ran against dep gitea @ gite-557a83 (not production); client_id
  2a4dfaba matches dep-provisioned app; wrong domain/path/client_id would fail
- DG4.1 satisfied: deploy-count=2 (expect 2)
- ADV-drone-02 CLOSED: fallback teardown from $CCCI_DEPS_FILE in finally else-branch;
  2 new unit tests; 19/19 pass; teardown-sacred §9 satisfied
- ADV-drone-03 CLOSED: _count_deploy=False reverted; run 5 confirms no violation
- All three adversary findings now closed; no open findings

Builder may proceed to M2: recipe mirrors + !testme CI run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:08:33 +00:00
autonomic-botandClaude Sonnet 4.6 7723cfef3d claim(drone): M1 — all fixes applied; run 5 L5; ADV-drone-02+03 both fixed
continuous-integration/drone/push Build is failing
ADV-drone-02 fixed in 0aa46db (teardown fallback from $CCCI_DEPS_FILE in finally);
ADV-drone-03 fixed in 5384f5c (removed _count_deploy=False; dep deploys count per formula).

Harness run 5 evidence: deploy-count=2/2 (DG4.1 PASS), level=5,
install/upgrade/custom all PASS. 19/19 unit tests pass.

BUILDER-INBOX-drone.md consumed (both ADV-drone-02 + ADV-drone-03 already addressed).
ADVERSARY-INBOX-drone.md written requesting M1 PASS verdict.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:05:38 +00:00
autonomic-botandClaude Sonnet 4.6 52866602e7 review(drone): ADV-drone-03 CRITICAL — DG4.1 always fires with cold dep (run exits 1)
continuous-integration/drone/push Build is failing
deps.py module docstring says "Dep deploys DO count toward DG4.1; expected = 1 + n_cold_deps"
but deploy_deps passes _count_deploy=False, so deps never increment the counter. With gitea
as cold dep: actual=1, expected=2 → DG4.1 fires → overall=1 → CI FAIL even when all tiers
pass and level=5.

Confirmed in Builder's run 4 (/tmp/drone-m1-run4.log): install+upgrade+custom green, L5,
but deploy-count 1 != 2 (DG4.1 violation). Run exits 1.

Fix: remove _count_deploy=False from deps.py:deploy_deps (one line). Deps SHOULD count.
ADV-drone-02 also filed (dep orphan on SSO-enrichment failure). Both must be fixed before
M1 can be claimed. BUILDER-INBOX updated with priority order.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:04:29 +00:00
autonomic-botandClaude Sonnet 4.6 0aa46dbe72 fix(drone-dep): ADV-drone-02 — teardown fallback when SSO enrichment fails after deploy
continuous-integration/drone/push Build is failing
When _enrich_deps_with_sso raises after deploy_deps succeeds (e.g., gitea API
call fails), deps_state stays {} and the finally block's `if deps_state:` guard
skips teardown, orphaning the dep at its deterministic domain.

Fix: add an `else` branch after the `if deps_state:` block that reads
$CCCI_DEPS_FILE (the legacy-list written by deploy_deps) and calls
teardown_deps on the cold entries so no dep is left running.

Unit tests: test_load_run_state_provides_fallback_for_enrichment_failure and
test_fallback_skips_warm_entries verify the data-flow that the fallback relies on.
19/19 unit tests pass.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:03:29 +00:00
autonomic-botandClaude Sonnet 4.6 75c46ac5c1 chore(drone): update STATUS-drone.md — M1 DoD almost done, run 5 in flight
continuous-integration/drone/push Build is failing
All implementation items checked. Run 5 (DG4.1 fix applied) in flight on cc-ci.
ADV-drone-01 fix verified by Adversary. DG4.1 deploy-count fix explained and committed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:02:08 +00:00
autonomic-botandClaude Sonnet 4.6 b676d61df4 review(drone): ADV-drone-02 — dep orphan on SSO-enrichment failure; standing probes updated
continuous-integration/drone/push Build is failing
If deploy_deps succeeds (gitea up + healthy) but _enrich_deps_with_sso subsequently raises,
deps_state stays {} in main(). The finally block's `if deps_state:` guard is falsy and gitea
teardown is skipped entirely — violates §9 teardown-sacred invariant.

BACKLOG-drone.md: ADV-drone-02 filed (MEDIUM) with exact failure path trace, risk analysis,
and three fix options. REVIEW-drone.md: ADV-drone-02 summary + standing break-it probes updated
(negative-control, secrets-in-logs, concurrent-run probes analysed structurally). BUILDER-INBOX
created with must-fix notice and suggested minimal patch.

Must be fixed + tested before M1 can be claimed. Adversary veto standing.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 22:01:49 +00:00
autonomic-botandClaude Sonnet 4.6 5384f5c13f fix(drone-dep): revert _count_deploy=False — dep deploys must count for DG4.1
continuous-integration/drone/push Build is failing
The DG4.1 formula in run_recipe_ci.py is:
  expected_deploy_count = 1 + deps_deployed_count

So when gitea dep deploys, the expected count becomes 2 (1 recipe + 1 dep).
The _count_deploy=False fix made dep deploys NOT count, giving actual=1 vs
expected=2 → DG4.1 violation even though the run was correct.

Original error "deploy-count 2 != 1" was because deps_state was empty when
the DG4.1 check ran (provisioning had failed), giving expected=1 while count
was already 2 from an early dep deploy. The proper fix is for _provision_deps
to succeed (which it now does), not to suppress counting.

Revert _count_deploy=False in deps.py; update docstrings for clarity.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:59:51 +00:00
autonomic-botandClaude Sonnet 4.6 7d18d6e561 chore(drone): update BACKLOG task checklist to reflect actual M1 implementation state
continuous-integration/drone/push Build is failing
All M1 implementation tasks are done (setup_gitea_oauth, _enrich_deps_with_sso,
recipe_meta.py files, install_steps.sh, functional test, PARITY.md, unit tests).
ADV-drone-01 fixed. Mirror/!testme PR tasks moved to M2. Harness run 4 in flight.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:56:31 +00:00
autonomic-bot 32125c6e65 review(drone): ADV-drone-01 CLOSED — fix verified; protocol note on Builder tick
continuous-integration/drone/push Build is failing
2026-06-11 21:53:17 +00:00
autonomic-botandClaude Sonnet 4.6 7e7e84df34 fix(drone): ADV-drone-01 — no-follow redirect pattern in SCM test
continuous-integration/drone/push Build is failing
test_scm_configured.py was following ALL redirects via urlopen; gitea redirects
unauthenticated users from /login/oauth/authorize → /user/login, so the path
assertion always failed even for a correctly-wired drone.

Fix: _CaptureOneRedirect urllib handler stops after drone's first 303 and reads
the Location header directly, before gitea's own redirect chain runs.

- Consume BUILDER-INBOX.md (ADV-drone-01 finding delivered and addressed)
- Close ADV-drone-01 in BACKLOG-drone.md
- Update test_gitea_dep.py terminology: "location_url" not "final_url"
- All 10 unit tests pass

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:48:36 +00:00
autonomic-bot d20bffd597 review(drone): BUILDER-INBOX — ADV-drone-01 critical, fix before M1 claim
continuous-integration/drone/push Build is failing
2026-06-11 21:43:40 +00:00
autonomic-bot eb58f9f053 review(drone): ADV-drone-01 CRITICAL — test_scm_configured follows all redirects; assertion always fails even when wired correctly
continuous-integration/drone/push Build is failing
2026-06-11 21:42:42 +00:00
autonomic-botandClaude Sonnet 4.6 eec29614ae fix(drone-dep): reset gitea admin password on stale volume re-use
continuous-integration/drone/push Build is failing
If a dep run uses the same deterministic gitea domain against a stale
volume from a prior failed teardown, ci_admin may already exist with a
different password. Reset it via `gitea admin user change-password` so
the subsequent API call authenticates correctly. This is idempotent and
does not affect clean (fresh-volume) runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:42:19 +00:00