Agent evals¶
Can an AI coding agent, given this linter, actually fix a failing diagram?
These results answer that across agent harnesses and model tiers, for the rule fixtures listed below that --fix cannot clear on its own.
Which fixtures are evaluated¶
Each case seeds one file from tests/fixtures/rules/, copied into skills/mermaidjs-lint/evals/fixtures/ without its expect comment.
| Case | Fixture |
|---|---|
border_contrast |
contrast-border-reported.md |
erd_contrast |
contrast-text-unfixable-erd.md |
label_colour |
contrast-directive-no-color.md |
large_chain |
complexity-large-chain.md |
nesting |
complexity-nesting.md |
parse_repair |
parse-unparseable.md |
Other fixtures that --fix cannot clear are not evaluated.
Those are contrast-edge-label.md, and the larger scenario files under complexity/, contrast/ and skill-evals/.
What a cell proves¶
Each cell runs one agent CLI, headless, on one failing fixture, with the mermaidjs-lint agent skill.
The task is a single sentence: fix every finding the linter reports, editing the file in place.
A cell passes only when all of these hold:
- The session was real. The harness ran, and its own session log was captured and priced.
- The right file changed, and nothing else appeared. Linter caches are the only allowed additions.
- The linter reports nothing. This package's own CLI runs on the agent's file and finds zero findings.
- Nothing was deleted to get there. Every diagram and every node of the original is still present, so removing a diagram never passes.
- The structure matches the committed LLM fix. Each fixture's
.llm.mdsibling is the golden, and only structure is compared, because the colours and split points are the agent's to choose.
The grader is deterministic: the verdict comes from the linter and the structure checks, never from another model.
Results¶
Run on 2026-10-17 with the tier 1, 2 and 3 models of each harness, the project matrix in pyproject.toml.
The run used the skill as of commit 9df8f56.
| Case | claude/claude-haiku-5-5 |
claude/claude-sonnet-5-5 |
claude/claude-opus-5-5 |
codex/gpt-6-luna |
codex/gpt-5.6-terra |
codex/gpt-6.1-sol |
|---|---|---|---|---|---|---|
border_contrast |
pass, 3 turns | pass, 3 turns | pass, 3 turns | pass, 4 turns | pass, 5 turns | pass, 4 turns |
erd_contrast |
pass, 4 turns | pass, 3 turns | pass, 3 turns | pass, 5 turns | pass, 6 turns | pass, 5 turns |
label_colour |
pass, 4 turns | pass, 3 turns | pass, 3 turns | pass, 7 turns | pass, 6 turns | pass, 5 turns |
large_chain |
pass, 5 turns | pass, 3 turns | pass, 3 turns | pass, 7 turns | pass, 13 turns | pass, 6 turns |
nesting |
pass, 3 turns | pass, 3 turns | pass, 3 turns | pass, 5 turns | pass, 5 turns | pass, 4 turns |
parse_repair |
pass, 4 turns | pass, 3 turns | pass, 3 turns | pass, 5 turns | pass, 4 turns | pass, 4 turns |
36 of 36 cells passed. The whole run cost an estimated $1.73.
What each agent wrote¶
Each case shows its original fixture, then the file each harness and model left behind, copied from its kept workspace. A passing output must lint clean, and the site build fails if one does not.
border_contrast¶
The original fixture is contrast-border-reported.md. It reports contrast-border-below-ui-minimum.
Original source
claude/claude-haiku-5-5¶
pass 3 turns, an estimated $0.004
Output source
claude/claude-sonnet-5-5¶
pass 3 turns, an estimated $0.062
Output source
claude/claude-opus-5-5¶
pass 3 turns, an estimated $0.117
Output source
codex/gpt-6-luna¶
pass 4 turns, an estimated $0.002
Output source
codex/gpt-5.6-terra¶
pass 5 turns, an estimated $0.050
Output source
codex/gpt-6.1-sol¶
pass 4 turns, an estimated $0.042
Output source
erd_contrast¶
The original fixture is contrast-text-unfixable-erd.md. It reports contrast-text-below-aa.
Original source
claude/claude-haiku-5-5¶
pass 4 turns, an estimated $0.004
Output source
claude/claude-sonnet-5-5¶
pass 3 turns, an estimated $0.058
Output source
claude/claude-opus-5-5¶
pass 3 turns, an estimated $0.116
Output source
codex/gpt-6-luna¶
pass 5 turns, an estimated $0.003
Output source
codex/gpt-5.6-terra¶
pass 6 turns, an estimated $0.056
Output source
codex/gpt-6.1-sol¶
pass 5 turns, an estimated $0.032
Output source
label_colour¶
The original fixture is contrast-directive-no-color.md. It reports contrast-directive-unauditable.
Original source
claude/claude-haiku-5-5¶
pass 4 turns, an estimated $0.004
Output source
claude/claude-sonnet-5-5¶
pass 3 turns, an estimated $0.053
Output source
claude/claude-opus-5-5¶
pass 3 turns, an estimated $0.106
Output source
codex/gpt-6-luna¶
pass 7 turns, an estimated $0.003
Output source
codex/gpt-5.6-terra¶
pass 6 turns, an estimated $0.056
Output source
codex/gpt-6.1-sol¶
pass 5 turns, an estimated $0.030
Output source
large_chain¶
The original fixture is complexity-large-chain.md. It reports complexity-node-count-hard-limit and complexity-visual-score-critical.
flowchart LR
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
N19 --> N20
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
N24 --> N25
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
N39 --> N40
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
N48 --> N49
N49 --> N50
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
N59 --> N60
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
N72 --> N73
N73 --> N74
N74 --> N75
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
N79 --> N80
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
N96 --> N97
N97 --> N98
N98 --> N99
N99 --> N100
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
Original source
# A long chain
```mermaid
flowchart LR
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
N19 --> N20
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
N24 --> N25
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
N39 --> N40
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
N48 --> N49
N49 --> N50
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
N59 --> N60
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
N72 --> N73
N73 --> N74
N74 --> N75
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
N79 --> N80
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
N96 --> N97
N97 --> N98
N98 --> N99
N99 --> N100
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
```
claude/claude-haiku-5-5¶
pass 5 turns, an estimated $0.006
Output source
# A long chain
### Overview
The chain is split into five parts. Each edge that crosses a part boundary is drawn here.
```mermaid
flowchart LR
N24 --> N25
N49 --> N50
N74 --> N75
N99 --> N100
```
### Part 1: N0 to N24
```mermaid
flowchart LR
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
N19 --> N20
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
```
### Part 2: N25 to N49
```mermaid
flowchart LR
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
N39 --> N40
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
N48 --> N49
```
### Part 3: N50 to N74
```mermaid
flowchart LR
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
N59 --> N60
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
N72 --> N73
N73 --> N74
```
### Part 4: N75 to N99
```mermaid
flowchart LR
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
N79 --> N80
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
N96 --> N97
N97 --> N98
N98 --> N99
```
### Part 5: N100 to N120
```mermaid
flowchart LR
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
```
claude/claude-sonnet-5-5¶
pass 3 turns, an estimated $0.070
Output source
# A long chain
The chain is split into an overview and five parts of at most 25 nodes each.
## Overview
```mermaid
flowchart LR
subgraph P1["Part 1: N0 to N24"]
N0
N24
end
subgraph P2["Part 2: N25 to N49"]
N25
N49
end
subgraph P3["Part 3: N50 to N74"]
N50
N74
end
subgraph P4["Part 4: N75 to N99"]
N75
N99
end
subgraph P5["Part 5: N100 to N120"]
N100
N120
end
N24 --> N25
N49 --> N50
N74 --> N75
N99 --> N100
```
## Part 1
```mermaid
flowchart LR
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
N19 --> N20
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
```
## Part 2
```mermaid
flowchart LR
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
N39 --> N40
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
N48 --> N49
```
## Part 3
```mermaid
flowchart LR
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
N59 --> N60
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
N72 --> N73
N73 --> N74
```
## Part 4
```mermaid
flowchart LR
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
N79 --> N80
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
N96 --> N97
N97 --> N98
N98 --> N99
```
## Part 5
```mermaid
flowchart LR
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
```
claude/claude-opus-5-5¶
pass 3 turns, an estimated $0.145
Output source
# A long chain
```mermaid
flowchart LR
subgraph P1["Part 1: N0 to N19"]
N0
N19
end
subgraph P2["Part 2: N20 to N39"]
N20
N39
end
subgraph P3["Part 3: N40 to N59"]
N40
N59
end
subgraph P4["Part 4: N60 to N79"]
N60
N79
end
subgraph P5["Part 5: N80 to N99"]
N80
N99
end
subgraph P6["Part 6: N100 to N120"]
N100
N120
end
N19 --> N20
N39 --> N40
N59 --> N60
N79 --> N80
N99 --> N100
```
```mermaid
flowchart LR
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
```
```mermaid
flowchart LR
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
N24 --> N25
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
```
```mermaid
flowchart LR
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
N48 --> N49
N49 --> N50
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
```
```mermaid
flowchart LR
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
N72 --> N73
N73 --> N74
N74 --> N75
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
```
```mermaid
flowchart LR
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
N96 --> N97
N97 --> N98
N98 --> N99
```
```mermaid
flowchart LR
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
```
codex/gpt-6-luna¶
pass 7 turns, an estimated $0.005
Output source
# A long chain
```mermaid
flowchart LR
Part1["N0–N24"] --> Part2["N25–N49"]
Part2 --> Part3["N50–N74"]
Part3 --> Part4["N75–N99"]
Part4 --> Part5["N100–N120"]
```
```mermaid
flowchart LR
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
N19 --> N20
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
```
```mermaid
flowchart LR
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
N39 --> N40
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
N48 --> N49
```
```mermaid
flowchart LR
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
N59 --> N60
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
N72 --> N73
N73 --> N74
```
```mermaid
flowchart LR
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
N79 --> N80
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
N96 --> N97
N97 --> N98
N98 --> N99
```
```mermaid
flowchart LR
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
```
codex/gpt-5.6-terra¶
pass 13 turns, an estimated $0.150
Output source
# A long chain
```mermaid
flowchart LR
Stage1[Nodes N0–N24] --> Stage2[Nodes N24–N48]
Stage2 --> Stage3[Nodes N48–N72]
Stage3 --> Stage4[Nodes N72–N96]
Stage4 --> Stage5[Nodes N96–N120]
```
```mermaid
flowchart LR
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
N19 --> N20
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
```
```mermaid
flowchart LR
N24 --> N25
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
N39 --> N40
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
```
```mermaid
flowchart LR
N48 --> N49
N49 --> N50
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
N59 --> N60
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
```
```mermaid
flowchart LR
N72 --> N73
N73 --> N74
N74 --> N75
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
N79 --> N80
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
```
```mermaid
flowchart LR
N96 --> N97
N97 --> N98
N98 --> N99
N99 --> N100
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
```
codex/gpt-6.1-sol¶
pass 6 turns, an estimated $0.053
Output source
# A long chain
```mermaid
flowchart LR
P1["Part 1: N0 to N20"]
P2["Part 2: N20 to N40"]
P3["Part 3: N40 to N60"]
P4["Part 4: N60 to N80"]
P5["Part 5: N80 to N100"]
P6["Part 6: N100 to N120"]
P1 --> P2
P2 --> P3
P3 --> P4
P4 --> P5
P5 --> P6
```
```mermaid
flowchart LR
subgraph Part1["Part 1: N0 to N20"]
N0 --> N1
N1 --> N2
N2 --> N3
N3 --> N4
N4 --> N5
N5 --> N6
N6 --> N7
N7 --> N8
N8 --> N9
N9 --> N10
N10 --> N11
N11 --> N12
N12 --> N13
N13 --> N14
N14 --> N15
N15 --> N16
N16 --> N17
N17 --> N18
N18 --> N19
N19 --> N20
end
```
```mermaid
flowchart LR
subgraph Part2["Part 2: N20 to N40"]
N20 --> N21
N21 --> N22
N22 --> N23
N23 --> N24
N24 --> N25
N25 --> N26
N26 --> N27
N27 --> N28
N28 --> N29
N29 --> N30
N30 --> N31
N31 --> N32
N32 --> N33
N33 --> N34
N34 --> N35
N35 --> N36
N36 --> N37
N37 --> N38
N38 --> N39
N39 --> N40
end
```
```mermaid
flowchart LR
subgraph Part3["Part 3: N40 to N60"]
N40 --> N41
N41 --> N42
N42 --> N43
N43 --> N44
N44 --> N45
N45 --> N46
N46 --> N47
N47 --> N48
N48 --> N49
N49 --> N50
N50 --> N51
N51 --> N52
N52 --> N53
N53 --> N54
N54 --> N55
N55 --> N56
N56 --> N57
N57 --> N58
N58 --> N59
N59 --> N60
end
```
```mermaid
flowchart LR
subgraph Part4["Part 4: N60 to N80"]
N60 --> N61
N61 --> N62
N62 --> N63
N63 --> N64
N64 --> N65
N65 --> N66
N66 --> N67
N67 --> N68
N68 --> N69
N69 --> N70
N70 --> N71
N71 --> N72
N72 --> N73
N73 --> N74
N74 --> N75
N75 --> N76
N76 --> N77
N77 --> N78
N78 --> N79
N79 --> N80
end
```
```mermaid
flowchart LR
subgraph Part5["Part 5: N80 to N100"]
N80 --> N81
N81 --> N82
N82 --> N83
N83 --> N84
N84 --> N85
N85 --> N86
N86 --> N87
N87 --> N88
N88 --> N89
N89 --> N90
N90 --> N91
N91 --> N92
N92 --> N93
N93 --> N94
N94 --> N95
N95 --> N96
N96 --> N97
N97 --> N98
N98 --> N99
N99 --> N100
end
```
```mermaid
flowchart LR
subgraph Part6["Part 6: N100 to N120"]
N100 --> N101
N101 --> N102
N102 --> N103
N103 --> N104
N104 --> N105
N105 --> N106
N106 --> N107
N107 --> N108
N108 --> N109
N109 --> N110
N110 --> N111
N111 --> N112
N112 --> N113
N113 --> N114
N114 --> N115
N115 --> N116
N116 --> N117
N117 --> N118
N118 --> N119
N119 --> N120
end
```
nesting¶
The original fixture is complexity-nesting.md. It reports complexity-subgraph-nesting-too-deep.
Original source
claude/claude-haiku-5-5¶
pass 3 turns, an estimated $0.004
Output source
claude/claude-sonnet-5-5¶
pass 3 turns, an estimated $0.056
Output source
claude/claude-opus-5-5¶
pass 3 turns, an estimated $0.114
Output source
codex/gpt-6-luna¶
pass 5 turns, an estimated $0.003
Output source
codex/gpt-5.6-terra¶
pass 5 turns, an estimated $0.048
Output source
codex/gpt-6.1-sol¶
pass 4 turns, an estimated $0.043
Output source
parse_repair¶
The original fixture is parse-unparseable.md. It reports parse-diagram-unparseable.
Original source
claude/claude-haiku-5-5¶
pass 4 turns, an estimated $0.004
Output source
claude/claude-sonnet-5-5¶
pass 3 turns, an estimated $0.055
Output source
claude/claude-opus-5-5¶
pass 3 turns, an estimated $0.112
Output source
codex/gpt-6-luna¶
pass 5 turns, an estimated $0.002
Output source
codex/gpt-5.6-terra¶
pass 4 turns, an estimated $0.035
Output source
codex/gpt-6.1-sol¶
pass 4 turns, an estimated $0.029
Output source
What the results do not show¶
- They do not judge meaning. A fix can lint clean and keep every node while changing what the diagram says, and no check here catches that.
- They are one run. An agent's output varies from run to run, so one pass is evidence, not a rate.
- They cover only the fixtures listed. Each case starts from one small file, not a real document set.
Run them yourself¶
The suite uses the pytest-xharness-eval plugin, a dev dependency of this repository.
It needs:
- The
claudeandcodexCLIs on yourPATH, each logged in. bunon yourPATH, withmake installrun, for the grader's lint step.- Network access to the npm registry from each agent's sandbox, because the skill runs the linter through
bunxornpx.
Preview the matrix without spending anything:
The dry run writes its report to tmp/evals-dry/report/report.json, so the last live run's report in .xharness_eval_cache/ stays as it was.
Run it live. Every cell is a billed agent session:
Then copy the run onto this page, and rebuild the site:
The suite's README explains each case and its grader.