Skip to content

Alpaca paper lane end to end on macOS (second physical machine): SIP trial passed, STOP drill, native-fault C01/C02 - #188

Merged
seathatflowsinourveins merged 1 commit into
mainfrom
claude/mac-paper-e2e-20260924
Sep 24, 2026
Merged

seathatflowsinourveins merged 1 commit into
mainfrom
claude/mac-paper-e2e-20260924

Conversation

@seathatflowsinourveins

Copy link
Copy Markdown
Owner

This proves the Alpaca paper lane end to end on the second physical machine, macos-m5pro-20260924 (Apple M5 Pro, macOS 26.5.1 build 25F80, arm64). It uses the existing adaptive engine (NautilusTrader 2.0.0rc5 LiveNode with alpaca-py 0.44.0), run from a read-only git archive of main 6f7a77c. Paper only: every request went to paper-api.alpaca.markets, with 1x and one-share orders.

Results (2026-09-24, regular session)

Step Time (UTC) Outcome
Offline gates before broker use 732 adaptive-paper tests OK (1 skip by design), 17 native-faults tests OK
runner.py preflight 14:22:54 ready: paper endpoint, account ACTIVE, 0 open orders, 0 positions, 24 of 24 SIP quotes
Native-faults harness 14:23:10 native_faults_incomplete (the documented outcome). C01 and C02 native_paper passed, C05 engine short-circuit, C04 unobserved. 1 POST, cleanup flat
Trial a, scheduled_trial.sh with config-sip.json (same bytes as trial g) 14:23:33-14:28:45 passed, rc 0, 300.4 s. 33 submits, 3 cancels (3 cancel-replaces), 30 native fills in 15 one-share round trips. Reconciled flat (cash and positions match, 0 open orders). Realized −1.51 USD; the round trips, the ledger and the broker cash change all agree
Trial b, STOP drill 14:30:07-14:31:03 STOP file created 12.6 ms after the first buy intent. The working entry (broker new) was canceled 115 ms after STOP, 0 filled. 0 intents or submits after STOP; the run left its loop at 51.6 s of 300, flat and reconciled
runner.py recover 14:31:27 passed, flat, 0 unresolved, 0 buys, cancels or exits needed
STOP release ~14:32 Archived with a release record, only after both conditions held (drill flat and reconciled; recover passed flat)

The request rate peaked at 10 submits and 24 trading requests in any 60 s window, against the 180/200 ceilings.

Files

  • blueprints/us-equities/adaptive-paper/trials/mac-2026-09-24-a-passed/: runner outputs byte-for-byte (paper-output.json, preflight.json, ingest and gate receipts, scheduled-trial.log), frozen-6f7a77c.SHA256SUMS (526 files), and ledger-readback.json from ledger_readback.py (a read-only mode=ro read of the durable ledger). Also verify_artifacts.py (offline re-check of all three directories and the frozen hashes) and macos_timeout.py (macOS has no GNU timeout).
  • .../mac-2026-09-24-b-stop-drill/: drill run outputs, the live events.jsonl (force-added past the *.jsonl ignore, like earlier jsonl evidence), stop_drill.py and its trigger record, recover-output.json and stop-release.json.
  • .../mac-2026-09-24-native-faults/receipt.json: the Mac run. native-faults/ and its gate receipt path are untouched.
  • evidence/hosts/macos-m5pro-20260924/...--alpaca-py--use--20260924.json: recorded with scripts/host_receipts.py record, native_proven, --second-physical-machine. It holds a live read-only preflight plus the offline suites and the artifact verification, all exit 0.
  • manifests/evidence.json: the 25 new files registered and sorted.
  • Coupled update: order-throughput/rate_limit_evidence.py counts x-ratelimit headers in every trial JSON. It was rebuilt with --write (trading 419→641, data 9→13), and the pinned totals in tests/test_order_throughput.py and its README row were updated to match. Heads-up: Native paper capacity evidence for the order-throughput harness (180 actions/min passed) + --stream-timeout #184 edits the lines next to that README row, so whichever PR merges second needs a trivial rebase.

Redaction follows the existing receipts. There are no account ids, fingerprints, balances, equity or buying power. No broker order UUIDs, host paths or NautilusTrader logs are committed.

Runtime

CPython 3.12.14 (uv 0.12.18), in the worktree's gitignored .runtime/. The engine environment came from the #176 lock (d756583b…, 20 packages: nautilus-trader 2.0.0rc5, alpaca-py 0.44.0, numpy 2.5.3, pandas 3.0.6). The gate environment came from data/requirements.lock (21 packages). Both were installed with uv pip sync --require-hashes, each matched its lock exactly, and uv pip check passed.

Not covered / blocked

  • C03 does not exist in plan.json. Native evidence for C04 and C05 is blocked on Close the Alpaca native-fault engine gaps (C05 cancel-again sends DELETE; C04 documented definitive refusal) #169 (not duplicated here), and the native-fault-behaviour gate stays not_established.
  • The drill did not exercise an exit under STOP (the entry never filled), a restart while STOP is present, or a failed cancel.
  • One 5-minute window at 1x is not evidence of strategy edge or throughput. Alpaca paper fills are simulated. The paper account is shared across hosts, and the engine lock is host-local.
  • Runs happened outside Claude Code's sandbox, which denies the credential store, broker network access and loopback bind.

Checks run

scripts/validate.py, host_receipts.py validate, evidence_manifest.py --check, component_matrix.py --check, new_host_grand_list.py --check, build_ecosystem.py --check, validate_catalogs.py, validate_foundation.py, landscape.py, validate_convergence.py --all-recorded, build_verdicts.py --check and rate_limit_evidence.py --check all exit 0.

The full python3 -m unittest (outside the sandbox, macOS) ran 3939 tests with 1 failure and 510 skips. The failure is test_adoption_bootstrap_macos...test_install_path_with_shell_syntax_is_data_in_the_wrapper, the macOS-only case #178 addresses; nothing in this change touches it.

🤖 Generated with Claude Code

@seathatflowsinourveins seathatflowsinourveins added the lane:trading Trading lane: sim, paper and live north star label Sep 24, 2026
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

…ine)

On macos-m5pro-20260924, from a read-only git archive of main 6f7a77c, in
the hash-locked CPython 3.12.14 runtime built from the #176 lock:

- Trial a (config-sip.json, 300 s, 1x, SIP, one-share orders) passed. It
  made 33 submits and 3 cancel-replaces, and got 30 native fills in 15 round
  trips. It reconciled flat, with realized P&L of -1.51 USD.
- STOP drill: the working entry was canceled 115 ms after STOP, with 0
  filled, and no order followed. recover passed flat, and STOP was archived
  with a release record.
- Native-faults harness: C01 and C02 passed with native_paper evidence. C04
  and C05 are still blocked on #169.
- Host receipt alpaca-py/use (native_proven, second physical machine).
- Rebuilt the rate-limit evidence for the new trial headers (trading 419 to
  641, data 9 to 13) and updated the pinned test totals and README row to
  match.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:trading Trading lane: sim, paper and live north star

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant