You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 07c6363
Browse filesBrowse the repository at this point in the historyBrowse files
cr150 lane proof (squash of the lane branch on the freeze head 2754739)
Lab proof commit, never pushed. Its tree equals the lane head; its single parent is the freeze head 2754739 (core/cr150-p00-contracts: batch A #457 + CANARY-WIRE + SyntaxError fix), as the GitHub squash will write it.
CR-150 lane: see the lane REPORT.md for design, tests and wiring.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
| Feed validation: bar values/order, close length/bounds, column length; configure and consumer entry points |`feed.bars``src/native_run_spec.cpp:259-290`; `instrument_feed_shapes``src/native_run_spec.cpp:743`; `validate_native_instrument_feeds``src/native_run_spec.cpp:1019-1022`; `validate_native_timeframe_subscriptions``src/native_execution_consumer.cpp:9609-9612`; `validate_native_timeframe_subscriptions``src/native_execution_consumer.cpp:9634-9636`| 361-363 |
212
212
| Adapter projection validation: use the context normalizer; host stages after lending and before projection, using a context built from its store |`normalize_projected_spec``src/source/pine_adapter.cpp:3006-3012`| 361-363; V1/V2 change 5 |
| Staged feed counts in host state and its hash |`installed_symbol_feed``src/source/pine_strategy_host.cpp:234-244`; `staged_.instrument_feeds``src/source/pine_state_hash.cpp:294-301`| 366-367 |
215
215
| Refresh of symbol-data digest and host hash fold |`refresh_symbol_data_digest``src/source/pine_security_eval.cpp:1553-1566`; `symbol_data_digest_``src/source/pine_state_hash.cpp:1191-1197`| 367-368 |
| RP1 | Per-lot MFE / MAE, kernel-sampled or host-owned | **yes** — sampler `apply_excursion` native_execution_consumer.cpp:3404, closing-row fold `max_runup` engine_orders.cpp:158-172; `owns_lot_excursions` native_host.hpp:1021-1025 | K+A | — | F:H1 O:I1 O:I2 S:X1 | **Disagree:** S partial + its P8 excursion-mode enum (single-source, not adopted, Appendix A.9). **Lowered by R5 lane H-THIN:** the Pine host keeps the kernel's `owns_lot_excursions()` default, so the sampler is the Pine excursion; the host model, its entry-bar masks and its caches are deleted, and the source layer's fold no longer carries them. **Measured against TradingView first (R5 lane H-MEASURE, `tests/test_e19_excursion_tape.cpp`):** the host-owned model was `ab9714be`'s, not TradingView's — where it and the kernel sampler differ the kernel's number is TradingView's (entry-bar over-mask, exit-bar over-fold after an at-open exit, a `calc_on_order_fills` scratch TradingView reports as 0 / 0); both miss a bar's open print ahead of a same-bar stop fill. On the corpus the two models differ on 341 of 431 390 trades, and of the 326 of those a TradingView export identifies, the kernel's number is TradingView's on 315 and the host's on none. The lowering moved the cells of 335 trades in 19 corpus probes: 324 now equal TradingView's, 11 moved closer, none farther; the all-in residual's own entry-bar call is the tape of the private fixture set `e19_allin_trim`. |
| RP3 | Equity curve |**no** — `update_equity_extremes` engine.hpp:1363 / `record_equity_point` engine.hpp:1381 are protected and were called only by the adapter **Closed:**`NativeReportPolicy::KernelRecorded` native_run_spec.hpp:63 has the consumer fold the extremes and append one point per script calculation, labelled with the script interval's open; `KernelRecordedAtHostMarks` records the same series at the host's own marks (`tests/test_native_report_truth.cpp`). | K | L2 | F:H3 O:I4 S:X2| S's "partial" folds RP2 in |
161
-
| RP4 | Equity metrics (drawdown, run-up, Sharpe / Sortino, CAGR, time in market) |**no** — `compute_equity_stats` exits early on an empty curve `sha256:b1bf9ddebf761d446c05e46a934bd4476945cb94012f226b7b68001e87e1d52c` engine_metrics.cpp:304-458; `fill_metrics_section` engine_report.cpp:192-206**Closed:** with a recorded curve the drawdown / run-up walk is finite and every equity metric is computed over a real series; `report_open_position_at_end` adds the still-open position as a mark-to-market row (`tests/test_native_report_truth.cpp`). | K | L2 | F:H3 O:I5| silent degenerate metrics, no error (O) |
161
+
| RP4 | Equity metrics (drawdown, run-up, Sharpe / Sortino, CAGR, time in market) |**no** — `compute_equity_stats` exits early on an empty curve `sha256:b1bf9ddebf761d446c05e46a934bd4476945cb94012f226b7b68001e87e1d52c` engine_metrics.cpp:304-458; `fill_metrics_section` engine_report.cpp:192-210**Closed:** with a recorded curve the drawdown / run-up walk is finite and every equity metric is computed over a real series; `report_open_position_at_end` adds the still-open position as a mark-to-market row (`tests/test_native_report_truth.cpp`). | K | L2 | F:H3 O:I5| silent degenerate metrics, no error (O) |
162
162
| RP5 | Range-end row for a position still open at the end (`scheduler_record_range_end` pine_strategy_host.cpp:2003) | **yes, shared** — one generic producer `NativeExecutionConsumer::append_open_position_report_rows`, called by the kernel's run-end `record_open_position_report_rows` (`KernelRecorded` + `report_open_position_at_end`) and by the adapter at TradingView's mark; `report_trade_count()` engine.hpp:1832 includes the rows | K + A report shape | L2, Q6 | F:H4 O:I6 S:X2 | **Disagree:** S says kernel range-end rows exist (storage only). The ROWS are now the kernel's (§3.7 part 1); TV report shape — the equity re-mark, the extreme re-fold, the same-bar re-sort, three marks — stays A, measured in §3.7 part 2. The short-seed swaps (`project_short_seed_report_rows` pine_strategy_host.cpp:1465) stay A as well: a projection of two rows' `entry_incarnation` onto `ab9714be`'s numbering, which TradingView does not export; measured against the kernel's own lot identities by `tests/test_short_seed_report_swap.cpp` (R5 lane H-MEASURE), and pinned by `test_native_oracle_short_seed_percent_full_l2`, whose two incarnation checks fail when the swap is skipped. The swap runs only when a later close of the seed id closes a remnant; a flat collision keeps the kernel's numbering. |
163
163
| RP6 | Per-trade accessors |**partial** — `get_trade` is public; the `closed_trade_*` family is protected engine.hpp:1392 **Closed:**`closed_trade_count()` / `closed_trade(i)` and `report_trade_count()` / `get_report_trade(i)` are public, and `closed_trade_close_cause(i)` engine.hpp:1850 answers the typed `execution::CloseCause` the closer recorded (`tests/test_native_report_truth.cpp`). | K | L2 | F:H6| (single-source) |
164
164
| RP7 | Live order-action stream (runner ledger / webhook) |**yes** — `stream_observe_actions_` engine_execution.cpp:1390, enabled `stream_observe_actions_` native_execution_consumer.cpp:10739, C ABI `strategy_stream_order_actions_len` c_abi.cpp:738-757 | K | — | F:H5| (single-source) |
0 commit comments