4874 Commits

Author SHA1 Message Date
jenkins
137ea77e95 fix(demo): read the container exit code, not the Job status
The fixture check waited on the Job's .status.succeeded/.status.failed. The
kubelet records a container's exit code the instant it stops, but the Job
controller reconciles those fields on its own schedule: observed at 2m24s,
4m27s and 34m on this cluster for identical work. During that window the pod
had already exited 1 and the build sat printing 'Will try again after 13 sec',
looking hung long after the test had finished, which is unusable in a demo.

Polling the pod's terminated exitCode removes the controller from the path
entirely. The Job is still used, so the evidence shape is unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 17:11:45 -03:00
flux-bot
47d69cdd37 chore(cassandra): automated image update 2026-08-06 20:02:10 +00:00
flux-bot
4a303bffb7 chore(cassandra): automated image update 2026-08-06 19:58:14 +00:00
flux-bot
525b366ac7 chore(cassandra): automated image update 2026-08-06 19:54:19 +00:00
flux-bot
ddaaf75462 chore(cassandra): automated image update 2026-08-06 19:54:11 +00:00
flux-bot
fa57e078d7 chore(cassandra): automated image update 2026-08-06 19:45:07 +00:00
jenkins
515b4eaff7 feat(demo): narrate the monitor by echoing the commands it runs
An audience watching a dashboard has to take the result on trust. Watching
kubectl run against the cluster and reading the raw answer is the difference
between a demonstration and an assertion, so every read is now printed before
it runs and its output shown beneath.

Each stage also names the service UI worth looking at when something changes
there: the Jenkins job as the build goes red and again when the rebuild starts
on its own, the Hermes dashboard as the agent run appears, the Grafana triage
panels and the filed issues at the end.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 16:41:35 -03:00
flux-bot
fc85431fe0 chore(cassandra): automated image update 2026-08-06 19:41:13 +00:00
flux-bot
799318f7dd chore(cassandra): automated image update 2026-08-06 19:37:15 +00:00
flux-bot
88b3e9a7c8 chore(cassandra): automated image update 2026-08-06 19:37:03 +00:00
jenkins
46c8a0675f feat(demo): name the chart branch the monitor is taking
An audience following mermaid/TestAutomation.mmd needs to know which edge off
the route diamond was taken, which was the one thing the output left them to
infer. It now quotes the chart's own labels - authorized action, human
required, and the optional code path - and the docstring states where the
reporting is coarser than the diagram.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 16:25:39 -03:00
jenkins
e6e0d84272 feat(demo): reset deletes the demo repositories' issues, PRs and branches
A rerun should start from nothing. DEMO_REPOS is the entire blast radius and
is deliberately explicit: a real service's issues are genuine triage records,
and clearing them to tidy a demo would destroy the evidence the system exists
to produce.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 16:24:53 -03:00
jenkins
aa93b0fe04 fix(demo): print the monitor summary once per incident
The resolving tick remains the newest one until another incident opens, so the
completed checklist reprinted on every poll.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 16:07:03 -03:00
jenkins
ab16b5ca6b feat(demo): add reset and monitor commands
reset restores only what the demo itself creates: the fixture ConfigMap, the
demo repository's open repair pull requests and their branches. Real service
repositories are deliberately untouched - those issues are genuine triage
records, and deleting them to tidy a demo would destroy the evidence the
system exists to produce.

monitor streams the flow in the stages of mermaid/TestAutomation.mmd, so a
second terminal can be followed against the chart: Detect and gather, Hermes
analysis, Ariadne policy gates, Ariadne response, Inspectable outputs. Each
stage prints the evidence that moved it, since the claim the chart makes is
that every step is answerable from data rather than asserted. Read-only.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-06 15:57:02 -03:00
flux-bot
0e25697c94 chore(maintenance): automated image update 2026-08-06 18:53:56 +00:00
jenkins
954be9d34a fix(demo): print the triage allowlist as a list, not raw config
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
92be86211d 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
54fb36268f chore(maintenance): automated image update 2026-08-06 18:36:56 +00:00
flux-bot
f77ff90175 chore(cassandra): automated image update 2026-08-06 17:57:35 +00:00
flux-bot
1696e6e210 chore(cassandra): automated image update 2026-08-06 17:53:48 +00:00
flux-bot
ccb5f13a59 chore(cassandra): automated image update 2026-08-06 17:49:47 +00:00
flux-bot
6b11f1c190 chore(cassandra): automated image update 2026-08-06 17:48:33 +00:00
jenkins
65ecbd9199 docs(hermes): drop demonstration framing from the agent workspace
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
fcd3572236 chore(maintenance): automated image update 2026-08-06 17:17:37 +00:00
flux-bot
611e3ce123 chore(cassandra): automated image update 2026-08-06 17:15:24 +00:00
flux-bot
58e5011e9a chore(cassandra): automated image update 2026-08-06 17:12:02 +00:00
flux-bot
3a0ec2eb72 chore(cassandra): automated image update 2026-08-06 17:09:09 +00:00
flux-bot
bd44927d13 chore(cassandra): automated image update 2026-08-06 17:08:01 +00:00
flux-bot
5f26eedea0 chore(maintenance): automated image update 2026-08-06 16:18:37 +00:00
jenkins
c05a5e4abb 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
54fe286e46 chore(maintenance): automated image update 2026-08-06 15:51:58 +00:00
jenkins
6411429d98 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
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