4825 Commits

Author SHA1 Message Date
jenkins
3461a4e99d 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
fbe61f6cb9 chore(cassandra): automated image update 2026-08-06 08:17:41 +00:00
jenkins
dbef8d6244 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
913f5953ab chore(cassandra): automated image update 2026-08-06 08:15:03 +00:00
flux-bot
cc8e08d6dc chore(cassandra): automated image update 2026-08-06 08:14:29 +00:00
jenkins
fb1131053a 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
9c0af401e9 docs: add cluster architecture diagrams 2026-08-06 04:42:12 -03:00
jenkins
15c27d85f6 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
003b2272ce chore(cassandra): automated image update 2026-08-06 06:50:03 +00:00
flux-bot
44a11d0765 chore(cassandra): automated image update 2026-08-06 06:46:05 +00:00
flux-bot
0cdfba4c02 chore(cassandra): automated image update 2026-08-06 06:42:06 +00:00
flux-bot
a7b205d1ec chore(cassandra): automated image update 2026-08-06 06:40:06 +00:00
flux-bot
aff0f9b18a chore(maintenance): automated image update 2026-08-06 04:47:42 +00:00
jenkins
d0753c5eb1 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
f44ed2f953 chore(maintenance): automated image update 2026-08-06 04:33:02 +00:00
flux-bot
e7b0a62197 chore(cassandra): automated image update 2026-08-06 04:27:41 +00:00
flux-bot
0b81f744db chore(cassandra): automated image update 2026-08-06 04:24:11 +00:00
flux-bot
10341a6ede chore(cassandra): automated image update 2026-08-06 04:19:49 +00:00
flux-bot
1bdc713d9a chore(cassandra): automated image update 2026-08-06 04:19:31 +00:00
flux-bot
e305350dc6 chore(maintenance): automated image update 2026-08-06 04:10:10 +00:00
jenkins
e3e40f4618 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
67839af124 chore(maintenance): automated image update 2026-08-06 03:11:10 +00:00
flux-bot
9aca7cd52b chore(maintenance): automated image update 2026-08-06 03:09:11 +00:00
flux-bot
57691698ed chore(maintenance): automated image update 2026-08-06 03:07:10 +00:00
flux-bot
160636197c chore(maintenance): automated image update 2026-08-06 03:02:09 +00:00
flux-bot
13934a6be7 chore(bstein-dev-home): automated image update 2026-08-06 02:56:09 +00:00
flux-bot
fff0ed9062 chore(bstein-dev-home): automated image update 2026-08-06 02:52:08 +00:00
jenkins
1e67bab40a docs: record the in-process repair timings and the classification-bleed fix
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:36:58 -03:00
jenkins
b9b1634833 docs(runbook): record the faster in-process repair timings
Red-build to green-rebuild is 1m04s on Ariadne 0.1.0-402, down from 4m00s
armed-to-resolved when the repair spawned its own Kubernetes Job. Reframe the
timings around the red build, since the arming leg depends on the agent pool.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:34:09 -03:00
flux-bot
f400c0116e chore(maintenance): automated image update 2026-08-06 02:25:00 +00:00
jenkins
c7f43339c4 docs(runbook): warn that a full agent pool stalls the demo
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:20:30 -03:00
jenkins
b233630007 feat(demo): preflight the agent-pool cap and open code-demo PRs
Two conditions silently break a rehearsal. A saturated Kubernetes agent pool
leaves the demo build queued reporting that all nodes are offline, and an open
hermes-repair PR makes the duplicate guard refuse a new proposal. Report both
so the operator sees them before starting rather than mid-demo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:19:37 -03:00
jenkins
15eec62162 feat(ariadne): allowlist the transient-infra retry action
The classification->action registry already mapped transient_infra_failure to
retry_transient_infra, but the action allowlist held only repair_demo_fixture,
so that route always died at the action_not_allowlisted gate. Add the action
and state the registry explicitly rather than relying on the code default.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 23:17:32 -03:00
flux-bot
77b6bfcdf4 chore(maintenance): automated image update 2026-08-06 02:10:50 +00:00
jenkins
d19feb1659 fix(vault-injector): run two replicas so restarts cannot skip injection
The webhook is failurePolicy: Ignore, so with one replica any pod created
during an injector restart is admitted without its Vault agent sidecar and
then crash-loops forever on a missing /vault/secrets file, with nothing to
indicate injection was skipped. Hit twice while rolling ariadne.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 22:56:49 -03:00
flux-bot
7cb266b5f1 chore(maintenance): automated image update 2026-08-06 01:49:38 +00:00
jenkins
2f9c9afcf4 chore(hermes-triage-demo): retire repair Job service account and role
The fixture repair now runs in-process inside Ariadne, so the
hermes-demo-repair service account and its Role/RoleBinding have no
remaining user.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 22:31:11 -03:00
jenkins
c55c866b08 feat(hermes-triage-demo): least-privilege ConfigMap patch for in-process repair
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 22:25:52 -03:00
jenkins
fc0d41056d fix(scripts): dashboard renderer wrote outside the repo after the layout move
ROOT still used parents[1], which resolved to scripts/ once the renderer
moved into scripts/render/. Every --build run wrote a phantom
scripts/services/monitoring tree and silently left the real dashboards
untouched. Points at the repo root again and removes the stray tree.

Also adds Hermes triage panels to the Atlas Testing dashboard: open
escalations awaiting a human, automated actions succeeded, Hermes
diagnosis latency, actions by result, and incident state by job.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 21:41:02 -03:00
flux-bot
32eb26f17e chore(maintenance): automated image update 2026-08-06 00:39:46 +00:00
jenkins
2c11b87fdb fix(monitoring): Alertmanager must HELO with a FQDN for Mailu
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 21:33:11 -03:00
jenkins
84e9849e46 feat(hermes-triage): real-repo patch proposals + Alertmanager email escalation
- Ariadne: per-repo code config for metis, lesavka, soteria,
  bstein-dev-home and ariadne, each with its own base branch, source path
  prefixes and file suffixes so a proposal can only touch that repo's
  source tree
- Alertmanager: the only receiver was an empty "default", so every alert
  fired into a void. HermesTriageHumanRequired now routes to an email
  receiver via Mailu's in-cluster local-domain relay, with resolved
  notices; scoped to service=hermes-triage so nothing else mails yet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 21:30:34 -03:00
flux-bot
a2aa9e7f67 chore(maintenance): automated image update 2026-08-06 00:15:26 +00:00
jenkins
f0c224e5f9 docs(hermes-triage): delivery record + enable Gitea issue filing config
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 21:01:50 -03:00
flux-bot
ba28379818 chore(maintenance): automated image update 2026-08-05 23:52:50 +00:00
jenkins
620f5b83d2 feat(hermes-triage): enable real-service triage across homegrown Jenkins jobs
Adds ariadne, lesavka, soteria, metis, ananke, pegasus, atlasbot,
bstein-dev-home and data-prepper to the autotriage allowlist. These get
detection, evidence, Hermes diagnosis and human-required escalation only:
no allowlisted repair action applies to them, so nothing is mutated.

Verified on lesavka #582 with the new console failure-region evidence:
classification coverage_quality_gate_failure, confidence 0.93, first
failed gate coverage (previously undetermined).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 20:31:44 -03:00
flux-bot
fdb2e8c411 chore(maintenance): automated image update 2026-08-05 23:28:21 +00:00
flux-bot
4b924b5033 chore(cassandra): automated image update 2026-08-05 23:22:31 +00:00
flux-bot
ed6077b2e4 chore(cassandra): automated image update 2026-08-05 23:18:23 +00:00
flux-bot
47569519a5 chore(cassandra): automated image update 2026-08-05 23:14:21 +00:00