Skip to content

Agent authoring benchmark - #224

Open
grunion-ai wants to merge 1 commit into
mainfrom
claude/authoring-benchmark
Open

grunion-ai wants to merge 1 commit into
mainfrom
claude/authoring-benchmark

Conversation

@grunion-ai

Copy link
Copy Markdown
Owner

What changed

New benchmarks/authoring/: five frozen prompts, the semantic keys each is checked against, and benchmark.mjs check|score to score an agent's frozen candidates.

Why

Closes #208. Decklet's tests prove the engine. Nothing measured whether an agent following SKILL.md gets to FINALIZE PASS on its first try, so a SKILL.md edit shipped with no number before or after. This follows archify's benchmarks/ordinary-model-floor pattern, sized for decklet.

  • Cases: a pitch, a QBR, a one-page document-letter, a carousel-4x5, and a twelve-vendor landscape. The landscape's twelve SVG logos sit in inputs/landscape/, which the runner copies to the agent.
  • Semantic keys are checked on model.json: format, slide range, required deck.entities, and minimum chart / logo / donut / img counts.
  • Scoring: score <run-dir> runs finalize on each candidate and writes one row per case, with pass, failed stage, misses, top three diagnostic codes (from Coded validate diagnostics #214 and Coded verify diagnostics #222), and repairs and minutes from the runner's run.json.
  • No model launch. The runner owns models, credentials, timing and transcripts.
  • References: five hand-built candidates prove the wiring. Two come from bin/new.mjs; three were hand-built, and the one-pager took one repair, found through verify --json (parity/text-over-text on row r2). run.json marks them "evidence": false, and the CLI says so.
  • Protocol: the README sets the fair-run rules (same commit and prompts; an installed decklet outside this repo; attempt 1 frozen) and where results go (results/).
  • Packaging: benchmarks/ is not in the npm files list, so an installed decklet never contains the cases. .gitignore covers the decks and receipts that scoring writes beside each candidate.

How it was verified

  • test/benchmark.test.mjs: 7 pass. It covers:
    • the shipped manifest via the API and the CLI, and a broken manifest naming each problem;
    • semantic misses listed in order;
    • stubbed scoring of every reference (5/5, evidence: false);
    • a missing candidate and a broken one (fit/nowrap-width in its top codes);
    • score --out;
    • a live Chromium run of all five references to FINALIZE PASS.
  • npm run bench:check prints manifest ok: 5 cases.
  • npm test with Chromium only: 647 pass, 19 fail, the same 19 that fail on untouched main in this container (17 WebKit cases with no WebKit installed, two sub-pixel toolbar overlaps from container fonts). CI runs all three engines.
  • deck.html / library.html rebuild: not needed, the engine is untouched.

Generated by Claude Code

benchmarks/authoring/ measures whether an agent following SKILL.md
reaches FINALIZE PASS on attempt 1 with the deck its prompt asked for.
Five frozen prompts carry semantic keys (format, slide range, required
entities, minimum chart, logo, donut or image counts). benchmark.mjs
check validates the suite; score <run-dir> runs finalize on each frozen
candidate and writes a row per case with the failed stage, the misses,
the top three diagnostic codes, and the runner's repairs and minutes.
It never launches a model. Five hand-built references prove the wiring
and are marked evidence: false. README gives the fair-run protocol.

ponytail: structural semantic keys only (format, counts, entities); a
fact-level check of the prompt's numbers waits for the first real runs.

Closes #208

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CiXonXtVxd5FHk4XqMzY8f

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Agent authoring benchmark

2 participants