You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added
Eval case drawio-portable-report-check: the agent is handed AGENTS.md as an AGENTS.md host would, and must run arkitect report on its saved report. Claude Code reads the skills, so no case reached the portable check before; it passed 3 runs of 3 on Haiku 5.5 (#302).
Changed
The build-route hook also speaks to a prompt that asks for a diagram but names no file: a drawing verb with a diagram noun ("draw … architecture"), or "a diagram" asked for. It adds one line naming both skills and the engine rule, or the one engine the prompt names. Asked for a README diagram, 2 runs of 3 had loaded no skill and handed over hand-written SVG or Mermaid; with the line, excalidraw-engine-choice-is-explained loaded the skill in 6 runs of 6 and its Draw.io mirror in 6 of 6. A prompt asking for Mermaid, PlantUML, SVG or another format, or saying something does not draw, still gets nothing (#371).
Fixed
scripts/eval.sh keeps each run's trace, every tool call and the final reply, under evals/results/<stamp>/traces/, and the summary names it under each failed run. claude plugin eval deleted them with its temp dirs, so a reply a grader failed could not be read afterwards, and one miss in the #370 suite had to be reported with its cause unknown. The run now keeps its temp dirs in a private TMPDIR, and the script removes them once the traces are out, the copy of the Claude config they hold included (#374).
The report check sent back a status message as a report missing its headings. It counted any command naming build-diagram.mjs as a build, git add, grep and sed -n included, and read an --out path with a variable anywhere in it, even $SP/a.drawio, as "any file". Now only a run of the builder counts. A variable in the name is read from the same command (OUT=…, for n in …; do). "Any file" needs a named file, not a bare .drawio, and a trailing quote or a folder --out no longer gives a name (#373).
The #150 check that no element able to carry behaviour reaches the Excalidraw preview could never fail: its \b was a literal backspace. It now reads \b, and a new test fails on any raw control character in a committed text file; the two fixtures that need one write it as \u0001 (#365).
Draw.io validate warns on a plain box named for a bundled product only on a page that already draws an icon. On a page of plain boxes it is a note naming each box and its mark, saying a new diagram uses the mark and an edit keeps the box. Editing a plain-box file, the warning made the agent swap its matching box for the mark in 6 eval runs of 6. references/editing.md says icons follow the file too: one run of 4 still reached for the mark unprompted (#366).
find-icon.mjs --cell, --style and --data work anywhere in the arguments and take a product name as well as an id. redis --cell dropped the flag and printed the search, and an agent mid-edit built a scratch spec to get the cell. A name that is not a confident match exits 1 with its choices on stderr and nothing on stdout; an on-demand mark exits 1 with its reason instead of a stack trace (#367).
Two eval graders failed accurate replies. reports-the-validation now reads a script named between the two words ("validate-drawio.mjs --page 0 passes"), and a test holds every wording it has failed. Both answers-without-applying judges are told that naming /learn-… and /apply-… for the user to run is a pass; one judge failed it 2 votes to 1 (#368).
The edit case grades the plain-box edit on the file: a new grader fails any image in the edited checkout.drawio, since the report's wording could not tell a swapped icon from a matching box (#366). says-it-matched-the-file reads "to match the file" and "to match the other three plain boxes", and the validation grader "validate-drawio.mjs on page 0 passed": with the agent now keeping Redis plain, they failed 3 accurate reports of 4. The validation grader takes a pass anywhere on the line that names validation, unless the line says something failed, and analyzed-instead-of-reading takes hooks/diagram-read.mjs's own pattern, so analyzing through the dispatcher counts, as it does for the hook (#368).
scripts/eval.sh exits with the summary's verdict: 1 when a case scored below 1 or a run errored, as the README said it did. It passed --threshold 0 and exited with the run's own status, so a batch whose every run errored exited 0. It also refuses the Windows claude that WSL puts on PATH from /mnt/c, whose scaffolds all failed on a \\wsl.localhost path, and Node older than 22 (#369).