本文へ移動
cccskills
無料GitHub で公開

harness-audit

The harnesses a campaign keeps, read outside a run: which there are and where each came from, what each is made of and what moved from its parent, what each was measured to be, trying one on a task, the audit before a promotion and the blind review at a handover, whether a part earns its place, and changing what makes a harness or what a seat is told about one. Use when the operator asks which harness is current, what a Builder changed, whether a harness is ready to promote or hand over, to run a kept harness on a task, or to change the harness contract. Reading one run is whole-run-investigation's, wording a claim attribution-and-proof's.

インストール方法を見る

含まれるファイル(2)

  • SKILL.md11.9 KB
  • scripts/harness-versions.ts16.6 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Harness audit

A campaign keeps every harness a session froze under its digest, in states/ beside its log (tools/d2/campaign.ts). The log says how each came to be there and what measured it: harness.version (the session, its parent and its note), harness.imported, harness.promoted, and each comparison's start and report. This skill reads the two together. Its script writes nothing of the campaign's, starts no solve and calls no model; the commands it names that solve are marked, and each needs the operator's word (AGENTS.md, section 10).

The questionRead
Which harnesses, where each came from, what measured itharness-versions.ts
What moved from a parent to its childharness-versions.ts --diff, and lane 13 for what it means
How one runs on a taskTrying a kept harness
Ready to promote, or to hand overBefore a promotion and At a handover
Which part of a harness did ita checkpoint against programs-of:<digest>, worded by attribution-and-proof
Whether a part earns its placeFrom recorded use
A change to what makes a harness, or to what a seat is toldThe contract

The versions

bun .claude/skills/harness-audit/scripts/harness-versions.ts --name <campaign> [--json]
bun .claude/skills/harness-audit/scripts/harness-versions.ts --log <log> [--json]
bun .claude/skills/harness-audit/scripts/harness-versions.ts --name <campaign> --diff <harness> [--against <harness>]

A harness is named as the campaign's commands name one (keptAs): starter, promoted, latest or a whole digest; --log reads a log copied out of its campaign, with its states/ beside it. The list gives each harness the log names or the folder keeps, the starter first:

  • whether it opens as kept. Every command that hands a harness to a solve opens it first and refuses one that opens as another digest: a state that lost its tool tree when its campaign was moved had two solves paid for under its name. The list says it of every state at once.
  • how it was made: the session and the parent it froze from, with the length of its note; an import and where from; the starter as this checkout writes it; or no record. A harness with no record is a stored sweep's first parent, which stands in the sweep's root and is not kept here, a starter written by another checkout, since the starter's digest moves with src/solve/starter.ts, or a programs-of control, which no event records. Say which; do not rebuild a missing state.
  • its roles, starter, reference and latest, each naming the starter until something else holds it.
  • its parts: nonblank lines of the guide and of agent/tools.ts, the presets and the tools the spec declares, the files and size of .toolchain and whether it is a link, and any other file, agent/config.yaml among them, which no solve reads.
  • what measured it: each session that started from it, with its practice solves and counted fails, and each comparison it stood in, on which side, against what, and how it read, with its tally. The fold is campaignOf (src/builder/handover.ts), the one the view and the campaign command read.

--diff counts what moved, part by part, against the parent the log records or --against: lines added and removed in the guide and the tools module, tools added and removed in the spec, files added, removed and changed in the tool tree and under which folders, and other files by path. It quotes no line, and neither does anything written from it (lane 13). It takes no control: the command that compares one makes it.

Trying a kept harness

  • One task, as handed over. bun tools/d2/close.ts --name <campaign> --to <folder outside the repository> --solve <task id> writes the handover and solves that task under the harness from the folder it wrote, with the campaign's solver and checks, in a log of its own (handover/log.jsonl) that no reading counts. Name a released task. It is a solve: the operator's word.
  • Two harnesses on the same tasks. bun tools/d2/checkpoint.ts with --reference and --new, through launch-run. programs-of:<harness> on either side separates the installed programs from the guide and the tools.
  • Not a question of your own. v1's harness-query wrapped a written question into a recorded task's shape, and on 14 August a question about firmware passed 2 of 2 with an answer that was the template's desktop build: the solver solved the template's task. A harness is its domain and the campaign's checks together, so a question outside the campaign's tasks has no verdict here, and v2 has no command for one. Its answer is a campaign on that domain.

Before a promotion

Promotion is the operator's (AGENTS.md, section 3), and this is what to put in front of them.

  1. The rule. bun tools/d2/promote.ts --name <campaign> --harness <digest>, without --yes, prints the comparisons the harness was the new side of and asks move 7's rule: read again on fresh solves and not lost at the full limit. It records nothing. A refusal is its reason; --despite is the operator's.
  2. The state. The list: it opens as kept, its line back to the starter, each session's practice and each comparison's tally. Every comparison the promotion would rest on names this digest as its new side.
  3. What moved since the reference. --diff <digest> --against promoted counts the whole change a promotion makes, which can span several sessions. A change that is mostly the tool tree is the programs' step until a checkpoint against programs-of:<digest> reads otherwise (AGENTS.md, section 9).
  4. What it measured. Lane 31 of whole-run-investigation reads a promotion's rule, what its step measured and the climb after it; lanes 13 to 16 read the change, the guide's truth, check mirroring and the finish. Open them when a reading is in doubt, not as a ritual.

At a handover

bun tools/d2/close.ts --name <campaign> --to <folder> writes harness/, the reference harness opened there as kept, RULES.md, the domain's public contract, and REPORT.md, the closing report. It calls no model. Then a blind review, which v1 ran at every campaign's close:

  • Hand an independent reviewer harness/ and RULES.md and nothing else: not REPORT.md, the log, a reading, the operator's diagnosis, an expected fix or an earlier review. A Codex reviewer is one read-only row through codex-luna-swarm, with the folder as its workdir.
  • Ask neutrally: the structure; whether tools-spec.json has one row for each tool tools.ts returns, under the same name and in the same order; whether the guide's account of each program and tool matches what is there; stale or duplicate files; a launcher or a link that names a path outside the folder; anything that returns a finished answer for a task, section 2's one limit, or a verdict on a published rule (lane 15); obvious missing parts.
  • Record the digest and the folder beside the review. The review is advisory: it decides no promotion, reading or claim. A harness promoted after it is another handover and another review.

Whether a part earns its place

A program, a tool or a guide line is read from what solves under it did: their solve.call rows, which lane 14 counts. Count use over the solves where the need arose and the part was there; a missing record is unknown, never zero. A successful call is not a valid answer, a failed answer does not say which part failed it, and a shell command alone is no reason for a tool.

DecisionThe evidence for it
enrich a partrepeated work fits its purpose, and a richer result closes the gap
add onea recurring job has no adequate owner, and a compact interface helps
consolidateparts keep needing the same inputs, or force a hand-off that could be avoided
describethe capability is there, but its purpose, inputs or limits are unclear
removeit has no distinct purpose, and its work is done elsewhere
keepit saves useful work, serves a rare real need, or the shell already does

What a harness holds is the Builder's to choose (AGENTS.md, section 2, rule 3). The table reads what a Builder did, and it grounds a change to the Starter or to the account a Builder is handed, which waits for the operator's word (run-improvement-campaign, Rules).

The contract

WhatOwnerWhat holds it
what opens as a harness, and its digestsrc/solve/harness.ts, openHarnesstest/harness-tools.test.ts
the Starter, and the account a Builder is handed (HARNESS.md)src/solve/starter.tstest/starter.test.ts: the worked harness opens as printed
what a Builder is toldsrc/builder/prompt.tstest/builder.test.ts, "what crosses to the Builder"
what a solver is toldsrc/solve/prompt.tstest/solver-prompt.test.ts
what the Examiner and the Referee are toldsrc/examiner/prompt.ts, src/review/referee.tstest/examiner.test.ts, test/review.test.ts

Section 2 of AGENTS.md holds the stance: facts and never a course, no target for an author, one limit on the Builder and no second one in a prompt or a check. A change here also holds to these:

  • Read what carries a sentence before asking a model to follow it: the parser, the tool, the wall, the limit. An instruction the host cannot honour is a defect of the contract, not a model refusing, and a sentence no code carries binds nothing: lane 15 reads the one sentence that forbids judging in a harness, which nothing enforces.
  • Work asked of a model competes with its wall. On 30 September a simulated v1 truss round asked its Builder to search "at least as long as the solver may spend" with about 75 of its 90 minutes left; it started twelve 95-minute searches in one command, the wall killed them at 4,491 s, and nothing was submitted, where the arm without the sentence submitted at 44.9 minutes. Give the limit and how much is used, as section 2 says, and no length of work.
  • The wall test is exact: what crosses to the Builder is byte-identical whatever a hidden value, a check, a ruling or the task that was won is. Any new text a Builder sees goes through it.
  • Prove the change with its positive and its nearest hostile case. A replay or a rehearsal proves delivery and nothing about a model's behaviour; a claim of better behaviour is a comparison's (AGENTS.md, section 9).

Not carried from v1

final-harness-audit's four scripts joined workspace git histories, iteration records, bundle snapshots, batteries and claims, none of which v2 has; its task-set facts are the Examiner's, which whole-run-investigation's lanes 7 to 12 read. harness-query's probe bundle, its configured Judge (v2 has none, AGENTS.md, section 9), its query fitting and its anchors. harness-contract's adoption gates and discrimination proof, which are the checker's reading and lanes 3 and 7 in v2, its draft store, which answer.json replaced, its steering and hook events, its coding discipline, which is AGENTS.md section 12, and its rules for every area, which are sections 2, 4 and 9.

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

Use after an Anabasis v2 comparison, checkpoint or system change, and before any sentence claims that a harness, a model or a patch improved something. States what one reading may be said to show: the identities it was made under, the counts kept apart, whether it was repeated, which part of a harness it belongs to, whether a mechanism was live in the run, and whether the measurement is valid as distinct from whether it was exploited. Ends in one fixed report.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月14日 更新

Launch and collect independent Codex sessions (gpt-6-luna at high, xhigh or max; gpt-6.1-sol at low to xhigh) for bounded parallel work, from Claude Code or from Codex: one manifest, one detached launcher, one report a session, a drain while it runs, and a retry of the sessions that ended without a report. Owns the Codex transport when another skill sets the questions, as whole-run-investigation does for its lanes. Use when the operator asks for Luna or Sol sessions, a swarm, many sessions, a reasoning effort, a Codex subagent from Claude Code, or a later collection of reports. Tell a request to launch from one to wait and collect.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月14日 更新

commit-r

無料

The commit-R protocol: a test-driven rewrite of one compartment of Anabasis v2. Commit what is in flight, remove the compartment's tests in an "R:" commit, write them again from a stated hypothesis so the production code fails on purpose, remove the production files in a second "R:" commit, then write the production code again, rewrite the neighbouring functions the old shape bent, and delete what served only it. Use when the operator says "commit R", "commit-R protocol", "remove and rewrite the tests" or "rewrite from scratch", or asks for a test-first pass that looks for a faster, simpler path to the same outcome.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月14日 更新

Start an authorised Anabasis v2 campaign through its one command, which asks the log before each move whether the move can report anything, or stop a named run and release what it held. Use when the operator asks to start, launch, resume or stop a campaign or a run, to check whether a campaign is ready for its next move, or why a move was refused. Owns the start and the stop; run-improvement-campaign reads the table, and whole-run-investigation reads what a run did.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月14日 更新

Hand a question about Anabasis v2 to an outside Oracle model as one task document and one zip. The Oracle reads GitHub; the zip carries what it cannot fetch: campaign logs and kept harnesses through `bun run runs zip`, a reader's output, predictions with how each resolved, patches for commits never pushed. Use when the operator asks to prepare an Oracle question, a report request, a problem statement or a second opinion on a run, a reading or a design, or to send the latest runs to an outside model. Produces local files; uploading is the operator's.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月14日 更新

Measure whether a change made the tree simpler, on numbers rather than impressions — line counts, branching, coupling, interface width, rule count, standing exemptions and model-visible prose — across one diff or a whole stack of pull requests. Use before claiming a pass reduced complexity, when deciding which pull request in the stack added the machinery, and to read a function's branch count, which no v2 gate reports.

日本語の概要は準備中です。原文の説明を表示しています。

s-smits/anabasis622026年10月14日 更新

s-smits のスキルをすべて見る

このスキルの問題を報告する