From c45cf5a4d0e67a2ac098d9066977e1fa21c408a9 Mon Sep 17 00:00:00 2001 From: luisleo526 Date: Thu, 10 Sep 2026 13:03:25 +0800 Subject: [PATCH] refactor: move retained-parent priority into Pine compatibility --- CMakeLists.txt | 1 + README.md | 8 +- docs/pages/abi-stability.md | 18 +-- docs/pine-intraday-cap-boundary.md | 19 ++- docs/pine-order-priority-boundary.md | 76 +++++++++ .../pineforge/compat/pine/order_priority.hpp | 45 ++++++ include/pineforge/engine.hpp | 35 +++-- include/pineforge/order_priority.hpp | 23 +++ scripts/broker_state_hash_waivers.txt | 1 - scripts/check_broker_state_hash_coverage.py | 14 +- scripts/check_script_cpp_abi.py | 32 +++- scripts/test_broker_state_hash_coverage.py | 22 +-- src/compat/pine/order_priority.cpp | 93 +++++++++++ src/engine_fills.cpp | 73 ++------- src/engine_internal.hpp | 99 ------------ src/engine_state_hash.cpp | 10 +- src/engine_stream.cpp | 2 +- tests/CMakeLists.txt | 5 + .../script_cpp_abi/basef864/README.md | 1 + .../script_cpp_abi/basef864/headers.json.gz | Bin 0 -> 139819 bytes .../script_cpp_abi/basef864/manifest.json | 61 ++++++++ tests/test_pending_order_identity.cpp | 14 +- tests/test_prearmed_exit_path_cursor.cpp | 147 ++++++++++++++++-- 23 files changed, 562 insertions(+), 237 deletions(-) create mode 100644 docs/pine-order-priority-boundary.md create mode 100644 include/pineforge/compat/pine/order_priority.hpp create mode 100644 include/pineforge/order_priority.hpp create mode 100644 src/compat/pine/order_priority.cpp create mode 100644 tests/fixtures/script_cpp_abi/basef864/README.md create mode 100644 tests/fixtures/script_cpp_abi/basef864/headers.json.gz create mode 100644 tests/fixtures/script_cpp_abi/basef864/manifest.json diff --git a/CMakeLists.txt b/CMakeLists.txt index db856319..6de6d2f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,7 @@ endif() # === pineforge library ================================================= add_library(pineforge STATIC src/c_abi.cpp + src/compat/pine/order_priority.cpp src/engine_aux_security.cpp src/engine_fills.cpp src/engine_lower_tf.cpp diff --git a/README.md b/README.md index 069a3da8..367cc94e 100644 --- a/README.md +++ b/README.md @@ -125,6 +125,8 @@ live behavior or real broker fills. ## Validation scoreboard +**Native policy refactoring · 2026-09-10:** engine [#234](https://github.com/pineforge-4pass/pineforge-engine/pull/234) and codegen [#127](https://github.com/pineforge-4pass/pineforge-codegen-oss/pull/127) preserve **4,182 excellent / 8 strong**. Both the old-engine/new-codegen and new-engine/new-codegen Cloud runs retain all **4,190 raw trade CSVs, counts and full grades** unchanged. The target bands have zero entrants and zero leavers: **net 0, no individual regression**. These changes remove an unused source flag and give Pine cap behavior explicit ownership; they do not claim complete engine independence. The formal gates remain zero-improvement FAILs and the official baseline remains unchanged. + **Round 39 · 2026-09-09:** **4,182 excellent / 8 strong / zero moderate** across all **4,190 scored probes**. This round adds one excellent result, with zero regressions on any canonical metric. | Board | Test set | Result | TradingView trades evaluated | @@ -169,7 +171,7 @@ Every script is exported from TradingView as-is (its own inputs, its own default - **strong** — ≥ 95% matched, trade count within 6%, entries within 0.1% and exits within 0.5% at p90; - **moderate / weak** — ≥ 75% coverage, or less. -A grade is never one lucky run. Every candidate build is measured over the whole population on a reproducible cloud pipeline, each graded snapshot is published by content hash, and a build ships only through a deterministic gate: **no regression on any metric of any ETH 15m probe**, and, pooled over the other lanes, strictly more probes entering the excellent and excellent+strong bands than leaving them. Merges are fast-forwarded, so the commit that was gated is the commit on `main`. +Published parity results use a fixed population and reproducible Cloud Run measurements. The formal gate requires **no hard-surface regression** and strictly positive pooled movement across the target excellent and excellent+strong bands. A documented native-correctness exception permits exactly zero target-band movement with no individual regression, after full comparison, independent review and CI; its actual FAIL remains recorded and baseline promotion is deferred. Negative movement is outside this exception. Baseline promotion requires a recorded PASS and an exact-head merge with green CI. ### What the closed test taught the engine @@ -206,6 +208,10 @@ PyneCore's 15 non-excellent strategies involve `strategy.exit(stop=…, limit= --- +Explicit Pine frontends must use the [execution attachment and regeneration +contract](docs/pine-order-priority-boundary.md) for retained-parent priority. +Bare native engines and cap-only generated constructors do not opt into it. + ## What ships here - `libpineforge.a` — the static runtime: order matching and fills, sizing and margin, the bar magnifier, 66 indicator classes, `request.security()`, time and session math. diff --git a/docs/pages/abi-stability.md b/docs/pages/abi-stability.md index 7cca965b..7b614659 100644 --- a/docs/pages/abi-stability.md +++ b/docs/pages/abi-stability.md @@ -112,12 +112,12 @@ notice: - The shape of internal log lines (use them for humans, not parsers). Rebuild generated and native C++ objects against matching engine headers and -runtime. The cap compatibility extraction changes the v2 object layout and -therefore uses the internal `engine_script_run_v3` inline namespace. An object +runtime. The cap and priority extractions change the v2/v3 object layouts and +therefore use the internal `engine_script_run_v4` inline namespace. An object built from base `38dc73e` headers references v2 out-of-line members and must -fail to link to this v3 runtime. The source-pairing check compiles frozen exact +fail to link to this v4 runtime. The source-pairing check compiles frozen exact base headers separately before testing the link, so a missing include or -compile failure cannot masquerade as mismatch protection. Both generated-style +compile failure cannot masquerade as mismatch protection. Frozen f864/v3 headers are also rejected by this v4 runtime. Both generated-style and native-style current callers must still link. `PINEFORGE_HAS_SCRIPT_RUN_PREPARE_V1` remains 1: it describes the existing hook @@ -129,13 +129,13 @@ retrofit an old module. Public C function signatures, POD layouts, Namespace versioning protects referenced internal C++ symbols; it does not validate an erased `pf_strategy_t` handle. Use a handle only with functions from its creating strategy module. A fully self-contained old module can still use -its own matching runtime; this check does not turn it into a v3 module. +its own matching runtime; this check does not turn it into a v4 module. -The cap boundary also advances the broker fingerprint domain to -`pineforge-broker-state/v3` and stream fingerprint version to 3. These identify -changed serialized state, including the Pine configuration/quota/cause and +The cap and priority boundaries advance the broker fingerprint domain to +`pineforge-broker-state/v4` and stream fingerprint version to 4. These identify +changed serialized state, including Pine priority attachment/configuration, cap quota/cause and separate generic close request. The Pine component schema remains 1; it is -independent of the aggregate fingerprint version. Prior v2 fingerprints are +independent of the aggregate fingerprint version. Prior v2/v3 fingerprints are not comparable. Fingerprints are replay checks, not serialized checkpoints or complete hashes of private strategy state. The native runner already binds its strategy-library SHA; its ledger format and Python provenance fingerprints diff --git a/docs/pine-intraday-cap-boundary.md b/docs/pine-intraday-cap-boundary.md index 0a2a716a..f5b5535b 100644 --- a/docs/pine-intraday-cap-boundary.md +++ b/docs/pine-intraday-cap-boundary.md @@ -7,9 +7,10 @@ extracts those decisions from existing execution paths; it does not make the engine independent of Pine or establish broader TradingView parity. The paired codegen explicitly selects this compatibility component in the -`GeneratedStrategy` constructor, guarded by -`PINEFORGE_HAS_EXPLICIT_PINE_CAP_V1`. Older supported engines do not define -that capability and keep their established default. Risk statements still +`GeneratedStrategy` constructor. Current codegen uses the scoped +`attach_pine_execution_adapter()` hook for cap and retained-parent priority, +with a guarded cap-only fallback for older engines; see +[pairing and regeneration](pine-order-priority-boundary.md). Risk statements still assign `max_intraday_filled_orders_ = (int)(expression)` at execution time; selecting a component does not evaluate or hoist a risk statement. @@ -117,18 +118,18 @@ Independent Grok, unchanged fixed Cloud controls and full regression/gate verification remain root-owned requirements before any parity or publication claim. -## Internal pairing and observable-state version 3 +## Internal pairing and observable-state version 4 Relative to base `38dc73e`, the new policy/obligation members change the -`BacktestEngine` layout. Its inline namespace is now `engine_script_run_v3`; +`BacktestEngine` layout. Its inline namespace is now `engine_script_run_v4`; base-header v2 native/generated objects must fail to link against this runtime. The exact source-pairing test compiles frozen base headers and checks explicit -undefined v2 symbols, alongside matched v3 positive controls. Its isolated v2 +undefined v2 symbols, alongside matched v4 positive controls. Its isolated v2 symbol stub is a reverse-link control, not a build of the entire old runtime. No mismatch test program is executed. -Broker hashes use `pineforge-broker-state/v3`; stream fingerprints begin with -version3. The Pine policy's own schema stays1. Public C ABI version4, stream API +Broker hashes use `pineforge-broker-state/v4`; stream fingerprints begin with +version 4. Each Pine component's own schema remains 1. Public C ABI version4, stream API version1, POD layouts, exports and `PINEFORGE_HAS_SCRIPT_RUN_PREPARE_V1` remain unchanged. This version correction changes linking and serialized hash bytes, not cap charging, fill prices or other economic behavior. It does not make @@ -151,3 +152,5 @@ separating requests, execution facts and exposure state; they do not establish Pine quota policy or predictable live fills. See [MQL5 OrderSend](https://www.mql5.com/en/docs/trading/ordersend) and [OnTradeTransaction](https://www.mql5.com/en/docs/event_handlers/ontradetransaction). This patch adds no external execution adapter or callback-ordering model. + +The priority attachment adds a v3/f864 frozen-header rejection control; the cap-only API and its financial rules retain their scope. See [order-priority ownership](pine-order-priority-boundary.md). diff --git a/docs/pine-order-priority-boundary.md b/docs/pine-order-priority-boundary.md new file mode 100644 index 00000000..9cdf7abe --- /dev/null +++ b/docs/pine-order-priority-boundary.md @@ -0,0 +1,76 @@ +# Explicit Pine execution attachment and order priority + +`BacktestEngine::attach_pine_execution_adapter()` explicitly selects two +compatibility components: the existing intraday cap and retained-parent order +priority. It is idempotent, preserves configuration and outstanding cap state, +and does not imply that all Pine behavior has been extracted from the engine. +`enable_pine_intraday_cap()`, the cap constructor argument and legacy integer +cap assignments remain cap-only operations. + +Bare construction leaves order priority detached. Syminfo metadata, including +`flat_retained_child_fresh_parent_order=1`, cannot attach it. The Pine component +owns that key's finite-positive interpretation and retains a supplied value +while detached; explicit attachment preserves a prior off override. Under Pine +attachment, an absent key enables the exact historical exception. Zero, negative +and nonfinite supplied values disable it. Copy/reset preserve attachment and +configuration without retaining a cached scheduling decision. + +The full predicate lives in `src/compat/pine/order_priority.cpp`: exact two-object +book, ordinary POOC context, flat placement, named-cancel and exact child-reissue +receipts, adjacent incarnations, default quantities, full absolute stop+limit +child, pure-stop parent, prior-bar age and all OCA/callback/magnifier/stream +exclusions. Three/four unrelated orders and an intervening accepted-and-canceled +order remain exclusions. This is one active rule transferred to Pine ownership, +not a claim that its source-shape policy disappeared globally. + +The comparator consumes an immutable `broker::OrderPriorityDecision` bound to +exact incarnations. It substitutes two sequence tie-breaks at their former +location, after fill phase. It does not change eligibility, fill prices, OCA +mutation, callbacks, admission or financial accounting. Shared incarnation +receipts and their other compatibility consumers remain unchanged. + +## Pairing and regeneration + +New codegen calls the fully qualified attachment method in the constructor, +before `strategy_create` returns and host metadata arrives: + +```cpp +#if defined(PINEFORGE_HAS_EXPLICIT_PINE_EXECUTION_ADAPTER_V1) + pineforge::BacktestEngine::attach_pine_execution_adapter(); +#elif defined(PINEFORGE_HAS_EXPLICIT_PINE_CAP_V1) + pineforge::BacktestEngine::enable_pine_intraday_cap(); +#endif +``` + +The fallback preserves existing cap-only engines' native-to-Pine cap selection +and their old default retained-parent rule. Engines lacking both capabilities +use their established defaults. This is generated-source portability with +matching headers/runtime, not binary compatibility across engine versions. + +Old cap-only generated source can compile with current headers but does **not** +select the priority exception. Regenerate it with the paired codegen, or +explicitly update a maintained C++ Pine frontend to call the attachment method +before metadata. Neither metadata nor an implicit constructor default repairs +old source. Existing checked-in corpus/tutorial C++ must likewise be regenerated +before using it for Pine behavior measurements; compilation alone is insufficient. + +Rebuild every C++ consumer with matching current headers and archive. The class +namespace is `engine_script_run_v4`; frozen v2/base38 and v3/f864 callers are +compile/link rejection controls. Broker fingerprint domain and stream fingerprint +version are now 4 and include priority attachment/configuration. Prior hashes +are not comparable. Public C functions, PODs and ABI/API versions are unchanged; +an erased handle still belongs to its creating module. + +## Remaining native gap and evidence limits + +Bare native execution retains the ordinary phase/sequence scan. An older child +visited while flat can still be skipped until a later pass, exposing a transient +position to the intervening close-time observer. No identity-bound child +activation/event queue has been added. That causal scheduler is a separate next +slice, not an unused reducer in this extraction. + +Literal C++ controls preserve the old Pine price, quantity, timing and financial +assertions with explicit fixture attachment; they separately pin native metadata +inertness, exclusions, OCA, copy/reset/hash and current lifetime safety. Codegen +checks compile source only. None establishes TV truth, measured campaign +neutrality, actualZERO, absence of population regressions or readiness to publish. diff --git a/include/pineforge/compat/pine/order_priority.hpp b/include/pineforge/compat/pine/order_priority.hpp new file mode 100644 index 00000000..2e22275b --- /dev/null +++ b/include/pineforge/compat/pine/order_priority.hpp @@ -0,0 +1,45 @@ +#pragma once +#include "../../order_priority.hpp" +#include +#include +#include +#include + +namespace pineforge { struct PendingOrder; } +namespace pineforge::compat::pine { + +struct OrderPriorityContext { + bool broker_flat; + bool process_orders_on_close; + bool calc_on_order_fills; + bool coof_scheduler_active; + bool bar_magnifier_enabled; + bool stream_warmup_mode; + bool stream_idle; + int bar_index; +}; + +// Pine's bounded retained-child/recreated-parent exception. The complete +// source-shape rule lives in this component; this is an ownership transfer, +// not a generic native activation/dependency scheduler. +class OrderPriority { +public: + static constexpr uint64_t schema_version = 1; + void attach() { attached_ = true; } + bool attached() const { return attached_; } + bool retained_parent_first() const { return retained_parent_first_; } + void metadata(const std::string& key, double value) { + // One declaration owner, including values received while detached. + // Metadata never selects Pine execution. Reattachment preserves off. + if (key == "flat_retained_child_fresh_parent_order") + retained_parent_first_ = std::isfinite(value) && value > 0.0; + } + std::optional select( + const OrderPriorityContext& ctx, + const std::vector& book) const; +private: + bool attached_ = false; + bool retained_parent_first_ = true; +}; + +} // namespace pineforge::compat::pine diff --git a/include/pineforge/engine.hpp b/include/pineforge/engine.hpp index 35af69a1..2c7eb76f 100644 --- a/include/pineforge/engine.hpp +++ b/include/pineforge/engine.hpp @@ -14,6 +14,7 @@ #include "bar.hpp" #include "broker_events.hpp" #include "compat/pine/intraday_cap.hpp" +#include "compat/pine/order_priority.hpp" #include "series.hpp" #include "timeframe.hpp" #include "magnifier.hpp" @@ -36,6 +37,8 @@ // Generated constructors can explicitly select Pine cap compatibility before // any host metadata setter. Older engines keep their legacy default behavior. #define PINEFORGE_HAS_EXPLICIT_PINE_CAP_V1 1 +// Explicitly selects cap and retained-parent priority compatibility only. +#define PINEFORGE_HAS_EXPLICIT_PINE_EXECUTION_ADAPTER_V1 1 namespace pineforge { @@ -1100,10 +1103,10 @@ struct StrategyOverrides { // The C++ subclass contract is internal, unlike pineforge.h's stable C ABI. // Changing its layout or vtable requires all generated/native C++ objects to be rebuilt. -// v3 replaces the v2 cap scalars with a Pine policy and a close obligation. -// Version the mangled class name so a v2 header's member offsets/vtable cannot +// v4 adds detached Pine order-priority ownership to the v3 cap boundary. +// Version the mangled class name so older headers' member offsets/vtable cannot // silently bind out-of-line members of this different object layout. -inline namespace engine_script_run_v3 { +inline namespace engine_script_run_v4 { class BacktestEngine { protected: // --- Position state --- @@ -1282,15 +1285,9 @@ class BacktestEngine { // Historical fill-triggered recalculation is strictly opt-in. The false // branch in dispatch_bar remains the legacy control path. bool calc_on_order_fills_ = false; - // Narrow ordinary-POOC broker ordering rule for one exact book shape: - // while truly flat, a single reissued from_entry bracket can retain an - // older sequence slot than its same-source-bar pure-stop parent after the - // prior parent was explicitly cancelled and freshly recreated. - // That exact two-order book scans the parent first so the child can inspect - // the post-entry path before the close-time script body. The metadata key - // remains as an explicit A/B override; ordinary execution enables the - // TV-pinned rule by default. - bool flat_retained_child_fresh_parent_order_ = true; + // Detached on bare native construction. Only the explicit Pine frontend + // attachment can select its source-shape priority interpretation. + compat::pine::OrderPriority pine_order_priority_; QtyType default_qty_type_ = QtyType::FIXED; double default_qty_value_ = 1.0; int pyramiding_ = 1; // max additional entries in same direction @@ -4497,6 +4494,13 @@ class BacktestEngine { // Explicit frontend selection, not a generic native risk switch. This // preserves any prior declaration values and does not reset quota/state. void enable_pine_intraday_cap() { max_intraday_filled_orders_.attach(); } + // Current execution-adapter scope: intraday cap + retained-parent priority. + // Idempotent configuration attachment, not a reset or universal Pine mode. + // Generated constructors call this before any host metadata is forwarded. + void attach_pine_execution_adapter() { + max_intraday_filled_orders_.attach(); + pine_order_priority_.attach(); + } virtual ~BacktestEngine() = default; virtual void on_bar(const Bar& bar) = 0; @@ -4795,10 +4799,7 @@ class BacktestEngine { margin_zero_cover_full_liquidation_ = std::isfinite(value) && value > 0.0; } - if (key == "flat_retained_child_fresh_parent_order") { - flat_retained_child_fresh_parent_order_ = - std::isfinite(value) && value > 0.0; - } + pine_order_priority_.metadata(key, value); // Forward through the real base setter used by the C ABI. A selected // frontend owns recognition and numeric validation; no derived shadow // setter or cap-key interpretation belongs in this transport. @@ -5141,5 +5142,5 @@ class BacktestEngine { void trace(const std::string& name, int value) { trace(name, static_cast(value)); } }; -} // inline namespace engine_script_run_v3 +} // inline namespace engine_script_run_v4 } // namespace pineforge diff --git a/include/pineforge/order_priority.hpp b/include/pineforge/order_priority.hpp new file mode 100644 index 00000000..3e9fa5ee --- /dev/null +++ b/include/pineforge/order_priority.hpp @@ -0,0 +1,23 @@ +#pragma once +#include +#include + +namespace pineforge::broker { + +// Immutable assignments bound to exact pending objects, not reusable user IDs. +// A decision changes only the sequence tie-break, never phase or eligibility. +struct OrderPriorityAssignment { + uint64_t incarnation; + int64_t sequence; +}; +struct OrderPriorityDecision { + std::array assignments; + int64_t sequence(uint64_t incarnation, int64_t fallback) const { + for (const auto& assignment : assignments) { + if (assignment.incarnation == incarnation) return assignment.sequence; + } + return fallback; + } +}; + +} // namespace pineforge::broker diff --git a/scripts/broker_state_hash_waivers.txt b/scripts/broker_state_hash_waivers.txt index 9058dc96..ee7a47a7 100644 --- a/scripts/broker_state_hash_waivers.txt +++ b/scripts/broker_state_hash_waivers.txt @@ -15,7 +15,6 @@ commission_type_ # config: strategy(commission_type=...) commission_value_ # config: strategy(commission_value=...) default_qty_type_ # config: strategy(default_qty_type=...) default_qty_value_ # config: strategy(default_qty_value=...) -flat_retained_child_fresh_parent_order_ # config: explicit A/B ordering override historical_security_lookahead_projection_ # config: opt-in request.security selector initial_capital_ # config: strategy(initial_capital=...) margin_call_enabled_ # config: set_margin_call_enabled toggle diff --git a/scripts/check_broker_state_hash_coverage.py b/scripts/check_broker_state_hash_coverage.py index ebc7c1f9..397ec222 100644 --- a/scripts/check_broker_state_hash_coverage.py +++ b/scripts/check_broker_state_hash_coverage.py @@ -340,7 +340,7 @@ def folds(name: str, expression: str) -> list[tuple[str, str]]: def _runtime_version_coverage(header: str, source: str, stream: str) -> None: - """The v3 layout and serialized-state contracts must advance together. + """The v4 layout and serialized-state contracts must advance together. Pin the actual hash entry points, rather than accepting a version string mentioned in a comment or an unrelated helper. Public C ABI versions have @@ -348,18 +348,18 @@ def _runtime_version_coverage(header: str, source: str, stream: str) -> None: """ header = _strip_cpp_comments(header) namespaces = re.findall(r"inline\s+namespace\s+(engine_script_run_v\d+)\s*\{", header) - if namespaces != ["engine_script_run_v3"]: - raise ValueError("BacktestEngine layout requires internal namespace engine_script_run_v3") + if namespaces != ["engine_script_run_v4"]: + raise ValueError("BacktestEngine layout requires internal namespace engine_script_run_v4") broker = _one_braced_body(source, r"uint64_t\s+BacktestEngine::broker_state_hash\(\)\s+const\s*\{", "broker hash") - if not re.match(r'\s*Fnv\s+f;\s*f\.s\("pineforge-broker-state/v3"\);', broker): - raise ValueError("broker hash must start with pineforge-broker-state/v3") + if not re.match(r'\s*Fnv\s+f;\s*f\.s\("pineforge-broker-state/v4"\);', broker): + raise ValueError("broker hash must start with pineforge-broker-state/v4") stream_body = _one_braced_body(_strip_cpp_comments(stream), r"uint64_t\s+BacktestEngine::stream_state_hash\(\)\s+const\s*\{", "stream hash") compact = re.sub(r"\s+", "", stream_body) - fold = "integer(3);integer(broker_state_hash());" + fold = "integer(4);integer(broker_state_hash());" if compact.count(fold) != 1: - raise ValueError("stream hash requires version 3 followed by the broker hash") + raise ValueError("stream hash requires version 4 followed by the broker hash") prefix = compact[:compact.index(fold)] if prefix.count("{") != prefix.count("}") or (prefix and prefix[-1] not in ";}"): raise ValueError("stream version fold must be unconditional at function scope") diff --git a/scripts/check_script_cpp_abi.py b/scripts/check_script_cpp_abi.py index 7b0c049d..17ef0b03 100644 --- a/scripts/check_script_cpp_abi.py +++ b/scripts/check_script_cpp_abi.py @@ -16,7 +16,7 @@ BASE_COMMIT = "38dc73e5503fe5395458e5f8df2a2ad78054a1ae" BASE_ENGINE_SHA256 = "06c937a1ccd31815ca7775268ac699ffdfddb1a1f19de4628b777f37e9a6d193" -CURRENT_NAMESPACE = "engine_script_run_v3" +CURRENT_NAMESPACE = "engine_script_run_v4" BASE_NAMESPACE = "engine_script_run_v2" FIXTURE = Path(__file__).resolve().parents[1] / "tests/fixtures/script_cpp_abi/base38" @@ -29,14 +29,15 @@ def entry_diagnostic(lines, namespace, method): return next((line for line in lines if needle in line), None) -def frozen_headers(destination): +def frozen_headers(destination, fixture=FIXTURE, commit=BASE_COMMIT, + namespace=BASE_NAMESPACE, engine_sha=BASE_ENGINE_SHA256): """Authenticate and unpack the exact tracked base38 header closure.""" - manifest = json.loads((FIXTURE / "manifest.json").read_text()) - if (manifest["source_commit"] != BASE_COMMIT - or manifest["internal_namespace"] != BASE_NAMESPACE - or manifest["files"]["pineforge/engine.hpp"]["sha256"] != BASE_ENGINE_SHA256): + manifest = json.loads((fixture / "manifest.json").read_text()) + if (manifest["source_commit"] != commit + or manifest["internal_namespace"] != namespace + or manifest["files"]["pineforge/engine.hpp"]["sha256"] != engine_sha): raise RuntimeError("stale-header fixture does not identify the pinned base38 contract") - archive = (FIXTURE / "headers.json.gz").read_bytes() + archive = (fixture / "headers.json.gz").read_bytes() if hashlib.sha256(archive).hexdigest() != manifest["archive_sha256"]: raise RuntimeError("stale-header fixture archive digest mismatch") contents = json.loads(gzip.decompress(archive)) @@ -141,6 +142,10 @@ def main(): root = Path(temporary) old_include = root / "base38/include" frozen_headers(old_include) + cap_include = root / "basef864/include" + frozen_headers(cap_include, FIXTURE.parent / "basef864", + "f864be590931ba08c8df5af983b33b2c29be9c67", "engine_script_run_v3", + "54b35fffaa163a31467f8ba883e44e02f013a37216b558dfe3a4f28fbbe84dc2") common = [args.compiler, "-std=c++17", "-O0", *args.extra_flag] def compile_object(name, source, include): @@ -164,6 +169,11 @@ def compile_object(name, source, include): old_symbols = compile_object("base38_symbol_control", BASE_SYMBOL_CONTROL, old_include) legacy = compile_object("legacy_unversioned", LEGACY_CALLER, old_include) + cap_native = compile_object("basef864_native", caller("engine_script_run_v3"), cap_include) + cap_generated = compile_object("basef864_generated", caller("engine_script_run_v3", True), cap_include) + cap_symbols = compile_object("basef864_symbol_control", + BASE_SYMBOL_CONTROL.replace("engine_script_run_v2", "engine_script_run_v3"), cap_include) + def link(name, obj, runtime, missing_namespace=None): linked = subprocess.run( [*common, str(obj), str(runtime), "-pthread", "-o", str(root / name)], @@ -199,7 +209,13 @@ def link(name, obj, runtime, missing_namespace=None): link("current_native_to_v2_symbol_control", current_native, old_symbols, CURRENT_NAMESPACE) link("current_generated_to_v2_symbol_control", current_generated, old_symbols, CURRENT_NAMESPACE) link("unversioned_to_current", legacy, args.library, "") - print("6 translation units compiled; 4 positive links; 5 rejected links; no executable run") + link("basef864_native_to_v3_symbol_control", cap_native, cap_symbols) + link("basef864_generated_to_v3_symbol_control", cap_generated, cap_symbols) + link("basef864_native_to_current", cap_native, args.library, "engine_script_run_v3") + link("basef864_generated_to_current", cap_generated, args.library, "engine_script_run_v3") + link("current_native_to_v3_symbol_control", current_native, cap_symbols, CURRENT_NAMESPACE) + link("current_generated_to_v3_symbol_control", current_generated, cap_symbols, CURRENT_NAMESPACE) + print("9 translation units compiled; 6 positive links; 9 rejected links; no executable run") if __name__ == "__main__": diff --git a/scripts/test_broker_state_hash_coverage.py b/scripts/test_broker_state_hash_coverage.py index a53faf62..462bdcfc 100644 --- a/scripts/test_broker_state_hash_coverage.py +++ b/scripts/test_broker_state_hash_coverage.py @@ -56,26 +56,26 @@ def test_actual_source_and_named_parser(self): self.assertEqual(len(members(HEADER, "PyramidEntry")), 18) self.assertEqual(members(HEADER), members(HEADER, "PendingOrder")) - def test_layout_and_hash_versions_must_match_v3_contract(self): - self.assertIn("engine_script_run_v3", HEADER) - self.assertIn('f.s("pineforge-broker-state/v3");', SOURCE) - self.assertIn("integer(3); integer(broker_state_hash());", STREAM) - self.assertEqual(self.check(header=HEADER.replace("engine_script_run_v3", "engine_script_run_v2"))[0], 1) + def test_layout_and_hash_versions_must_match_v4_contract(self): + self.assertIn("engine_script_run_v4", HEADER) + self.assertIn('f.s("pineforge-broker-state/v4");', SOURCE) + self.assertIn("integer(4); integer(broker_state_hash());", STREAM) + self.assertEqual(self.check(header=HEADER.replace("engine_script_run_v4", "engine_script_run_v2"))[0], 1) for replacement in ['f.s("pineforge-broker-state/v2");', '', - '// f.s("pineforge-broker-state/v3");']: + '// f.s("pineforge-broker-state/v4");']: self.assertEqual(self.check(source=SOURCE.replace( - 'f.s("pineforge-broker-state/v3");', replacement))[0], 1) + 'f.s("pineforge-broker-state/v4");', replacement))[0], 1) for replacement in ["integer(2); integer(broker_state_hash());", "integer(broker_state_hash());", - "if (false) { integer(3); integer(broker_state_hash()); }"]: + "if (false) { integer(4); integer(broker_state_hash()); }"]: self.assertEqual(self.check(stream=STREAM.replace( - "integer(3); integer(broker_state_hash());", replacement))[0], 1) + "integer(4); integer(broker_state_hash());", replacement))[0], 1) def test_version_folds_in_unrelated_helpers_do_not_cover_entry_points(self): - broker_fold = 'f.s("pineforge-broker-state/v3");' + broker_fold = 'f.s("pineforge-broker-state/v4");' altered = SOURCE.replace(broker_fold, '') + '\nvoid other() { ' + broker_fold + ' }\n' self.assertEqual(self.check(source=altered)[0], 1) - stream_fold = "integer(3); integer(broker_state_hash());" + stream_fold = "integer(4); integer(broker_state_hash());" altered = STREAM.replace(stream_fold, '') + '\nvoid other() { ' + stream_fold + ' }\n' self.assertEqual(self.check(stream=altered)[0], 1) diff --git a/src/compat/pine/order_priority.cpp b/src/compat/pine/order_priority.cpp new file mode 100644 index 00000000..ae6d4f5c --- /dev/null +++ b/src/compat/pine/order_priority.cpp @@ -0,0 +1,93 @@ +#include +#include +#include + +namespace pineforge::compat::pine { + +std::optional OrderPriority::select( + const OrderPriorityContext& ctx, + const std::vector& book) const { + if (!attached_ || !retained_parent_first_ + || !ctx.broker_flat || !ctx.process_orders_on_close + || ctx.calc_on_order_fills || ctx.coof_scheduler_active + || ctx.bar_magnifier_enabled || ctx.stream_warmup_mode + || !ctx.stream_idle || book.size() != 2) return std::nullopt; + + const PendingOrder* parent = nullptr; + const PendingOrder* child = nullptr; + for (const PendingOrder& order : book) { + if (order.type == OrderType::ENTRY) parent = ℴ + else if (order.type == OrderType::EXIT) child = ℴ + } + if (!parent || !child) return std::nullopt; + + // Preserve every legacy exclusion. Incarnation adjacency and exact book + // size are Pine evidence boundaries, not native dependency invariants. + const uint64_t cancelled_incarnation = + parent->recreated_after_named_cancelled_entry_incarnation; + const uint64_t surviving_exit_incarnation = + parent->named_cancel_surviving_exit_incarnation; + const bool parent_is_exact_fresh_stop = + parent->type == OrderType::ENTRY + && parent->created_position_side == PositionSide::FLAT + && !parent->created_by_same_id_replacement + && cancelled_incarnation != 0 + && cancelled_incarnation < parent->incarnation + && cancelled_incarnation != child->incarnation + && surviving_exit_incarnation > cancelled_incarnation + && surviving_exit_incarnation < parent->incarnation + && parent->created_bar == ctx.bar_index - 1 + && std::isnan(parent->qty) + && !parent->created_during_coof_recalc + && !parent->created_after_position_close_in_bar + && !parent->over_pyramiding_cap_at_placement + && !parent->stop_limit_activated + && std::isfinite(parent->stop_price) + && std::isnan(parent->limit_price) + && std::isnan(parent->trail_points) + && std::isnan(parent->trail_price) + && std::isnan(parent->trail_offset) + && parent->oca_name.empty() + && parent->oca_type == 0; + const double child_qp = std::isnan(child->qty_percent) + ? 100.0 : child->qty_percent; + const bool child_is_exact_retained_bracket = + child->type == OrderType::EXIT + && !child->from_entry.empty() + && child->created_by_same_id_replacement + && child->replaced_exit_order_incarnation + == surviving_exit_incarnation + && !child->created_while_in_position + && child->created_position_side == PositionSide::FLAT + && child->created_bar == ctx.bar_index - 1 + && !child->created_during_coof_recalc + && !child->created_after_position_close_in_bar + && !child->requested_partial + && std::isnan(child->qty) + && child_qp >= 100.0 - 1e-9 + && std::isfinite(child->stop_price) + && std::isfinite(child->limit_price) + && std::isnan(child->profit_ticks) + && std::isnan(child->loss_ticks) + && std::isnan(child->trail_points) + && std::isnan(child->trail_price) + && std::isnan(child->trail_offset) + && child->oca_name.empty() + && child->oca_type == 0; + const bool exact_pair = parent_is_exact_fresh_stop + && child_is_exact_retained_bracket + && child->from_entry == parent->id + && child->created_seq < parent->created_seq + && child->incarnation != 0 + && parent->incarnation != 0 + && parent->incarnation + < std::numeric_limits::max() + && child->incarnation == parent->incarnation + 1; + if (!exact_pair) return std::nullopt; + return broker::OrderPriorityDecision{{{ + {parent->incarnation, child->created_seq}, + {child->incarnation, parent->created_seq}, + }}}; +} + +} // namespace pineforge::compat::pine diff --git a/src/engine_fills.cpp b/src/engine_fills.cpp index cce26e31..7eae1107 100644 --- a/src/engine_fills.cpp +++ b/src/engine_fills.cpp @@ -3716,54 +3716,13 @@ void BacktestEngine::sort_orders_by_fill_phase(const Bar& bar) { } } - // Default-on retained-child / fresh-parent rule. A child retained across - // an explicit parent cancellation can keep an older broker slot than the - // freshly recreated parent; reissuing the child on that same source bar - // preserves those unequal priorities even though created_bar is now equal. The - // ordinary sequence tie-break then scans the child while flat (Skip) and - // the parent afterwards, so POOC on_bar observes a transient position - // before the second broker pass can revisit the child. - // - // Keep the comparator edge acyclic by admitting only an exact two-object - // book and recording immutable incarnation ids before stable_sort. Every - // provenance predicate below is intentional: ordinary POOC, no COOF or - // magnifier scheduler, one prior-bar freshly recreated pure-stop ENTRY, one - // same-source-bar flat-born full non-trailing EXIT child with older broker - // priority, and no OCA grouping. - uint64_t retained_child_parent_first_incarnation = 0; - uint64_t retained_child_later_incarnation = 0; - int64_t retained_child_parent_effective_seq = 0; - int64_t retained_child_later_effective_seq = 0; - if (pending_orders_.size() == 2) { - const PendingOrder* parent = nullptr; - const PendingOrder* child = nullptr; - for (const PendingOrder& order : pending_orders_) { - if (order.type == OrderType::ENTRY) { - parent = ℴ - } else if (order.type == OrderType::EXIT) { - child = ℴ - } - } - const RetainedChildFreshParentOrderContext context{ - flat_retained_child_fresh_parent_order_, - position_side_ == PositionSide::FLAT, - process_orders_on_close_, - calc_on_order_fills_, - coof_scheduler_active_, - bar_magnifier_enabled_, - stream_warmup_mode_, - stream_phase_ == StreamPhase::IDLE, - pending_orders_.size(), - bar_index_, - }; - if (retained_child_fresh_parent_order_pair( - context, parent, child)) { - retained_child_parent_first_incarnation = parent->incarnation; - retained_child_later_incarnation = child->incarnation; - retained_child_parent_effective_seq = child->created_seq; - retained_child_later_effective_seq = parent->created_seq; - } - } + // The Pine frontend alone selects source-shape priority policy. Snapshot + // an identity-bound value before sorting; the core only applies its keys. + const auto priority_decision = pine_order_priority_.select({ + position_side_ == PositionSide::FLAT, process_orders_on_close_, + calc_on_order_fills_, coof_scheduler_active_, bar_magnifier_enabled_, + stream_warmup_mode_, stream_phase_ == StreamPhase::IDLE, bar_index_, + }, pending_orders_); // A single relative strategy.exit armed while FLAT has no concrete // stop/limit until its earlier same-bar from_entry parent fills. It // otherwise looks like a phase-0 market order and sorts before a non-gap @@ -4250,19 +4209,11 @@ void BacktestEngine::sort_orders_by_fill_phase(const Bar& bar) { if (ga != gb) return ga < gb; } } - if (retained_child_parent_first_incarnation != 0) { - auto effective_seq = [&](const PendingOrder& order) { - if (order.incarnation - == retained_child_parent_first_incarnation) { - return retained_child_parent_effective_seq; - } - if (order.incarnation == retained_child_later_incarnation) { - return retained_child_later_effective_seq; - } - return order.created_seq; - }; - const int64_t a_seq = effective_seq(a); - const int64_t b_seq = effective_seq(b); + if (priority_decision) { + const int64_t a_seq = priority_decision->sequence( + a.incarnation, a.created_seq); + const int64_t b_seq = priority_decision->sequence( + b.incarnation, b.created_seq); if (a_seq != b_seq) return a_seq < b_seq; } auto is_entry_same_as_current_position = [&](const PendingOrder& o) { diff --git a/src/engine_internal.hpp b/src/engine_internal.hpp index 20f95477..4f419145 100644 --- a/src/engine_internal.hpp +++ b/src/engine_internal.hpp @@ -64,105 +64,6 @@ inline constexpr double kPathTimeEps = 1e-12; // function-local copy. One definition, so the predicate cannot drift. inline const std::string kClosePrefix = "__close__"; -struct RetainedChildFreshParentOrderContext { - bool enabled = false; - bool broker_flat = false; - bool process_orders_on_close = false; - bool calc_on_order_fills = false; - bool coof_scheduler_active = false; - bool bar_magnifier_enabled = false; - bool stream_warmup_mode = false; - bool stream_idle = false; - std::size_t pending_count = 0; - int bar_index = -1; -}; - -// Exact lifecycle predicate for the ordinary-POOC ordering exception where a -// retained strategy.exit child has an older broker slot than the pure-STOP -// parent explicitly cancelled and freshly recreated in the same evaluation. -// Keeping the full predicate runtime-private and side-effect-free makes every -// exclusion independently unit-testable; the comparator only swaps two -// immutable scalar sequence keys after this returns true. -inline bool retained_child_fresh_parent_order_pair( - const RetainedChildFreshParentOrderContext& ctx, - const PendingOrder* parent, - const PendingOrder* child) { - if (!ctx.enabled - || !ctx.broker_flat - || !ctx.process_orders_on_close - || ctx.calc_on_order_fills - || ctx.coof_scheduler_active - || ctx.bar_magnifier_enabled - || ctx.stream_warmup_mode - || !ctx.stream_idle - || ctx.pending_count != 2 - || parent == nullptr - || child == nullptr) { - return false; - } - - const uint64_t cancelled_incarnation = - parent->recreated_after_named_cancelled_entry_incarnation; - const uint64_t surviving_exit_incarnation = - parent->named_cancel_surviving_exit_incarnation; - const bool parent_is_exact_fresh_stop = - parent->type == OrderType::ENTRY - && parent->created_position_side == PositionSide::FLAT - && !parent->created_by_same_id_replacement - && cancelled_incarnation != 0 - && cancelled_incarnation < parent->incarnation - && cancelled_incarnation != child->incarnation - && surviving_exit_incarnation > cancelled_incarnation - && surviving_exit_incarnation < parent->incarnation - && parent->created_bar == ctx.bar_index - 1 - && std::isnan(parent->qty) - && !parent->created_during_coof_recalc - && !parent->created_after_position_close_in_bar - && !parent->over_pyramiding_cap_at_placement - && !parent->stop_limit_activated - && std::isfinite(parent->stop_price) - && std::isnan(parent->limit_price) - && std::isnan(parent->trail_points) - && std::isnan(parent->trail_price) - && std::isnan(parent->trail_offset) - && parent->oca_name.empty() - && parent->oca_type == 0; - const double child_qp = std::isnan(child->qty_percent) - ? 100.0 : child->qty_percent; - const bool child_is_exact_retained_bracket = - child->type == OrderType::EXIT - && !child->from_entry.empty() - && child->created_by_same_id_replacement - && child->replaced_exit_order_incarnation - == surviving_exit_incarnation - && !child->created_while_in_position - && child->created_position_side == PositionSide::FLAT - && child->created_bar == ctx.bar_index - 1 - && !child->created_during_coof_recalc - && !child->created_after_position_close_in_bar - && !child->requested_partial - && std::isnan(child->qty) - && child_qp >= 100.0 - kFullPercentEps - && std::isfinite(child->stop_price) - && std::isfinite(child->limit_price) - && std::isnan(child->profit_ticks) - && std::isnan(child->loss_ticks) - && std::isnan(child->trail_points) - && std::isnan(child->trail_price) - && std::isnan(child->trail_offset) - && child->oca_name.empty() - && child->oca_type == 0; - return parent_is_exact_fresh_stop - && child_is_exact_retained_bracket - && child->from_entry == parent->id - && child->created_seq < parent->created_seq - && child->incarnation != 0 - && parent->incarnation != 0 - && parent->incarnation - < std::numeric_limits::max() - && child->incarnation == parent->incarnation + 1; -} - // Among flat pending opposite ENTRY stop-only orders, which stop price is touched // first on the synthesized OHLC path (exactly one long + one short, both touched). // Forward-declared in with the same underlying type diff --git a/src/engine_state_hash.cpp b/src/engine_state_hash.cpp index a9fe8f6f..1834222b 100644 --- a/src/engine_state_hash.cpp +++ b/src/engine_state_hash.cpp @@ -86,9 +86,9 @@ void hash_str_set(Fnv& f, const std::unordered_set& s) { uint64_t BacktestEngine::broker_state_hash() const { Fnv f; - // v3 owns cap configuration, quota/cause and generic close-request state. + // v4 adds explicit Pine order-priority attachment and configuration. // It is a serialization boundary, independent of the public C ABI version. - f.s("pineforge-broker-state/v3"); + f.s("pineforge-broker-state/v4"); // --- Position core --- f.i(static_cast(position_side_)); @@ -294,6 +294,12 @@ uint64_t BacktestEngine::broker_state_hash() const { f.i(priced_entry_activity_bar_); f.b(priced_entry_filled_this_bar_); + // Explicit priority policy is future-behavioral configuration. No cached + // decision survives a broker boundary; hash semantic ownership only. + f.u(compat::pine::OrderPriority::schema_version); + f.b(pine_order_priority_.attached()); + f.b(pine_order_priority_.retained_parent_first()); + // --- Pine compatibility policy and its day-owned quota --- f.u(compat::pine::IntradayCap::schema_version); f.i(static_cast(max_intraday_filled_orders_.attachment())); diff --git a/src/engine_stream.cpp b/src/engine_stream.cpp index a64830d3..a3ca41f8 100644 --- a/src/engine_stream.cpp +++ b/src/engine_stream.cpp @@ -678,7 +678,7 @@ uint64_t BacktestEngine::stream_state_hash() const { integer(static_cast(bar.timestamp)); real(bar.open); real(bar.high); real(bar.low); real(bar.close); real(bar.volume); }; - integer(3); integer(broker_state_hash()); + integer(4); integer(broker_state_hash()); integer(static_cast(stream_phase_)); integer(static_cast(stream_input_mode_)); integer(static_cast(stream_input_tf_ms_)); diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4cb4f925..b5b72d63 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -406,3 +406,8 @@ if(PINEFORGE_ENABLE_COVERAGE) target_compile_options(test_c_abi PRIVATE ${_pf_cov_test_flags}) endif() add_test(NAME test_c_abi COMMAND test_c_abi) + +# Run the same literal lifetime/OCA/callback and financial assertions with +# explicit Pine attachment as well as the unchanged bare-native test above. +add_test(NAME test_pending_order_identity_pine + COMMAND test_pending_order_identity --pine) diff --git a/tests/fixtures/script_cpp_abi/basef864/README.md b/tests/fixtures/script_cpp_abi/basef864/README.md new file mode 100644 index 00000000..5c391425 --- /dev/null +++ b/tests/fixtures/script_cpp_abi/basef864/README.md @@ -0,0 +1 @@ +Frozen public header closure of engine f864be590931ba08c8df5af983b33b2c29be9c67 (cap-only explicit attachment, C++ namespace v3). Digests authenticate the compile/link-only stale-layout controls. No runtime is archived or executed; version.h is generated by the matching check build. diff --git a/tests/fixtures/script_cpp_abi/basef864/headers.json.gz b/tests/fixtures/script_cpp_abi/basef864/headers.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..a6febe3d71538ab42c7a48a5b64b3dfd4691c1b4 GIT binary patch literal 139819 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ʎt&_Nbl9I!Am-6TllEx$?^ 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 literal 0 HcmV?d00001 diff --git a/tests/fixtures/script_cpp_abi/basef864/manifest.json b/tests/fixtures/script_cpp_abi/basef864/manifest.json new file mode 100644 index 00000000..02ffb295 --- /dev/null +++ b/tests/fixtures/script_cpp_abi/basef864/manifest.json @@ -0,0 +1,61 @@ +{ + "source_commit": "f864be590931ba08c8df5af983b33b2c29be9c67", + "internal_namespace": "engine_script_run_v3", + "archive": "headers.json.gz", + "archive_sha256": "0aeded64e9b04de2ca743593f86ae80de01324af2407efd6c0c4afc92f24f019", + "generated_dependency": "pineforge/version.h is supplied by --generated-include.", + "files": { + "pineforge/bar.hpp": { + "sha256": "665c2528dca64ac9474de622dfd7ffdb540ff91316f70317e39aada158d1e0de", + "git_blob": "836f73daab382e9c8d5a6d03a942a921e39b756f" + }, + "pineforge/broker_events.hpp": { + "sha256": "4f3d9948a4d1604750901fa3982d6ea49bd50dd15a86c4e5d690b83d1f5f23c0", + "git_blob": "2972d53c7b039af266f4da161301c01eec54c16d" + }, + "pineforge/compat/pine/intraday_cap.hpp": { + "sha256": "0ac0eab34625ab9a974037ff8c0217603a01deb81599350a4b24f7bf48ac0cbd", + "git_blob": "0aba76b6a78251df33e92f19290473adecf5a61e" + }, + "pineforge/compat/pine/intraday_order_budget.hpp": { + "sha256": "43f7700f9c66c630ab8a9d8fd899eecb03c2fd9aabff11d2dc2b7fa85f92981b", + "git_blob": "730d941fffa3939e375489f40a50901ccea9ec87" + }, + "pineforge/engine.hpp": { + "sha256": "54b35fffaa163a31467f8ba883e44e02f013a37216b558dfe3a4f28fbbe84dc2", + "git_blob": "35af69a175cbc65f68cc58ddbfa52fe82f502781" + }, + "pineforge/magnifier.hpp": { + "sha256": "c0ed220b6df054b44596a434d4f48b1c3e960ca329bb8644a405a608175e06ff", + "git_blob": "1bbc910a869d162900d7610fa0bd9a88776b7b0f" + }, + "pineforge/na.hpp": { + "sha256": "0e8c256fcdeda94a0855458fa3b8c4ad4f9864dc2aecce969934f6bea82fd0a5", + "git_blob": "e98505aadc68a09cbe5a14aacf591a799a15ecd2" + }, + "pineforge/pending_order_mirror.hpp": { + "sha256": "cf4f756ce681dfec396918be6bc03d25e8ed5b1dbf9b2515c40af4c2b3df5236", + "git_blob": "ce672052f43add9d5965e7655c116f7874bbc8f7" + }, + "pineforge/pineforge.h": { + "sha256": "1e0def60e31f529dcb821502c0f7104b473c06be0fa1df713be0f408e04e9288", + "git_blob": "232cd6c66d3f6e6ffdcffdf246e6a9dcce3ef3f8" + }, + "pineforge/position_close_obligation.hpp": { + "sha256": "6f6ad0aaca952dda7a9386cb78e57705b3494364dbd8970b0a051fe99d05b777", + "git_blob": "09576ee0f2a1d49becc46f5701f4369cf8f87bf6" + }, + "pineforge/series.hpp": { + "sha256": "e7709f67df9046c9eba163c2dbe91f8161084a955265ccf6b163355856c0afde", + "git_blob": "61baaef2c351d37b0d6a5eb179e91ce670eb83c3" + }, + "pineforge/session_time.hpp": { + "sha256": "f58c94bfae948e08fa21e52f20eae3940b31e398d83b800baf3a31f3a5fde669", + "git_blob": "af3a4472d852e0965947c006d0b6ad85304539e7" + }, + "pineforge/timeframe.hpp": { + "sha256": "5e4c312da463fdcff55e0887188523c8bbf85a2ae62f3317a2b23f22fe0161e2", + "git_blob": "3d1bc9d495ac7e5b39ea5bae57c9d9afe580192b" + } + } +} diff --git a/tests/test_pending_order_identity.cpp b/tests/test_pending_order_identity.cpp index 704e744b..b5548970 100644 --- a/tests/test_pending_order_identity.cpp +++ b/tests/test_pending_order_identity.cpp @@ -12,6 +12,7 @@ using namespace pineforge; namespace { +bool pine_fixture_attachment = false; const double missing = std::numeric_limits::quiet_NaN(); #define REQUIRE(x) do { if (!(x)) throw std::runtime_error( \ std::string(__func__) + ":" + std::to_string(__LINE__) + ": " #x); } while (false) @@ -62,6 +63,11 @@ class Book final : public BacktestEngine { public: using BacktestEngine::open_trade_entry_id; Book() { +#if defined(PINEFORGE_HAS_EXPLICIT_PINE_EXECUTION_ADAPTER_V1) + if (pine_fixture_attachment) attach_pine_execution_adapter(); +#else + if (pine_fixture_attachment) throw std::runtime_error("Pine attachment unavailable"); +#endif initial_capital_ = 100000; pyramiding_ = 10; margin_long_ = margin_short_ = 0; @@ -408,6 +414,11 @@ class CallbackBook final : public BacktestEngine { int observed_close_callbacks = 0; uint64_t replaced = 0, fresh = 0; CallbackBook() { +#if defined(PINEFORGE_HAS_EXPLICIT_PINE_EXECUTION_ADAPTER_V1) + if (pine_fixture_attachment) attach_pine_execution_adapter(); +#else + if (pine_fixture_attachment) throw std::runtime_error("Pine attachment unavailable"); +#endif initial_capital_ = 100000; pyramiding_ = 10; margin_long_ = margin_short_ = 0; @@ -453,7 +464,8 @@ void actual_coof_callback() { int main(int argc, char** argv) { int failed = 0, passed = 0; - const std::string filter = argc > 1 ? argv[1] : ""; + pine_fixture_attachment = argc > 1 && std::string(argv[1]) == "--pine"; + const std::string filter = argc > 1 && !pine_fixture_attachment ? argv[1] : ""; auto check = [&](const std::string& name, const std::function& body) { if (!filter.empty() && name.find(filter) == std::string::npos) return; try { body(); ++passed; std::cout << "PASS " << name << '\n'; } diff --git a/tests/test_prearmed_exit_path_cursor.cpp b/tests/test_prearmed_exit_path_cursor.cpp index 4e6371ca..977c7dc0 100644 --- a/tests/test_prearmed_exit_path_cursor.cpp +++ b/tests/test_prearmed_exit_path_cursor.cpp @@ -14,6 +14,7 @@ #include #include +#include #include #include @@ -82,14 +83,21 @@ enum class BookVariant { PostCancelDoubleReissue, MissingParentCancel, InterleavedThird, + InterleavedFourth, + IncarnationGap, + ChildOca, + SharedOca, MultipleChildren, }; class FreshParentProbe final : public BacktestEngine { public: FreshParentProbe(Cell cell, int parent_first_factor, - BookVariant variant = BookVariant::ExactPair) + BookVariant variant = BookVariant::ExactPair, + bool pine_attachment = true) : cell_(cell), variant_(variant) { + // Legacy Pine numeric assertions require an explicit frontend opt-in. + if (pine_attachment) attach_pine_execution_adapter(); initial_capital_ = 1'000'000.0; default_qty_type_ = QtyType::FIXED; default_qty_value_ = 1.0; @@ -113,17 +121,24 @@ class FreshParentProbe final : public BacktestEngine { if (bar_index_ == 0) { strategy_entry("E", is_long, kNaN, is_long ? 130.0 : 70.0, - kNaN, "original parent"); + kNaN, "original parent", + variant_ == BookVariant::SharedOca ? "G" : "", + variant_ == BookVariant::SharedOca ? 1 : 0); if (variant_ != BookVariant::FreshChild && variant_ != BookVariant::PostCancelDoubleReissue) { strategy_exit("X", "E", child_limit, child_stop, kNaN, kNaN, kNaN, 100.0, "retained child"); } - if (variant_ == BookVariant::InterleavedThird) { + if (variant_ == BookVariant::InterleavedThird + || variant_ == BookVariant::InterleavedFourth) { strategy_entry("U", is_long, kNaN, is_long ? 1'000.0 : 1.0, 1.0, "unrelated resting parent"); + if (variant_ == BookVariant::InterleavedFourth) + strategy_entry("V", is_long, kNaN, + is_long ? 2'000.0 : 0.5, + 1.0, "fourth unrelated parent"); } else if (variant_ == BookVariant::MultipleChildren) { strategy_exit("Y", "E", child_limit, child_stop, kNaN, kNaN, kNaN, 100.0, @@ -177,10 +192,19 @@ class FreshParentProbe final : public BacktestEngine { } else { strategy_entry("E", is_long, kNaN, is_long ? 110.0 : 90.0, - kNaN, "fresh parent"); + kNaN, "fresh parent", + variant_ == BookVariant::SharedOca ? "G" : "", + variant_ == BookVariant::SharedOca ? 1 : 0); + if (variant_ == BookVariant::IncarnationGap) { + strategy_entry("U", is_long, kNaN, + is_long ? 1'000.0 : 1.0, 1.0); + strategy_cancel("U"); + } strategy_exit("X", "E", child_limit, child_stop, kNaN, kNaN, kNaN, 100.0, - "retained child"); + "retained child", kNaN, + variant_ == BookVariant::ChildOca + || variant_ == BookVariant::SharedOca ? "G" : ""); } if (variant_ == BookVariant::MultipleChildren) { strategy_exit("Y", "E", child_limit, child_stop, @@ -236,6 +260,13 @@ class FreshParentProbe final : public BacktestEngine { } } + bool priority_attached() const { return pine_order_priority_.attached(); } + bool priority_enabled() const { return pine_order_priority_.retained_parent_first(); } + bool cap_attached() const { + return max_intraday_filled_orders_.attachment() != compat::pine::CapAttachment::None; + } + uint64_t fills() const { return broker_fill_event_seq_; } + double position() const { return signed_position_size(); } bool fresh_parent_shape_seen = false; bool parent_cancel_provenance_seen = false; bool parent_cancel_token_exact = false; @@ -351,8 +382,9 @@ enum class SortMutation { }; static bool retained_child_predicate_accepts(SortMutation mutation) { - internal::RetainedChildFreshParentOrderContext context{ - true, // enabled + compat::pine::OrderPriority policy; + policy.attach(); + compat::pine::OrderPriorityContext context{ true, // broker flat true, // POOC false, // COOF option @@ -361,7 +393,6 @@ static bool retained_child_predicate_accepts(SortMutation mutation) { false, // stream warmup true, // stream idle 2, - 2, }; PendingOrder child{}; @@ -404,7 +435,7 @@ static bool retained_child_predicate_accepts(SortMutation mutation) { case SortMutation::ExactDefaultOn: break; case SortMutation::FactorOff: - context.enabled = false; + policy.metadata("flat_retained_child_fresh_parent_order", 0.0); break; case SortMutation::BrokerLive: context.broker_flat = false; @@ -525,8 +556,7 @@ static bool retained_child_predicate_accepts(SortMutation mutation) { parent.created_seq = 1; break; } - return internal::retained_child_fresh_parent_order_pair( - context, &parent, &child); + return policy.select(context, {parent, child}).has_value(); } static Bar bar(double o, double h, double l, double c, int64_t ts) { @@ -749,6 +779,100 @@ static void check_cancel_token_scope() { CHECK(probe.later_parent_has_no_token); } +// Public command controls distinguish policy extraction from native activation. +static void check_explicit_attachment_boundary() { + const Bar bars[] = { + bar(100,101,99,100,900000), bar(100,105,95,100,1800000), + bar(100,115,80,105,2700000), bar(105,108,85,95,3600000), + }; + const char* key = "flat_retained_child_fresh_parent_order"; + const double values[] = {0.0, -0.0, -1.0, kNaN, + std::numeric_limits::infinity(), + -std::numeric_limits::infinity(), 0.5, 1.0}; + for (double value : values) { + for (bool attached : {false, true}) { + FreshParentProbe probe(Cell::LongPost, -1, BookVariant::ExactPair, attached); + // Exercise the actual base/C transport, not a derived shadow setter. + strategy_set_syminfo_metadata(static_cast(&probe), key, value); + if (!attached) probe.enable_pine_intraday_cap(); // cap-only is not execution attachment + probe.run(bars, 4); + CHECK(probe.priority_attached() == attached); + CHECK(probe.cap_attached()); + const bool enabled = std::isfinite(value) && value > 0.0; + CHECK(probe.priority_enabled() == enabled); + CHECK(near(probe.position_seen_on_trigger_bar, attached && enabled ? 0 : 1)); + CHECK(probe.trade_count() == 1); + CHECK(probe.fills() == 2); + if (probe.trade_count() == 1) { + CHECK(near(probe.get_trade(0).entry_price, 110)); + CHECK(near(probe.get_trade(0).exit_price, 90)); + CHECK(probe.get_trade(0).exit_bar_index == 2); + } + } + } + FreshParentProbe bare(Cell::LongPost, -1, BookVariant::ExactPair, false); + CHECK(!bare.cap_attached()); + CHECK(!bare.priority_attached()); + bare.run(bars, 4); + CHECK(near(bare.position_seen_on_trigger_bar, 1)); + CHECK(bare.trade_count() == 1 && bare.fills() == 2); + + for (BookVariant variant : {BookVariant::InterleavedFourth, + BookVariant::IncarnationGap, BookVariant::ChildOca, BookVariant::SharedOca}) { + FreshParentProbe probe(Cell::LongPost, -1, variant); + probe.run(bars, 4); + CHECK(probe.priority_attached()); + CHECK(near(probe.position_seen_on_trigger_bar, 1)); + CHECK(probe.pending_book_size_on_reissue == + (variant == BookVariant::InterleavedFourth ? 4u : 2u)); + CHECK(probe.parent_then_child_incarnations == (variant != BookVariant::IncarnationGap)); + if (variant == BookVariant::SharedOca) { + CHECK(probe.trade_count() == 0 && probe.fills() == 1); + CHECK(near(probe.position(), 1)); + } else { + CHECK(probe.trade_count() == 1 && probe.fills() == 2); + if (probe.trade_count() == 1) { + CHECK(near(probe.get_trade(0).entry_price, 110)); + CHECK(near(probe.get_trade(0).exit_price, 90)); + } + } + } + + FreshParentProbe source(Cell::LongPost, -1, BookVariant::ExactPair, false); + const auto native_hash = source.broker_state_hash(); + source.enable_pine_intraday_cap(); + const auto cap_hash = source.broker_state_hash(); + source.attach_pine_execution_adapter(); + CHECK(native_hash != cap_hash); + CHECK(cap_hash != source.broker_state_hash()); // priority attachment has its own hash + const auto attached_hash = source.broker_state_hash(); + source.set_syminfo_metadata(key, 0.0); + CHECK(attached_hash != source.broker_state_hash()); + source.attach_pine_execution_adapter(); // idempotent, must preserve off + CHECK(!source.priority_enabled()); + source.run(bars, 4); + auto copy = source; + CHECK(copy.broker_state_hash() == source.broker_state_hash()); + copy.run(nullptr, 0); + CHECK(copy.priority_attached() && !copy.priority_enabled()); + copy.set_syminfo_metadata(key, 1.0); + CHECK(!source.priority_enabled()); + copy.run(bars, 4); + CHECK(near(copy.position_seen_on_trigger_bar, 0)); + CHECK(near(source.position_seen_on_trigger_bar, 1)); + + FreshParentProbe delayed(Cell::LongPost, 0, BookVariant::ExactPair, false); + delayed.attach_pine_execution_adapter(); // previously supplied off stays off + CHECK(!delayed.priority_enabled()); + delayed.run(bars, 4); + CHECK(near(delayed.position_seen_on_trigger_bar, 1)); + + const broker::OrderPriorityDecision decision{{{{11, 2}, {12, 3}}}}; + CHECK(decision.sequence(11, 3) == 2); + CHECK(decision.sequence(12, 2) == 3); + CHECK(decision.sequence(13, 7) == 7); // replacement cannot inherit by priority +} + int main() { std::printf("pre-armed from_entry bracket path cursor\n"); check_cell(Cell::LongPre, true, true); @@ -786,6 +910,7 @@ int main() { std::printf("exact scope guards and default-on behavior\n"); check_sort_scope_guards(); check_cancel_token_scope(); + check_explicit_attachment_boundary(); std::printf("\n%d passed, %d failed\n", tests_passed, tests_failed); return tests_failed == 0 ? 0 : 1;