Commit Graph
100 Commits
Author SHA1 Message Date
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
autonomic-botandClaude Sonnet 4.6 1adfbd70cb fix(drone-dep): correct gitea admin create flag + dep deploy counter
continuous-integration/drone/push Build is failing
Two issues found during first manual harness run:

1. gitea `--must-change-password false` (space form) leaves a pending
   password-change for the ci_admin user, blocking the OAuth2 API call.
   Fix: use `--must-change-password=false` (equals form, required by
   gitea's BoolFlag with default=true).

2. dep deploy_app() calls incremented the DG4.1 "one deploy per run"
   counter, causing a false violation when gitea dep + drone both deploy.
   Fix: lifecycle.deploy_app gains _count_deploy=True param (default
   backward-compat); deps_mod.deploy_deps passes _count_deploy=False so
   only the recipe-under-test counts toward DG4.1.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:37:45 +00:00
autonomic-botandClaude Sonnet 4.6 51c3280163 feat(drone): enroll drone + gitea SCM dep (M1 implementation)
continuous-integration/drone/push Build is failing
- tests/gitea/recipe_meta.py: gitea as install-time dep provider; sqlite3
  overlay EXTRA_ENV, health path /api/healthz, relaxed access for CI use
- tests/drone/recipe_meta.py: DEPS=["gitea"]; health /healthz; 600s timeout
- tests/drone/install_steps.sh: wires GITEA_CLIENT_ID + GITEA_DOMAIN +
  client_secret Docker secret + DRONE_USER_CREATE before single drone deploy
- tests/drone/functional/test_scm_configured.py: Playwright-free SCM test —
  follows /login redirect, asserts final URL is gitea dep's OAuth2 authorize
  endpoint with matching client_id (per Adversary pre-probe REVIEW-drone.md)
- tests/drone/PARITY.md: backup structural-skip justified (no backupbot labels)
- runner/harness/sso.py: setup_gitea_oauth() — creates gitea admin user via
  CLI + OAuth2 app via API, returns {admin_user, admin_password, client_id,
  client_secret} for install_steps.sh consumption
- runner/run_recipe_ci.py: _enrich_deps_with_sso now handles gitea dep (calls
  setup_gitea_oauth; keycloak path unchanged)
- tests/unit/test_gitea_dep.py: unit tests for gitea dep path — meta loading,
  SSO routing, SCM redirect assertion logic (parametrized)
- machine-docs: STATUS/JOURNAL/BACKLOG-drone.md phase state files initialized

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 21:31:43 +00:00
autonomic-bot 8ca5b44186 review(drone): pre-probe — SCM-configured test design; /login redirect is the correct tooth
continuous-integration/drone/push Build is failing
2026-06-11 21:26:11 +00:00
autonomic-bot f3c526d9e9 review(drone): init phase — P0 verified, pre-probes done, awaiting Builder claims
continuous-integration/drone/push Build is failing
2026-06-11 21:22:30 +00:00
autonomic-bot 6607d7767f status(mailu): ## DONE — M1+M2 PASS; PR#3 open for operator merge; builds #477+#483 both L5; backup/restore on /data+/mail proven; DEFERRED closed
continuous-integration/drone/push Build is failing
2026-06-11 21:17:45 +00:00
autonomic-bot be526c8252 review(mailu): M2 PASS @2026-06-11T21:15Z — build #483 LEVEL 5, fresh independent re-trigger; all phase DoD satisfied
continuous-integration/drone/push Build is failing
Independent cold pass: Adversary posted !testme on PR#3 (comment #14363); build #483 reached
LEVEL 5 (install/upgrade/backup_restore/functional/lint all pass); both Maildir tests pass again
(test_backup_captures_mail_message + test_restore_returns_mail_message); clean_teardown+no_secret_leak
true; DEFERRED closed; levels reconciled; PARITY.md dual-volume; operator summary complete.
Phase mailu DONE. Builder cleared for ## DONE in STATUS-mailu.md.
2026-06-11 21:16:27 +00:00
autonomic-bot b17b6f1232 claim(mailu): M2 — DEFERRED closed; PARITY.md updated with dual-volume evidence; operator summary written; PR#3 open for merge; awaiting Adversary fresh re-trigger
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-06-11 21:03:51 +00:00
autonomic-bot 73ea239cfc review(mailu): M1 PASS @2026-06-11T21:00Z — build #477 LEVEL 5, both /data+/mail volumes tested; ADV-mailu-01 closed
continuous-integration/drone/push Build is failing
Cold verify: PR#3 labels correct (admin:/data + imap:/mail); build #477 LEVEL 5 all rungs pass;
test_backup_captures_mail_message PASS + test_restore_returns_mail_message PASS — Maildir
backup/restore cycle proven. clean_teardown+no_secret_leak true. ADV-mailu-01 fix verified.
Builder cleared for M2.
2026-06-11 21:01:19 +00:00
autonomic-bot ec5882dd71 claim(mailu): M1 re-claim — build #477 LEVEL 5; ADV-mailu-01 fixed; /mail Maildir now seeded, wiped, and verified restored; both test_backup_captures_mail_message + test_restore_returns_mail_message PASS
continuous-integration/drone/push Build is failing
2026-06-11 20:59:39 +00:00
autonomic-botandClaude Opus 4.8 85a781368a machine-docs: move all per-phase coordination files out of repo root
continuous-integration/drone/push Build is failing
STATUS/BACKLOG/REVIEW/JOURNAL for bsky/conc/dstamp/kuma/lvl5/mailu/rcust/shot
(32 files) were at the repo root; move them into machine-docs/ to match the
mandated file-location rule (DECISIONS/DEFERRED/INBOX + older phases already
live there). AGENTS.md gains an explicit File-location rule. No content change.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 20:57:03 +00:00
autonomic-bot 560e772b5f journal(mailu): ADV-mailu-01 fix rationale; build #477 in flight
continuous-integration/drone/push Build is failing
2026-06-11 20:56:46 +00:00
autonomic-bot b9352e8313 fix(mailu): extend backup/restore seed to cover /mail Maildir volume (ADV-mailu-01)
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-06-11 20:56:00 +00:00
autonomic-bot bb1ebd34f6 review(mailu): M1 FAIL @2026-06-11T20:58Z — /mail Maildir restoration not tested; seed seeds account only (SQLite /data), never exercises mail message in /mail; plan requires mailbox+message; ADV-mailu-01 filed
continuous-integration/drone/push Build is failing
2026-06-11 20:53:24 +00:00
autonomic-bot 2fa3f528a6 claim(mailu): M1 — build #473 LEVEL 5 PASS; PR#3 backupbot v2 labels (admin:/data + imap:/mail); backup→wipe→restore on real seeded mail data proven; clean teardown; BEFORE=L4(skip) AFTER=L5(earned)
continuous-integration/drone/push Build is failing
2026-06-11 20:51:39 +00:00
autonomic-bot 1fbc4e0b15 fix(mailu): fix _mailu import path in ops.py+overlays (functional/ subdir)
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-06-11 20:44:40 +00:00
autonomic-bot 36ece30442 status(mailu): drone build #470 in flight — PR#3 + cc-ci test files all committed
continuous-integration/drone/push Build is failing
2026-06-11 20:43:18 +00:00
autonomic-bot 4b5051f003 feat(mailu): add ops.py + backup/restore tests + update PARITY.md (P4 now covered via PR#3)
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-06-11 20:41:33 +00:00
autonomic-bot ccabad8209 status(mailu): init phase state — data-layout research documented, awaiting PR+tests
continuous-integration/drone/push Build is failing
2026-06-11 18:43:08 +00:00
autonomic-botandClaude Sonnet 4.6 06e1cee47c status(kuma): ## DONE — M1+M2 PASS, test_monitor_wizard green 2× (builds #460+#462)
continuous-integration/drone/push Build is failing
DoD all satisfied:
- Wizard+probe Playwright test: Up (self) + Down (dead-port) real probes proven
- Level 5 both runs; runtime 2.75-2.82s (≪90s budget)
- DEFERRED "uptime-kuma create-a-monitor" closed
- PARITY.md updated
- M1 PASS 2026-06-11T18:26Z + M2 PASS 2026-06-11; no standing VETO

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 18:34:42 +00:00
autonomic-bot f96a639197 review(kuma): M2 PASS @2026-06-11T18:32Z — builds #460+#462 both LEVEL 5, test_monitor_wizard 2× green, clean_teardown+no_secret_leak true, DEFERRED closed, PARITY updated; all phase DoD satisfied; Builder cleared for ## DONE
continuous-integration/drone/push Build is failing
2026-06-11 18:33:34 +00:00
autonomic-botandClaude Sonnet 4.6 9afdf3de5a claim(kuma): M2 — build #462 LEVEL 5 PASS (flake #2); DEFERRED closed; PARITY updated
continuous-integration/drone/push Build is failing
Second drone run #462: uptime-kuma@eb4521cc (PR #3) = LEVEL 5.
test_monitor_wizard [pass] in both #460 + #462 — flake check complete.
DEFERRED.md "uptime-kuma create-a-monitor" closed with build+commit pointers.
PARITY.md: new row for tests/uptime-kuma/playwright/test_monitor_wizard.py.
M1 Adversary PASS @2026-06-11T18:26Z (REVIEW-kuma.md).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 18:32:16 +00:00
autonomic-bot 48a66b96a1 review(kuma): M1 PASS @2026-06-11T18:26Z — test_monitor_wizard LEVEL 5, clean_teardown+no_secret_leak true, real-probe evidence (up+down confirmed), runtime 2.8s, approach justified; Builder cleared for M2
continuous-integration/drone/push Build is failing
2026-06-11 18:29:10 +00:00
autonomic-bot 1d51a7907b status(kuma): M1 claimed; second !testme in flight for flake check (build 460 = L5 PASS)
continuous-integration/drone/push Build is failing
2026-06-11 18:28:28 +00:00
autonomic-botandClaude Sonnet 4.6 fe8922c2da claim(kuma): M1 PASS — test_monitor_wizard green at LEVEL 5 via drone build #460
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
Build 460: uptime-kuma@eb4521cc (PR #3); custom tier playwright:1 PASS.
All stages: install/upgrade/backup/restore/custom/lint PASS.
test_monitor_wizard [pass] — wizard + self-probe UP + dead-port DOWN.
clean_teardown=true, no_secret_leak=true. PR comment  posted.
Artifacts: /var/lib/cc-ci-runs/460/

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 18:27:26 +00:00
autonomic-botandClaude Sonnet 4.6 8da59cff22 feat(kuma): implement wizard+monitor Playwright test (tests/uptime-kuma/playwright/)
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
Phase kuma M1 impl: resolves the 2026-05-28 DEFERRED uptime-kuma create-a-monitor item.

Approach: Playwright (option b) — python-socketio not in cc-ci Nix env; Playwright
handles Socket.IO transparently via the real browser. Selectors confirmed in 2.2.1
compiled bundle (data-cy setup wizard + data-testid monitor form/status badge).

Test flow (test_monitor_wizard_and_probe):
1. Setup wizard: admin create via data-cy form → auto-login → /dashboard
2. Create self-probe monitor (https://{live_app}/) → wait ≤90s for "Up" badge
3. Heartbeat table row check: isFirstBeat=important, row has real datetime stamp
4. Negative: dead-port monitor (http://127.0.0.1:19999/dead) → wait ≤60s for "Down"

All waits are bounded poll with page.wait_for_function/wait_for_url/wait_for_selector.
Admin password: 64-char UUID hex, never printed/logged.

Also: DECISIONS.md records Playwright choice; phase state files bootstrapped.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 18:15:13 +00:00
autonomic-bot 9eb5261c1e probe(kuma): pre-flight — python-socketio absent on cc-ci (Playwright available); real-probe evidence requirements documented
continuous-integration/drone/push Build is failing
2026-06-11 18:04:45 +00:00
autonomic-bot f46aa05151 chore(kuma): init Adversary phase state files (REVIEW + BACKLOG adversary section)
continuous-integration/drone/push Build is failing
2026-06-11 18:03:25 +00:00
autonomic-bot 43826918ed chore(mailu): init Adversary phase state files (REVIEW + BACKLOG adversary section)
continuous-integration/drone/push Build is failing
2026-06-11 18:00:07 +00:00
autonomic-bot 71358da446 review(dstamp): M2 PASS @2026-06-11T17:58Z — build 450 level 5 (install/upgrade/backup/restore/custom/lint all PASS, clean_teardown+no_secret_leak true); test_upgrade_reconverges PASS (HC1 chaos-version=7ae7b0f7==head_ref); !testme path confirmed (14346→14347 bot ); DEFERRED closed w/ pointers; HC1 teeth: m2p-discourse negative control (eb96de94≠7ae7b0f7→AssertionError HC1) + code unchanged; blast-radius discourse-only. All phase dstamp DoD items satisfied.
continuous-integration/drone/push Build is failing
2026-06-11 17:51:54 +00:00
autonomic-bot fb411b2563 review(dstamp): M1 PASS @2026-06-11T17:36Z — root cause proven by direct evidence (repro4: Spec=7ae7b0f7+U→PreviousSpec=eb96de94+U, swarm rollback confirmed); abra constant (gens4-11 same store path); fix verified (stop-first overlay + assert_upgrade_converged 2-phase, HC1 code unchanged); blast-radius n8n/keycloak PASS L4 in 06-10/06-11 era; dstamp-fix1/fix2 upgrade=PASS @7ae7b0f7+U. Builder cleared for M2.
continuous-integration/drone/push Build is failing
2026-06-11 17:37:35 +00:00
autonomic-bot f6058b9a00 review(bsky): post-verdict DECISIONS consult — pin-choice + EXPECTED_NA entries consistent (digest-pin rejected for abra tooling); verdict unchanged
continuous-integration/drone/push Build is passing
2026-06-11 15:49:33 +00:00
autonomic-bot 42eabbaa24 review(bsky): M2 PASS @5b0e42a — fresh independent !testme re-trigger (comment 14344) → build 435 level 5 at PR head f7b6c8df, real functional tests (account/post/auth), clean teardown, no leak, screenshot real==427; DEFERRED both entries closed w/ pointers; operator summary crisp; 0.5.x has NO release tag (re-pin fully justified); no canonical to reseed; PR open/unmerged. Both M1+M2 fresh PASS, no VETO — Builder cleared for ## DONE.
continuous-integration/drone/push Build is passing
2026-06-11 15:48:53 +00:00
autonomic-bot 369f4f486b review(bsky): M1 PASS @73889ed — root cause reproduced cold (:0.4=0.5.1/index.ts crash, :0.4.219=index.js fix); PR#2 minimal +2/-2 unmerged; run 427 genuine drone !testme at PR head = level 5 (upgrade=declared intentional skip, premise verified: both published tags pin broken moving :0.4); negative control 423 red @ level 0 (teeth); 253 unit tests + repo lint PASS cold; screenshot real PDS landing credential-free (sha256 published==disk); no secret leak. No gate weakening — EXPECTED_NA scoped per-recipe-per-rung. No VETO.
continuous-integration/drone/push Build is passing
2026-06-11 12:03:04 +00:00
autonomic-bot cfda9e72db review(bsky): EXPECTED_NA['upgrade'] premise verified cold — both published tags (0.1.1/0.2.0+v0.4) pin broken moving :0.4, no deployable base; recorded scoping/teeth checks for the claim
continuous-integration/drone/push Build is passing
2026-06-11 11:56:07 +00:00
autonomic-bot f88c6bc78d review(bsky): cold image probe reproduces root cause both halves (:0.4 ships index.ts/node24, :0.4.219 ships index.js/node20); recorded M1 scrutiny points; no claim yet
continuous-integration/drone/push Build is passing
2026-06-11 11:44:26 +00:00
autonomic-bot 8d5bf305e8 review(bsky): seed REVIEW-bsky + cold baseline recon (image :0.4 moving tag, entrypoint runs relative index.js); awaiting first claim
continuous-integration/drone/push Build is passing
2026-06-11 11:32:20 +00:00
autonomic-bot 9ce987188a status(lvl5): ## DONE — M1 (cfc87fd) + M2 (13cad1f) both PASS, no VETO; L5 lint rung + de-capped levels live end-to-end; cleanup complete
continuous-integration/drone/push Build is passing
2026-06-11 11:29:32 +00:00
autonomic-bot a521d43a17 claim(lvl5): M2 — P4 proven in real CI: L5 (398/406/407/413), lint-blocked L4 verdict-neutral (405), N/A-skip climb (399), drone !testme ×3, canaries red @ re-derived L1 (415/416), unver-blocks synthesized run L2, old artifacts render, durations at baseline, visuals verified
continuous-integration/drone/push Build is passing
2026-06-11 11:18:26 +00:00
autonomic-bot dc924c679b status(lvl5): before/after table real values (398/399/405/406/407/413) + canary designed-level re-derivation (415/416 red @ L1)
continuous-integration/drone/push Build is passing
2026-06-11 11:15:31 +00:00
autonomic-bot 763f8d1a47 journal(lvl5): P4 wave 2 — PR-path lint fix proven, L4-blocked + 2×L5 PR proofs green, visuals verified
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is failing
2026-06-11 11:04:21 +00:00