skills/hypothesis-generation/references/tool_reference.md
All bundled CLIs:
--force is given;0600) and atomic replacement for generated output.Reports contain identifiers, counts, rule codes, and line numbers rather than copying scientific prose where practical.
0: input was structurally valid; warnings or human-review gaps may remain.1: input was parsed, but consistency or required-control errors were found.2: malformed, unsafe, missing, oversized, or wrong-type input.No exit code means a hypothesis is true, novel, ethical, safe, feasible, supported, or selected.
Asset: assets/hypothesis_record_template.json
python3 scripts/validate_hypothesis_schema.py local-record.json
python3 scripts/validate_hypothesis_schema.py \
local-record.json -o local-validation.json
The exact top-level objects are:
All hypothesis statuses must be candidate. Causal questions require at least one estimand. Cross-links among candidate, prediction, rival, measurement, analysis, control, and source IDs are checked.
The validator does not read the evidence ledger, test measurements, appraise sources, or interpret results.
Asset: assets/operationalization_template.json
python3 scripts/check_operationalization.py local-operationalization.json
Each measurement item records:
planned, unresolved, and pending states are reported as gaps, not converted to scores. A checklist cannot establish measurement validity.
Asset: assets/prediction_rival_matrix_template.csv
Exact header:
prediction_id,hypothesis_id,rival_hypothesis_ids,conditions,observable,expected_if_focal,expected_if_rivals,falsifier,indeterminate_result,boundary_conditions,measurement_ids,negative_control_ids,analysis_ids,uncertainty
Use semicolons inside ID-list cells:
python3 scripts/validate_prediction_matrix.py local-matrix.csv
python3 scripts/validate_prediction_matrix.py \
local-matrix.csv --record local-record.json
Checks include:
The validator cannot determine whether two predictions are scientifically distinguishable.
python3 scripts/lint_causal_claims.py local-draft.md
Use one claim per annotated line:
[claim:associational] Exposure X was associated with outcome Y in the observed sample.
[claim:causal][estimand:E1][identification:observational_assumption_dependent][confounding:unresolved][selection:assessed][collider:assessed][reverse-causation:assessed] Under the stated assumptions, intervention X would reduce outcome Y.
Claim types:
causalassociationaldescriptivepredictivemechanisticIdentification values:
randomizedquasi_experimentalobservational_assumption_dependentmechanistic_experimentother_assumption_dependentRisk values:
assessedunresolvednot_applicableThe linter flags a bounded causal lexicon and annotation consistency. It is not a semantic classifier and will have false positives and false negatives.
Asset: assets/falsification_controls_template.json
python3 scripts/check_falsification_controls.py local-controls.json
python3 scripts/check_falsification_controls.py \
local-controls.json --record local-record.json
For each candidate it requires:
The checker does not validate that a negative control is biologically or causally appropriate.
Assets:
assets/evidence_ledger_template.csvassets/search_boundary_template.jsonExact evidence-ledger header:
source_id,claim_ids,title,authors_or_organization,publication_date,source_type,identifier,url,accessed_on,relation,study_design_or_document_type,limitations,notes
python3 scripts/audit_evidence_ledger.py \
local-evidence.csv local-search-boundary.json
python3 scripts/audit_evidence_ledger.py \
local-evidence.csv local-search-boundary.json \
--record local-record.json
The audit checks:
It deliberately performs no network access. It cannot verify that a URL exists, a source says what is claimed, evidence is complete, or an idea is novel.
Allowed novelty states:
not_assessedrequires_specialist_reviewsupported_by_documented_comprehensive_searchThe final state still requires a qualified human and supports only a bounded statement.
Asset: assets/preregistration_scaffold_template.md
python3 scripts/generate_preregistration_scaffold.py \
local-record.json -o local-preregistration.md
The generator:
It never uploads, registers, timestamps externally, or submits the result.
python3 scripts/validate_hypothesis_schema.py local-record.json
python3 scripts/check_operationalization.py local-operationalization.json
python3 scripts/validate_prediction_matrix.py \
local-predictions.csv --record local-record.json
python3 scripts/check_falsification_controls.py \
local-controls.json --record local-record.json
python3 scripts/audit_evidence_ledger.py \
local-evidence.csv local-search-boundary.json --record local-record.json
python3 scripts/lint_causal_claims.py local-draft.md
python3 scripts/generate_preregistration_scaffold.py \
local-record.json -o local-preregistration.md
Qualified human review remains mandatory after every command.