Skill Tracer
Skills › Scientific Agent Skills › hypogenic › evaluation.md

evaluation.md

158 lines · skills/hypogenic/references/evaluation.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Local output inspection and evaluation
2
3Reviewed 2026-10-01 against the unchanged 0.3.5 output serializer.
4All bundled operations in this reference are deterministic and model-free.
5They do not establish scientific truth.
6

Local output inspection and evaluation

Reviewed 2026-10-01 against the unchanged 0.3.5 output serializer. All bundled operations in this reference are deterministic and model-free. They do not establish scientific truth.

Raw lines 1 to 6
7## Hypothesis-bank inspection
8
9The pinned upstream serializer writes a JSON object whose keys are hypothesis
10text and whose values contain:
12- `hypothesis`: same text as the object key;
13- `acc`: finite number in `[0, 1]`;
14- `reward`: finite ranking value;
15- `num_visits`: non-negative integer;
16- `correct_examples`: `[row_index, label]` pairs;
17- optionally `num_select` in some literature/union outputs.
19Inspect without echoing text:
21```bash
22python3 scripts/inspect_outputs.py hypotheses \
23 --input outputs/hypotheses.json \
24 --root .
25```
27The report includes file SHA-256, bank size, normalized duplicate counts,
28length/statistic ranges, and a bounded sample of hypothesis SHA-256 values.
29Candidate strings are never printed or interpreted, including duplicate-key
30error messages.
32Stored `acc` and `reward` are algorithm state from the generation/update
33workflow. They are not an independently reproduced evaluation and should not
34be described as p-values, confidence intervals, causal effects, or scientific
35validation.

Hypothesis-bank inspection

The pinned upstream serializer writes a JSON object whose keys are hypothesis text and whose values contain:

  • hypothesis: same text as the object key;
  • acc: finite number in [0, 1];
  • reward: finite ranking value;
  • num_visits: non-negative integer;
  • correct_examples: [row_index, label] pairs;
  • optionally num_select in some literature/union outputs.

Inspect without echoing text:

python3 scripts/inspect_outputs.py hypotheses \
  --input outputs/hypotheses.json \
  --root .

The report includes file SHA-256, bank size, normalized duplicate counts, length/statistic ranges, and a bounded sample of hypothesis SHA-256 values. Candidate strings are never printed or interpreted, including duplicate-key error messages.

Stored acc and reward are algorithm state from the generation/update workflow. They are not an independently reproduced evaluation and should not be described as p-values, confidence intervals, causal effects, or scientific validation.

Raw lines 7 to 36
Runs code python3 scripts/inspect_outputs.py :22
37## Strict saved-result schema
39The upstream inference CLI logs metrics but does not define a durable
40prediction artifact. This skill therefore uses a small local interchange
41schema:
43```json
45 "schema_version": "1.0",
46 "dataset_manifest_sha256": "<64 lowercase hex>",
47 "hypothesis_bank_sha256": "<64 lowercase hex>",
48 "split": "test",
49 "records": [
50 {
51 "id": "stable-nonsecret-id",
52 "label": "class-a",
53 "prediction": "class-a"
54 }
55 ]
57```
59`prediction` may be `null` for an abstention or extraction failure. IDs must be
60unique; duplicate-ID errors identify the record index without printing the ID.
61Do not store prompts, chain-of-thought, provider responses, credentials,
62or raw sensitive features in this file. Replace the placeholder hashes in
63`assets/result.example.json` with hashes of the exact reviewed artifacts.
65Inspect structure:
67```bash
68python3 scripts/inspect_outputs.py results \
69 --input results/test_predictions.json \
70 --root .
71```
73The report redacts IDs, labels, and predictions; category values are represented
74by short SHA-256 fingerprints.

Strict saved-result schema

The upstream inference CLI logs metrics but does not define a durable prediction artifact. This skill therefore uses a small local interchange schema:

{
  "schema_version": "1.0",
  "dataset_manifest_sha256": "<64 lowercase hex>",
  "hypothesis_bank_sha256": "<64 lowercase hex>",
  "split": "test",
  "records": [
    {
      "id": "stable-nonsecret-id",
      "label": "class-a",
      "prediction": "class-a"
    }
  ]
}

prediction may be null for an abstention or extraction failure. IDs must be unique; duplicate-ID errors identify the record index without printing the ID. Do not store prompts, chain-of-thought, provider responses, credentials, or raw sensitive features in this file. Replace the placeholder hashes in assets/result.example.json with hashes of the exact reviewed artifacts.

Inspect structure:

python3 scripts/inspect_outputs.py results \
  --input results/test_predictions.json \
  --root .

The report redacts IDs, labels, and predictions; category values are represented by short SHA-256 fingerprints.

Raw lines 37 to 75
Runs code python3 scripts/inspect_outputs.py :68
76## Evaluation plan
78Freeze a plan before looking at test metrics:
80```bash
81python3 scripts/evaluate_local.py plan \
82 --config reviewed_run_config.json \
83 --manifest dataset_manifest.json \
84 --root .
85```
87The plan records:
89- immutable data source revision and manifest hash;
90- provider/model/destination;
91- train, validation, and test roles;
92- row and hypothesis caps;
93- planned metrics;
94- required provenance and interpretation limits.
96It does not read dataset rows or invoke a model.

Evaluation plan

Freeze a plan before looking at test metrics:

python3 scripts/evaluate_local.py plan \
  --config reviewed_run_config.json \
  --manifest dataset_manifest.json \
  --root .

The plan records:

  • immutable data source revision and manifest hash;
  • provider/model/destination;
  • train, validation, and test roles;
  • row and hypothesis caps;
  • planned metrics;
  • required provenance and interpretation limits.

It does not read dataset rows or invoke a model.

Raw lines 76 to 97
Runs code python3 scripts/evaluate_local.py :81
98## Metrics report
100```bash
101python3 scripts/evaluate_local.py report \
102 --results results/test_predictions.json \
103 --root . \
104 --expected-split test
105```
107Implemented metrics:
109- `coverage`: non-null predictions divided by all records;
110- `accuracy_all_records`: exact matches divided by all records; null predictions
111 count as incorrect;
112- `accuracy_covered_records`: exact matches among non-null predictions;
113- `macro_f1_all_records`: unweighted mean of per-label F1 over the union of
114 observed true and non-null predicted labels;
115- redacted confusion matrix, with a separate `<missing>` prediction column.
117All arithmetic uses the supplied saved strings exactly. There is no label
118normalization beyond schema validation. A custom label extractor must be frozen
119before test evaluation and its behavior documented.

Metrics report

python3 scripts/evaluate_local.py report \
  --results results/test_predictions.json \
  --root . \
  --expected-split test

Implemented metrics:

  • coverage: non-null predictions divided by all records;
  • accuracy_all_records: exact matches divided by all records; null predictions count as incorrect;
  • accuracy_covered_records: exact matches among non-null predictions;
  • macro_f1_all_records: unweighted mean of per-label F1 over the union of observed true and non-null predicted labels;
  • redacted confusion matrix, with a separate <missing> prediction column.

All arithmetic uses the supplied saved strings exactly. There is no label normalization beyond schema validation. A custom label extractor must be frozen before test evaluation and its behavior documented.

Raw lines 98 to 120
Runs code python3 scripts/evaluate_local.py :101
121## Reporting checklist
123Report at minimum:
1251. `hypogenic` version, source commit, and artifact hash;
1262. dataset repository, immutable revision, manifest SHA-256, and file hashes;
1273. task config hash, provider wrapper, exact model, and data destination;
1284. train/validation/test/OOD roles and sample counts;
1295. generation/inference settings, seeds, hypothesis count, and selection rule;
1306. token/request/cost caps and actual provider usage when available;
1317. result and hypothesis-bank hashes;
1328. coverage, accuracy, macro-F1, class support, and uncertainty across seeds;
1339. duplicate/leakage audit results;
13410. failures, exclusions, abstentions, retries, and deviations;
13511. provider retention/privacy terms reviewed for the run;
13612. a statement that generated hypotheses are candidates, not evidence.
138The local tool does not calculate confidence intervals or significance tests.
139Choose those methods from a prespecified design that respects dependence,
140repeated seeds, multiple comparisons, class imbalance, and the data-generating
141process.

Reporting checklist

Report at minimum:

  1. hypogenic version, source commit, and artifact hash;
  2. dataset repository, immutable revision, manifest SHA-256, and file hashes;
  3. task config hash, provider wrapper, exact model, and data destination;
  4. train/validation/test/OOD roles and sample counts;
  5. generation/inference settings, seeds, hypothesis count, and selection rule;
  6. token/request/cost caps and actual provider usage when available;
  7. result and hypothesis-bank hashes;
  8. coverage, accuracy, macro-F1, class support, and uncertainty across seeds;
  9. duplicate/leakage audit results;
  10. failures, exclusions, abstentions, retries, and deviations;
  11. provider retention/privacy terms reviewed for the run;
  12. a statement that generated hypotheses are candidates, not evidence.

The local tool does not calculate confidence intervals or significance tests. Choose those methods from a prespecified design that respects dependence, repeated seeds, multiple comparisons, class imbalance, and the data-generating process.

Raw lines 121 to 142
143## Scientific interpretation limits
145Predictive benchmark performance can show that a textual heuristic was useful
146for a declared classification setup. It does not by itself establish:
148- that the proposed mechanism is true or causal;
149- that the pattern generalizes beyond the sampled population/time/domain;
150- novelty relative to all scientific literature;
151- robustness to paraphrases, near duplicates, annotation artifacts, or
152 distribution shift;
153- clinical, policy, or safety validity;
154- absence of data leakage or provider/model memorization.
156Validate promising candidates using independent data, domain-expert review,
157appropriate controls, alternative explanations, sensitivity analyses, and,
158where warranted, prospective or experimental tests.

Scientific interpretation limits

Predictive benchmark performance can show that a textual heuristic was useful for a declared classification setup. It does not by itself establish:

  • that the proposed mechanism is true or causal;
  • that the pattern generalizes beyond the sampled population/time/domain;
  • novelty relative to all scientific literature;
  • robustness to paraphrases, near duplicates, annotation artifacts, or distribution shift;
  • clinical, policy, or safety validity;
  • absence of data leakage or provider/model memorization.

Validate promising candidates using independent data, domain-expert review, appropriate controls, alternative explanations, sensitivity analyses, and, where warranted, prospective or experimental tests.

Raw lines 143 to 158