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
Copy file name to clipboardExpand all lines: .claude/skills/bench-model/SKILL.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,11 +1,11 @@
1
1
---
2
2
name: bench-model
3
-
description: Benchmark an LLM (model and/or agent CLI) on citadel's wiki-building quality — the model-focused twin of verify-corpus (which tests the PIPELINE with a fixed model, while bench-model tests a MODEL with the fixed pipeline). Mode A ingests a corpus into a throwaway sandbox with the chosen CITADEL_INGEST_MODEL / CITADEL_LLM_CLI, grades it with verify-corpus's retrieval-first method, then applies a DISCRIMINATIVE tier (locator precision, oblique-query retrieval, merge quality, redundancy/cross-links, judgment delta on contradictions + planted-false claims) so runs by models of different strength never tie at the top — if two models both ace the grade, the test was too easy, which is itself a finding. Ends with a side-by-side metrics table and a verdict (is the cheaper model's wiki acceptable, where does it degrade first, what rule changes would close the gap). Use whenever the user wants to compare models on wiki creation (sonnet vs haiku, a new Claude model, gemini/copilot, or open/local models via the CITADEL_LLM_CLI seam), asks "does model X suffice for ingest?", wants a cost/quality trade-off measured, or wants to re-run the model bench from the 2026-07 audit — even if they do not say the word "skill". Takes a corpus name, a model id, and optionally a CLI and a baseline sandbox to compare against.
3
+
description: Benchmark an LLM (model and/or agent CLI) on citadel's wiki-building quality — the model-focused twin of verify-corpus (which tests the PIPELINE with a fixed model, while bench-model tests a MODEL with the fixed pipeline). Mode A ingests a corpus into a throwaway sandbox with the chosen CITADEL_INGEST_MODEL / CITADEL_LLM_CLI, grades it with verify-corpus's retrieval-first method, then applies a DISCRIMINATIVE tier (locator precision, oblique-query retrieval, merge quality, redundancy/cross-links, judgment delta on contradictions + planted-false claims) so runs by models of different strength never tie at the top — if two models both ace the grade, the test was too easy, which is itself a finding. Ends with a side-by-side metrics table and a verdict (is the cheaper model's wiki acceptable, where does it degrade first, what rule changes would close the gap). Use whenever the user wants to compare models on wiki creation (sonnet vs haiku, a new Claude model, agy/copilot, or open/local models via the CITADEL_LLM_CLI seam), asks "does model X suffice for ingest?", wants a cost/quality trade-off measured, or wants to re-run the model bench from the 2026-07 audit — even if they do not say the word "skill". Takes a corpus name, a model id, and optionally a CLI and a baseline sandbox to compare against.
(read-only setup health check — OK/WARN/FAIL lines for workspace / rules / config-parse fallbacks /
47
-
agent CLI / the inert-`CITADEL_INGEST_MODEL`-on-copilot/gemini advisory / raw roots / wiki placement
47
+
agent CLI / the configured ingest model / raw roots / wiki placement
48
48
(the wiki nested inside a raw root) / child paths (the UNC-vs-drive-letter cwd) /
49
49
manifest / billing / the HTTP-serve posture / wiki-git state / a best-effort PyPI update check / workspace coherence; needs no workspace, exits 1 only on a FAIL),
50
50
`serve [--http [--host H] [--port P] [--path /mcp] [--read-only]]` (the MCP server — stdio by
@@ -276,10 +276,21 @@ git repo folded as one digest), `image`/`image-reconcile` (an image source read
276
276
raw source). A large source is split into segments and folded in over several passes
277
277
(`segment=(part, total)` on `run_ingest_session`, telling later passes to MERGE into earlier ones).
278
278
`run_ingest_session` is the single seam tests monkeypatch; it returns the session's best-effort
279
-
`SessionUsage` (the backend's OWN cost/usage report: claude's result envelope, gemini's
280
-
`--session-summary` behind a cached `--help` feature probe; None when nothing was reported —
281
-
accounting is strictly passive and can never fail a session), which ingest sums per source into
282
-
the manifest stamp and per run onto the reports.
279
+
`SessionUsage` (the backend's OWN report of what it spent AND which model actually served the
280
+
session: claude's result envelope - `total_cost_usd` plus the `modelUsage` map, whose PRIMARY
281
+
entry is the one carrying the token volume, since claude routes cheap side work to a smaller
282
+
model; copilot's `--output-format json` JSONL - no dollars, so its own billing unit is recorded
283
+
instead: `totalNanoAiu`, the counter behind the `N AIC used` session footer (1 AIC = 1e9 nanoAiu),
284
+
converted to `cost_usd` at GitHub's fixed published $0.01/credit so a mixed corpus keeps ONE
285
+
comparable total while the un-derived credits stay stamped beside it (the retired
286
+
`totalPremiumRequests` is deliberately ignored); agy's `--output-format stream-json` - the
287
+
opening `init.model` plus the
288
+
closing `result.usage` token totals; None when nothing was reported - accounting is strictly
289
+
passive and can never fail a session), which ingest sums per source into the manifest stamp and
290
+
per run onto the reports. **The REPORTED model wins**: `config.model_label_for(reported)` stamps
291
+
the backend plus what actually ran, and falls back to the configured label only when the backend
292
+
named nothing (an Ollama/proxy backend, or agy left on its own default), so the manifest never
293
+
claims a model that never ran.
283
294
284
295
**Two checking layers, one implementation** (`validate.py`):
0 commit comments