sots-re/AGENTS.md

54 lines
3.6 KiB
Markdown

# SOTS campaign instructions
This repository is the state authority for the SOTS reconstruction and its Windows lab.
Start with `campaign/README.md`, your contract, its latest checkpoint, and open surprises.
Current policy: `guides/multi-agent-workflow.md`. Engine architecture: `sots-engine/docs/architecture.md`.
Historical findings are evidence, not current execution instructions or accepted status.
## Authority and models
- The normal lead/RE/implementation/verification/lab loop runs on **GPT-5.6 Sol
(`openai/gpt-5.6-sol`)**. Reserve **GPT-6 Astra (`openai/gpt-6-astra`)** for resolving
falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope.
- `campaign/models.json` is the role/model registry. Launch with `tools/run_agent.py` and an
explicit role, contract, state root, and paired worktrees. Never silently downgrade or fall back.
- Ordinary implementation/test failures inside the contract may be fixed by its worker.
Falsified assumptions, conflicting evidence, unexpected instrument effects, or changed scope
require a recorded surprise and an Astra resolution before affected work continues.
- No worker subdelegation. The lead assigns parallelism; max two implementation slices after
the pilot. Independent workload preparation is scheduled against explicit resource leases.
## Durable state and context
Checkpoint in the canonical RE state root every **20 tool calls or 15 minutes**, whichever is
earlier, and before an experiment, compaction, handoff, or stop. Include model/session, exact
source identities, evidence paths, decisions versus observations, tests, blockers, and ONE exact
next action. Do not store state only in a chat summary or `/tmp`.
The runner uses bounded 40-step quanta. After checkpointing, stop and restart from the repository;
automatic compaction is a backstop, not proof that a checkpoint was written. On recovery read the
contract/checkpoint, verify worktree and resource identities, then continue. Missing state means
blocked, not permission to reconstruct progress from memory.
## Ownership
Use distinct engine and RE worktrees per lane, baseline-pinned. Canonical runtime state is shared
only through the campaign tools. One integrator writes current evidence pointers and projections.
Never stage someone else's changes. No automatic commit, push, pull, or reset. Commands requiring
these actions need explicit user authorization. Source edits use apply_patch.
VM, shared build-host, and Ghidra mutation require leases. A stale lease is not automatically free.
Record preconditions, side effects, cleanup and access verification for any lab operation.
Rollout bootstrap file-ownership exception: `campaign/rollout/architecture-decision.md` only.
## Evidence
No generic `verified` promotion. Separate understanding, implementation, original dependencies,
and validation scope. A count is insufficient without distinct states, branch exposures, and
positive execution evidence. Include all writes, container elements, allocations, IDs, events,
RNG draws, and runtime-only inputs. Original-assisted execution is not independent replacement.
Synthetic boundary tests and original-game differential tests are complementary. Missing required
inputs, zero execution, incomplete coverage, unexpected skips, stale binaries or unbound source
identity fail acceptance. One independent verifier must reproduce the package; integrated-tree
evidence is required for acceptance. Reports are measurements until those gates pass.
Never commit owner-supplied binaries/assets or secrets. Engine facts cross only documented
generated channels. Never paste disassembly/decompiler output into the engine repository.