feat(state): scope card evidence and policy memory by reported run identity

This commit is contained in:
0xrsydn 2026-09-22 12:45:46 +07:00
commit ba519a850e
9 changed files with 343 additions and 82 deletions

View file

@ -6,6 +6,7 @@
- `policy/combat.py` and `policy/selection.py`: combat and selection proposals.
- `policy/context.py`: shared `Decision`, pending actions, and session-owned `PolicyContext`.
- `run.py`: observedecideact loop, captures, and session attribution.
- `run_state.py`: reported run identity and combat-pile provenance; see `docs/RUN_STATE.md`.
- `sts2.py`: local game HTTP client. `jev.py`: TypeSafe model client and gates.
- `migrate.py`: dataset migration and integrity checks.
- `CONTEXT.md`: domain terms. `docs/POLICY.md`: policy boundaries. `docs/DATASET.md`: dataset schema and limits.
@ -35,7 +36,8 @@ Prefer integration/end-to-end checks; keep only essential regression tests and u
## Safety and scope
- Default to offline tests. Ask before live game actions, model calls, or evaluation batches.
- `run.py --dry-run` sends no action POSTs or deck-cache writes; state reads, model calls, and logs still run.
- `run.py --dry-run` sends no action POSTs; state/identity reads, model calls, and logs still run.
- The runner ignores legacy `deck.json`. Combat-pile evidence is session-local and is not the persistent deck.
- Never print or commit credentials. Do not read secret files for development checks.
- Do not rebuild `dataset/`, change captures, or edit `vendor/` unless the task requires it.
- `migrate.py --verify` rebuilds data; use `--check-only` for routine verification.