yoagent-state 0.3.0

Durable state and lineage for long-running agents.
Documentation
# Safety Model

`yoagent-state` is designed around explicit mutation and evidence-backed promotion.

## Self-modification must be explicit

Agents should not silently mutate prompts, policies, tools, memory, or code.

Use patches.

## Promotion requires evidence

A patch should not be promoted without at least one of:

- passing eval
- passing test
- human approval
- policy approval

The evidence should be represented in lineage, not hidden in a transcript.

```mermaid
flowchart LR
  patch["patch"]
  evidence["eval / test / approval"]
  decision["decision"]
  promoted["promoted status"]

  patch -- validated_by --> evidence
  patch -- approved_by --> decision
  evidence --> promoted
  decision --> promoted
```

## Project base must be checked

If a patch was created against commit `abc123`, do not blindly apply it to another commit.

Mark the patch stale or conflicted, then reobserve.

## Staleness is first-class

Assumptions go stale. So do patches, projections, and observations.

Use stale nodes or statuses when state is no longer current.

## Important artifacts need hashes

Use hashes for:

- diffs
- logs
- files
- eval outputs
- generated reports

Hashes make lineage more trustworthy.

## Keep the layer small

Do not turn `yoagent-state` into a hidden automation engine. Behaviors and policies are allowed, but they should be explicit, registered, replayable, and represented in the graph. State and lineage come first.