# Three-Cluster Interference

This anonymous P0 case approximates three concurrent workload roles. It is not
a replay of a customer workload. The native TiPoC lifecycle remains `init`,
`prepare`, `run`, and `cleanup`.

Roles are `victim-read` (canonical TPC-E), `victim-mixed` (exchange matching
with 20/10 write settings), and `aggressor-scan` (exchange matching plus one
noise Operation). Set `AGGRESSOR_OPERATION=big-query` for report scans or
`AGGRESSOR_OPERATION=recent-trade-status` for the ordered-filter-limit case.
The two Operations are mutually exclusive and neither victim template declares
an Operation. The targets must be distinct and in the intended shared resource
domain.

`env.example` is the only case binding list. Copy it outside the repository,
set `ENV_FILE`, and do not commit credentials or endpoints.

## Workflow

1. Build TiPoC once and provide `TIPOC_BIN` and `TIPOC_BUILD_RECEIPT`.
2. Run `./run.sh init <experiment-id> [all|role]`.
3. Prepare each generated attempt independently using the native [deployment
   SOP](../../docs/poc-sop/deployment-poc-sop.md). This case never prepares or
   cleans up a target.
4. Run `./run.sh run <experiment-id>` after all three native preparation
   receipts pass. It performs native `run preflight` checks and starts the
   three native runs together.
5. Use `./rerun.sh <experiment-id> --round-id <id> ...` for a continuation
   round. It delegates each new try to
   [`run-again.sh`](../../scripts/rerun/run-again.sh).

For native lifecycle and receipts see [README](../../README.md); for workload
profiles see [scripts/env](../../scripts/env/README.md); for the canonical Big
Query operation, report IDs, runtime overrides, and evidence see the
[Big Query SOP](../../docs/big-query-interference-sop.md).
For recent-trade-status, `run.sh` waits for the operation coordinator and native
warmup, then drives one typed sequence: baseline 180 seconds, `start`, bad 180
seconds, `add-feature-index`, good 180 seconds, `drop-feature-index`, bad repeat
180 seconds, and `stop`. Operation warmup and action transitions are excluded by
the runtime measurement receipt. The three durations can be overridden through
the integer `RECENT_*_SECONDS` bindings in `env.example`; formal acceptance
keeps all three at 180 seconds. The case does not accept SQL through its scripts.
The recent aggressor template is fixed at 50G and 1800 seconds. That runtime
budget includes native warmup, four measurement windows, both five-minute DDL
budgets, Operation warmups, stop/drain, and native cooldown; a command timeout
fails the sequence closed.

Complete [RESULT_TEMPLATE.md](RESULT_TEMPLATE.md) from native receipts,
operation measurement/counter receipts, and external metrics; missing evidence
is `BLOCKED`, not `PASS`.
