# Scientific protocol v1.0

## 1. Separate evidence classes

Every record must declare one evidence class:

- `physical_measurement`
- `published_measurement`
- `empirical_model_trace`
- `simulation_result`
- `analytical_derivation`
- `literature_report`
- `design_hypothesis`

Evidence may support a narrower claim than the author hoped. The claim must be
written at the scope actually supported.

## 2. Preregister decisive tests

Before a decisive run, create an experiment record containing:

- a single primary question;
- the hypothesis;
- explicit success and failure criteria;
- frozen inputs, metrics, and analysis method;
- expected outputs and required provenance;
- known limitations and dependencies.

Exploratory analysis is welcome, but it must be labeled exploratory and cannot
silently become a confirmatory test.

## 3. Produce a reproducibility envelope

A finding is incomplete unless another contributor can determine:

- which code and configuration produced it;
- which data or trace was used and where it came from;
- which random seed and numerical precision were used;
- which assumptions remain unmeasured;
- which commands regenerate the reported metrics;
- where raw artifacts live and how their hashes are verified.

## 4. Review independently

The author requests one or more of:

- `reproduction` — rerun the same protocol;
- `adversarial` — search for invalid assumptions or counterexamples;
- `literature` — verify source interpretation;
- `code` — verify implementation and test coverage;
- `device_physics` — verify physical interpretation.

The reviewer must use a distinct contributor identity. A reviewer records
`confirm`, `confirm_with_limitations`, `challenge`, or `reject` and explains the
evidence.

## 5. Promote conservatively

Suggested transition rules:

```text
hypothesis -> reported -> reproduced -> supported
                    |          |
                    v          v
                 disputed -> falsified

any status -> superseded (only with an explicit replacement link)
```

`supported` does not mean permanent truth. It means the current claim survived
the stated tests at the stated scope.

## 6. Handle conflict without erasure

When results disagree:

1. Preserve both records.
2. Add a `contradicts` relationship in the new record.
3. Compare code revision, configuration, data, units, seeds, and evidence class.
4. Create a resolution experiment that can distinguish the explanations.
5. Mark the affected claims `disputed` only when the contradiction is material.

## 7. CrystalRAM-specific truth boundaries

- A weight-service lower bound is not complete token latency.
- A trace hit rate applies only to the captured workload and model condition.
- A material's active patch density is not complete routed-array density.
- Native states are not reliable stored bits without error and drift evidence.
- Extrapolated retention is not measured retention.
- Component write energy is not system write energy.
- Device success and architecture usefulness are separate verdicts.

## 8. Minimum artifact policy

Small text, configuration, and result records belong in Git. Large or licensed
artifacts belong in an approved store; record a stable URI, SHA-256, size,
license/access constraints, and creation method. Never commit API keys, private
model weights, personal data, or material that the project is not allowed to
redistribute.

