4842 Commits

Author SHA1 Message Date
flux-bot
87b85a1176 chore(maintenance): automated image update 2026-08-06 15:42:00 +00:00
jenkins
5311b0bef2 feat(ariadne): map bstein-dev-home to its own log namespace
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 12:33:19 -03:00
jenkins
18886c5177 fix(hermes): run the Vault agent before the pod's own init containers
The agent init container is appended by default, so init-config ran before
/vault/secrets existed and fell back to the Secret every time. The values were
identical, so the migration appeared to work while Vault was never actually
read.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 12:20:53 -03:00
jenkins
9965b34534 feat(hermes): take the Anthropic credential from Vault
The Claude subscription OAuth token was created as a manual kubectl Secret in
the interest of demo time, with migration to Vault agreed as follow-up. The
value now lives at kv/atlas/hermes/agent-tokens and is injected as a file.

The hermes role gains that path and binds the hermes-triage service account
the deployment actually runs as; it previously bound only hermes-vault. The
init container prefers the Vault file and falls back to the Secret, so this
can be rolled back by removing the annotations alone, and the Secret should be
deleted once Vault has been serving it for a while.

Vault was reachable all along without the operator credential: Ariadne already
holds a vault-admin Kubernetes auth role, which is how the value was written.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 12:14:52 -03:00
flux-bot
ca03115da8 chore(cassandra): automated image update 2026-08-06 15:10:48 +00:00
flux-bot
f19927b36b chore(cassandra): automated image update 2026-08-06 15:06:55 +00:00
flux-bot
177b2eb17a chore(cassandra): automated image update 2026-08-06 15:02:54 +00:00
flux-bot
7913f2ee12 chore(cassandra): automated image update 2026-08-06 15:02:45 +00:00
flux-bot
866dbb92ab chore(maintenance): automated image update 2026-08-06 14:11:41 +00:00
flux-bot
666bf66ee7 chore(maintenance): automated image update 2026-08-06 13:47:28 +00:00
flux-bot
7e11b99b34 chore(maintenance): automated image update 2026-08-06 13:46:29 +00:00
flux-bot
fc45a179f8 chore(maintenance): automated image update 2026-08-06 13:44:28 +00:00
flux-bot
7b7e46e884 chore(maintenance): automated image update 2026-08-06 13:39:24 +00:00
flux-bot
bfc51be7e4 chore(maintenance): automated image update 2026-08-06 10:37:52 +00:00
jenkins
226a6b2bed docs: junit and pipeline-stage-view are live; record why it was never blocked
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 06:50:39 -03:00
flux-bot
48694b6f44 chore(maintenance): automated image update 2026-08-06 09:48:13 +00:00
jenkins
1e38838289 docs: record the TestAutomationV2 diagram corrections
Written up rather than applied, since the diagram is maintained in parallel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 06:18:16 -03:00
jenkins
aab389499c fix(ariadne): let the pod finish booting before liveness judges it
The earlier probe fix addressed slow /health responses under load, but the
restarts continued with a different signature: connection refused rather than
timeout, meaning the app was not listening yet. Ariadne runs migrations and
builds its cron schedule before binding, which can outlast what liveness
allows from initialDelaySeconds, so the kubelet kept restarting a pod that
was merely still starting.

Add a startupProbe granting up to five minutes to come up, after which
liveness takes over unchanged. This is the case startupProbe exists for.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 06:16:09 -03:00
flux-bot
c23234fffd chore(maintenance): automated image update 2026-08-06 09:11:55 +00:00
jenkins
0bd47ef6a4 feat(jenkins): install junit and pipeline-stage-view
Without the junit plugin the pipeline's junit step throws NoSuchMethodError,
jenkins.failed_tests is always empty, and auto-triage has only raw console
text to reason from. That was the root of two separate diagnosis failures:
the enforced failure being crowded out of the evidence budget, and the
patcher being unable to locate the defective source file.

Pinned to junit 1369.v15da_00283f06, the newest release that runs on core
2.528.3 - the current 1418 requires 2.533. scm-api moves 724 -> 728 because
the workflow-cps these pull in requires it; verified the whole 30-plugin
dependency closure needs no core newer than 2.528.3, and rehearsed the exact
jenkins-plugin-cli install in a throwaway pod before committing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 06:08:17 -03:00
flux-bot
c7f670a53c chore(maintenance): automated image update 2026-08-06 08:55:38 +00:00
flux-bot
1611844e69 chore(maintenance): automated image update 2026-08-06 08:22:34 +00:00
flux-bot
7248d54b34 chore(cassandra): automated image update 2026-08-06 08:21:47 +00:00
jenkins
699d1a5689 fix(ariadne): stop the kubelet killing a healthy triage pod
The liveness probe used the default timeoutSeconds of 1. The auto-triage tick
runs every minute and spends most of it waiting on Jenkins, OpenSearch, Gitea
and Hermes, so against a 500m CPU limit /health occasionally answers in over a
second. Three of those and the container is killed, dropping triage ticks for
the length of a restart. Observed 11 times in 139 minutes, with the pod
sitting 1/2 Ready and restarting repeatedly.

Give both probes a 5s timeout and let liveness tolerate five failures, so a
busy tick is no longer mistaken for a hung process.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 05:20:35 -03:00
flux-bot
ff8da346d2 chore(cassandra): automated image update 2026-08-06 08:17:41 +00:00
jenkins
20c5b326c5 docs(runbook): Claude primary, hung-build escalation, narrowed alerting
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 05:15:42 -03:00
flux-bot
4d4d4c481c chore(cassandra): automated image update 2026-08-06 08:15:03 +00:00
flux-bot
8de1a87ffe chore(cassandra): automated image update 2026-08-06 08:14:29 +00:00
jenkins
c2c8a81c7f feat(hermes): switch the primary model to Claude Opus 5
The Codex weekly limit is close, so make anthropic/claude-opus-5 primary and
demote openai-codex to first fallback with the local gpt-oss:20b behind it.

The credential is a Claude subscription OAuth token, not an API key. The
anthropic provider resolves ANTHROPIC_API_KEY, then ANTHROPIC_TOKEN, then
CLAUDE_CODE_OAUTH_TOKEN, so the OAuth token must arrive under the last name
to be treated correctly. Marked optional so Hermes still starts and falls
back if the Secret is absent.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 05:00:09 -03:00
jenkins
4d3982ac96 docs: add cluster architecture diagrams 2026-08-06 04:42:12 -03:00
jenkins
901c106a92 docs: record the first autonomous source repair on a real service repo
ariadne PR #3 from incident ariadne/409, chosen path ariadne/utils/errors.py -
a file that appears nowhere in the build console and was reached only by
following the failing test's imports.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 04:28:54 -03:00
flux-bot
d52498273c chore(cassandra): automated image update 2026-08-06 06:50:03 +00:00
flux-bot
f19272f7a2 chore(cassandra): automated image update 2026-08-06 06:46:05 +00:00
flux-bot
f6d5a2a677 chore(cassandra): automated image update 2026-08-06 06:42:06 +00:00
flux-bot
6f4f5f8afa chore(cassandra): automated image update 2026-08-06 06:40:06 +00:00
flux-bot
426b6db1e7 chore(maintenance): automated image update 2026-08-06 04:47:42 +00:00
jenkins
a1b79e89b7 docs: state what each demo proves and record the two selection defects
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 01:39:55 -03:00
flux-bot
384de8652a chore(maintenance): automated image update 2026-08-06 04:33:02 +00:00
flux-bot
f44c8d26a4 chore(cassandra): automated image update 2026-08-06 04:27:41 +00:00
flux-bot
7a5db4cf5a chore(cassandra): automated image update 2026-08-06 04:24:11 +00:00
flux-bot
d0f9773368 chore(cassandra): automated image update 2026-08-06 04:19:49 +00:00
flux-bot
8c4f90a39c chore(cassandra): automated image update 2026-08-06 04:19:31 +00:00
flux-bot
62034931e2 chore(maintenance): automated image update 2026-08-06 04:10:10 +00:00
jenkins
2b0fdd1a03 feat(monitoring): make Hermes triage email mean something
Every human_required escalation already files an issue in the failing
service's own repository, and mailing on each one made the inbox the loudest
and least informative output of the system. Replace the blanket alert with
two narrow ones: a repair that ran and failed, which is the only case where
the automation acted and left things no better, and an escalation still
untouched after six hours.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 00:26:34 -03:00
flux-bot
2a75b6174a chore(maintenance): automated image update 2026-08-06 03:11:10 +00:00
flux-bot
a08815fb3f chore(maintenance): automated image update 2026-08-06 03:09:11 +00:00
flux-bot
2a297c962e chore(maintenance): automated image update 2026-08-06 03:07:10 +00:00
flux-bot
4ff140ac45 chore(maintenance): automated image update 2026-08-06 03:02:09 +00:00
flux-bot
ecd4d8c48d chore(bstein-dev-home): automated image update 2026-08-06 02:56:09 +00:00
flux-bot
c06cc8cbe0 chore(bstein-dev-home): automated image update 2026-08-06 02:52:08 +00:00