Repository navigation
Paper lane: ext-20260928 receipt (broker-reconciled), committed reconciliation, dashboard paper row - #501
Conversation
|
Foundation lane acknowledgement ( Scope of this acknowledgement: only the two shared hot files this PR changes.
Not reviewed: the trading content under |
|
Residual closed. The coordinator re-ran the committed |
10cdd8c to
55abf9a
Compare
|
Rebased onto main under the hot-file protocol, now at head |
55abf9a to
3b41d36
Compare
…ized engine receipts and field provenance Sanitized receipt of the 2026-09-28 extended-hours mover series ext-20260928 on the second Alpaca paper account: 2 of 8 attempts passed, 10 orders filled, -8.91 USD, broker-reconciled flat. Mechanics-only; no gate row changes. Review fixes: - Reconciliation tool committed with its byte-identical stdout. The ledger path is now an argument and is read before any broker request. Re-run once, read-only, through the pointer form (exit 0). receipt.json records the tool and stdout sha256 and the pointer-form argv. - Sanitized copies of the seven engine receipts (broker_order_ref withheld), the freeze SHA256SUMS and the four series consoles, each scanned and hash-bound to its private source. - field_provenance names asserted, single-source, derived and literal fields. New asserts cover 23 of 23 fills at the reference quote, notional, per-leg P&L, and the ledger's realized P&L, gross loss and cash delta. - Corrected wording: retry timing, the mark-to-market peak, the narrowed checkout claim, the freeze's open trial count, the unfrozen series scripts (deviation), the journal exit-record query, and account 2's incentive-study designation, referred to the trading lane. - The grand-dashboard paper row keeps account 1's dated status. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3b41d36 to
40375e1
Compare
|
CI fix and rebase, now at head
The scanner file sits in two historical trials' frozen SHA256SUMS, as a record of that run; no test enforces those lists against HEAD. The hot-file protocol was reapplied on main. The |
…cord #501 (df41236) made rate_limit_evidence.py read a fixed DATED_TRIAL_FILES set, so that a trial committed later cannot move the 2026-09-24 totals. That set was built on main, where this branch's two mover trials were not yet merged. They also ran on 2026-09-24, and this branch's record already counts them (1693 trading and 16 data headers). After the merge, --check reported the record stale and test_rate_limit_evidence_is_current_and_matches_brief failed (705/14 built vs 1693/16 committed). - Append trials/mac-2026-09-24-mover-a/mover-paper.json and trials/mac-2026-09-24-mover-c/mover-paper.json to DATED_TRIAL_FILES. `--write` reproduces the committed record byte for byte, and `--check` passes. - test_a_later_trial_receipt_does_not_change_the_dated_evidence: expect the dated totals with the mover trials (16 and 1693). A later trial still does not move them. rate_limit_evidence.py is outside the brief's path list, so this change is a separate commit. To drop it, revert this commit and restore main's rate-limit-evidence-20260924.json, its order-throughput/README.md row and the test_order_throughput.py totals line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…the partial-fill precision fix (#205) * Mover mode's first paper run (Mac) and the partial-fill precision fix Trial mover-mac-20260924a ran the mover trial mode against Alpaca paper for the first time: five scanner-selected entries and three X2 exits filled, then GRML's exit filled in parts at 15.00 and 15.01. Alpaca's six-decimal cumulative average (15.000833) made the native adapter derive 15.009996 and stop with cumulative_fill_precision_requires_reconciliation. Forced recovery sold the rest; the account reconciled flat, P&L +0.87 USD, recover proof passed. The trial record and its offline verifier are under trials/mac-2026-09-24-mover-a/. native_adapter.execution_price takes each fill's own execution price from the trade-update event when its quantity equals the new shares and it agrees with the reported average; otherwise it rounds the derived price only when the average's reporting bound is under half a price unit. Anything else still stops the adapter. The new native tests reproduce the run's arithmetic and fail on the previous adapter. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Register the Mac mover trial record and re-registered sources in the evidence manifest Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Add the mover trial's decision stream (events.jsonl is ignored by *.jsonl; force-added like the stop drill's) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Count the mover trial's rate-limit headers in the order-throughput evidence (1149 trading, 14 data) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Re-register the order-throughput evidence in the evidence manifest Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Resolve fills on the notional grid in one shared module, for the adapter and the ledger An independent pre-merge review (Codex, a different model family) found the first version too narrow: rounding assumed one price per snapshot delta, the tolerance came from the normalized string's exponent, an exactly representable derived price was accepted without an ambiguity check, a contradictory execution event was replaced by a derived price, and the ledger's limit check still halted on rounded averages at the limit (1 x 100.00 then 2 x 100.01 at 100.01 derives 100.0100005). fills.resolve_execution now accepts an execution event only when its price is on the grid and agrees with the average (else fill_event_price_requires_reconciliation), and otherwise requires the new shares' notional to be the only whole number of ticks strictly within filled x 0.000001 of the report, dividing into an on-grid price per share. It computes in its own decimal context. The ledger's limit check halts only on a violation that is certain within fills.incremental_notional_bound. Each counterexample from the review is a test; the ledger test fails on main's safety.py. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Re-register the fill-resolution sources and tests in the evidence manifest Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Keep the ledger's limit check unchanged; track its rounded-average false halt separately The delta review of the previous commit found that loosening the ledger's limit check by the rounding bound lets a real one-tick violation pass on large 4-decimal orders (buy limit 0.9354, 99 x 0.9354 then 1 x 0.9355, reported 0.935401). A correct check needs grid resolution of both cumulative notionals, fractional-share handling and a chosen trade-off between false halts and missed violations, which belongs in its own change. safety.py is back to main; the guard test that a certain violation halts stays (it passes on main). The adapter's fill resolution (fills.py) is unchanged. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Re-register the reverted ledger sources in the evidence manifest Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Record mover trial C (Mac, 2026-09-24 14:52 ET): X1 blocked by stale quotes, needs_attention, not flat The second broker run of the mover mode (engine at d7a11b3, the first fill-fix version; no partial fills occurred): four entries filled at the quoted ask; GCTK was skipped. After a market-data websocket reconnect at 15:49, PFSA and SRZN quotes stayed stale, the transport's 3 s required-symbol freshness froze it, and X1 at 15:58 never sent. The hard flatten latched at 16:01:22 and GRML's sell was attempted but never reached Alpaca (client-ID 404). Recovery fails closed on that ambiguous intent ("owned intent absent from complete snapshot"), and after-hours quotes are too sparse for the freshness rule even at the 30 s maximum. Four paper positions remain open pending an operator decision. The verifier now separates integrity checks from reported outcomes, and the order-throughput evidence counts the new headers (1629 trading, 15 data). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Register mover trial C and the recounted order-throughput evidence in the evidence manifest Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> * Drop fills.py, its tests and the adapter hook; #221 books each execution #221 (8bd4ca7, merged 2026-09-25) books each trade_updates fill as its own execution and closes fill gaps from GET /v2/account/activities/FILL, so the adapter never derives a price from a cumulative average. That supersedes fills.py's inference (trading-lane proposal on PR #205, step 1). - Remove blueprints/us-equities/adaptive-paper/fills.py and tests/test_adaptive_paper_fills.py. - Restore native_adapter.py, tests/test_adaptive_paper_native.py and README-mover.md to the merge base, so the merge takes main's versions. The native test changes exercised fills.py's price recovery from rounded averages (dropped). The same-quantity average-correction test duplicates main's test_same_quantity_with_a_changed_average_still_freezes (dropped). - Keep tests/test_adaptive_paper_safety.py's test_a_certain_limit_violation_still_halts: main's ledger still books a cumulative-only observation from the averages, with a rounding tolerance, and this is the only test that a certain violation still halts there. - source-hashes.json: the base copy, re-pinned for the kept safety test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Count the 2026-09-24 mover trials' headers in the dated rate-limit record #501 (df41236) made rate_limit_evidence.py read a fixed DATED_TRIAL_FILES set, so that a trial committed later cannot move the 2026-09-24 totals. That set was built on main, where this branch's two mover trials were not yet merged. They also ran on 2026-09-24, and this branch's record already counts them (1693 trading and 16 data headers). After the merge, --check reported the record stale and test_rate_limit_evidence_is_current_and_matches_brief failed (705/14 built vs 1693/16 committed). - Append trials/mac-2026-09-24-mover-a/mover-paper.json and trials/mac-2026-09-24-mover-c/mover-paper.json to DATED_TRIAL_FILES. `--write` reproduces the committed record byte for byte, and `--check` passes. - test_a_later_trial_receipt_does_not_change_the_dated_evidence: expect the dated totals with the mover trials (16 and 1693). A later trial still does not move them. rate_limit_evidence.py is outside the brief's path list, so this change is a separate commit. To drop it, revert this commit and restore main's rate-limit-evidence-20260924.json, its order-throughput/README.md row and the test_order_throughput.py totals line. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * Re-register this branch's files in the evidence manifest (hot-file protocol) docs/lanes.md hot-file protocol, merge path. The merge took main's manifests/evidence.json unchanged. This commit registers, through scripts/host_receipts.register_file: - the changed files main's manifest already lists: adaptive-paper/source-hashes.json, order-throughput/rate_limit_evidence.py, tests/test_adaptive_paper_safety.py and tests/test_order_throughput.py; - the 37 new trial-record files this branch registered (trials/mac-2026-09-24-mover-a/ and trials/mac-2026-09-24-mover-c/). Not re-added: order-throughput/README.md and rate-limit-evidence-20260924.json. They are changed, not new, and main's manifest does not list them. fills.py and tests/test_adaptive_paper_fills.py are gone, and main's manifest never listed them. scripts/component_matrix.py --write and scripts/new_host_grand_list.py --write left their reports unchanged. scripts/validate.py passed (8669 hashed files), and scripts/evidence_manifest.py --check passed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: seathatflowsinourveins <234074349+seathatflowsinourveins@users.noreply.github.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Co-authored-by: Scout <scout@local>
Summary
This is roadmap move P-NOW-1: a sanitized receipt for the 2026-09-28 extended-hours mover series
ext-20260928on paper account 2, plus the grand-dashboard paper row.benchmark_quotes_not_ready: no SPY quote within 3 s after hours. None sent an order.$PAPER_ENV_FILE_2. 23/23 engine fills match broker fill activities on quantity, price and execution id; 10/10 orders agree; broker-derived P&L is −8.91; 0 positions and 0 open orders. The tool (reconcile_ext_series.py) and its stdout are committed with sha256, exit code and pointer-form argv.mover-paper-2..8.json, only broker order refs withheld), the freezefrozen-3058b237.SHA256SUMS, the run consoles, and a per-field provenance map (asserted, single-source, derived, literal).3058b237. The 60 frozen-hash files match it, as does every hashed adaptive-paper source.Limitations
incentive-monitor/forward-protocol-v1.json:63) anddocs/secret-storage.mddesignate account 2 as the isolated incentive-study account. This mover series traded on it, with its own engine state root. Referred to the forward-protocol owner, the trading lane.tool_sha256equals the committed tool, but it was recorded at commit time. The tool was edited during the builder session around its 07:29Z run, so run-time byte identity is asserted by the builder rather than independently re-proven. The coordinator's read-only re-run was blocked bysecret_path_guard(environment_dumpfalse positive, reported to the guard owner). The committed stdout's totals are independently consistent with the engine's receipts.Review
evidence-reviewerreturned changes-needed (2 medium, 6 low, 5 gaps), all repaired in this commit.validate.pypassed,evidence_manifest --checkpassed, receipt sha256s match their files, gitleaks is clean, and the private-detail scan found 0 hits (fingerprints, host paths, lock names).Lane
lane:shared, because the change alters a shared hot file's text (thestate.jsonpaper row). The author holds the trading lane, and the foundation lane is asked for an acknowledgement. The hot-file protocol was applied on origin/main703b2bd7.SOTA sources
transaction_time, execution ids) and orders: https://docs.alpaca.markets/reference/getaccountactivities and https://docs.alpaca.markets/reference/getallorders. alpaca-py 0.44.0, as pinned incatalogs/us-equities/runtime-target.json.blueprints/us-equities/adaptive-paper/trials/.🤖 Generated with Claude Code