# Evidence and safety rules

## Evidence levels

| Level | Meaning | Permitted use |
|---|---|---|
| Observed | Read from live SQL once | Diagnosis only |
| Reproduced | Seen in independent before/after saves | Decoder rule candidate |
| Round-trip proven | Decode → unchanged encode returns identical bytes | Safe read/transform component |
| Activation proven | A human Configurator applied it and active SQL verified it | Controlled `upo_test` writer component |

No rule may be promoted because a name, suffix, or payload shape “looks right”.

## Codec boundary

The configuration-storage specification is the adapter's sole authority for
decoding and encoding. A writer is enabled only when the relevant version of
that specification defines every changed byte and every dependent integrity
atom, and round-trip evidence proves the encoder. Any remaining opaque atom is
preserved byte-for-byte; if a requested edit requires changing it, the write is
unsupported until the specification is extended by a controlled experiment.

## Allowed mutation boundary

- The adapter runtime uses SQL only.
- `upo_test` may receive controlled writes to `ConfigSave` and
  `ConfigCASSave` only.
- `Config`, `ConfigCAS`, and application data are never direct write targets.
- A write must have a live target resolution, optimistic SHA-1 precondition,
  reversible evidence, atomic transaction, and readback verification.
- Repository coordination is a separate policy; an adapter marker is not a
  native repository lock.

## Exact edits

For BSL fragment replacement, provide one of:

- an old fragment occurring exactly once;
- a larger unique surrounding fragment;
- a proven structural container path/offset plus original SHA-1.

If a fragment occurs zero or more than once, do not choose arbitrarily. Return
the count and candidate contexts. Deletion follows the same rule.

## What an agent must report

Every proposal and applied result must state:

- active and saved layers used;
- public target and SQL evidence retained internally;
- original and new SHA-1 values;
- paired files changed;
- exact-match count;
- rollback reference;
- Configurator refresh guidance.
