Release Benchmark Publishing
SkillAI & modelsUse this skill only in the Odylith product repo when preparing a release or refreshing the public benchmark story in the repo-root README.md.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Release Benchmark Publishing skill
About this capability
Odylith stops coding agents from confidently doing the wrong thing
What this skill tells your AI
The instructions your AI receives, as published by odylith/odylith in odylith/maintainer/skills/release-benchmark-publishing/SKILL.md and read by ahel’s review.
Use this skill only in the Odylith product repo when preparing a release or
refreshing the public benchmark story in the repo-root README.md.
Do not use this skill in consumer repos.
Maintainer Mode
- Use pinned dogfood when proving the shipped benchmark and release story.
- Use detached
source-localonly when current unreleasedsrc/odylith/*changes need to execute before you return to pinned dogfood for proof. - Source-tree-only helpers such as the benchmark graph generator or source-tree
pytest commands may run on the product repo toolchain with
PYTHONPATH=src; that is a maintainer dev detail, not a consumer contract.
Goal
- Recover and maintain the governed release slice while refreshing the public benchmark story.
- Refresh the current published proof-host benchmark snapshot.
- Regenerate the canonical README benchmark SVGs.
- Update the repo-root
README.mdbenchmark numbers and wording from the same benchmark report. - Preserve the current benchmark graph style and tone across releases.
- Publish only the conservative
--profile proofview for the current proof host, not the default quick lane or the most flattering single-profile report. - Treat
proofas the governing product benchmark anddiagnosticas a secondary tuning surface. A diagnostic gain does not count if it hurts the liveproofresult.
Canonical Files
- Benchmark report:
.odylith/runtime/odylith-benchmarks/latest.v1.json - Release planning registry:
odylith/radar/source/releases/releases.v1.json - Release planning history:
odylith/radar/source/releases/release-assignment-events.v1.jsonl - README:
README.md - Publication snapshot writer:
src/odylith/runtime/evaluation/odylith_benchmark_publication.py - Graph generator:
src/odylith/runtime/evaluation/odylith_benchmark_graphs.py - Graph outputs:
docs/benchmarks/proof/odylith-benchmark-family-heatmap.svgdocs/benchmarks/proof/odylith-benchmark-quality-frontier.svgdocs/benchmarks/proof/odylith-benchmark-frontier.svgdocs/benchmarks/proof/odylith-benchmark-operating-posture.svgdocs/benchmarks/diagnostic/odylith-benchmark-family-heatmap.svgdocs/benchmarks/diagnostic/odylith-benchmark-quality-frontier.svgdocs/benchmarks/diagnostic/odylith-benchmark-frontier.svgdocs/benchmarks/diagnostic/odylith-benchmark-operating-posture.svg
- Maintainer rule:
odylith/maintainer/agents-guidelines/RELEASE_BENCHMARKS.md
Canonical Flow
- Recover the current governed slice with Odylith first:
search the active workstream, bound plan, related bugs, related components,
related diagrams, and recent Compass/session context; extend or reopen
existing truth before creating new records.
Treat repo-local release planning as part of that same governed slice:
inspect
odylith release list --repo-root .andodylith release show current --repo-root .when the benchmark story is preparing a release-bound candidate. - If the benchmark-publication slice is genuinely new, create the missing workstream and bound plan before non-trivial publishing changes; if the work spans multiple release lanes, split it with child workstreams or execution waves.
- Reconcile release-planning truth for the candidate version before changing
public copy:
- ensure the candidate release record carries the correct
versionor tag - if the matching authored release note already exists, leave
nameempty to inherit the note title or set that exact same title - move any carry-forward workstreams to the follow-on release instead of leaving them attached to the shipped line in public-facing planning truth
- ensure the candidate release record carries the correct
- Run the release-proof benchmark corpus:
./.odylith/bin/odylith benchmark --repo-root . --profile proofThe defaultquicklane is developer signal only. Useproofsolatest.v1.jsoncovers bothwarmandcoldfor the liveodylith_onversusodylith_offpair. If internal tuning needs isolated packet or prompt measurements, run--profile diagnosticseparately and do not publish that as the product comparison. If the proof run needs to be split operationally, use deterministic--familyor shard flags and publish only from the completed full proof report. For full-corpus shard splits, merge the shard history reports withPYTHONPATH=src python3 -m odylith.runtime.evaluation.odylith_benchmark_shard_merge --repo-root . <report-id>...before regenerating graphs or README copy. If maintainers activate a version-scoped benchmark override instead, stop the in-flight proof run, record the override inodylith/runtime/source/release-maintainer-overrides.v1.json, and update Casebook plus the bound release workstream and plan before continuing the release lane. - Refresh the benchmark snapshot docs, tracked latest-summary JSON, and the
README-linked
proof/anddiagnostic/SVGs from that same selected report set:PYTHONPATH=src python -m odylith.runtime.evaluation.odylith_benchmark_publication --repo-root .This is the canonical path for:docs/benchmarks/LIVE_BENCHMARK_SNAPSHOT.mddocs/benchmarks/GROUNDING_BENCHMARK_SNAPSHOT.mddocs/benchmarks/BENCHMARK_TABLES.mddocs/benchmarks/latest-summary.v1.jsondocs/benchmarks/proof/*.svgdocs/benchmarks/diagnostic/*.svgDo not hand-edit those snapshot files when the publication writer can derive them from the validated report. The lower-level graph renderer remains available for explicit graph-only or single-report refreshes:PYTHONPATH=src python -m odylith.runtime.evaluation.odylith_benchmark_graphs --repo-root . --out-dir docs/benchmarks --profiles proof diagnostic
- Update the repo-root
README.mdbenchmark snapshot from that same report. Make the README explicit that the current published snapshot is Codex-host-scoped and conservative across the published cache profiles, thatodylith_offis the raw host CLI lane, thatraw_agent_baselineis only the internal report alias, and thatodylith_repo_scan_baselineis only a secondary scaffold control kept in the tracked report rather than the headline public table. The README should also stay explicit that the public pair uses the same live proof-host CLI model and reasoning contract with an isolated temporary host home and stripped repo-authored guidance surfaces, that published timing is benchmark time to valid outcome rather than solo-user latency, and that published token cost is full-session spend rather than the initial prompt size. If the report came from detachedsource-local, say that explicitly and keep the first-release baseline warning visible untildocs/benchmarks/release-baselines.v1.jsonrecords a shipped proof. When a proof slice is intentionally strict-bounded, keep that contract visible in the narrative: supplemental docs and implementation anchors may be suppressed when the truthful required surface is already the listed anchor set, and validator-only tests or generated artifacts do not count as approved first-pass reads unless a focused contradiction points directly there. If the closeout would benefit from naming Odylith directly, keep it to one short end-of-workOdylith Assist:line backed by measured proof, and follow the detailed wording contract in Odylith Chatter instead of expanding the benchmark lane's own prompt tax. - Keep the README graph order and tone unchanged unless the product is intentionally adding benchmark-marketing cuts from the same report:
- family heatmap
- quality frontier
- frontier
- operating posture
- Keep the README graph block in this exact order:
odylith-benchmark-family-heatmap.svgodylith-benchmark-quality-frontier.svgodylith-benchmark-frontier.svgodylith-benchmark-operating-posture.svg
- If the benchmark slice surfaced a named failure mode, stale diagram, or thin component boundary, update Casebook, Atlas, Registry, and Compass in the same change.
- Run:
PYTHONPATH=src pytest -q tests/unit/runtime/test_odylith_benchmark_graphs.py
Non-Negotiables
- The README benchmark section must stay explicit about the current proof host.
- The README benchmark section must describe the conservative published view,
not
primary_comparisonwhen they differ. - Benchmark status semantics must stay explicit:
- correctness, grounding, validation/fit, and robustness are the hard gate
- tighter-budget behavior is the live-proof secondary guardrail
- time to valid outcome and full-session token spend stay published as live-proof diagnostics, not solo-user or initial-prompt claims
- prompt/payload efficiency thresholds belong to the diagnostic lane
- packet coverage, widening frequency, route posture, and similar mechanism signals stay published as advisory context
- current live-proof guardrail is
within_budget_rate >= 0.80
- Benchmark publication does not waive Odylith governance upkeep: do not leave the workstream, plan, bug memory, component specs, diagrams, or Compass context stale after changing the public benchmark story.
- When the benchmark story is release-bound, do not let public benchmark copy
drift from repo-local release planning truth. Candidate release naming,
carried work, and
currentornextalias ownership must agree with the release note and the public launch framing. - Do not substitute screenshots, ad hoc chart exports, or different filenames.
- Do not hand-edit the generated SVGs.
- Preserve the current beige/paper visual direction, red baseline marks, teal Odylith marks, and the current benchmark-graph narrative unless the product is making an intentional benchmark-style redesign.
odylith_offin README, graphs, and review framing is the raw host CLI lane.raw_agent_baselineis only the internal report alias for that lane.odylith_repo_scan_baselineis the repo-scan scaffold control, not the honest no-scaffold baseline, and it should stay out of the primary public README table.- The public pair must hold the same live proof-host CLI model and reasoning
contract on both lanes, and it must run with an isolated temporary host
home plus stripped repo-authored guidance surfaces instead of inheriting
local skills, plugins, MCP config, or
AGENTS.mdstate by accident. - Post-run adoption-proof sampling is supplementary. It must be bounded and degrade cleanly on timeout or transport loss instead of blocking persistence of a completed full proof report.
- Any Odylith-by-name closeout or visible-intervention fallback note must stay evidence-backed, soulful, friendly, authentic, and factual, and it must point to concrete measured proof rather than generic product praise. Follow the canonical closeout contract in Odylith Chatter.
- If the style changes intentionally, update the generator, README, and graph tests in the same change.
Signals
- GitHub stars
- 36
- Forks
- 3
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
release-benchmark-publishing- Source
- github.com/odylith/odylith