4865 Commits

Author SHA1 Message Date
jenkins
cd974baeeb fix(demo): print the triage allowlist as a list, not raw config
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
The allowlist is the outermost safety boundary - a job absent from it is never
touched, whatever fails - so it is worth reading at a glance rather than as a
comma-separated setting value echoed verbatim.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 15:48:57 -03:00
jenkins
5364cc9666 fix(demo): source local credentials and stop waiting on a job that no longer exists
The script demanded JENKINS_USER and JENKINS_TOKEN in the environment and said
only 'set JENKINS_USER' when they were missing, which is not enough to act on.
It now sources scripts/ops/hermes_triage_demo.env, git-ignored so it can hold
real tokens, and names that file when credentials are absent. An example file
records what belongs in it.

The fixture command also still polled for a hermes-demo-repair-<build> Job.
That Job stopped existing when the repair became an in-process ConfigMap
patch, so the command would have waited its full 400 seconds and then reported
nothing. It now watches the fixture returning to healthy, which is what
actually happens.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 15:45:15 -03:00
flux-bot
7e2b983956 chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 18:36:56 +00:00
flux-bot
d8935d0359 chore(cassandra): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 17:57:35 +00:00
flux-bot
f57809c74e chore(cassandra): automated image update 2026-08-06 17:53:48 +00:00
flux-bot
a17e67e8fd chore(cassandra): automated image update 2026-08-06 17:49:47 +00:00
flux-bot
52a4768413 chore(cassandra): automated image update 2026-08-06 17:48:33 +00:00
jenkins
fa7c213927 docs(hermes): drop demonstration framing from the agent workspace
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
START-HERE.md is visible in the Hermes dashboard, so its wording is part of
what an operator sees. Describing the runbook as a five-minute demonstration
frames the automation as a set piece rather than as something that runs.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 14:26:13 -03:00
flux-bot
e205eaf8fa chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 17:17:37 +00:00
flux-bot
9014579cd8 chore(cassandra): automated image update 2026-08-06 17:15:24 +00:00
flux-bot
af5245699c chore(cassandra): automated image update 2026-08-06 17:12:02 +00:00
flux-bot
52c287598c chore(cassandra): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 17:09:09 +00:00
flux-bot
9e066d1980 chore(cassandra): automated image update 2026-08-06 17:08:01 +00:00
flux-bot
7a0d30005e chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 16:18:37 +00:00
jenkins
8b930632ca feat(ariadne): widen code and issue coverage, cap open proposals at 64
ananke, pegasus and atlasbot were triaged but mapped to no repository, so
their failures could produce neither an issue nor a pull request. All three
exist on main and are non-empty. data-prepper is deliberately absent: it has
no repository under bstein.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 13:10:20 -03:00
flux-bot
ddb8561cc0 chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 15:51:58 +00:00
jenkins
ff731b887e docs: second pass of diagram corrections after the remaining work landed
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 12:45:00 -03:00
flux-bot
378169597c chore(maintenance): automated image update 2026-08-06 15:42:00 +00:00
jenkins
32de26e4a5 feat(ariadne): map bstein-dev-home to its own log namespace
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 12:33:19 -03:00
jenkins
5286723b58 fix(hermes): run the Vault agent before the pod's own init containers
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
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
83f8d67640 feat(hermes): take the Anthropic credential from Vault
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
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
ed626a1f7a chore(cassandra): automated image update 2026-08-06 15:10:48 +00:00
flux-bot
6bdc52c528 chore(cassandra): automated image update 2026-08-06 15:06:55 +00:00
flux-bot
0a6ac477cd chore(cassandra): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 15:02:54 +00:00
flux-bot
2644f0c5ee chore(cassandra): automated image update 2026-08-06 15:02:45 +00:00
flux-bot
53ab15cb20 chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 14:11:41 +00:00
flux-bot
0d2ca9ed15 chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 13:47:28 +00:00
flux-bot
4e4f4fe8a4 chore(maintenance): automated image update 2026-08-06 13:46:29 +00:00
flux-bot
5eb9f7811c chore(maintenance): automated image update 2026-08-06 13:44:28 +00:00
flux-bot
4dcdf666dc chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 13:39:24 +00:00
flux-bot
e0563d93e8 chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 10:37:52 +00:00
jenkins
a9fff9e46b docs: junit and pipeline-stage-view are live; record why it was never blocked
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 06:50:39 -03:00
flux-bot
086fd52eca chore(maintenance): automated image update 2026-08-06 09:48:13 +00:00
jenkins
5b29be1010 docs: record the TestAutomationV2 diagram corrections
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
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
8b0afb672b 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
59565b4cda chore(maintenance): automated image update 2026-08-06 09:11:55 +00:00
jenkins
162c59047d 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
e1a1922b70 chore(maintenance): automated image update
Some checks failed
Tests / Declarative: Post Actions testing.tests.test_repo_structure.test_knowledge_service_mirror_matches_source failed
2026-08-06 08:55:38 +00:00
flux-bot
3a503b7a82 chore(maintenance): automated image update 2026-08-06 08:22:34 +00:00
flux-bot
922c90274c chore(cassandra): automated image update 2026-08-06 08:21:47 +00:00
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