| name | experiment-loop |
| description | Use for any evidence-bearing experiment in research mode, and when converting an unregistered exploration observation into citable evidence via a fresh confirmation on a new variation axis. Needs a hypothesis, a disconfirm predicate, and a command before registration; the runner stamps the outcome and claims cite the experiment ID. Do not use for exploration-only probing, or delivery-mode verification (quality-gate). |
| metadata | {"short-description":"Registered experiment evidence contract"} |
Purpose
This is the single load-bearing evidence contract for research mode. Every citable empirical claim in this repository traces back to an experiment registered through this skill.
When to use
Use this skill for any evidence-bearing experiment in research mode, and when an unregistered observation from exploration needs to become citable evidence — register a fresh confirmation with a new variation axis rather than citing the original exploration directly.
How to use
-
Supply exactly three things before registering anything:
- hypothesis — one sentence.
- disconfirm predicate —
{metric, comparator, threshold}. A hypothesis without a disconfirm predicate is an idea, not a hypothesis, and cannot bear evidence.
- command — the exact command that produces the metric.
-
Register, then execute:
python3 scripts/research_run.py register ...
python3 scripts/research_run.py execute --experiment-id E-XXXX
- The runner stamps times and digests, creates the run directory, and computes the outcome (
supported | disconfirmed | not-evaluable) plus exploration multiplicity. The agent writes interpretation only — never the outcome, never the timestamps.
-
Unregistered probing stays available for reconnaissance: python3 scripts/research_run.py explore --command .... Exploration is logged but is never evidence on its own.
-
Results derived from prior exploration carry that exploration's multiplicity forward automatically. Never omit or hide a multiplicity disclosure when citing such a result.
-
A disconfirmed outcome is a successful experiment — it answered the question. Do not treat disconfirmed as a failed run to retry silently.
-
Claims: python3 scripts/research_run.py claim ... with structured fields. Claim prose is generated by the runner's render-claims step from those fields; claim wording is never hand-written.
Hard rules
- Never edit
.agents/runs/agent-runs.jsonl by hand. It is append-only, and the runner is its sole writer.
- A registered command must not be altered after registration. A changed command is a revision — re-register it as a new experiment.
- A byte-identical rerun is a replay, not a reproduction. Reproduction requires a new variation axis (different seed, different data slice, different hardware, or similar) — repeating the exact same run does not add evidence weight.
Output expectation
- Experiment IDs with their outcomes (
supported | disconfirmed | not-evaluable).
- Interpretation per experiment: what was learned or falsified.
- Any exploration-multiplicity disclosures carried forward into cited results.
- The next hypothesis to test, or a handoff to
$research-synthesis / $research-workflow.