sots-re/guides/multi-agent-workflow.md

101 lines
6 KiB
Markdown

# Multi-agent operating architecture
## Product and milestone
Reconstruct a behavior-equivalent engine consuming owner-supplied assets. The next product
milestone is standalone replay given a captured command stream and complete declared runtime
inputs. The first workflow pilot is the complete research write set. A passing host build is a
component baseline, not a playable engine or independent replacement.
## Source of truth
`campaign/contracts/` holds versioned tasks, `campaign/runtime/` holds checkpoints, sessions,
leases and surprises, and evidence packages identify inputs, source and executable artifacts.
`campaign/current.json` selects published evidence by path and digest. Board/dashboard are
generated projections, never alternate writable authorities. Exact tool CLI/schema is documented
in `campaign/README.md`. Historical findings retain their original experiment scope; they are
not promoted by copying an old status into a new contract.
## Model authority
| Responsibility | Model |
|---|---|
| Normal planning, architecture and integration loop | GPT-5.6 Sol |
| Bounded RE analysis, implementation and independent verification | GPT-5.6 Sol |
| Routine lab/workload operations | GPT-5.6 Sol |
| Problem and surprise resolution | GPT-6 Astra |
| Context compaction | GPT-5.5 |
Exact provider IDs are in `campaign/models.json`. The lead escalates to Astra when a falsified
assumption, conflict, instrument effect, or scope change blocks the loop. No fallback is automatic. Model names in editable JSON are
provenance, not authentication: launcher events and independent review support the record.
Permissions reduce accidental role drift; unrestricted local shell access is not a sandbox.
## Behavioral slice
The lead specifies a bounded input domain, full observable write set, dependencies, acceptance
workloads and stop conditions. The analyst recovers behavior; the verifier specifies discriminating
tests before implementation; the implementer changes engine/adapters; the lab operator captures
controls; the verifier reproduces; the integrator tests the combined source snapshot.
Include transitive effects: allocations, IDs, container ELEMENTS, event text/records, RNG and
nonserialized state. An address/function name is not a sufficient replacement boundary. If a
neighbor function supplies required effects, extend the approved contract or expose it as an
original dependency. Do not call the original and label the result independent.
Lifecycle is `proposed → ready → implementing → verification → integration → accepted`, with
blocked/revision states. Lifecycle is distinct from evidence strength. Acceptance is scoped to
the manifest's exact procedure and workloads, never universal correctness.
## Independence
Verifier and implementer are different executions. Verification starts with the contract, raw
evidence and reproduction recipe, not just the author's conclusion. Require one meaningful
challenge: held-out state, boundary, negative control, ablation, or independent state accounting.
Both synthetic tests and original-game experiments matter. Repeat-call volume cannot replace
branch and distinct-state coverage. Null effects and zero executions must be distinguishable.
## Sessions and recovery
At most two implementation slices after a single-slice pilot. No nested worker delegation.
Paired worktrees isolate source changes; unique build directories isolate artifacts. Canonical
RE runtime state remains explicit even when a worker runs in `/tmp` worktrees.
Checkpoint every 20 calls or 15min; also before experiments, compaction, handoff and stopping.
Record source identities, exact changed paths, commands/results, artifacts and hashes, open
surprises, held leases, requested/observed model, session identity and exact next action. Avoid
large prose histories: raw logs belong in evidence; the checkpoint is a bounded resumption record.
The launcher caps a quantum at 40 agent steps. A new quantum starts fresh using contract and
checkpoint. Auto-compaction with an ample reserved window and four retained turns is enabled.
This is a best-effort context backstop; regular durable checkpoints and fresh quanta provide the
actual recovery discipline. Never claim a model compacted merely because a setting exists.
## Surprises
On a falsified prediction, contradictory claim, unexplained regression, instrument interference,
or newly necessary dependency: record the observation and evidence; block affected work. Astra
first checks the instrument and source identity, then marks claims surviving/qualified/overturned,
chooses a discriminating experiment, and records the revised plan. Unaffected contracted work
may continue. Updating a paragraph without invalidating affected acceptance is insufficient.
## Lab ownership
Acquire a canonical resource lease before VM, build-host or Ghidra mutation. An expired timestamp
does not authorize stealing a lease. The lead reconciles stale ownership with actual processes.
Use one guest at a time for maintenance, capture before/after inventory, preserve access and
runtime dependencies, and verify unattended console login plus authenticated administration.
Reboots require a free guest and a recorded recovery path. Runtime/Ghidra changes are experiments
with provenance, not undocumented preparatory steps.
## Gate and publication
Run the local gate with explicit engine, corpus, new output directory and profile. It snapshots
source, uses fresh builds, records manifests and runs the expected test inventory once. Host
profile allows a named list of unavailable asset/trace tests and publishes them as limitations.
Full acceptance requires the full profile and the slice-specific original oracle; no blanket
waiver converts a host pass to fidelity. Standalone measurement may diverge; acceptance may not.
The integrator alone selects current results after verifying their hashes and source binding.
No percentages of LOC, mapped rows or closed leaves purport to measure engine completeness.
Run failure and missing evidence are visible states. Old results remain historical, not current.