← Protocols
protocols/A2-guard-vs-incumbent.json · v1
A2 · Rout guard vs a partner's current guard (requires the partner)
On matched launches, Rout's guard exits with a smaller gap and less external flow entered than the partner's current guard.
draft
10 values must be agreed before this can run
$.parameters.bootstrap_resamples · $.parameters.landing_window_slots · $.parameters.max_abs_clock_offset_ns · $.parameters.target_n_per_arm · $.parameters.budget_lamports_max · $.parameters.tip_lamports_by_arm · $.parameters.thresholds_lamports · $.parameters.cluster_slots · $.acceptance.min_landing_difference · $.acceptance.max_cost_ratio
Check with
python3 -m rbench.prereg check protocols/A2-guard-vs-incumbent.json.Design
- Why it matters
- The direct decision input for a partner integrating Rout behind its own launch guard.
- Unit
- One partner launch with its guard enabled.
- Primary metric
landed_within_window: As A1, anchor = threshold_cross slot recomputed from chain with the same rules for both arms.- Denominator
- Every enrolled launch.
- Randomization
- One guard per launch, assigned by a seeded CSPRNG the partner can audit. Never both guards on one launch (two exits on one curve interfere). (per_launch_sha256_v1)
- Stopping rule
- Fixed n agreed with the partner; single analysis.
Arms
Secondary metrics
Exclusions, decided before the run
None. Every intent stays in the denominator.
Acceptance
What each tier hides
Signatures, slots and ids are never redacted: they are how anyone re-checks a result. A run can't be published wider than the tier it was registered at.
- Partner-confidential removes
- host_id, nonce_account, stratum
- Public also removes
- mint, size_raw, quote, endpoint_region, refusal_code, send_error
Waits on
A1PARTNER-ENROLLFINGERPRINT-REVIEWDATA-ISOLATION-AGREEMENT
The file
protocols/A2-guard-vs-incumbent.json
{
"protocol_id": "A2-guard-vs-incumbent",
"version": 1,
"experiment": "A2",
"status": "draft",
"title": "A2 · Rout guard vs a partner's current guard (requires the partner)",
"hypothesis": "On matched launches, Rout's guard exits with a smaller gap and less external flow entered than the partner's current guard.",
"customer_value": "The direct decision input for a partner integrating Rout behind its own launch guard.",
"unit": "One partner launch with its guard enabled.",
"arms": [
{
"arm_id": "rout_guard",
"description": "Rout executes the guard response."
},
{
"arm_id": "incumbent_guard",
"description": "The partner's existing guard executes it."
}
],
"primary_metric": {
"id": "landed_within_window",
"definition": "As A1, anchor = threshold_cross slot recomputed from chain with the same rules for both arms."
},
"secondary_metrics": [
{
"id": "entered_after_lamports",
"definition": "As A1."
},
{
"id": "spend_per_landed",
"definition": "As E0."
}
],
"parameters": {
"confidence": 0.95,
"quantiles": [
0.5,
0.9,
0.95,
0.99
],
"bootstrap_resamples": null,
"landing_window_slots": null,
"commitment": "finalized",
"max_abs_clock_offset_ns": null,
"target_n_per_arm": null,
"budget_lamports_max": null,
"tip_lamports_by_arm": null,
"thresholds_lamports": null,
"comparisons": [
[
"rout_guard",
"incumbent_guard"
]
],
"strata": [
"congestion_tercile",
"threshold"
],
"cluster_slots": null
},
"randomization": {
"unit": "launch",
"method_id": "per_launch_sha256_v1",
"method": "One guard per launch, assigned by a seeded CSPRNG the partner can audit. Never both guards on one launch (two exits on one curve interfere).",
"strata": [
"threshold"
]
},
"denominator": "Every enrolled launch.",
"exclusions": [],
"stopping_rule": "Fixed n agreed with the partner; single analysis.",
"acceptance": {
"min_landing_difference": null,
"max_cost_ratio": null,
"max_new_fingerprint_signals": 0
},
"redact_by_tier": {
"partner_confidential": [
"host_id",
"nonce_account",
"stratum"
],
"public": [
"mint",
"size_raw",
"quote",
"endpoint_region",
"refusal_code",
"send_error"
]
},
"requires": [
"A1",
"PARTNER-ENROLL",
"FINGERPRINT-REVIEW",
"DATA-ISOLATION-AGREEMENT"
]
}