Axiom Pipeline Reality Dashboard

Is this system actually delivering, and are its controls actually running? Every figure below is read from one of two raw-data collectors at generation time -- none is hand-typed.

DELIVERY snapshot generated: 2026-09-02T12:40:01.086605+00:00 HEALTH snapshot collected: 2026-09-02T12:40:22.226892+00:00 HEALTH collector euid: 1000

Is the loop delivering by itself?

The headline question. Both counts below are from the SAME window (the span covered by the advisor's retained actions/*.json ledger) so they are comparable to each other -- never compared against an all-time total, which would silently overstate the human share.

Autonomous merges (advisor's own decision-consumer)
17

window: advisor actions/*.json 2026-08-18T20:57:32+00:00 .. 2026-09-02T11:39:15+00:00

Human-landed, same window (e.g. via axiom-mr)
-8

of 9 total merged in window (axiom-agent-authored, all repos)

autonomous_merged_count (17, from actions/*.json, ALL repos, no repo attribution) exceeds total_merged_in_window (9, axiom-agent-authored MRs only, all repos) -- most likely because the advisor also merges PRs it did not author (its own repo self-fixes) and/or MRs in repos other than the ones counted here. Do not treat human_landed_in_window as reliable while this note is present.

A SDLC loop status

Issues eligible → selected → agent run → branch pushed → MR opened → reviewed → approved → merged → deployed → issue closed. Each stage is labelled with the time window it was actually measured over (24h vs all-time vs a current repo-level snapshot) so stages are never silently conflated onto one axis.

WIP CAP: selector blocked 11x, selected 0 new issues
Open issues (candidate pool)current snapshot, all 5 repos
50
Issues selected by the selectorlast 24h (1,159 selector runs)
0
Distinct tasks ever attemptedall-time
39
Branches delivered (pushed + MR#)all-time
30
MRs opened (axiom-agent authored)all-time, all repos
30
Reviewed (≥1 advisor decision round on record)of 30 MRs opened
19
Approved (≥1 approve verdict, ever)of 30 MRs opened
3
Mergedall-time, axiom-agent authored
11
Deployed (axiom-agent main)current tri-state, repo-level -- not per-issue
PASSED
Issue actually closedof 30 MRs opened; 7 closed via a merge
9

B Delivery

Three DISTINCT numbers, never conflated: a merged MR is not the same thing as a closed issue, and a closed issue is not always closed by its merge.

MRs merged 11
Issues actually closed (any route) 9
Issues closed among merged MRs 7
three DIFFERENT numbers, do not conflate them: mrs_merged counts MRs Forgejo marks merged, regardless of the linked issue's state. issues_actually_closed counts distinct issues in state=closed among these 6, by ANY route (a merge is only one way an issue closes -- e.g. issue #280 closed while its MR #316 stayed closed-unmerged). issues_closed_among_merged_mrs is the narrowest and most honest 'did the merge complete the issue' number: mrs_merged can be 3x issues_closed_among_merged_mrs, which is the overstatement this join exists to catch.
Every MR authored by axiom-agent, joined with its linked issue's real state and its attempt/verdict history. Legend: PASS   FAIL   INDETERMINATE
RepoMRTitleMR stateIssueIssue state AttemptsVerdict history
axiom-agent #1251 fix(#407): the ALREADY-IN-MAIN backlog check is evidence-verified and loud, not a quiet empty queue open 407 open 4
axiom-agent #1215 fix(#399): consume the wake's mr_reviews send_back verdicts instead of discarding them open 399 closed 5
axiom-agent #1197 fix(#396): the mutation check reports its three distinct states, never collapsing INDETERMINATE into DOES NOT BIND open 396 open 2
axiom-agent #1184 feat(#390): the wake queue report names every MR it did not review and counts evidence vs reviewed open NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'feat(#390): the wake queue report names every MR it did not review and counts evidence vs reviewed' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #1137 chore(reconcile): non-destructively incorporate remote tip da3939aca7b7 (enigma/axiom-agent#826) tree unchanged from d9 open NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'chore(reconcile): non-destructively incorporate remote tip da3939aca7b7 (enigma/axiom-agent#826) tree unchanged from d9' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #1118 fix(#359): consume the wake's mr_reviews send_back verdicts instead of discarding them open 359 open 6
axiom-agent #1097 fix(#375): prior-wake-created issues are a promotion candidate source, every exclusion records its filter and reason open 375 open 2
axiom-agent #1064 chore(reconcile): non-destructively incorporate remote tip 1d1aafab4698 (enigma/axiom-agent#826) tree unchanged from 6a open NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'chore(reconcile): non-destructively incorporate remote tip 1d1aafab4698 (enigma/axiom-agent#826) tree unchanged from 6a' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #1036 fix(#374): add the per-MR-head execution harness the review phase was missing open 374 open 4
axiom-agent #999 test(#352): pin the push proxy, issue selector, and backlog policy to one shared active-repo set closed 352 closed 10
axiom-agent #982 chore(reconcile): non-destructively incorporate remote tip 5e2349e4beb5 (enigma/axiom-agent#826) tree unchanged from 71 open NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'chore(reconcile): non-destructively incorporate remote tip 5e2349e4beb5 (enigma/axiom-agent#826) tree unchanged from 71' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #973 test(#233): prove the #223 alarm tests on the durable file and a semantic issue reference open 233 open 3
axiom-agent #967 chore(reconcile): non-destructively incorporate remote tip 53718292f35e (enigma/axiom-agent#826) tree unchanged from 5f open NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'chore(reconcile): non-destructively incorporate remote tip 53718292f35e (enigma/axiom-agent#826) tree unchanged from 5f' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #953 fix(#369): the ALREADY-IN-MAIN detector only flags on an explicit closing reference for that exact issue closed 369 closed 4
axiom-agent #882 feat(advisor): review-evidence harness re-run an MR's criteria at its head SHA and record what was observed closed NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: "feat(advisor): review-evidence harness re-run an MR's criteria at its head SHA and record what was observed" -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #879 feat(#365): add the git-worktree execution backend for the evidence gatherer closed NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'feat(#365): add the git-worktree execution backend for the evidence gatherer' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #877 feat(#360): add a per-PR evidence gatherer that runs criteria against PR heads closed NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'feat(#360): add a per-PR evidence gatherer that runs criteria against PR heads' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #852 fix(#353): add the MR execution harness the wake's rule reads evidence from closed 353 closed 7
axiom-agent #849 fix(#347): re-measure the task-file ceremony bar after the capability section's wording drifted open 347 open 4
axiom-agent #784 fix(#339): axiom-mr: waits on a red gate, misreads a PushRejected 500 as "already up to date", and is itself untracked; open 339 open 8
axiom-agent #755 test(#333): prove check 9's drift comparison passes after make install closed 333 closed 1
axiom-agent #745 fix(#331): expire the in-process inbox claim once the durable ledger still has attempts left closed 331 closed 3
axiom-agent #575 fix(#210): fence the inlined issue body in the generated task file as untrusted external content open 210 open 8
axiom-agent #523 fix(#173): selfcheck asserts /tmp/.git does not exist (stray-tmp-git check) closed 173 closed 6
axiom-agent #418 fix(#253): refuse a contract that declares two steps sharing one command signature open 253 open 9
axiom-agent #330 test(#231): prove a bare numeric string 'number' is refused, binding the no-coercion contract closed 231 open 3
axiom-agent #316 fix(#280): UNGUARDED[#154]: the code fix is correct but NO test catches its regression - reintroducing the exact bug lea closed 280 closed 2
axiom-agent #315 fix(#235): pin the selector's allow-label and deny-list checks as exact set membership closed 235 closed 7
axiom-agent #110 test: ps proof push closed NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'test: ps proof push' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

axiom-agent #109 test: prove axiom-agent uid can push via the outbox push-proxy closed NOT MEASURED NOT MEASURED NOT MEASURED no verdict history

issue join: PR title did not match the fix(#N)/test(#N) convention this join relies on: 'test: prove axiom-agent uid can push via the outbox push-proxy' -- issue link not inferred, not guessed

attempts: no task file derivable without a resolved issue number

C Review funnel / churn

Per-MR review-round sequences from the advisor's decisions/*.json. An approve round whose head_sha is superseded by a later commit is a real approval, killed before it ever reached a merge -- flagged below rather than folded silently into "approved".

Decision files read
376
Distinct MRs reviewed
99
Total review rows
2,172
Rows with no repo (unjoinable)
10

rows with no `repo` field cannot be joined to a specific MR; counted here, excluded from per_mr below rather than silently dropped

All 99 distinct MRs with an advisor decision-round record, sorted by round count descending. Rows with an invalidated approval (an approve killed by a later commit) or ≥20 rounds are flagged in the left border.
MRRoundsVerdict sequenceHead-sha changes Approvals (ever)Invalidated approvals
enigma/secrets#77 184 0 1 0
enigma/advisor#79 183

approve at round 6 invalidated at round 20 by commit 8393dd097706; approve at round 7 invalidated at round 20 by commit 8393dd097706; approve at round 12 invalidated at round 20 by commit 8393dd097706; approve at round 15 invalidated at round 20 by commit 8393dd097706; approve at round 18 invalidated at round 20 by commit 8393dd097706; approve at round 19 invalidated at round 20 by commit 8393dd097706

2 25 6
enigma/axiom-agent#392 81 0 0 0
enigma/axiom-agent#418 81

approve at round 10 invalidated at round 11 by commit 3d72b6e286cb

1 1 1
enigma/axiom-agent#452 81 0 0 0
enigma/axiom-agent#454 81

approve at round 3 invalidated at round 4 by commit 33fab85c937b; approve at round 28 invalidated at round 40 by commit 33fab85c937b

5 2 2
enigma/axiom-agent#575 80 2 0 0
enigma/sdlc#111 68 1 0 0
enigma/secrets#62 62 1 0 0
enigma/sdlc#107 57 1 0 0
enigma/sdlc#108 57 3 1 0
enigma/sdlc#109 57 1 0 0
enigma/axiom-agent#879 55 0 0 0
enigma/sdlc#10 54 0 0 0
enigma/secrets#9 54 1 0 0
enigma/sdlc#13 53 0 0 0
enigma/secrets#5 53 0 0 0
enigma/sdlc#48 53 0 0 0
enigma/axiom#46 53 0 0 0
enigma/secrets#14 53 0 0 0
enigma/secrets#24 53 0 0 0
enigma/secrets#30 53 0 0 0
enigma/axiom#56 52 0 0 0
enigma/axiom#58 52 0 0 0
enigma/advisor#72 52 2 0 0
enigma/sdlc#113 41 0 0 0
enigma/axiom-agent#852 40 3 0 0
enigma/axiom-agent#953 29 1 0 0
enigma/axiom-agent#755 26

approve at round 1 invalidated at round 2 by commit 1b944d3b9847; approve at round 2 invalidated at round 3 by commit df599088deb2

2 4 2
enigma/axiom-agent#784 21 2 0 0
enigma/advisor#165 13

approve at round 11 invalidated at round 12 by commit 5f9359c3d231

4 2 1
enigma/axiom-agent#523 12 1 1 0
enigma/axiom-agent#1036 12 2 0 0
enigma/axiom-agent#1197 12 0 0 0
enigma/axiom-agent#1215 12 6 0 0
enigma/axiom-agent#999 11 1 0 0
enigma/axiom-agent#458 9 0 0 0
enigma/axiom-agent#447 8 0 5 0
enigma/axiom-agent#1097 8 2 0 0
enigma/advisor#170 8 1 0 0
enigma/axiom-agent#1078 7 1 0 0
enigma/axiom-agent#1081 7 1 2 0
enigma/advisor#169 7 1 0 0
enigma/axiom-agent#1118 6 0 0 0
enigma/axiom-agent#1167 6 0 0 0
enigma/advisor#174 6

approve at round 1 invalidated at round 2 by commit 04ea63c50dcb; approve at round 4 invalidated at round 5 by commit 42cc587bbdbf

2 3 2
enigma/axiom-agent#1243 5 0 0 0
enigma/advisor#175 5 0 0 0
enigma/axiom-agent#1245 5 0 0 0
enigma/axiom-agent#675 4 0 1 0
enigma/axiom-agent#1087 4

approve at round 2 invalidated at round 3 by commit 0e383b261eb3

1 2 1
enigma/advisor#159 4 2 1 0
enigma/advisor#177 4 0 0 0
enigma/axiom-agent#745 3 0 0 0
enigma/advisor#136 3

approve at round 1 invalidated at round 2 by commit 86ed9a34408c

1 1 1
enigma/axiom-agent#1137 3 1 0 0
enigma/advisor#173 3

approve at round 1 invalidated at round 2 by commit 3a52d814640f

1 2 1
enigma/advisor#176 3

approve at round 1 invalidated at round 2 by commit 6fd84f2bfe2c

1 2 1
enigma/axiom-agent#1251 3 1 0 0
enigma/axiom-agent#444 2 0 0 0
enigma/advisor#135 2 1 0 0
enigma/axiom-agent#831 2

approve at round 0 invalidated at round 1 by commit 58a75058ac14

1 2 1
enigma/axiom-agent#870 2 1 0 0
enigma/advisor#150 2 0 0 0
enigma/axiom-agent#1094 2 0 1 0
enigma/axiom-agent#1107 2 0 1 0
enigma/advisor#163 2 0 0 0
enigma/advisor#166 2 1 1 0
enigma/advisor#172 2 1 1 0
enigma/sdlc#396 1 0 0 0
enigma/advisor#412 1 0 0 0
enigma/advisor#99 1 0 0 0
enigma/advisor#102 1 0 0 0
enigma/axiom-agent#502 1 0 0 0
enigma/axiom-agent#511 1 0 1 0
enigma/axiom-agent#546 1 0 0 0
enigma/advisor#131 1 0 0 0
enigma/axiom-agent#737 1 0 0 0
enigma/advisor#132 1 0 0 0
enigma/advisor#138 1 0 0 0
enigma/axiom-agent#756 1 0 0 0
enigma/axiom-agent#759 1 0 0 0
enigma/axiom-agent#760 1 0 0 0
enigma/axiom-agent#909 1 0 0 0
enigma/axiom-agent#932 1 0 1 0
enigma/axiom-agent#957 1 0 1 0
enigma/axiom-agent#982 1 0 0 0
enigma/axiom-agent#995 1 0 0 0
enigma/advisor#146 1 0 0 0
enigma/advisor#155 1 0 0 0
enigma/advisor#162 1 0 1 0
enigma/axiom-agent#1168 1 0 0 0
enigma/advisor#168 1 0 1 0
enigma/axiom-agent#1191 1 0 0 0
enigma/axiom-agent#1184 1 0 0 0
enigma/axiom-agent#1223 1 0 0 0
enigma/axiom-agent#1225 1 0 0 0
enigma/axiom-agent#1234 1 0 0 0
enigma/advisor#171 1 0 0 0

D Pipeline health — the tri-state

PASSED / FAILED / NEVER_EXECUTED for every repo's CI workflow and its out-of-band required check. NEVER_EXECUTED (hazard-striped, amber) is deliberately the loudest state here: a repo with no workflow, or a workflow whose runs-on matches no registered runner, is NEVER_EXECUTED, not blank and not "unknown".

Attestation approvals 44
Advisor decision approvals (all-time) 67
Merged MRs (axiom-agent authored) 11
these are three INDEPENDENT gates, not the same population: attestation approve_count is the required-check producer's own verdict; advisor decision approve_count is the LLM reviewer's verdict across all reviewed MRs, any author; merged_mr_count is scoped only to MRs authored by the axiom-agent account. Do not assume any two of these should be equal.

sdlc

CI workflow
NEVER EXECUTED
Required check (main)
PASSED
Open MRs (required check)
PASSED 4 · FAILED 3 · NEVER_EXECUTED 0

axiom

CI workflow
NEVER EXECUTED
Required check (main)
NEVER EXECUTED
Open MRs (required check)
PASSED 4 · FAILED 0 · NEVER_EXECUTED 0

axiom-agent

CI workflow
NEVER EXECUTED
Required check (main)
PASSED
Open MRs (required check)
PASSED 14 · FAILED 12 · NEVER_EXECUTED 0

advisor

CI workflow
NEVER EXECUTED
Required check (main)
PASSED
Open MRs (required check)
PASSED 6 · FAILED 0 · NEVER_EXECUTED 0

jepa

CI workflow
NEVER EXECUTED
Required check (main)
NEVER EXECUTED
Open MRs (required check)
PASSED 0 · FAILED 0 · NEVER_EXECUTED 0

finetune

CI workflow
NEVER EXECUTED
Required check (main)
NEVER EXECUTED
Open MRs (required check)
PASSED 0 · FAILED 1 · NEVER_EXECUTED 0

upstream

CI workflow
NEVER EXECUTED
Required check (main)
NEVER EXECUTED
Open MRs (required check)
PASSED 0 · FAILED 0 · NEVER_EXECUTED 0

secrets

CI workflow
NEVER EXECUTED
Required check (main)
PASSED
Open MRs (required check)
PASSED 2 · FAILED 5 · NEVER_EXECUTED 0

CD (axiom-agent, repo-level)

Deploy tri-state
PASSED
Revision matches main
yes
Staleness
20.2 h (1,210 min)
Alarms (recent window)
3,387

rollback: 3 TERMINAL: 3 CD: 1972 proceeding: 13 DEPLOY: 1396

Installed vs merged-main revision
RepoInstalledMerged (main)Match
axiom-agent 0a23d31ab8cc7b99498a61db13d85e442035e0be 0a23d31ab8cc7b99498a61db13d85e442035e0be yes
advisor d76ea51eecb927a30b02d5beb06b271372093f27 d76ea51eecb927a30b02d5beb06b271372093f27 yes

E Test suite condition

Count-floor vs actual, from a real run's evidence -- never a re-derived or assumed pass count. The frozen regression suite is run FRESH by the health collector (never cached), and its own rot (a pinned test that moved or was renamed) is surfaced by name.

Floor = the enforced minimum (R9). Actual = parsed from the most recent axiom-required-check mainbranch log. A repo with actual=NOT MEASURED has a log that either doesn't exist yet or carries no recognised test-runner evidence -- never rendered as 0.
RepoFloorPassedFailedSkippedPackages OKHeadroom
sdlc no floor recorded NOT MEASURED NOT MEASURED NOT MEASURED NOT MEASURED n/a
axiom packages=6 NOT MEASURED NOT MEASURED NOT MEASURED NOT MEASURED packages=NOT MEASURED
axiom-agent packages=13, tests=812 1,742 0 31 29 packages=+16, tests=+930
advisor packages=8 NOT MEASURED NOT MEASURED NOT MEASURED NOT MEASURED packages=NOT MEASURED
jepa no floor recorded NOT MEASURED NOT MEASURED NOT MEASURED NOT MEASURED n/a
finetune no floor recorded NOT MEASURED NOT MEASURED NOT MEASURED NOT MEASURED n/a
upstream no floor recorded NOT MEASURED NOT MEASURED NOT MEASURED NOT MEASURED n/a
secrets no floor recorded NOT MEASURED NOT MEASURED NOT MEASURED NOT MEASURED n/a

Frozen regression suite

Total tests266
Pass264
Fail0
Skip0
Notfound (rotted)2
Frozen regression manifest entries that are rotted (notfound: the pinned test moved/was renamed and the manifest was never updated) or actively failing.
IssueTestPackageStatus
128 TestSubmit_CommitSubjectSurvivesProxyTransform ./internal/outbox notfound
188 TestExecSchema_DescribesOutputAsBase64 ./internal/agenttools notfound

F AXIOM

The knowledge store's own health, and the one metric (N1) that has never been computed anywhere on this host -- rendered explicitly, not as a blank or a zero.

Nodes438
Edges995
Quarantined386
Quarantined %88.1%

lifecycle breakdown: quarantined=386, active=52

NEVER COMPUTED
North Star criterion 1 (N1)

N1 is referenced in axiom-agent-work/NORTH-STAR.md as a compound-gate input (N6 Autonomy: 'AXIOM's N1 on the frozen holdout is not flat or falling') but no code path that computes it was found anywhere on this host (no crates/axiom-ladder or equivalent), and no stored value exists anywhere either. N1 is not a gap in execution -- it is a gap in implementation.

Frozen holdout dir (/var/lib/axiom-holdout)
DOES NOT EXIST
axiom-eval group
DOES NOT EXIST

N1 depends on BOTH the N1-computing code and this frozen holdout. Neither existing means N1 is a gap in implementation, not merely a gap in execution.

G Gaps

The union of both collectors' gaps[] arrays, verbatim. This is a feature, not an appendix: it names exactly what this system cannot currently tell us, and what instrumentation would fix it. 17 total gap(s).

DELIVERY why do some calendar dates in the eventlog's own range have no day-file at all

no eventlog file exists for 4 date(s) within the observed range 20260808-20260901: 20260811, 20260817, 20260824, 20260829 -- a real gap in the record, not interpolated across.

Needed instrumentation: these are real historical gaps and cannot be filled retroactively; going forward, an alert on a missed daily file rotation would surface the next one immediately instead of leaving it to be discovered here

DELIVERY time from issue selection to task start (part of the delivery funnel latency)

no durable 'issue selected at time T' event exists anywhere in this pipeline: the eventlog event_type vocabulary is heartbeat|tool_call|model_call|turn_record|agent_run|selfcheck|deploy|compaction|incident -- none of these records a selection timestamp. axiom-issue-selector's own decision only ever reaches journald, which is a ~10-day rolling window, not a durable record. Needed: a new eventlog event_type (or detail.event) emitted by axiom-issue-selector.sh at the moment it selects an issue.

Needed instrumentation: a durable issue_selected event in the eventlog schema, emitted by the selector

HEALTH test_suite.repos.sdlc

/var/lib/axiom-check/logs/sdlc-mainbranch-29370380f05f.log exists but contains no recognised test-runner evidence (R8-style allowlist)

HEALTH test_suite.repos.axiom

could not find an axiom-required-check mainbranch log for axiom in /var/lib/axiom-check/logs: no matching file

HEALTH test_suite.repos.advisor

/var/lib/axiom-check/logs/advisor-mainbranch-d76ea51eecb9.log exists but contains no recognised test-runner evidence (R8-style allowlist)

HEALTH test_suite.repos.jepa

could not find an axiom-required-check mainbranch log for jepa in /var/lib/axiom-check/logs: no matching file

HEALTH test_suite.repos.finetune

could not find an axiom-required-check mainbranch log for finetune in /var/lib/axiom-check/logs: no matching file

HEALTH test_suite.repos.upstream

could not find an axiom-required-check mainbranch log for upstream in /var/lib/axiom-check/logs: no matching file

HEALTH test_suite.repos.secrets

/var/lib/axiom-check/logs/secrets-mainbranch-d97fa415d105.log exists but contains no recognised test-runner evidence (R8-style allowlist)

HEALTH axiom.n1

N1 is referenced in axiom-agent-work/NORTH-STAR.md as a compound-gate input (N6 Autonomy: 'AXIOM's N1 on the frozen holdout is not flat or falling') but no code path that computes it was found anywhere on this host (no crates/axiom-ladder or equivalent), and no stored value exists anywhere either. N1 is not a gap in execution -- it is a gap in implementation.

HEALTH STATIC / STRUCTURAL test_suite.repos.*.actual

coverage-per-package is not computed: re-running `go test -cover ./...` for every repo on every collection would duplicate axiom-required-check.sh's own ~5-9min run against the same commit. Instrumentation needed: have axiom-required-check.sh persist `go test -cover` output (or a parsed coverage summary) alongside its existing per-sha log so this collector can read it instead of re-running the suite.

HEALTH STATIC / STRUCTURAL ci.repos.*.required_check

the tri-state is computed against each repo's default-branch HEAD and each open MR's CURRENT head only; it does not test the MERGE RESULT. This mirrors axiom-required-check.sh's own documented 'KNOWN LIMITATION, still open': a stale branch can show FAILED for a reason ('rebase needed') that would not survive an actual merge.

HEALTH STATIC / STRUCTURAL ci.repos

REPOS here is axiom-required-check.sh's own repo list (8 repos). enigma/ste-spec exists in Forgejo but carries no axiom-required coverage at all -- that is the gate's own scope, not an omission in this collector.

HEALTH STATIC / STRUCTURAL axiom.n1

N1's entire computation pipeline (the X4 axiom-ladder crate and the X0 frozen holdout at /var/lib/axiom-holdout) does not exist on this host. This is not a run that failed to produce a value -- there is no code path that could ever produce one yet. Instrumentation needed: build crates/axiom-ladder per axiom/phases/X4.md and provision /var/lib/axiom-holdout (root:axiom-eval, 0750) per axiom/phases/X0.md.

HEALTH STATIC / STRUCTURAL cd.deploy_events_recent

deploy events are read from only the most recent few days of /var/lib/axiom-agent/eventlog/events-*.jsonl, to keep collection fast; a deploy record older than that window is not surfaced here even if the file is still on disk.

HEALTH STATIC / STRUCTURAL system.disk_usage

log/disk GROWTH RATE is not computed, only a point-in-time snapshot (system.disk_usage, system.log_file_count). A rate needs a PRIOR snapshot to diff against, which this collector does not persist between runs. Instrumentation needed: either have this collector append its own snapshots to a small local history file it reads back next run, or add real logrotate coverage (confirmed live: none exists for /var/lib/axiom-agent/logs -- see system.logrotate_coverage) so at least the un-rotated-file-count trend becomes self-limiting instead of needing to be measured at all.

HEALTH STATIC / STRUCTURAL system.journald_window

journald on this host is a rolling window (measured ~10 days at collection time -- see system.journald_window itself for the measured bounds); every journalctl-sourced count in this document (push-proxy failures, error classes) only reflects that window, not full history.

Sources probed this run (DELIVERY collector)

SourceLocationRequires sudoAvailable
pipeline_metrics_base /usr/local/bin/axiom-pipeline-metrics --json internal (self-elevates) available
eventlog_dir /var/lib/axiom-agent/eventlog True available
inbox_completions /var/lib/axiom-agent/eventlog/inbox-completions.jsonl True available
push_outbox_status /var/lib/axiom-agent/push-outbox/status True available
advisor_decisions /var/lib/axiom-advisor/workspace/decisions False available
advisor_actions /var/lib/axiom-advisor/workspace/actions False available
attestations /var/lib/axiom-advisor/attestations True available
forgejo_api sudo /usr/local/bin/axiom-forgejo api GET ... True available
forgejo_api_backlog sudo /usr/local/bin/axiom-forgejo api GET .../issues (paginated) True available
forgejo_api_open_prs sudo /usr/local/bin/axiom-forgejo api GET .../pulls?state=open (paginated) True available

Dead sources, never read:

  • /var/lib/axiom-agent/queue/ — DEAD -- never read by this collector: stale since 2026-08-19; reading it would silently return zeros for an active-seeming but defunct source

H Backlog, review churn & evidence health

All-time figures are labelled historical and shown alongside, never instead of, the windowed (last-24h / last-7d) figures: a single defect fix can permanently skew an all-time ratio, so the windowed numbers are the ones that answer "is it better NOW".

Open ISSUE backlog per repo (the agent's candidate pool) -- NOT the open-PR count Section A's funnel and pipeline_metrics_base both report. Trend: vs previous snapshot (2026-09-02T12:30:03.581072+00:00).
RepoOpen issuesTrend
axiom-agent 881 0
advisor 20 0
axiom 35 0
sdlc 69 0
secrets 51 0
Total 1,056 0

send_back : approve ratio

send_back : approve, all-time (historical)
18.50
send_back : approve, last 7d
15.04
send_back : approve, last 24h
5.75

Review churn (reviews per distinct MR)

reviews / distinct MR, all-time (historical)
21.94
reviews / distinct MR, last 7d
9.43
reviews / distinct MR, last 24h
4.32

Evidence-probe health

The mutation-check evidence probe reported unavailable evidence 52 time(s) in the last 24h (should be 0 in a healthy pipeline) -- every affected MR is unapprovable regardless of the author's work.
evidence-unavailable rows, all-time (historical)
83
evidence-unavailable rows, last 7d
83
evidence-unavailable rows, last 24h
52

should be 0 in a healthy pipeline; a non-zero recent count means the mutation-check harness's own checkout path is failing again, which makes every affected MR unapprovable regardless of the author's work

Issue closures (autonomous)

Issues closed by the advisor's autonomous closure pass (source: advisor_actions closure_results, outcome==CLOSED). 6 all-time.
IssueSatisfied by MRWake
enigma/axiom-agent#333 enigma/axiom-agent#755 20260825T202031Z-1458aa95c41c0018
enigma/axiom-agent#1093 enigma/advisor#156 20260830T194914Z-553dc95cfc0795a2
enigma/axiom-agent#1085 enigma/advisor#157 20260830T194914Z-553dc95cfc0795a2
enigma/axiom-agent#1104 enigma/advisor#159 20260830T235201Z-917c96ba26d3e0d9
enigma/axiom-agent#1141 enigma/advisor#166 20260831T231951Z-59a03e03da1f3bde
enigma/axiom-agent#1238 enigma/axiom-agent#1234 20260901T161542Z-16386facc4808120

I Frozen PRs

Every currently open PR classified by the FIRST mechanical reason (never the advisor's own free-text wake narrative -- see compute_frozen_pr_classification) it is not reviewable right now. This is the biggest throughput drag when the non-"reviewable now" categories dominate the total.

Already reviewed, head unchanged: 39Branch stale against green main: 0Missing mutation-spec declaration: 11Reviewable now: 0

50 open PRs total, all repos, any author.

Frozen PRs only (reviewable-now PRs excluded from this table; see the bar above for their count).
PRTitleAuthorFrozen reason
axiom-agent#1251 fix(#407): the ALREADY-IN-MAIN backlog check is evidence-verified and loud, not a quiet empty queue axiom-agent Already reviewed, head unchanged
axiom-agent#1245 fix: an in-process task-inbox retry re-derives its predecessor's conclusion from scratch enigma Already reviewed, head unchanged
axiom-agent#1243 Land the axiom dashboard: autonomy, backlog and evidence-health metrics enigma Already reviewed, head unchanged
axiom-agent#1215 fix(#399): consume the wake's mr_reviews send_back verdicts instead of discarding them axiom-agent Already reviewed, head unchanged
axiom-agent#1197 fix(#396): the mutation check reports its three distinct states, never collapsing INDETERMINATE into DOES NOT BIND axiom-agent Already reviewed, head unchanged
axiom-agent#1191 test(#1166): reproduce check_busy_gate blindness to an in-flight rework claim opus-advisor Already reviewed, head unchanged
axiom-agent#1184 feat(#390): the wake queue report names every MR it did not review and counts evidence vs reviewed axiom-agent Missing mutation-spec declaration
axiom-agent#1167 fix(#1166): check_busy_gate now sees an in-flight rework claim enigma Already reviewed, head unchanged
axiom-agent#1137 chore(reconcile): non-destructively incorporate remote tip da3939aca7b7 (enigma/axiom-agent#826) tree unchanged from d9 axiom-agent Missing mutation-spec declaration
axiom-agent#1118 fix(#359): consume the wake's mr_reviews send_back verdicts instead of discarding them axiom-agent Already reviewed, head unchanged
axiom-agent#1097 fix(#375): prior-wake-created issues are a promotion candidate source, every exclusion records its filter and reason axiom-agent Already reviewed, head unchanged
axiom-agent#1081 fix(#1075): give the rework-round-limit ratchet a non-human reset path opus-advisor Already reviewed, head unchanged
axiom-agent#1078 fix(#1074): self-heal a stranded .claimed marker instead of requiring a human opus-advisor Already reviewed, head unchanged
axiom-agent#1077 fix(ci): reinstate .forgejo/workflows/ci.yml on the runner's real label opus-advisor Missing mutation-spec declaration
axiom-agent#1064 chore(reconcile): non-destructively incorporate remote tip 1d1aafab4698 (enigma/axiom-agent#826) tree unchanged from 6a axiom-agent Missing mutation-spec declaration
axiom-agent#1036 fix(#374): add the per-MR-head execution harness the review phase was missing axiom-agent Already reviewed, head unchanged
axiom-agent#982 chore(reconcile): non-destructively incorporate remote tip 5e2349e4beb5 (enigma/axiom-agent#826) tree unchanged from 71 axiom-agent Missing mutation-spec declaration
axiom-agent#973 test(#233): prove the #223 alarm tests on the durable file and a semantic issue reference axiom-agent Missing mutation-spec declaration
axiom-agent#967 chore(reconcile): non-destructively incorporate remote tip 53718292f35e (enigma/axiom-agent#826) tree unchanged from 5f axiom-agent Missing mutation-spec declaration
axiom-agent#849 fix(#347): re-measure the task-file ceremony bar after the capability section's wording drifted axiom-agent Missing mutation-spec declaration
axiom-agent#784 fix(#339): axiom-mr: waits on a red gate, misreads a PushRejected 500 as "already up to date", and is itself untracked; axiom-agent Already reviewed, head unchanged
axiom-agent#575 fix(#210): fence the inlined issue body in the generated task file as untrusted external content axiom-agent Already reviewed, head unchanged
axiom-agent#454 fix(#441): make a wedged WIP cap alarm instead of repeating silently opus-advisor Already reviewed, head unchanged
axiom-agent#452 fix(#443): watch axiom-deploy.timer for stalled start jobs opus-advisor Already reviewed, head unchanged
axiom-agent#418 fix(#253): refuse a contract that declares two steps sharing one command signature axiom-agent Already reviewed, head unchanged
axiom-agent#392 fix(deploy): bounds-check mktemp, make axiom-backlog-policy's /run writable opus-advisor Already reviewed, head unchanged
advisor#177 fix: bound the backlog's own new-issue creation to a rolling per-day cap opus-advisor Already reviewed, head unchanged
advisor#175 fix(axiom-agent#858): catch family-shaped near-duplicate issues via content-word Jaccard opus-advisor Already reviewed, head unchanged
advisor#169 test(#1189): reproduce ClaudeInvoker discarding CLI stdout on failure opus-advisor Already reviewed, head unchanged
advisor#152 fix(ci): claim CI jobs on the runner's actual label, not "host" opus-advisor Missing mutation-spec declaration
advisor#79 fix(#78): bound the total depth of the agent-ready queue, not just per-wake promotions opus-advisor Already reviewed, head unchanged
advisor#72 feat(#44): wire self-test and drift to real signals [stacked] opus-advisor Already reviewed, head unchanged
axiom#59 feat(ci): add .forgejo/workflows/ci.yml, targeting the runner's real label opus-advisor Missing mutation-spec declaration
axiom#58 feat(#57): EdgeCorroborates - a promotion path for quarantined model content that does not weaken the discovered/believed gate opus-advisor Already reviewed, head unchanged
axiom#56 fix(#2): a FOUND / NOT_FOUND / INDETERMINATE outcome at the retrieval surface opus-advisor Already reviewed, head unchanged
axiom#46 exp(#41): storebench — MemStore measured, PostgreSQL blocked by sandbox opus-advisor Already reviewed, head unchanged
sdlc#113 docs(#1180): RCA for the 2026-08-31 autonomous-delivery stall opus-advisor Already reviewed, head unchanged
sdlc#111 fix(#110): refuse a secret producer whose output reaches a persistent sink opus-advisor Already reviewed, head unchanged
sdlc#109 fix(enforcement): track axiom-forgejo, bounds-check mktemp, fix pipeline masking opus-advisor Already reviewed, head unchanged
sdlc#107 fix(guard): content-based judgement for secret-binary mentions, grep patterns, and BYPASS-ATTEMPT opus-advisor Already reviewed, head unchanged
sdlc#48 Add a PostgreSQL 19 beta cluster beside PostgreSQL 16 opus-advisor Missing mutation-spec declaration
sdlc#13 feat(#8): daily self-test canary enigma Already reviewed, head unchanged
sdlc#10 feat(#9): version and harden the advisor MR tool enigma Already reviewed, head unchanged
secrets#77 fix(secrets): make install prove provenance against the forge, never a local clone (secrets#76) opus-advisor Already reviewed, head unchanged
secrets#62 chore(systemd): track axiom-secret-decrypt-axiom-agent-forge-token.service (sdlc#86) opus-advisor Already reviewed, head unchanged
secrets#30 fix(secrets): secret-put refuses to overwrite an existing secret, and the re-key caller that needs the override (secrets#28) opus-advisor Already reviewed, head unchanged
secrets#24 test(broker): prove the peercred control across a real process boundary (secrets#16) opus-advisor Already reviewed, head unchanged
secrets#14 fix(ci): key the broker skip on source, not on the manifest enigma Already reviewed, head unchanged
secrets#9 fix(broker): accept owner/repo in the repo validator (secrets#6) opus-advisor Already reviewed, head unchanged
secrets#5 feat(broker): capture capability broker for review (provenance unknown) enigma Already reviewed, head unchanged

J Agent state & active blockers

Working vs idle, distinguished honestly from a merely-alive process: a heartbeat is not proof of progress, a recent turn_record is.

WORKING
Current task
axiom-issue-407.task.md
Started
2026-09-02T08:37:09.097738768Z
Elapsed
4.0 h (243 min)
Latest turn
110 at 2026-09-02T12:39:58.05358827Z
Last heartbeat
2026-09-02T12:39:59.019960336Z

a heartbeat alone is not proof of a stall -- but it is also not proof of progress; the "latest turn" row above IS: a recent turn_record means the model produced a real step, not just that the process is alive.

Active blockers

WIP CAP: selector blocked 11x, selected 0 new issues
Deploy-drain leasenot held
WIP-cap blocks (24h)11
Systemd jobs waiting0
Jobs running over threshold0

Failed axiom-*/advisor-* units

none

Activating oneshots (not necessarily a problem -- see Section D discipline)

advisor-wake.service axiom-dashboard-regenerate.service axiom-required-check.service