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>
This commit is contained in:
parent
003b2272ce
commit
15c27d85f6
@ -1004,8 +1004,9 @@ The handoff must state plainly whether the full Hermes Agent or the Ollama fallb
|
||||
| Action registry: `repair_demo_fixture`, `retry_transient_infra` | live |
|
||||
| Bounded source-patch proposal → branch → pull request | live (demo repo) |
|
||||
| Human-required metric, vmalert rule, Alertmanager | live |
|
||||
| Gitea issue filing for human-required incidents | live, proven on 3 real repos |
|
||||
| Candidate-file selection for real service repos | live, PR not yet observed |
|
||||
| Gitea issue filing for human-required incidents | live, proven on 4 real repos |
|
||||
| Candidate-file selection for real service repos | live, PR opened on `bstein/ariadne` |
|
||||
| Narrowed alerting (repair failed, or unattended 6h) | live |
|
||||
|
||||
## What the fixture and code demos actually prove
|
||||
|
||||
@ -1049,6 +1050,40 @@ build red 02:20:03 -> fixture healthy 02:20:28 (25s)
|
||||
```
|
||||
|
||||
Code proposal: red build 22:34:59 -> pull request open 22:35:32 (33s).
|
||||
|
||||
**Autonomous source repair on a real service repository, proven 2026-08-06.**
|
||||
A one-line defect was seeded in `ariadne/utils/errors.py` (dropping the
|
||||
`errorMessage` key from the HTTP payload lookup) and pushed to master. Build
|
||||
409 went red, and Ariadne opened
|
||||
[bstein/ariadne PR #3](https://scm.bstein.dev/bstein/ariadne/pulls/3) from
|
||||
branch `hermes-repair/409` with the correct one-line fix:
|
||||
|
||||
```diff
|
||||
- raw = payload.get("error") or payload.get("message")
|
||||
+ raw = payload.get("error") or payload.get("message") or payload.get("errorMessage")
|
||||
```
|
||||
|
||||
The stored `hermes_autotriage_code_proposal` event records how it got there:
|
||||
|
||||
```text
|
||||
candidates: [ariadne/app.py, tests/test_utils.py, ariadne/services/mailu.py,
|
||||
ariadne/utils/errors.py, ariadne/utils/http.py, ariadne/utils/passwords.py]
|
||||
chosen_path: ariadne/utils/errors.py
|
||||
validated: true
|
||||
```
|
||||
|
||||
`ariadne/utils/errors.py` appears nowhere in the build console. It is in that
|
||||
list only because Ariadne read the failing test and followed its imports. No
|
||||
candidate path was pinned, unlike the `hermes-code-demo` job.
|
||||
|
||||
Four rounds were needed, and the failure reasons are the useful part:
|
||||
|
||||
| Build | Outcome | Cause |
|
||||
|---|---|---|
|
||||
| 404 | `no_candidate_files` | evidence held no failure at all |
|
||||
| 406 | never triaged | superseded by a newer build 24 s later |
|
||||
| 408 | `patch_invalid` | only the wrong file was offered |
|
||||
| 409 | **PR opened** | all three fixes live together |
|
||||
Hermes diagnosis latency across all runs: 15-21s.
|
||||
|
||||
Real homegrown service diagnoses (no action allowlisted, all escalated):
|
||||
|
||||
@ -1004,8 +1004,9 @@ The handoff must state plainly whether the full Hermes Agent or the Ollama fallb
|
||||
| Action registry: `repair_demo_fixture`, `retry_transient_infra` | live |
|
||||
| Bounded source-patch proposal → branch → pull request | live (demo repo) |
|
||||
| Human-required metric, vmalert rule, Alertmanager | live |
|
||||
| Gitea issue filing for human-required incidents | live, proven on 3 real repos |
|
||||
| Candidate-file selection for real service repos | live, PR not yet observed |
|
||||
| Gitea issue filing for human-required incidents | live, proven on 4 real repos |
|
||||
| Candidate-file selection for real service repos | live, PR opened on `bstein/ariadne` |
|
||||
| Narrowed alerting (repair failed, or unattended 6h) | live |
|
||||
|
||||
## What the fixture and code demos actually prove
|
||||
|
||||
@ -1049,6 +1050,40 @@ build red 02:20:03 -> fixture healthy 02:20:28 (25s)
|
||||
```
|
||||
|
||||
Code proposal: red build 22:34:59 -> pull request open 22:35:32 (33s).
|
||||
|
||||
**Autonomous source repair on a real service repository, proven 2026-08-06.**
|
||||
A one-line defect was seeded in `ariadne/utils/errors.py` (dropping the
|
||||
`errorMessage` key from the HTTP payload lookup) and pushed to master. Build
|
||||
409 went red, and Ariadne opened
|
||||
[bstein/ariadne PR #3](https://scm.bstein.dev/bstein/ariadne/pulls/3) from
|
||||
branch `hermes-repair/409` with the correct one-line fix:
|
||||
|
||||
```diff
|
||||
- raw = payload.get("error") or payload.get("message")
|
||||
+ raw = payload.get("error") or payload.get("message") or payload.get("errorMessage")
|
||||
```
|
||||
|
||||
The stored `hermes_autotriage_code_proposal` event records how it got there:
|
||||
|
||||
```text
|
||||
candidates: [ariadne/app.py, tests/test_utils.py, ariadne/services/mailu.py,
|
||||
ariadne/utils/errors.py, ariadne/utils/http.py, ariadne/utils/passwords.py]
|
||||
chosen_path: ariadne/utils/errors.py
|
||||
validated: true
|
||||
```
|
||||
|
||||
`ariadne/utils/errors.py` appears nowhere in the build console. It is in that
|
||||
list only because Ariadne read the failing test and followed its imports. No
|
||||
candidate path was pinned, unlike the `hermes-code-demo` job.
|
||||
|
||||
Four rounds were needed, and the failure reasons are the useful part:
|
||||
|
||||
| Build | Outcome | Cause |
|
||||
|---|---|---|
|
||||
| 404 | `no_candidate_files` | evidence held no failure at all |
|
||||
| 406 | never triaged | superseded by a newer build 24 s later |
|
||||
| 408 | `patch_invalid` | only the wrong file was offered |
|
||||
| 409 | **PR opened** | all three fixes live together |
|
||||
Hermes diagnosis latency across all runs: 15-21s.
|
||||
|
||||
Real homegrown service diagnoses (no action allowlisted, all escalated):
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user