agentsclimarketplace

Correctness gate

Skill huguryildiz/ALETHEIA/skills/core/correctness-gate

Operating discipline for rigorous, reproducible computational-science research — a portable, markdown-only Claude skill pack: 18 disciplines, a generator, and read-only auditor agents.

Install
npx -y skills add huguryildiz/ALETHEIA --skill correctness-gate

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when a change touches any critical module — the modules whose silent breakage would corrupt the project's results — before claiming the change is done, ready, or working. Also use when the named gate test goes red and the bug-or-intentional-change call must be made. Trigger phrases: "run the gate", "is the correctness gate green", "I changed the core model", "the gate is red", "can I say this is done", "update the gate tolerance".

SKILL.md

5.3 KB, as published. Nobody here has run it

correctness-gate

The project names a set of critical modules ({{critical_modules}}) and one gate command ({{gate_command}}). The contract: if any critical module changed, "done" may not be said until the gate passes. Silent breakage in these modules does not crash — it quietly changes numbers, and wrong numbers end up in the paper. The gate is the tripwire.

When to use

  • Any edit lands inside {{critical_modules}} — run the gate before reporting completion.
  • The gate is red and you must decide: bug, or intentional formulation change?
  • A new module is becoming result-critical and should enter the gate's scope.

When NOT to use

  • Changes outside {{critical_modules}} (orchestration, plotting, docs) — the general test suite and review suffice; do not inflate the gate's scope with noise.
  • As a substitute for the full test suite — the gate is a fast, named correctness contract, not total coverage.
  • Verifying a scientific claim — that is the verifier agent (the gate checks the machinery, not the conclusion).

Runbook

  1. Detect scope contact: git diff --name-only HEAD filtered against {{critical_modules}}. No contact → done, no gate needed.
  2. Run the gate fresh: {{gate_command}}. Never reuse a previous run's output.
  3. Green → state the result with numbers ("gate: N tests passed") and proceed.
  4. Red → stop all completion claims and branch:
    • Bug — the change broke pinned behavior. Fix until green, then step 2 again.
    • Intentional formulation change — the pinned expectations themselves must move. Get explicit user approval, update the gate's tolerances/pins in the same change, record the decision (decision-log), and only then report green. Passing silently by loosening a tolerance without approval is the one unforgivable move.

What a good gate looks like

Verified patterns from working practice (adapt, don't copy blindly):

  • Analytic pins: small scenarios with hand-derivable expected values, asserted within a stated tolerance (e.g. ±2%).
  • Cross-form parity: when two independent implementations of the same computation exist (a production form and a reference form), the gate asserts they agree on shared scenarios — the strongest silent-breakage detector available.
  • Oracle checks: an independent, simpler computation (closed-form case, brute-force small instance) that the main machinery must reproduce.
  • Divergence assertions: where two quantities should differ by design, assert that they do — agreement would mean a collapsed distinction.

A gate of a few dozen focused tests that runs in minutes beats a thousand-test suite nobody runs before claiming "done".

Enforcement (documented, not shipped)

This pack ships no executable hooks. If your harness supports lifecycle hooks, the exemplar pattern is a stop hook: on turn end, diff the working tree against {{critical_modules}}; on contact, run {{gate_command}}; on failure, block the completion claim and feed the last ~25 lines of test output back with the bug-or-intentional question. Implement it in your project if you want mechanical enforcement; this skill is the discipline either way.

Rules

  1. The gate list is closed and named. {{critical_modules}} is declared in the config block, not inferred per-turn; changing the list is a decision-log entry.
  2. Red gate = no "done", no "ready", no "works". Not in commit messages, not in chat, not in the build log.
  3. Tolerance/pin updates require approval and a decision entry. The gate's expectations are part of the project's scientific record.
  4. A red gate blocks phase closure (phase-gate step 2) regardless of checklist state.
  5. Keep the gate fast. A slow gate gets skipped; move slow scenarios to the nightly/full suite and keep the gate under a few minutes.

Configuration

  • {{critical_modules}} — glob list of result-critical paths.
  • {{gate_command}} — the single command that runs the gate (e.g. pytest tests/test_correctness.py).

Provenance & maintenance

Generalized from a named correctness-gate rule and its stop-hook enforcement in a working computational-research repository (scope-diff → gate-run → red-means-bug-or-intentional protocol, cross-form parity testing, tolerance-update-with-approval); see the pack's examples/ directory for the worked exemplar mapping. The gate patterns listed are verified practice; the hook sketch is a description of working code, shipped here as documentation only.

Re-verify in your project:

  • {{gate_command}} — runs and is green on a clean tree (a red gate on main is an emergency, not a baseline).
  • git diff --name-only HEAD | grep -E '<critical pattern>' — the scope filter actually matches your critical paths.
  • time {{gate_command}} — still fast enough to run on every touch.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.