autonomic-bot and Claude Opus 4.8
faef8a9685
claim(m2-redfix): M2 RE-CLAIMED — F-redfix-4 remedied at redfix-m2-harness@b5f2b10 (warm state keyed by stack namespace); clearing condition re-run green on cc-ci, unit suite 315->325; awaiting Adversary
...
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FS8p1esg57UAC69riNvuBX
2026-07-09 00:13:57 +00:00
autonomic-bot and Claude Opus 4.8
397c303188
journal(redfix): wake #8 — VETO F-redfix-4 reproduced independently, root-caused, fixed at b5f2b10; decision recorded (warm state keyed by stack namespace); B-redfix-5 residual filed
...
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FS8p1esg57UAC69riNvuBX
2026-07-09 00:13:47 +00:00
autonomic-bot and Claude Opus 4.8
cfea875b2b
status(redfix): claim WITHDRAWN — standing VETO F-redfix-4 (keycloak warm-state slot collision); M2 reopened, do not merge redfix-m2-harness
...
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01FS8p1esg57UAC69riNvuBX
2026-07-09 00:01:57 +00:00
autonomic-bot
1e513e7fe1
journal(redfix): wake #7 — consumed Adversary re-confirmation #7 (content-anchored break-it probe: each M2 fix sha grepped in a cold bare clone with its parent as negative control; mattermost-lts/gitea/bluesky-pds fixes present, absent in parents). All 4 recipe fixes now content-anchored, not sha-anchored. DONE stands, no VETO, no inbox, no action. Loop stopped
continuous-integration/drone/push Build is failing
2026-07-08 23:49:44 +00:00
autonomic-bot
7ac7eb078b
journal(redfix): wake #6 — consumed Adversary re-confirmation #6 (break-it probe of M2 evidence anchors: mattermost-lts/gitea/bluesky-pds/harness-branch all reachable with matching subjects; rot confined to discourse, already CLOSED as F-redfix-3). DONE stands, no VETO, no inbox, no action. Loop stopped
continuous-integration/drone/push Build is failing
2026-07-08 23:36:25 +00:00
autonomic-bot
0302cb2589
journal(redfix): wake #5 — consumed Adversary re-confirmation #5 (audit of my F-redfix-3 addendum: clean, remedy verified, fix commit still reachable). DONE stands, no VETO, no action. Loop stopped
continuous-integration/drone/push Build is failing
2026-07-08 23:30:05 +00:00
autonomic-bot
612412c52a
status(redfix): evidence addendum for F-redfix-3 — durable content assertion for the discourse fix (sha pins rotted via later-phase force-push; content re-verified at ede6399); historical shas left unedited on purpose. DONE unchanged, no gate reopened
continuous-integration/drone/push Build is failing
2026-07-08 23:23:33 +00:00
autonomic-bot
1271c248b9
review(redfix): post-reboot re-confirmation #4 — DONE stands, no VETO (M1+M2 intact, both findings closed) + NEW non-blocking F-redfix-3 (CLOSED): discourse M2 evidence shas 9ff5e19/53ba0910 gone from mirror (branch rebased+extended by later phases), but fix CONTENT re-verified at HEAD ede6399 — official image + 0 sidekiq; other 3 recipe shas + harness branch pin exactly
continuous-integration/drone/push Build is failing
2026-07-08 23:22:05 +00:00
autonomic-bot
001a1f4d4d
journal(redfix): post-reboot re-confirmation #4 — phase still DONE (M1+M2 PASS, no VETO, no inbox); F-redfix-2 gitignore remedy independently re-tested and holds on origin/main; stray untracked main.go surfaced, not deleted
continuous-integration/drone/push Build is failing
2026-07-08 23:20:57 +00:00
autonomic-bot and Claude Opus 4.8
bccba44b00
journal(redfix): F-redfix-2 CLOSED by Adversary — no action required, phase stays DONE
...
continuous-integration/drone/push Build is failing
Read review(redfix) @67e86de: no VETO, M1/M2 PASS intact, remedy cold-verified
from a fresh clone of origin/main. Nothing claimed of me.
Records the Adversary's self-caught grep contamination (searching history for a
secret by a 6-char prefix that our own finding/inbox/journal text now contains
tests our prose, not history; re-test against the full 51-char value: 0 commits,
never leaked) and its acceptance of my symlink correction.
Residual unchanged: key on disk unrotated -- operator's call, not either loop's.
Did not edit the Adversary-owned findings section. Terminal condition holds.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018nVVSxRnj3K5MxGGRJzvTe
2026-07-08 23:14:36 +00:00
autonomic-bot and Claude Opus 4.8
a10b2e8275
inbox(redfix): notify Adversary F-redfix-2 remedy pushed; correct "both clones" premise (symlink => one repo)
...
continuous-integration/drone/push Build is failing
Journal: /srv/cc-ci/cc-ci and /srv/cc-ci-orch/cc-ci are the same directory
(.gitignore inode 3252849 shared; rev-parse --show-toplevel agrees), as are the
cc-ci-adv pair, which carries no config.json. So the single .gitignore line
closes the exposure on every path; no second remediation pending.
Escalated to operator: rotate the Tinfoil key if it ever hit a transcript/log --
gitignore prevents a future commit, it cannot un-expose an already-seen key.
Phase redfix remains DONE. F-redfix-2 stays open; only the Adversary closes it.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018nVVSxRnj3K5MxGGRJzvTe
2026-07-08 23:09:42 +00:00
autonomic-bot and Claude Opus 4.8
8cf08fd834
fix(redfix): gitignore config.json (F-redfix-2 remedy) + consume BUILDER-INBOX
...
continuous-integration/drone/push Build is failing
Adversary finding F-redfix-2 (non-blocking): config.json sits untracked AND
un-gitignored at both Builder clone roots holding a live-shaped Tinfoil API key
(.provider.tinfoil.options.apiKey) -- one `git add -A` from being pushed to
git.autonomic.zone. Independently re-verified all four claims from my own clone:
untracked, never committed (git log --all -- config.json empty), not ignored,
key live-shaped. Latent risk, NOT an existing leak.
Remedy: add config.json to the "local secrets / env -- never commit" block.
Proved effective by replaying `git add -A` against a scratch GIT_INDEX_FILE:
config.json is no longer staged (only .gitignore, main.go).
Did not delete/move config.json (foreign file, not created by this loop), did
not rotate the key (operator's call -- escalated), did not gitignore main.go
(foreign, but no secret in it), did not reopen redfix or touch REVIEW-redfix.md.
Phase redfix stays DONE; only the Adversary closes F-redfix-2, after re-test.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_018nVVSxRnj3K5MxGGRJzvTe
2026-07-08 23:08:27 +00:00
autonomic-bot and Claude Opus 4.8
418ec570ef
journal(redfix): post-reboot re-confirmation #2 — phase still DONE (M1+M2 PASS, no VETO); record warm-gitea pre-merge crash-loop (= M1 root cause, awaits PR #2 ), foreign wedged procs, and untracked root files left untouched (config.json holds a live-looking API key)
...
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01KKptqtbUkaLHDCmwomwDjy
2026-07-08 23:01:02 +00:00
autonomic-bot and Claude Opus 4.8
b3bdc291b4
status(redfix): ## DONE — phase complete, M1+M2 fresh Adversary PASS, no VETO
...
continuous-integration/drone/push Build is failing
continuous-integration/drone Build was killed
All 6 canon-sweep failures fixed + cold-verified green (mattermost-lts,
discourse, keycloak, mumble, gitea, bluesky-pds). No standing exceptions.
Nothing merged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01Bacy8SJhBebNAGoYsi1Fxt
2026-06-18 07:07:14 +00:00
autonomic-bot and Claude Opus 4.8
29a28176a9
claim(redfix-M2): discourse F-redfix-1 FIXED + level=5 verified — re-claim 6/6
...
continuous-integration/drone/push Build is failing
Dropped orphaned image-less sidekiq from discourse compose.smtpauth.yml (PR #4
@9ff5e19); R011 lint ✅ (Adversary repro) + own cold run level=5 of 5 all tiers
pass. Other 5 fixes unchanged (Adversary PASS). 6/6 verified green.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01Bacy8SJhBebNAGoYsi1Fxt
2026-06-18 06:55:28 +00:00
autonomic-bot
6e64665074
inbox(redfix): consumed Adversary M2 FAIL verdict (discourse F-redfix-1); fix pushed @9ff5e19
continuous-integration/drone/push Build is failing
2026-06-18 06:47:33 +00:00
autonomic-bot
983b0392cc
inbox(redfix): M2 verify heads-up — harness branch reset to 07fc6d4 ( b96b8a4 dropped); bluesky now ${STACK_NAME}_app recipe-PR-only; use direct chaos-deploy for gitea/bluesky (promote merge-gated)
continuous-integration/drone/push Build is failing
2026-06-18 06:12:04 +00:00
autonomic-bot and Claude Opus 4.8
0e255d8570
claim(redfix-M2): all 6 canon-sweep failures FIXED + verified green
...
continuous-integration/drone/push Build is failing
mattermost-lts (PR #1 , !testme #901 ), discourse (PR #4 , !testme #849 ), keycloak
(harness branch, promotes at warm-canon-keycloak), mumble (harness branch, budget
180s) — already verified. gitea (PR #2 @a0f2db8, app.ini seed-on-empty into writable
volume) + bluesky-pds (PR #4 @4987ba9, caddy ${STACK_NAME}_app per operator, NO
rename) verified by direct chaos-deploy reproducing the exact M1 scenario: gitea
app.ini 0->1862, API 200, 0 RO crashes; bluesky external HTTPS /xrpc/_health 200
(M1 000), caddy resolves own internal app. Both promotes operator-merge-gated (harness
WC5 force-fetches the published tag); direct deploy is the maximal pre-merge proof.
No standing exceptions. Nothing merged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01Bacy8SJhBebNAGoYsi1Fxt
2026-06-18 05:55:43 +00:00
autonomic-bot
12925b5ab8
journal(redfix): M2 4/6 verified; bluesky warm-verify structurally blocked pre-merge (fix proven); gitea needs rework
continuous-integration/drone/push Build is failing
2026-06-18 02:39:37 +00:00
autonomic-bot
c5bc29bb97
journal(redfix): M2 mumble VERIFIED (4/6); bluesky force-chaos verification plan
continuous-integration/drone/push Build is failing
2026-06-18 02:28:42 +00:00
autonomic-bot
a65372cfde
journal(redfix): M2 keycloak VERIFIED — canonical promotes at collision-free warm-canon-keycloak, live warm-keycloak undisturbed (200). 3/6 verified
continuous-integration/drone/push Build is failing
2026-06-18 02:25:02 +00:00
autonomic-bot
6846bbe83d
journal(redfix): M2 — bluesky verify blocked by abra non-chaos tag-revert (recipe fixes need chaos); keycloak/mumble (harness) verify cleanly, doing next
continuous-integration/drone/push Build is failing
2026-06-18 02:21:19 +00:00
autonomic-bot
ed7d897e5f
status(redfix): M2 tracker — mattermost+discourse VERIFIED; bluesky rename routing-works-but-backup-fails; gitea needs rework; keycloak/mumble pending verify
continuous-integration/drone/push Build is failing
2026-06-18 02:16:47 +00:00
autonomic-bot
c021d7e305
journal(redfix): M2 gitea fix v1 (seed) broke 3.5.3->3.6.0 transition (wizard mode); reverted clone, needs rework; proceeding to bluesky/keycloak/mumble
continuous-integration/drone/push Build is failing
2026-06-18 02:09:43 +00:00
autonomic-bot
278cb4e4b8
journal(redfix): M2 progress — gitea PR #2 + advance verifying; bluesky rename PR #4 ; harness branch redfix-m2-harness pushed (keycloak/mumble/bluesky-exec)
continuous-integration/drone/push Build is failing
2026-06-18 02:00:06 +00:00
autonomic-bot and Claude Opus 4.8
dd6712c243
status(settings): ## DONE — M1+M2 fresh Adversary PASS ( cd19c1b, 99d6bbc), no VETO
...
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 17:07:14 +00:00
autonomic-bot
40d2056c9e
review(M2-settings): PASS — live cold-verified on cc-ci. Deployed runner @99d6bbc byte-identical to M1-reviewed cd19c1b. CASE1 (file absent/false): keycloak(no canon)->release tag 10.7.1+26.6.2 NOT main-tip; gitea(canon)->last-green 3.5.3 unchanged. CASE2 (scratch file/true): live flag reads True from /etc/cc-ci/settings.toml, gitea canonical BYPASSED to release-tag path. RESTORE: file removed->flag False, reason back to last-green; steady state restored (file absent, clean). Harness file-pickup proven via real DEFAULT_PATH. No defects, no VETO. M1+M2 fresh PASS.
continuous-integration/drone/push Build is failing
2026-06-17 17:06:24 +00:00
autonomic-bot and Claude Opus 4.8
a9ff941dda
claim(M2-settings): live server verified — no-canonical recipe (keycloak) -> release tag 10.7.1+26.6.2; flag true bypasses gitea canonical to release-tag path, restored false. Deployed /etc/cc-ci@99d6bbc; awaiting Adversary
...
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 17:04:16 +00:00
autonomic-bot
99d6bbc1a1
chore(settings): add scripts/show-upgrade-base.py — faithful live resolver probe for M2 evidence
continuous-integration/drone/push Build is failing
2026-06-17 17:02:33 +00:00
autonomic-bot
b7a2a5d699
journal(settings): M2 prep — server canonical registry inventory + M2 evidence candidates
continuous-integration/drone/push Build is failing
2026-06-17 16:58:59 +00:00
autonomic-bot
fb2dbeae05
review(M1-settings): PASS — cold-verified loader + flag + release-tag-first fallback. 32+315 tests pass; independent loader probes (absent/malformed/wrong-type/int-bool/unknown-key all correct, env override, get() default False); resolver matrix all 6 cells (false=canonical unchanged, true=canonical bypassed to release tag); samever helper reused; scope narrow (flag read only in resolve_upgrade_base, promote/--quick untouched); stdlib-only; no secrets. No defects, no VETO.
continuous-integration/drone/push Build is failing
2026-06-17 16:58:52 +00:00
autonomic-bot and Claude Opus 4.8
fed2678200
claim(M1-settings): settings loader + SKIP_CANONICALS_FOR_UPGRADE + release-tag-first fallback implemented + unit-tested (315 pass); awaiting Adversary cold-verify
...
continuous-integration/drone/push Build is failing
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:55:59 +00:00
autonomic-bot and Claude Opus 4.8
cd19c1b172
feat(settings): server settings.toml loader + SKIP_CANONICALS_FOR_UPGRADE + release-tag-first no-canonical fallback
...
continuous-integration/drone/push Build is failing
- harness/settings.py: stdlib tomllib loader, [upgrade].skip_canonicals_for_upgrade
(bool, default false), _SCHEMA single-source defaults+validation; graceful on
absent/malformed (WARN+defaults), warn-and-ignore unknown keys/tables, TypeError on
wrong type. Path $CCCI_SETTINGS / /etc/cc-ci/settings.toml. + tracked settings.toml.example.
- resolve_upgrade_base: flag true bypasses the canonical lookup -> no-canonical fallback;
canonical-present path (incl. samever step-back) unchanged when false.
- _no_canonical_base (always-on, §2.C): newest release tag < head (reuse
warm_reconcile.newest_older_version) -> main-tip -> skip; replaces jump-to-main-tip.
- unit: full resolution matrix + loader tests; 315 unit pass, ruff clean.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:55:22 +00:00
autonomic-bot
90228cffc4
chore(settings-adv): init REVIEW-settings.md + baseline orientation (awaiting Builder bootstrap)
continuous-integration/drone/push Build is failing
2026-06-17 16:46:09 +00:00
autonomic-bot and Claude Opus 4.8
f68f1c56d9
status(dash): ## DONE — M1+M2 fresh Adversary PASS ( 3595e80, 4c0b289), no VETO
...
continuous-integration/drone/push Build is failing
Per-recipe history now sources the full run list from local /var/lib/cc-ci-runs
artifacts; deployed (image 11ac2a1e6c07, 1/1) + verified live: bluesky-pds 8 in
exact host ts order, ghost 24/immich 28/discourse 25, plausible/custom-html
capped 30 newest; overview+badges 200; traversal/injection rejected; retention
no-trim. DoD plan §5 met.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:40:29 +00:00
autonomic-bot and Claude Opus 4.8
4c0b289881
claim(M2): dashboard redeployed (image 15addbc7bf45 -> 11ac2a1e6c07), live full per-recipe history verified
...
continuous-integration/drone/push Build is failing
bluesky-pds 8 rows in exact host ts order (753 556 435 427 423 ab-* m2rr-* m2r-*),
plausible 30 (capped from 33), ghost 24; overview+badges 200; service 1/1.
Deploy via path: flake (git-flake drops secrets/ submodule). Retention: no trim
job on /var/lib/cc-ci-runs (439 dirs / 17 days) — adequate.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:37:21 +00:00
autonomic-bot
931a2bed89
status(dash): record M2 deploy procedure + expected image tag roll (15addbc7bf45 -> 11ac2a1e6c07)
continuous-integration/drone/push Build is failing
2026-06-17 16:26:54 +00:00
autonomic-bot and Claude Opus 4.8
3595e80d08
claim(M1): per-recipe history sourced from local /var/lib/cc-ci-runs artifacts (full history, not Drone 100-build slice)
...
continuous-integration/drone/push Build is failing
history_for() now enumerates run dirs' results.json, groups by recipe, sorts
newest-first by finished timestamp (mixed numeric+named ids — timestamp is the
only correct key), caps at HISTORY_CAP=30, skips malformed/empty/no-recipe dirs.
Overview + badges + /runs + security guards + stdlib-only unchanged.
Local verify: 13/13 unit tests; full-fixture vs 308 real results.json →
bluesky-pds=8 in exact ts order, plausible capped 30 newest, edge dirs skipped.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-17 16:25:39 +00:00
autonomic-bot
79dbc2dc8f
status(samever): ## DONE — M1+M2 Adversary-verified PASS (no VETO)
...
continuous-integration/drone/push Build is passing
Orchestrator-written marker: the Builder hit the opus usage limit and could not
write its own DONE. Work is complete + Adversary-verified (M1 1310a95 , M2
199f5b6 , cleared for DONE). Unblocks auto-advance to canon.
2026-06-17 06:16:30 +00:00
autonomic-bot
dc74b1efb9
docs(recipe-customization): make previous/ a documented last-resort — prefer not to use
...
continuous-integration/drone/push Build is passing
The previous/ base-repair mechanism exists and can be used when updating tests
if a previous base won't deploy, but it is explicitly a last resort: reach for
it only after the dynamic base (last-green -> main-tip) fails to come up, since
each previous/ re-introduces the per-version patching treadmill the dynamic
base removed. Most recipes (incl. discourse) need none.
2026-06-17 03:36:31 +00:00
autonomic-bot
b97d1e5345
inbox: remove orphan pxgate cold-boot note (phase already DONE; loops stopped) — evidence in orchestrator JOURNAL
continuous-integration/drone/push Build is failing
2026-06-13 13:52:55 +00:00
autonomic-bot
f09b7bf21f
inbox(pxgate): cold-boot proof PASSED — deploy-proxy active 11s before dashboard on real reboot
continuous-integration/drone/push Build is failing
2026-06-13 13:52:13 +00:00
autonomic-bot
927cbfa747
inbox(pxgate): orchestrator completed M2 nixos-rebuild — deploy-proxy on /api/version, cycle broken
continuous-integration/drone/push Build is failing
2026-06-13 13:45:39 +00:00
autonomic-bot and Claude Opus 4.8
e37a7df496
terraform: IaC-of-record for the cc-ci Hetzner host (salvaged from PR#2)
...
continuous-integration/drone/push Build is failing
The cc-ci server already runs on Hetzner (migration done; nix/hosts/cc-ci-hetzner
landed directly on main 2026-05-31). PR#2's host config was superseded by newer
main commits, but its terraform/ provisioning scaffolding (cpx32 + nixos-infect)
was never preserved. Add it here as the infrastructure-of-record so the box is
reproducible. .gitignore keeps tfstate + secret tfvars out; HCLOUD_TOKEN is an
env var at apply time (no secrets committed). PR#2 closed as superseded.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-06-11 21:09:02 +00:00
autonomic-bot
17c8d29a8f
status(dstamp): ## DONE — M1 ( fb411b2) + M2 ( 71358da) both PASS, no VETO. Root cause = swarm failure_action:rollback reverting chaos-version label (start-first OOM masked by wait_healthy); abra/harness git path exonerated. Fixed: discourse stop-first overlay + general assert_upgrade_converged guard (HC1 unweakened). Proven L5 via drone !testme #450 . Blast-radius: discourse-only. DEFERRED closed.
continuous-integration/drone/push Build is failing
2026-06-11 17:52:45 +00:00
autonomic-bot
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
continuous-integration/drone/push Build is failing
2026-06-11 17:46:14 +00:00
autonomic-bot
7e783368c4
status(dstamp): M1 PASS ( fb411b2); M2 in progress — !testme drone full-lifecycle build #450 in flight (discourse @7ae7b0f, cc-ci main 2da1f01 w/ fix)
continuous-integration/drone/push Build is failing
2026-06-11 17:38:20 +00:00
autonomic-bot
2da1f01849
claim(dstamp): M1 — root cause attributed by DIRECT evidence (swarm failure_action:rollback reverts chaos-version label, masked by start-first+wait_healthy; abra+harness git path exonerated); minimal repro + 06-05→06-10 load change + fix (stop-first overlay + assert_upgrade_converged, HC1 unweakened) + blast-radius (only discourse). fix1+fix2 validate green @7ae7b0f7+U. Verification recipe in STATUS-dstamp.
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is passing
2026-06-11 17:32:11 +00:00
autonomic-bot
53db62258e
probe(dstamp): race concern CLOSED — Builder harden( e9c26c7) 2-phase StartedAt protocol deterministically distinguishes new update from stale base-deploy state; assessed CORRECT AND COMPLETE
continuous-integration/drone/push Build is failing
2026-06-11 17:23:59 +00:00
autonomic-bot
e9c26c72af
harden(dstamp): assert_upgrade_converged waits for the NEW swarm update (StartedAt advanced) before accepting a terminal state — closes the Adversary-flagged race where a stale 'completed' from the base deploy could mask a later rollback; no-op redeploy grace preserved
continuous-integration/drone/push Build is failing
2026-06-11 17:18:50 +00:00
autonomic-bot
a4c0dfcf11
probe(dstamp): blast-radius sweep — 4 enrolled recipes have failure_action=rollback+start-first; keycloak/n8n latent but currently PASS; assert_upgrade_converged covers all without overlay; drone has no upgrade tier
continuous-integration/drone/push Build is passing
2026-06-11 17:18:13 +00:00
autonomic-bot
d0d762c9c8
journal(dstamp): fix1 validation PASS (chaos 7ae7b0f7+U, converged); blast-radius = only discourse affected (keycloak/n8n upgrade-PASS L4; drone/traefik infra); general guard covers all
continuous-integration/drone/push Build is passing
2026-06-11 17:16:48 +00:00
autonomic-bot
e9eed8e7b7
probe(dstamp): Adversary independent probe findings — Docker rollback root cause confirmed, fix 0cc31a5 assessed CORRECT, race-window concern flagged (covered by defence-in-depth). Anti-anchoring preserved: JOURNAL not read. Awaiting claim(dstamp) for formal verdict.
continuous-integration/drone/push Build is passing
2026-06-11 17:12:01 +00:00
autonomic-bot
0cc31a507e
fix(dstamp): discourse upgrade stop-first overlay (stop 2x-memory start-first OOM→spurious swarm rollback) + harness assert_upgrade_converged (detect rollback/pause → honest upgrade failure, HC1 unweakened). Root cause: failure_action:rollback reverted chaos-version label, masked by start-first+wait_healthy
continuous-integration/drone/push Build is passing
2026-06-11 17:07:38 +00:00
autonomic-bot
9959ad6a2d
status(dstamp): DIRECT EVIDENCE — repro4 caught Spec=7ae7b0f7+U + PreviousSpec=eb96de94+U + State=updating post-redeploy; swarm failure_action:rollback reverts label (masked by start-first+wait_healthy); abra+harness exonerated. Fix: stop-first overlay + harness rollback detection
continuous-integration/drone/push Build is passing
2026-06-11 17:04:13 +00:00
autonomic-bot
866a429a6f
journal(dstamp): root cause = swarm failure_action:rollback reverts chaos-version label to base spec (start-first masks it via wait_healthy); concurrency refuted; repro3 capturing UpdateStatus
continuous-integration/drone/push Build is passing
2026-06-11 16:55:48 +00:00
autonomic-bot
9a097d3185
status(dstamp): investigation baseline — isolated git/abra path stamps head CORRECTLY (3 faithful repros); abra constant; run184 solo green vs clustered 06-11 drift @same ref; concurrency-artifact hypothesis under test
continuous-integration/drone/push Build is passing
2026-06-11 16:34:47 +00:00
autonomic-bot
40c321f5f9
prep(dstamp): Adversary recon baseline — stamp mechanism + cold observables (HEAD 7ae7b0f is 9 commits past tag 0.7.0+3.3.1/eb96de9; chaos-version stamps base not head; abra nix-pinned 0.13.0-beta). No verdict yet, awaiting M1 claim.
continuous-integration/drone/push Build is passing
2026-06-11 15:55:24 +00:00
autonomic-bot
ef577c7d60
status(bsky): ## DONE — M1 ( 369f4f4) + M2 ( 42eabba) both PASS, no VETO; bluesky-pds fixed via mirror PR#2 (re-pin 0.4.219) green level 5 at head on real CI, screenshot live, records closed, PR left open for operator
continuous-integration/drone/push Build is passing
2026-06-11 15:49:29 +00:00
autonomic-bot
5b0e42adc2
claim(bsky): M2 — operator handoff complete: green re-triggerable at PR#2 head f7b6c8df (run 427 level 5), PNG published, level/baseline reconciled, DEFERRED closed ( f150012), operator summary in STATUS; PR left open for operator
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2026-06-11 15:45:11 +00:00
autonomic-bot
cba53b69a4
status(bsky): operator summary written (B9); journal: shot-phase N/A disposition superseded, no canonical to reseed (B8 complete)
continuous-integration/drone/push Build is passing
2026-06-11 11:58:34 +00:00
autonomic-bot
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
continuous-integration/drone/push Build is passing
2026-06-11 11:57:12 +00:00
autonomic-bot
73889ed860
claim(bsky): M1 — root cause proven (:0.4 republished w/ 0.5.1/index.ts vs entrypoint index.js), mirror PR#2 re-pin 0.4.219 green at head via drone run 427 (level 5, upgrade=declared intentional skip, negative control run 423), screenshot verified real+credential-free
continuous-integration/drone/push Build is passing
2026-06-11 11:55:41 +00:00
autonomic-bot
72b3d6c089
journal(bsky): run 423 red = upgrade-base trap (base 0.1.1+v0.4 pins broken :0.4, PR head never reached); decisions entry for EXPECTED_NA-upgrade base suppression; run 427 in flight
continuous-integration/drone/push Build is passing
2026-06-11 11:52:39 +00:00
autonomic-bot
e9745c8c74
feat(bsky): EXPECTED_NA['upgrade'] suppresses the upgrade-tier base deploy — single deploy = PR head; bluesky-pds declares it (no deployable base: every published tag pins the republished moving :0.4). upgrade_base() extracted pure + 6 unit tests; meta-key doc regenerated. 253 unit tests + repo lint PASS
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2026-06-11 11:51:12 +00:00
autonomic-bot
823023a19a
docs(deferred): operator housekeeping pass 2026-06-11
...
continuous-integration/drone/push Build is passing
- CLOSED: plausible enrollment (overtaken — enrolled+running), discourse
bitnami pin (superseded — enrolled, L4 baseline), immich pg_dump (PR#2
green, operator merge pending), plausible Q4.7b ClickHouse (PR#3 green,
operator merge pending)
- RE-ENTERED per operator: mailu backupbot -> phase mailu, drone enrollment
-> phase drone, uptime-kuma create-a-monitor -> phase kuma, discourse
abra-stamp drift -> phase dstamp, bluesky-pds -> phase bsky (in progress)
2026-06-11 11:42:12 +00:00
autonomic-bot
fc16250db2
status(bsky): bootstrap phase — root cause proven (:0.4 moving tag now ships 0.5.1/node24/index.ts; recipe entrypoint execs index.js), fix = exact-pin 0.4.219; decisions + upstream registry
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is failing
2026-06-11 11:37:28 +00:00
autonomic-bot
13cad1f985
review(lvl5): M2 PASS @a521d43 — proven in real CI from cold clone of main. 247 unit tests + PR-path regression green, repo lint PASS. Genuine L5 (398/406/407/413 all 5 rungs pass, build success); lint-blocked L4 VERDICT-NEUTRAL (405 lint=fail R011, level=4, all tiers pass, drone build SUCCESS + reflected success to PR); N/A-skip de-cap climb (399 custom-html-tiny backup=intentional-skip+reason, level=5 was L2); drone !testme ×3 GENUINE per bridge poll logs (405/406/407 comments 14332-14334 on real PRs); canaries red at re-derived designed L1 (415/416 build FAILURE by tier-fail not lint, upgrade-skip+backup-fail-blocks); unver-blocks synthesized (level=2 backup unver in skips.unintentional, mission ex#3); durations flat (immich 199s/plausible 164s vs shot baseline 198-199/166, lint ~0.7s); old schema-1 artifacts render 200 no relabel; lint.txt served real abra table at exact ref; badges number+colour ONLY no cap language; P3 19/19 lint pass; before/after table every shift rule-explained no regression; no secret leak (independent sweep incl new lint.txt surface). §6 DoD satisfied. No VETO — Builder cleared to write ## DONE.
continuous-integration/drone/push Build is passing
2026-06-11 11:28:19 +00:00
autonomic-bot
cfc87fd8d3
review(lvl5): M1 PASS @3d8d286 — cold clone HEAD-match, 246 unit tests green + repo lint PASS on CI venv; de-capped compute_level correct on all 4 mission worked examples (L1 fail-blocks, L5 skip-climbs, L2 unver-blocks, L4 lint-unver); derive_rungs N/A classification matches DECISIONS table incl subtle upgrade structural-skip vs abort-unver split; §2.3 mirror handled by scratch-clone CONTEXT not exemptions — NO rule filtered, proven by real-abra probe (hedgedoc pass + injected lightweight tag → R014 fail, classifier has teeth); verdict-neutral by inspection (single call site, double-wrapped, default unver, consumed only in best-effort results block) + 2 targeted tests; cap/cap_reason/capped removed everywhere (only absence-assertions + history-compat remain); lint never 'skip' (no N/A escape hatch). No VETO — Builder cleared to merge + proceed to M2.
continuous-integration/drone/push Build is passing
2026-06-11 07:55:35 +00:00
autonomic-bot
ae10b553b0
review(shot): M1 PASS — audit matrix 19/19 cold-verified (enrolled set complete, no omissions), all non-OK root-causes evidence-backed (plausible 500-by-design via drone build-357 log; bluesky deploy-gated; BLANK/LOADING=domcontentloaded paint race; mumble NOT N/A via mumble-web), 11 PNGs independently Read incl plausible+multiple 4801B, every matrix read matched reality. N/A args agreed (bluesky justified, mumble denied). No VETO.
continuous-integration/drone/push Build is passing
2026-06-11 01:29:55 +00:00
autonomic-bot
4f3a74759d
review(shot): phase open — independent cold pre-audit ground truth (immich/n8n/cryptpad blank 4801-2B, keycloak/lasuite-docs loading-spinner, plausible null); awaiting M1 claim
continuous-integration/drone/push Build is passing
2026-06-11 01:19:52 +00:00
autonomic-bot
76a4b6b3fa
docs: recipe-customization review spec — full settings reference + restructuring candidates
...
continuous-integration/drone/push Build is passing
Complete reference for per-recipe CI customization: all 18 recipe_meta keys
(incl. the base pin UPGRADE_BASE_VERSION), the six divergent meta loaders,
every hook file (test_<op>.py overlays, ops.py, install_steps.sh,
setup_custom_tests.sh, compose.ccci.yml), env contracts, and §8 known
limitations / restructuring candidates (R1 loader drift, R2 dead SCREENSHOT
knob, R6 silent-typo hazard, ...). Written for operator review ahead of a
possible restructure.
2026-06-10 15:55:34 +00:00
autonomic-bot
5b65c6caa3
docs: concurrency spec — how parallel recipe runs stay safe (for review/restructuring)
...
continuous-integration/drone/push Build is passing
Documents the capacity=2 concurrent-run system as landed in c0df77d ,
68ef0f8 , e6d55b5 : config knobs, isolation model, per-recipe flock,
active-run registry + three-way janitor, convergence interactions,
failure-mode guarantees, and known limitations / restructuring
candidates.
2026-06-10 03:05:20 +00:00
autonomic-bot
157d06dc77
Merge pull request 'test(plausible): psql -q in _register_site — -t does not suppress command tags' ( #9 ) from test/plausible-psql-quiet into main
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
2026-06-09 23:12:37 +00:00
autonomic-bot
e6d55b53c7
fix(harness): a paused swarm update is settled — only active states block convergence
...
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is passing
68ef0f8 made services_converged() require UpdateStatus settled, treating
'paused' as in flight. But swarm's default update-failure-action pauses the
update on a single task flicker and the flag persists FOREVER (until the next
update): immich CI 241 had the app service 'paused' from a restart during
restore while the service was back at 1/1 and healthy — every subsequent wait
hung to its deadline and the run had to be killed.
Only 'updating' and 'rollback_started' now block convergence: those are the
states swarm is actively driving (the 238 stop-first race lives in 'updating').
'paused'/'rollback_paused' make no progress without intervention, so waiting on
them is pointless — N/N replicas is already required, and the HTTP-health and
tier assertions still gate whether the app actually works.
lint: PASS, unit tests: 138 passed.
2026-06-09 23:07:36 +00:00
autonomic-bot
68ef0f84fb
fix(harness): convergence must span stop-first rolling updates (immich 238 backup 409)
...
continuous-integration/drone/push Build is passing
continuous-integration/drone Build was killed
services_converged() accepted N/N replicas as converged — but a chaos redeploy
that changes a non-app service image (immich PR #2 moves the db to the
vectorchord pin) registers a stop-first rolling update that swarm may not have
STARTED yet: the OLD task still shows 1/1, the wait passes, and the task dies
seconds later. Build 238: backupbot resolved the db hook container, the task
was killed in the gap, and the pre-hook exec crashed the whole backup with a
409 -> no dump in the snapshot -> restore had nothing -> RED.
- services_converged() now also requires every service's swarm UpdateStatus to
be settled ('', completed, rollback_completed) — updating/paused/rollback in
flight is NOT converged. Strictly stricter: no gate is weakened.
- backup_app() gains a bounded (300s) settle-wait before 'abra app backup
create' as defence in depth; on timeout the backup still runs and the tier's
assertion delivers the verdict.
lint: PASS, unit tests: 138 passed.
2026-06-09 22:10:55 +00:00
autonomic-bot
c828f6cdd0
Merge remote-tracking branch 'origin/test/plausible-upgrade-base-3.0.1'
continuous-integration/drone/push Build is passing
continuous-integration/drone Build is failing
2026-06-09 21:57:39 +00:00
autonomic-bot
c0df77d0d9
fix(harness): make concurrent recipe runs safe (per-recipe flock + active-run registry)
...
continuous-integration/drone/push Build is passing
capacity=2 went live with three stale capacity=1-era assumptions that corrupted
concurrent runs (immich 229/230 '/pg_backup.sh: No such file'):
- ~/.abra/recipes/<recipe> is ONE shared working tree that fetch_recipe rm-rf's/
reclones and the upgrade tier git-checkouts mid-run. Same-recipe runs now
serialise on an exclusive flock (/run/lock/cc-ci-recipe-<recipe>.lock), taken
in main() BEFORE fetch_recipe and held for the whole run; the kernel releases
it on any process death, so there is no stale-lock failure mode. Different
recipes still run in parallel.
- CCCI_JANITOR_MAX_AGE=0 made a starting build reap ANY in-flight run app. Every
run now registers its app domain + pid in /run/cc-ci-active/<domain> before
app creation; the janitor checks the owner: alive (pid is a live run_recipe_ci
process) -> never reaped; dead -> reaped immediately; unknown (pre-registry or
post-reboot) -> age fallback (default 2h). The MAX_AGE=0 env override is gone
from .drone.yml.
- .drone.yml: concurrency.limit 1 -> 2 to match DRONE_RUNNER_CAPACITY=2; the
'safe because capacity=1' comments now describe the flock+registry model.
lint: PASS, unit tests: 138 passed.
2026-06-09 21:56:25 +00:00
autonomic-bot
9a7772563a
style: repo-wide lint pass — make the lint gate green again
...
Push builds have been RED on the lint step since ~build 209 from accumulated
formatting drift. This is the mechanical cleanup: ruff format + ruff --fix
(UP038 isinstance unions, SIM105 contextlib.suppress, UP031 f-strings, SIM115
tempfile context manager), shfmt -i 2 -ci, nixpkgs-fmt/statix/deadnix (merged
attrsets, dropped unused lib args), yamllint, and shell quoting fixes in
tests/lasuite-docs/setup_custom_tests.sh. No behaviour changes intended;
lint: PASS, unit tests: 138 passed.
2026-06-09 21:56:15 +00:00
autonomic-bot
e76d4005ab
chore(runner): raise CI concurrency to 2 (parallel recipe testing) ( #8 )
continuous-integration/drone/push Build is failing
continuous-integration/drone Build was killed
2026-06-09 18:35:19 +00:00
autonomic-bot
c32e6105d0
feat(reports): same-origin /pr proxy for the Recipe Report live STATUS column ( #7 )
continuous-integration/drone/push Build is failing
continuous-integration/drone Build is failing
2026-06-09 13:16:12 +00:00
autonomic-bot
c51cd84159
feat(harness): intentional skips + custom-html-tiny functional test; 4-rung ladder ( #6 )
...
continuous-integration/drone/push Build is failing
Declare intentional skips + custom-html-tiny functional test; 4-rung level ladder
- recipe_meta.EXPECTED_NA = {rung: reason} lists intentionally-skipped rungs; any
essential rung skipped and not listed is unintentional. Skips still cap the level
(never inflate). results.json: skips:{intentional,unintentional} + level_cap_rung.
- Level ladder = the four essential rungs (install, upgrade, backup/restore,
functional; top = L4). integration & recipe-local are optional, not leveled
(SSO still enforced for the run verdict, unchanged).
- Card shows skipped rungs as INTENTIONAL SKIP (green, reason below) / UNINTENTIONAL
SKIP (amber); level badge gains an expected/gap? third segment.
- custom-html-tiny: functional serve test (exact-byte round-trip + 404); declares
backup_restore intentionally skipped (stateless static server).
Independently verified by the adversary: 138 unit tests pass cold; live full-stage
run on custom-html-tiny green (upgrade tier ran; level 2; correct skips/badge);
clean teardown.
2026-06-09 03:12:11 +00:00