Commit Graph

574 Commits

Author SHA1 Message Date
67fa9b5c7f review(cfold): record idle audit with clean teardown
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 02:53:49 +00:00
3714f0fd09 review(cfold): record idle audit status
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 02:32:10 +00:00
ecdf4172b4 review(cfold): record idle audit with no M2 claim
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 02:12:38 +00:00
8f637cf78a review(cfold): record bridge replay-fix audit
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 01:52:21 +00:00
07cce4ed17 status(cfold): record live bridge rollout
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 00:31:19 +00:00
23f1861b7a fix(bridge): ignore pre-start trigger comments
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 00:27:22 +00:00
ddefc96eef review(cfold): log M2 artifact audit
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 00:24:13 +00:00
fb8762acb9 status(cfold): record fresh ghost probe
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-13 00:14:11 +00:00
626773d5f7 status(cfold): sync latest adversary audit
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-06-12 23:46:05 +00:00
61a25a5a40 review(cfold): record ghost follow-up audit
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 23:45:38 +00:00
5e41b9a54a status(cfold): record ghost follow-up audit
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 23:29:20 +00:00
ff687b0370 review(cfold): record idle audit
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 23:06:49 +00:00
8ef3b1425a review(cfold): log cold ghost artifact audit
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 22:47:02 +00:00
d24bb8f3ae status(cfold): record M2 sweep snapshot
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 22:26:44 +00:00
8599e899e1 review(cfold): log idle break-it audit
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 22:26:05 +00:00
93f56ae467 review(cfold): log idle audit while awaiting M2
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 22:06:06 +00:00
39e53d739e status(cfold): record M1 pass and start M2
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-06-12 16:15:08 +00:00
4b4d665ede review(cfold): M1 PASS cold verification
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 16:12:54 +00:00
e1d623a361 claim(cfold): M1 canonical custom folder migration
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 16:10:19 +00:00
44e02425ab feat(cfold): canonicalize custom test layout
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-12 16:08:18 +00:00
87928a9096 status(cfold): seed phase state and consume inbox
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-12 15:57:50 +00:00
8fba68e27c review(cfold): record cold pre-claim audit
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-12 15:57:02 +00:00
87566b1c95 review(cfold): note missing phase status file
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-12 15:55:55 +00:00
574306ea9c chore(cfold): init Adversary state files + pre-migration baseline inventory
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2026-06-11 22:55:30 +00:00
720c6584b4 status(drone): ## DONE — M1+M2 PASS; build #506 L5; Adversary M2 PASS @2026-06-11T22:30Z
Some checks reported errors
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
7b4081cb42 review(drone): M2 PASS @2026-06-11T22:30Z — build #506 L5; bridge !testme verified; §7.1 signed
All checks were successful
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
cdd141841d claim(drone): M2 — CI build #506 L5; !testme via bridge; SCM test PASS
All checks were successful
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
3de5925614 review(drone): M1 PASS @2026-06-11T22:22Z — build run 5 L5; all DoD + ADV findings verified
Some checks failed
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
7723cfef3d claim(drone): M1 — all fixes applied; run 5 L5; ADV-drone-02+03 both fixed
Some checks failed
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
52866602e7 review(drone): ADV-drone-03 CRITICAL — DG4.1 always fires with cold dep (run exits 1)
Some checks failed
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
75c46ac5c1 chore(drone): update STATUS-drone.md — M1 DoD almost done, run 5 in flight
Some checks failed
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
b676d61df4 review(drone): ADV-drone-02 — dep orphan on SSO-enrichment failure; standing probes updated
Some checks failed
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
7d18d6e561 chore(drone): update BACKLOG task checklist to reflect actual M1 implementation state
Some checks failed
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
32125c6e65 review(drone): ADV-drone-01 CLOSED — fix verified; protocol note on Builder tick
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 21:53:17 +00:00
7e7e84df34 fix(drone): ADV-drone-01 — no-follow redirect pattern in SCM test
Some checks failed
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
d20bffd597 review(drone): BUILDER-INBOX — ADV-drone-01 critical, fix before M1 claim
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 21:43:40 +00:00
eb58f9f053 review(drone): ADV-drone-01 CRITICAL — test_scm_configured follows all redirects; assertion always fails even when wired correctly
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 21:42:42 +00:00
51c3280163 feat(drone): enroll drone + gitea SCM dep (M1 implementation)
Some checks failed
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
8ca5b44186 review(drone): pre-probe — SCM-configured test design; /login redirect is the correct tooth
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 21:26:11 +00:00
f3c526d9e9 review(drone): init phase — P0 verified, pre-probes done, awaiting Builder claims
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 21:22:30 +00:00
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
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 21:17:45 +00:00
be526c8252 review(mailu): M2 PASS @2026-06-11T21:15Z — build #483 LEVEL 5, fresh independent re-trigger; all phase DoD satisfied
Some checks failed
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
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
Some checks failed
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-06-11 21:03:51 +00:00
73ea239cfc review(mailu): M1 PASS @2026-06-11T21:00Z — build #477 LEVEL 5, both /data+/mail volumes tested; ADV-mailu-01 closed
Some checks failed
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
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
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 20:59:39 +00:00
85a781368a machine-docs: move all per-phase coordination files out of repo root
Some checks failed
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
9afdf3de5a claim(kuma): M2 — build #462 LEVEL 5 PASS (flake #2); DEFERRED closed; PARITY updated
Some checks failed
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
8da59cff22 feat(kuma): implement wizard+monitor Playwright test (tests/uptime-kuma/playwright/)
Some checks failed
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
1e22f6ea79 claim(dstamp): M2 — discourse full lifecycle GREEN at true level (LEVEL 5) via drone !testme build #450 (cc-ci main 2da1f01 w/ fix); upgrade-HC1 stamps head, clean teardown + no leak; PR#2 passed. DEFERRED closed. Blast-radius: only discourse affected. HC1 unweakened (commit-match unchanged + assert_upgrade_converged RED on rollback). Verification recipe in STATUS-dstamp
Some checks failed
continuous-integration/drone/push Build is failing
2026-06-11 17:46:14 +00:00
f1500123e7 docs(deferred): bluesky-pds entry RESOLVED — fix PR#2 open (re-pin 0.4.219), green run 427 level 5 at PR head, screenshot real; pointers to upstream registry + decisions
All checks were successful
continuous-integration/drone/push Build is passing
2026-06-11 11:57:12 +00:00