| _runtime = None, exec_broker = 'sim'
|
|
|
| @pytest.mark.parametrize("exec_broker", [
|
| "sim",
|
| pytest.param("paper", marks=pytest.mark.skipif(
|
| os.getenv(PAPER_E2E_ENV, "").strip() not in ("1", "true", "yes"),
|
| reason=(f"paper drill is opt-in only: set {PAPER_E2E_ENV}=1. settings.toml "
|
| "§'ONE TEST TO WATCH' — a paper arm that runs by default would put REAL Alpaca "
|
| "order submission on the Crucible merge path the moment a farm box gains creds."))),
|
| ])
|
| def test_e2e_day_chain_holds_for_both_exec_brokers(_runtime, exec_broker):
|
| """SAME DAY, SAME CHAIN, SHADOW TAP ON OR OFF. Both arms fill on the deterministic SimBroker —
|
| since 2026-07-29 ``paper`` is not a different terminal broker, it is the SAME primary with the
|
| REAL Alpaca paper broker (``<nick>_paper``) mirrored as a write-only shadow. It still runs only
|
| behind the env opt-in above: the skip guard is the mechanism that keeps real order submission
|
| off the merge path, not the incidental absence of credentials on a farm box.
|
|
|
| The invariants asserted are the ones that hold for BOTH: the route routed, the wake was
|
| delivered by the port, and the run reports whether the tap was on. Fill-level assertions stay in
|
| the sim-only test above; what the SHADOW reported is pinned in
|
| tests/services/test_router_parity_execute_sim.py + tests/brokers/test_shadow_tee_broker.py."""
|
| out = _run_day(exec_broker=exec_broker)
|
| assert out["summary"]["exec_broker"] == exec_broker
|
| > assert out["summary"]["bus_wakes_routed"] == len(ACCOUNTS)
|
| E AssertionError: assert 0 == 1
|
| E + where 1 = len(('yuchao',))
|
|
|
| tests/services/test_signal_delivery_e2e_day.py:367: AssertionError
|