Skip to main content

acceptance-checks

Turns the acceptance criteria a task states into executable checks and runs them against the finished outputs before delivering, rather than trusting that a correct-looking analysis satisfies them; rehearses the hidden condition when the grader scores unseen instances from a described family; treats a stated formula, update rule or predicate as the oracle to implement first; so that every stated path, schema, unit, rounding rule, ordering, tolerance, threshold, named method and version, prescribed heading and self-consistency formula becomes a small test, any checker the task ships is run as the exit criterion, derived quantities are recomputed from the primitives, and conventions such as units, signs, coordinate frames and code tables are transcribed into named functions with hand-checked cases. Use whenever a task states how the result will be judged mechanically, ships a validation script, or specifies output formats and tolerances; a report a reader grades needs only its headings and files checked once, a

ソース情報

リポジトリ
synthetic-sciences/openscience
ソースの最終更新活動
2026年9月26日 09:53
検出された SKILL.md の言語
英語
スター
4,004
フォーク
526

インストール方法

デフォルトでは、最初にソースを確認する Prompt が選択されています。直接コマンドに切り替えるか、ローカルコピーをダウンロードすることもできます。

ソースファイルを確認

インストールを決める前に、SKILL.md と SkillsMP に表示されている付属ファイルをお読みください。

SKILL.md を表示中

SKILL.md
ソースの指示 · 読み取り専用プレビュー
name
acceptance-checks
description
Turns the acceptance criteria a task states into executable checks and runs them against the finished outputs before delivering, rather than trusting that a correct-looking analysis satisfies them; rehearses the hidden condition when the grader scores unseen instances from a described family; treats a stated formula, update rule or predicate as the oracle to implement first; so that every stated path, schema, unit, rounding rule, ordering, tolerance, threshold, named method and version, prescribed heading and self-consistency formula becomes a small test, any checker the task ships is run as the exit criterion, derived quantities are recomputed from the primitives, and conventions such as units, signs, coordinate frames and code tables are transcribed into named functions with hand-checked cases. Use whenever a task states how the result will be judged mechanically, ships a validation script, or specifies output formats and tolerances; a report a reader grades needs only its headings and files checked once, and free-form exploration with no stated criteria does not need it.
summary
Turn stated criteria into runnable tests; when the grader scores unseen instances, synthesise the described family and measure transfer; a stated formula or update rule is the oracle to implement first; run any shipped checker; verify conventions before delivering.
category
core
role
support
allowed-tools
["Read","Bash","python","Grep","Glob"]
license
MIT
version
1.0.0
author
Synthetic Sciences
metadata
{"skill-author":"Synthetic Sciences"}
# Acceptance checks Most specified work is judged mechanically: a script opens your files, reads named columns, compares numbers to tolerances and stops at the first violation. When a task tells you how it will be judged, it has handed you the test suite. Write it down, run it, and only then deliver. The failure this prevents is not sloppiness. It is a correct analysis delivered with a column named `sample` where the specification said `sample_id`, an angle in degrees where radians were required, or a fraction that sums to 0.999 where exactly one was expected. When the output is a report a person or a model will read and grade (a trace, a write-up with prescribed headings), there is no mechanical judge to anticipate. The whole check is that the prescribed headings and files exist and that the numbers in the prose match the tables and the answer file: five lines, run once at the end. Do not build the report from a generator script, write validators that count its code blocks, or scan it for placeholder words; none of that is graded, and the minutes go to the analysis the grader does read. For such a task the rest of this skill does not apply. ## Build the check list from the specification Read the instruction and every file it points to — schema, README, format description, grading notes, example output, validation script — and extract: - **Paths and files**: exact absolute paths, file names, which directory, whether extra files are allowed there, and whether a real file is required (not a symlink or a directory). - **Structure**: column names and their order, key sets, array shapes and dtypes, index columns, required rows or identifiers, sort order, header text, encoding, delimiter. - **Values**: units, scale factors, sign conventions, coordinate frames, allowed vocabularies and code tables, ranges, and how missing values are expressed. - **Templates and example strings**: when the format shows a string ("`<a>; <b>; <c>`", an example row, a bracket notation), the separator with its spaces, the case, the bracket style and the field order are the format. Build the string from the template and compare it byte for byte with the example; `a;b` is not `a; b` to an exact match. - **Number formatting**: decimal places, significant figures, and whether trailing zeros must be kept — `0.250` and `0.25` are the same number and different strings, and a checker that counts significant figures or matches a notation pattern rejects the second. Format with an explicit format string rather than by printing a float. - **Numeric criteria**: tolerances (absolute or relative), thresholds, metrics and their exact definitions, how ties are broken, whether every case must pass or a mean suffices. - **Self-consistency**: statements of the form "the totals must equal", "the fractions sum to one", "the reported value must match the file", "the durations follow from the timestamps". - **Named methods**: the tool, version, language, contrast direction, filter, reference build and feature universe the task prescribes. When the reference numbers come from a specific pipeline, the method is part of the contract: a valid alternative shifts scale and row membership and is scored as wrong. Run the named tool at the named version; where that is impossible, disclose the substitute and its known differences in the methods file rather than swapping silently. - **Judged text**: when a reader or a rubric grades the written trace or report alone, the check list includes every prescribed heading verbatim, one numbered step with its code and its intermediate number for each clause of the question, and named entities where the question names them. What is not in the text did not happen. ## The grader you cannot see Most graded work is scored on instances you never see: further systems drawn from a described family, held-out packets, unseen plates and layouts, a private test set, a hidden condition the instruction describes but does not ship. The visible data are development data; the number is transfer. Three rules follow. - **Rehearse the hidden condition.** When the instruction describes the family the grader draws from — parameter ranges, noise model, grid sizes, layouts, class balance, conventions — build instances from that description yourself, with the stated generator or an honest imitation of it, run your method on them and measure the error the grader will measure. Tune on the visible packet alone and you have measured nothing; a method that reproduces the visible episodes to machine precision and fails the first unseen system is the commonest way a good run scores zero. Where the family cannot be synthesised, hold out from the visible data the way the grader holds out (different samples, same process) and report that number, not the fit. - **The stated formula is the oracle.** When the instruction states a discrete update, a mask rule, a scoring formula, a predicate, a normalisation or a functional, implement it verbatim as its own function before anything else, confirm it reproduces every reference value the task ships, and grade every candidate with it. A method that fits the data without passing the stated formula is wrong by construction, however good the residuals look. Where a `SPEC.md`, a schema or an API contract exists, one test per clause precedes the implementation. - **Cover the corners of every stated range.** A described family comes with ranges (a speed in [0.8, 1.2], counter lengths 1 to 8, a threshold at 0.2–0.8 of another); the grader's instances sit anywhere in them, including the ends. Your constructed suite samples every range at both ends and in the middle, in combination, and the awkward combinations (the shortest counter with the highest threshold, the smallest grid with the longest horizon) are the ones to keep. - **A graded entry point never raises.** When the grader imports your function and calls it on its own inputs, an exception is a zero for that instance and often for the run; a fallback answer (the best feasible fit, the nearest valid state, the default branch) can still pass most gates. Every graded function catches its own failure paths, returns a valid object of the stated shape, and logs the fallback, and your rehearsal includes inputs built to trigger those paths. - **Every gate, every packet, every rare class.** "All gates must pass", macro-averaged F1 and per-packet floors mean the worst case is the score. Name the rare classes and the hardest packet before you start, and check them separately at the end; a method that is right on average and wrong on one of them has failed. - **A rehearsal that fails the gate is not done.** When your own constructed cases miss the stated threshold on any case and budget remains, the failing case is the case the grader holds: keep going. Change the method family rather than the tuning (a worker per candidate method on the same constructed suite, best max-error wins), and stop only when every constructed case clears the gate with margin or the budget is spent. Reporting "98 of 101 cases pass" with hours left is the same score as reporting none. - **An undisclosed bar has no early finish.** When the pass condition is a comparison you cannot run — at or below a reference total the grader holds, faster than a reference by a factor you cannot time, within a margin of a hidden baseline — a result that is merely correct is not yet a result, and "cannot be confirmed here" is not a reason to stop. The time budget is the stopping rule: profile where the metric is spent, take the largest term, change the algorithm before its constants, and keep going while the remaining time can still move the number. Report the metric's trajectory (what it was, what it is now) rather than that it is unverified. - **A written protocol is computed before it is looked at.** When labels follow a protocol (class definitions, precedence rules, edge cases) over measured series or images, turn each criterion into a computed feature first — the drop rate, the timing, the residual, the presence of an outlet, whatever the protocol names — and label by the rules from those features; use visual review to settle the cases the features leave ambiguous, not to label from scratch. Eyeballing hundreds of frames is the least reliable and most expensive reading there is, and it is where the rare classes get lost. - **Audit before every irreversible step.** Advancing a stage, submitting a decision, locking a trajectory, finalising an environment: the contract's rules and the shipped self-check are run on that step *before* it is taken, because the audit you run afterwards can only report what you can no longer amend. A run that finds its own violations after locking has the same score as one that never looked. - **A graded directory holds exactly the outputs.** When the grader reads a directory, every file in it is part of the submission: a plot, a log, a notes file, a copy of the instruction or a stray temp file can fail a strict gate ("no other files", a file count, a recursive scan for the benchmark's canary line). Keep scratch work elsewhere, list the directory before finishing, and remove what the instruction did not ask for. - **When wrong findings cost points, precision is the method.** A score that subtracts for unsupported or decoy findings (a false alarm, an extra row, an acute finding the images do not show) is lost by reporting everything plausible. Report a finding only when a named, reproducible signal supports it above the noise you measured on cases where nothing is wrong; state the clean result when that is what the data show. - **A scarce oracle is spent like money.** When checks against the real system are limited (a probe budget, a submission count, a paid query quota), exhaust the offline checks first, spend one probe per failure class rather than per instance, re-verify a fix on the class it was meant for, and keep a reserve for the final configuration: the run that ends with the budget gone and the target "unverified" has spent it on the wrong things. - **Labels judged against an expert are labelled twice.** Two independent annotators and your adjudication from the protocol (see `delegation`); one reader's blind spots are scored at full weight. ## Rules 1. **One script, run last.** Put the checks in a single script that takes the output directory and prints one line per check with pass or fail. Run it as the final step before you report. Keep it with the work; it is evidence. An edit to any output after the script ran voids that run: run it again and report only the numbers from the final run. A spot check on one case, or a schema check, is not the script; the number you report for a file is the number measured on the file as it is now. 2. **Run the shipped checker.** If the task provides a validator, linter, policy check, self-test or example runner, running it successfully is the exit criterion, not an optional extra. Read what it actually checks; it usually names conventions the prose glossed over. 3. **The check runs as the grader will.** A fresh process, the environment's default settings and backends, the untouched model or schema definitions, the files as they are on disk. When the artifact fails under those conditions, the artifact changes. A check that was adjusted until it passed (a backend disabled, a tolerance widened, a case skipped) is not a check, and the grader will not have made the same adjustment. 4. **Recompute derived values from the primitives.** Any number you report that follows from another output — a total, a ratio, a duration, a goodness-of-fit, a count — gets recomputed by the check script from the files themselves, with the definition the task gave, not the value your pipeline remembered. 5. **Transcribe conventions into named functions with tests.** Unit conversions, scale factors, frame rotations, code lookups, rounding rules: each becomes a small function with a hand-worked case you verified against the specification. Conventions asserted only in a comment are the ones that silently invert a sign. An option the task pins on a tool (`No_Collapse`, a seed, a metric, a normalisation) also fixes the preprocessing that option governs: do not perform by hand what the option turns off, and do not tidy the supplied table (deduplicate, average, drop) unless the task says to — with one exception that is not tidying: what the tool's input format itself requires. A format that needs unique identifiers gets them, resolved in the tool's input only and by a rule you state (keep the canonical record, say), never in your own statistics; a tool that accepts a malformed input with a warning has not validated it, it has made a choice for you that you did not read. Where the task names what to hand a named tool — these columns, this matrix, this file — hand it exactly that, and do not transform it first because the field usually would. That reading governs the tool's input and nothing else. A statistic you compute yourself still follows its own convention, so the same task routinely wants the supplied columns fed to the tool *and* the transform applied to the test you run by hand (intensities, for instance, are compared on the log2 scale whoever computes them); a literal reading carried into your own statistic is how a heteroscedastic t-test on raw intensities halves a gene set. Where the two readings change a graded answer, compute both, keep the one each step's own words select, and report the other. 6. **Check the boring properties.** Existence, non-emptiness, parseability, no `NaN` or infinities where finite numbers are required, no placeholder text, no duplicate identifiers, row counts, complete coverage of the required cases, and files written where they were asked for rather than beside them. Deliverables are real files, not symlinks into a scratch directory, and they hold results rather than copies of the task description, your notes or logs. Where the output location is specified, leave nothing else in it. 7. **Match the strictness to the statement.** If the task says exact, compare exactly; if it gives a tolerance, compare within it and report the margin. Knowing you passed by a hair is information worth having before you deliver. When the task defines a word — a "run" has flight phases and alternating single stance with no double support, a "converged" fit has a stated tolerance — every clause of that definition is an assertion on the output, because the grader encodes it that way; a dynamics residual or a distance target does not stand in for the gait the task described. 8. **Treat a partial pass as a failure when the criteria are conjunctive.** Where several thresholds, instances, cases or scenes must all clear, five of six is the same as none: keep working on the ones that fail rather than reporting the ones that pass. The stopping rule is every criterion cleared with margin, not an output that looks plausible. Say which criterion is closest to its bound when you finish. 9. **Answer exactly the set the criterion asks for.** When the task says every instance, all findings or one row per case, enumerate candidates systematically and check the count; when extras are penalized, drop the ones you cannot support. Hedging costs twice over: a vague, generic or deliberately empty answer is scored as wrong, and an unsupported extra can cancel a correct one. Where a selection rule is stated ("the largest consistent set", "the closest match"), apply it mechanically and record the alternatives you rejected. A qualifier on what you are asked to list is a filter on what you ship, not a description of what you found: an item your own annotation places outside the requested kind is dropped however genuine it is, and every count you report is taken after that exclusion. Read your own category column against the request's words before writing the set out — a field in your own output that contradicts the request's qualifier is a check you did not run. 10. **When a criterion is ambiguous, satisfy both readings if you can**, and say which you assumed. Where both are impossible, state the interpretation you chose and why. ## Reporting Keep the check output with the deliverables and summarize it in one line: what was checked, what passed, and any margin that was uncomfortably small. If a check fails and you cannot fix it in the time available, say exactly which criterion fails and by how much rather than delivering silently.
GitHubで見る