Repository navigation
INT26: wave H, the late picks and the corpus re-pin to b40aa8e (1.0.0-rc.1 candidate) - #290
Merged
Merged
Conversation
…ngView AUDIT4 X14 rows G2-09 (M7), G2-10 (M8), G2-12 (M10), G2-13 (M11) and the E20 f1 probe-tail pin. tests/test_adapter_margin_schedule_differential.cpp runs the same bars and orders through the Pine adapter and through a bare kernel host whose margin hooks answer TradingView's money and slice (the twin's), so only the kernel's own scheduling, check kinds and opening gate differ; every section prints both sides and pins the measured difference: - M7: the kernel's AfterApplied point after a leveraged opening or a mid-bar add, and its BarOpen point on a carried commissioned POOC short, are points margin_check_allowed refuses. - M8: a gap-open breach is a market execution at the open, sized on the open's money; no kernel check kind books that row. - M10: the pre-open slice's own x4 parts from the kernel's AfterApplied point (and from ab9714b) on the one-contract band, the +1e-6 restore floor and the frozen signal-time units. - M11: AdmitWithHostMargin and initial_margin_fraction part both ways. - E20 f1 (ruled 2026-09-22): the probe-suppressed tail books the kernel's path liquidation and the adapter's post-script margin call. M7 is also measured against TradingView: four lab tv tapes (tests/fixtures/margin_entry_bar, BINANCE:ETHUSDT.P 15m, rangeProof covered) book the margin call of a leveraged opening ON ITS ENTRY BAR at that bar's low, as the kernel's AfterApplied point does; the adapter books it a bar late or not at all. That is a TradingView-visible divergence, pinned as recorded (not fixed here: the lane measures). Docs made true: ADR-0001 "Margin" (the pre-open slice does have a kernel point beside it) and its initial_margin_fraction row, native-engine.md's margin paragraph, pine-to-native.md and contributing-llm.md (M11), live-surface.md §3.2 (the tail's two routes; the dispatch_bar paragraph named helpers that no longer exist), design rows MG4 and MG15; two design anchors into native-engine.md re-anchored for the moved lines. No src/ or include/ change. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit bafefba06cebfc6989313e91c4a97e1a815a7239) INT26 pick note: the ADR and design pages conflicted on citation digits only (int16_digit_merge: 5 blocks, no text refused). The resolution is PAR-MARGIN's 6574de6d, the same pick onto the same tree (83d1ca7): its two design citations of native-engine.md carried through the exact line map (2941-3009 -> 2963-3031). hunkcheck: every hunk of bafefba0 carried; the two pages differ from its diff in anchor digits only.
…try trails AUDIT4 X14 rows G2-15 (M13), the M16 sibling stop (G2-18), E14's anchored-leg seed (AUDIT3 H6 tapes) and E5's pending-entry arm, each measured against the kernel on the same bars and against TradingView's own trades (lab tv, NYSE:F 15m, ws-report-v1, rangeProof covered; each fixture README names its tapes and sha256): - tests/test_pyramiding_count_differential.cpp (M13): fifteen pyramiding=2 scenarios through the adapter, a bare host with max_open_lots=2 and the tapes. TradingView checks an entry once, at its first eligible point, against the trades then open; max_open_lots books 14 of 15 as TradingView does, the adapter's per-cycle count 8 (it counts a resting entry, admits three market entries on a flat bar, keeps a slot another entry's exit drained). A default strategy.exit(from_entry) under FIFO closes the book in the adapter and one lot in TradingView (P10). All pinned as recorded divergences; the retention reason in ADR-0001 is refuted. - tests/test_zero_trail_sibling_stop.cpp (M16): the bare host with both legs is the adapter bit for bit; the Trail alone rides past the open. TradingView books the touch at the open on 16 of 16 taped trades. - tests/test_pending_entry_trail_tapes.cpp (E5, E14): a trailing exit written while its entry is pending. The quantized arm holds, 28 of 28 (E5's claim, taped); TradingView's running best starts at the activation 13 of 13 while the adopted anchored child names no best_seed and exits 1 to 24 bars later -- recorded divergences, the adoption compare leaving best_seed out. Docs: ADR-0001's max_open_lots row, design MG3 and the rulings summary, the sibling-stop and anchored-leg paragraphs (the latter no longer "an open measurement"), native-engine.md and pine-to-native.md on adoption and the sibling stop, contributing-llm.md's pyramiding row; two design anchors into native-engine.md re-anchored. No src/ or include/ change. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 99d3b9506af49a3c9bdfc5bfd947c12fd9988839) INT26 pick note: the ADR, design and pine-to-native pages conflicted on citation digits only (int16_digit_merge: 5 blocks, no text refused). The two design citations of native-engine.md both sides moved are carried through the exact line map from the pre-pick tree (2963-3031 -> 2970-3038, 1642-1643 -> 1647-1648). hunkcheck: every hunk of 99d3b950 carried; the three pages differ from its diff in anchor digits only.
…rket AUDIT4 X14 rows E19 (the excursion model, G2-22), G2-21 (short-seed report swaps), G2-32 (the 1e-10 dust sweep) and G2-36 (session.ismarket, the CME weekend and 0000-2400 classes), each measured against the kernel on the same fills and against TradingView's own trades (lab tv, ws-report-v1, rangeProof covered; each fixture README names its tapes): - tests/test_e19_excursion_tape.cpp (E19): a corpus probe's own script re-exported (1580 trades, its excursion cells equal to the corpus tape's) and a calc_on_order_fills scratch tape. Where the host-owned model (RULING A48) 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, the COOF scratch TradingView reports as 0/0. One trade per class pinned; corpus-wide the kernel is TradingView's on 315 of the 326 identified disagreements and the host on none. Recorded divergences. - tests/test_short_seed_report_swap.cpp (G2-21): the swap relabels two rows' entry_incarnation into ab9714b's numbering, read against the kernel's own lot identities in the same run; TradingView exports no incarnation, and the Pine host books the collision tape's 13 rows. - tests/test_pine_dust_sweep_paired.cpp (G2-32): the sweep erases a dust lot inside a live book, unlike ab9714b's whole-book reset; TradingView's decimal quantities leave no remnant row, which the Pine host books and a bare host does not (four 2.8e-17-unit rows). - tests/test_session_ismarket_tape.cpp (G2-36): six tapes (ES1!, EURUSD, XAUUSD, ETH; both 2025 DST switches, Thanksgiving) flag every bar in market; the kernel's in_session matches every spelling, the generated predicate misses every Sunday open under a :23456 mask and every bar of 0000-2400. Routing session.ismarket is a codegen change, not made here. Docs: ADR-0001 (the excursion seam, the dust sweep as a quirk, the session.ismarket selection, the excursion columns being report-only), design RP1, RP5 (its "measured in §3.7 part 2" named no short-seed row) and the excursion-mode alternative, native-settlement.md's sweep paragraph ("restates" the legacy rule, it does not), pine-to-native.md and pine_v6_coverage_detail.md on session.ismarket. No src/ or include/ change. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit fd3c72e2d6cc22a77b86a73d2efc36aeed7c968f) INT26 pick note: docs/native-settlement.md conflicted in text. INT25 (K-ULP4) had appended the sentences on the adapter not declaring the kernel's quantity tolerance to the paragraph this commit rewrites; the merged paragraph is this commit's measured text followed by those INT25 sentences unchanged. The ADR, design and pine-to-native pages conflicted on citation digits only (int16_digit_merge, digits carried from the pre-pick tree). hunkcheck: every hunk of fd3c72e2 carried; design and pine-to-native differ from its diff in anchor digits only.
…routes AUDIT4 X14's aggregation rows, measured on the K-IDX tree (the kernel now books lots, rows and interval_index in script-bar space): - F1(e), tests/test_aggregated_entry_bar_index_tape.cpp: TradingView's own tape of a process_orders_on_close script whose every exit reads strategy.opentrades.entry_bar_index / closedtrades.exit_bar_index (lab tv hm-f1e-ebi-pooc-eth and its magnifier-on twin, BINANCE:ETHUSDT.P 15m), replayed on the chart, the plain aggregated (corpus 1m -> 15m) and the magnified path: 26 checks, 0 failures. With the four booking sites of e362bc4b reverted in a scratch build (the kernel books input slots again, and nothing re-stamps them) it fails 10 of 24 checks: no held exit fires, A/B/C close at their timeouts, D never enters. No corpus probe runs an aggregated process_orders_on_close script that reads a bar index; this engine row is the parity witness until the supervisor adds one. - F1's magnified residual, tests/test_magnified_aggregated_tape.cpp: instrumented, the three entry-bar tests of a magnified aggregated run now compare script bars with script bars (0 of 5170 out of space, 4996 on 91d65ad); sixteen lab tv tapes of lane F1's differential script book its 12 rows as this engine does on every path (ab9714b's 9 were its own error). The variants the magnified run books exactly are asserted at chart-bar granularity; TradingView dates a magnified fill at its chart bar's open (218 of 218), a recorded presentation divergence. - M20 / G2-23, tests/test_adapter_security_route_conditions.cpp: every condition that keeps request.security on the source evaluator, each reachable one tripped alone against a control site, and where a kernel subscription spells the same site, the evaluator's value against a bare kernel host's on every chart bar. ADR-0001's row named four classes; the predicate has sixteen conditions, now listed and measured. Docs: design §3.8 (the gate that can now see F1's regression, AG1's TradingView proof, AG2's magnified dating, the magnified residual closed), ADR-0001's subscriptions row and native-engine.md's route paragraph; one design anchor into native-engine.md re-anchored. No src/ or include/ change. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 206a739d2d9a997ae0516064e668ea48979a89ca) INT26 pick note: the ADR conflicted on citation digits only (int16_digit_merge, digits carried from the pre-pick tree). hunkcheck: every hunk of 206a739d carried; the ADR differs from its diff in anchor digits only.
AUDIT4-codex A4-ACID-COVERAGE. tests/test_native_acid_composite.cpp is one source-free strategy on NativeStrategyHost (kernel headers only) that exercises every feature of the G1 acid test and prints PASS per feature: F01 fee-reserved Sized entry, F02 anchored bracket legs on a price grid, F03 a keep_binding re-issue, F04 a trail in ticks, F05 a maintenance-only margin model and its liquidation seen through the open lots, F06 an FX step, F07 a risk limit and an opening refused with RiskLimit, F08 calc-on-fills, F09 an hourly subscription plus an auxiliary 5m->30m series that is actually delivered (44 buckets; the audit's copy wiped its own series with an empty begin-time declare and so read aux=0), F10 session-day flags, F11 a FIFO partial close across lots and an exact-sum close that leaves no dust lot (K-ULP3), F12 typed refusals, F13 magnifier counters, F14 the kernel-recorded report with per-bar hashes. The C half (tests/test_native_acid_composite_c.c, native_c_api.h only) configures through strategy_configure_native_ext_result_v1 on a handle it first refuses (GRID_REQUIRES_PRICE_TICK, stays UNCONFIGURED, then Ready, then WRONG_PHASE), runs the same commands in batch and stream, and prints the same FIELD lines: the C++ half compares the two sets in process, 915 of 915 identical, every C++-only family named by an EXCLUDED line (the four C-SURFACE-2 items ruled to 1.1.0, closes_session_day_open_ended, the protected broker fold, quote_origin_ordinal and driver_statistics). The batch/stream comparison is explicit: trades, fills, curve, series deliveries, check points and the broker half agree; the per-bar hash rows, the final hashes and the forming bar's closes_session_day are driving-mode keyed, each rule printed with its documented source. Findings printed, not asserted: under IntrabarPath::lower_tf the margin model is checked at the bar's first sample and after fills only, never per sample, contrary to native-engine.md's "re-evaluates at each delivered sample". Source-free: registered like test_native_c_api, so it runs in the kernel profile and in release. native-engine.md records the C port's measured exclusions beside the COVERAGE block. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 58e0f16275ea57148f3385d564df88ae7cc2e70c)
… sweep catches AUDIT3-opus2 H12 (carried by AUDIT4 X14): measure the 30-probe pull-request subset against mutations. 44 single-line mutations (22 kernel: matching, fees, sizing, path order, sessions, timeframe aggregation; 10 adapter; 12 ta) plus 17 designed afterwards as a holdout, each built on spark and run over all 312 corpus probes, the unmutated tree 312/312 moved=0 before, between and after: the full sweep caught 39, the 30-probe subset 19. Escaped: ten ta.* arithmetic mutations, the AUTO path-order tie, an HTF aggregation low, strategy.risk.max_position_size's equality gate and the stop-limit entry (the last two with one corpus witness each, outside the 40-item scan the subset was built from). - scripts/corpus_parity_subset.txt: 24 probes appended (the original 30 untouched): the greedy cover of the escapes, one witness per ta class a generated strategy constructs, and the two holdout witnesses. The 54 catch all 39; subset-only reruns of the escaped mutations detect them. Its header no longer claims every one-witness mechanism by construction. - scripts/corpus_parity_mutation_battery.tsv: the 39 caught mutations with the probes that caught them. - scripts/test_corpus_parity_subset_cover.py, a new ci_preflight stage: fails when the subset stops witnessing a recorded mutation (it reports 20 escapes against the original 30). - docs/ci.md records the battery and the full-sweep timing it measured (19-24 s ten-wide, 113 s serial, after a 99 s build); the "30 probes" counts in docs/ci.md, CONTRIBUTING.md, README.md, check_corpus_parity.sh and the two workflows' comments now read 54, the historical timings are labelled as the first 30's. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 9c0579d2b332eaebe579a9b5baa7aa8dcedb8be6) INT26 pick note: the two workflow comments this commit re-counts were rewritten on main (57c89ff, the advisory PR subset and the maintainers' parity status). The merged comments are main's text with this commit's count: corpus-parity.yml's "PR EARLY SIGNAL" and "advisory PR subset" sentences name the 54 probes; ci.yml's rewritten comment names no count. No other hunk differs from 9c0579d2 (hunkcheck).
AUDIT4 X14 row "N12's corpus half" (DONE-CLAIMED-ONLY: design §3.6.1 cited an uncommitted, env-gated experiment). Ruled, with its pin and a committed reproduction: - It cannot be a CTest row. Pine's strategy.risk statements reach the adapter on script bar 0, after project() built the run spec and configure_native digested it; prepare_native_begin is final and a second configure_native while Ready is refused, so no in-process test can seed the kernel's NativeRunSpec::risk for a Pine run without a source change. The pins stay the five probes' baseline rows and test_adapter_risk_relower's SW check. - scripts/check_seeded_risk_experiment.sh applies tests/fixtures/seeded_risk/n12-experiment.patch (N12's own experiment, recovered from its session record and ported; inert without PF_N12_ROUTE) to a throwaway copy, builds the runtime and the five risk probes, checks the unseeded runs still hash to the parity baseline, runs them with the kernel's rule seeded in the adapter's place and compares expected.tsv. On this tree (spark, 29 s) it reproduces every count the design states: 1502/1502 and 1464/1464 identical, 3840 of 3916, 312 of 604, 2370 of 2386 (two extra rows) on the ten TradingView-recorded columns. Exit 1 when the measurement moves, 2 when the patch no longer applies. Docs: design §3.6.1's acceptance evidence and ADR-0001's risk row cite the script; one contributing-llm.md anchor into the design re-anchored. No src/ or include/ change. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit bf5a11fbb4248d3f3bfbf5fcce1c610705c12f41) INT26 pick note: the ADR conflicted on citation digits only (int16_digit_merge, digits carried from the pre-pick tree). hunkcheck: every hunk of bf5a11fb carried; the ADR differs from its diff in anchor digits only.
…84, kernel 271 -> 272 Counted with ctest -N on this tree, configured as ci_verify's release and kernel profiles: release registers 684 rows (the twelve H-MEASURE rows on top of 672, no row skips), kernel 273 (test_native_acid_composite is the lane's one source-free row; the WebSocket row still skips on a system libcurl, so 272 run). Each row is named beside the floor it raises. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 2b494497c8707c3365218cac4ae8d9548dc3c67b) INT26 pick note: scripts/ci_verify.py's two floors conflicted with INT25's (wave G: KERNEL 277, RELEASE 678). The merged floors add this lane's rows to INT25's -- KERNEL 277 + 1 = 278, RELEASE 678 + 12 = 690 -- with both comments kept; INT26 item (iv) recounts every floor with ctest -N per profile on the integrated tree. The four floor citations in CONTRIBUTING.md and contributing-llm.md name the merged lines (ci_verify.py:247 and :371).
…ne's dotted namespaces (R5 lane H-DOCGATES, X12) AUDIT4-opus X12 (kres K4, K5, K11) found check_kernel_residuals blind in three ways. Its own probe battery, copied and re-run on this tree's macOS kernel archive, flagged 16 of 51 probes at 21bdc2e8; it flags every Pine probe now, on all four surfaces (strings, nm, header literals, kernel literals). - A ruled name never covers a text. The bare words `Pine` (the PineMap row) and `syminfo` passed "match Pine semantics exactly" and "syminfo.tickerid must be set", and any ruled name passed any text around it. A text is now ruled by its exact words; a name by its name. - The vocabulary reads Pine's other dotted namespaces (timeframe., input., str., math., matrix., map., line., xloc., syminfo., format., currency., dayofweek., ...; the namespace must open the run, so a compiler's l_switch.table.<symbol> label stays silent), the camel-case Tv/TV spelling, bare islastbar/isfirstbar, heikinashi, renko, tradingday and the word Pine in a text. - A row whose second column says "no archive symbol" is held to it: PineMap or a matrix text in the archive or a kernel literal fails. - The key line counts the rulings the vocabulary reads (174 identifiers, 45 texts), not every first-column token (202/25 counted 27 + 22 mechanism-table names), and ci_verify.py floors both counts (ADR_RULED_IDENTIFIERS_MIN / ADR_RULED_TEXTS_MIN), passed as --min-ruled-identifiers / --min-ruled-texts. The 57 installed-header literals are ruled, not reworded (rewording a generated strategy's runtime diagnostic is the GAP-15 codegen decision): one new ADR row holds the 32 distinct dotted argument-check texts of generic_matrix.hpp, map.hpp and drawing.hpp; the PineMap row holds map.hpp's four static_assert texts in place of `Pine`; the deprecated-alias row holds its six alias texts. No source, header or object changes: scripts, tests and docs only. Mac kernel archive: 21bdc2e8's checker "146 archive hits ... against 202 ruled identifiers and 25 ruled texts: 0 findings"; this commit "146 archive hits ... 326 installed-header hits ... against 174 ruled identifiers and 45 ruled texts (floors 174/45): 0 findings ... OK". test_check_kernel_residuals: 39 -> 46 cases (ReachTests), all pass. A symbol a compiler split or cloned (GCC's `.cold` / `.part.N` / `.isra.N` / `.constprop.N`, clang's `.cold.N` / `.llvm.N`) is still one name: x86-64 GCC 13's archive prints `strategy_set_syminfo_type.cold` and six more ruled exports that way (first NTU run of this change: 7 findings, all of that shape). Doc deletions this commit names (rewritten, not dropped): - ADR residual intro, "a text by a phrase it contains" (lane F6's rule) -> "a text by its exact words"; - ADR PineMap row, "where the bare word `Pine` is read" (lane F6); - native-engine.md "What the kernel-only archive still names": the vocabulary list and "requires every match to be listed, by name" (gap lane P2's wording, pre-F6). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit d5b6583119d321e3c6d41a2dc4e1d2ccb5c86fe1) INT26 pick note: scripts/ci_verify.py conflicted where INT25 and H-MEASURE rewrote the floors this commit sits beside; its ADR ruled-count floors are inserted after the merged RELEASE_MIN_TESTS, every floor and comment of both kept. hunkcheck: every hunk of d5b65831 carried unchanged.
…he doc-revert stage (R5 lane H-DOCGATES, X13) AUDIT4-opus docs-a (f)/N7: no silent doc revert reached main between fd78592 and 91d65ad, but nothing would have caught one. Lane B-C-SURFACE's rebase kept its own base's pages, dropping V19-D's keep_handle / keep_binding row and putting D2-C's runtime-block wording back; the integration caught it by reading. scripts/check_doc_reverts.py compares each commit with its parent, sentence by sentence (paragraphs, list items, table cells of README.md, CONTRIBUTING.md and docs/**/*.md; anchor digits and content pins normalised). A deleted sentence, or older wording restored over newer (a sentence the page held before its parent), must be named by the commit's message: the lane label or hash of the commit that introduced it, six consecutive words of it, or its table row's key. Fresh rewrites and re-anchors need no name. Range: non-merge commits since the merge base with main; with no main ref (the lab's remote hosts) it walks back from HEAD; a commit whose tree predates the gate is never judged. --base/--head/--message-file judge one replayed change. Acceptance (both run on this tree): - 597a4367's nine pages replayed onto db98990 with 597a4367's message: "17 unnamed sentence deletions or reverts ... FAIL" -- V19-D's keep_handle rows (introduced by c619f5f) and D2-C's ambient-block wording reverted to "thread-local"; - e3e20cb with its own message: "0 unnamed ... OK"; the same change with the message "docs: tidy" fails on the 11 PERF-P1 sentences it deleted (introduced by 36a6a7e, cherry-picked from 3bd72fb). Preflight stages doc-reverts and doc-reverts-tests (binding); CTest row test_doc_reverts (10 cases over throwaway git repositories), so the floors rise: KERNEL_MIN_TESTS 272 -> 273, RELEASE_MIN_TESTS 673 -> 674. docs/ci.md, README.md, CONTRIBUTING.md and contributing-llm.md name the gate; the floor citations re-anchored (ci_verify.py:229 -> :231, :332 -> :336). No sentence is deleted by this commit. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 34ae339e3488c2ec22e6724643d65d2ecea73a48) INT26 pick note: the floors conflicted with INT25's and H-MEASURE's; each floor adds this commit's one row to the merged value (KERNEL 278 -> 279, RELEASE 690 -> 691), both comments kept, and the four floor citations name the merged lines (ci_verify.py:249 and :375). hunkcheck: every other hunk of 34ae339e carried unchanged.
…borrowed citation claims nothing (R5 lane H-DOCGATES, X13)
AUDIT4-opus docs-a N1/N2 (GAP-1, GAP-5): a backticked sha256 pin before
an anchor dropped the symbol claim and was compared alone, so whatever
the cited line held passed -- a wrong line (P09), a blank line (P10), a
garbage hash before a real one (P11), a ruling row pinned over unrelated
code (P16) -- and 44 of the tree's 92 pins held something other than
what their sentence claimed. In a citation list, a citation that prose
introduced after a comma ("FX curve c_abi.cpp:882, probe c_abi.cpp:882")
borrowed the list's first symbol.
check_doc_anchors.py:
- the nearest non-pin span before a pin is still the claim and is still
checked; a ruling row needs its symbol or fragment, pinned or not;
- PINLINE (a pin on a single line), PINEMPTY (a pin over blank lines),
PINDOUBLE (two pins before one anchor); a pinned comment-only window is
COMMENTONLY unless the sentence says it cites a comment;
- a citation that prose words introduce after an earlier citation's
comma is NOCLAIM until it carries its own backticked symbol.
Self-tests 45 -> 53: PinMustFail (P09, P10, P11, P16, the comment window,
a pinned range with its claim) and BorrowedClaim. Against 21bdc2e8's
checker the six must-fail cases fail and the two controls pass
(anchor_selftests.before.txt in the lane scratch).
The pages: on HEAD the new rules raised 64 findings (23 PINLINE, 2
PINDOUBLE, 8 COMMENTONLY, 1 SYMMISS, 30 NOCLAIM). Every pin was
re-derived on this tree (claim, window, verdict, true location) and
re-cited as a symbol claim at its declaration, or as a pinned range
whose sentence names the comment it cites; every comma-borrowed citation
now names its own symbol at its true line (e.g. design OT5: FX curve
`strategy_configure_native_fx_curve_v1` c_abi.cpp:940, probe
`strategy_execution_contract` c_abi.cpp:873; FP1's fill_through
enforcement `protect_limit` :6103-6113 and InvalidTerms :4958-4976).
The anchor gate reads 1657 anchors, 0 bad. docs/ci.md and the checker's
docstring state the new rules.
Doc sentences this commit deletes or rewrites as history (named for the
doc-revert stage). Most of the pins it removes are B-DOCS' (d3cca9e,
cherry-picked from 5c3c9ae), so the unpinned wording that returns in
pine-to-native.md's `open_profit` rows and `strategy_create` row, and in
design E2's margin sentence, is that commit's pins undone on purpose:
- design §2.vi claim rows 2, 3, 6, 8 and 9: their plan-era anchor lists
(B-DOCS' pins, 91d65ad's re-cites) become "at 73817c1 (overtaken ...)";
row 1 is re-cited to today's Trigger/OrderIntent/Owner/Group/PointBudget;
- design §2.i "Today: one static library always compiles the source
layer" -> "Before L1" plus the tree's current CMake lines (the
sentence 1dd5430 wrote, "sits in the *main* list", now "sat");
- design "Its callers were the adapter only (pine_adapter.cpp:2605, ...)"
for the deleted admission_retention -> its history (73817c1);
- design "The dead helpers engine.hpp:1255, engine.hpp:1265, ... are the
reference arithmetic" -> they are deleted; the kernel's own step is
native_matching::apply_slippage;
- design P6 "(`sha256` `sha256` native-engine.md:421-435)" -> the page
section "Stream limitations (current)";
- design "degenerate equity metrics (engine_metrics.cpp:3)" drops its
anchor (pre-L2 behaviour).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit 85910410f08abac32922125b4c3b0e2a01db598e)
INT26 pick note: the four pages conflicted where INT25 and H-MEASURE had
moved or rewritten the rows this commit re-cites. Each merged row keeps both
intents:
- ADR "Margin": this commit's three claimed citations, then H-MEASURE's
measured paragraph unchanged.
- design rows 1-3, 5, 6, 9 and P4: this commit's re-citations (symbol claims,
or "at `73817c1` (overtaken ...)"); INT25 had only moved their digits or
re-hashed their pins. Rows 7 and 8 keep INT25's text (row 8 is
C-SURFACE-1's current C-surface statement with its pins); this commit left
row 7 alone and marked row 8's old statement overtaken.
- design (a) NEUTRALITY: this commit's `PASS` claim; main rewrote the
AGENTS.md section it cited (116c461), so the pin now covers main's
"A campaign PASS verdict still binds the exact engine and codegen HEADs"
(AGENTS.md:139-140).
- OL14 and pine-to-native's `pyramiding` row: word-level merges, INT25's and
H-MEASURE's words with this commit's claims.
Every other hunk of 85910410 is carried (hunkcheck); citation digits are
re-anchored once on the integrated tree (INT26 item vii).
… src/include paths (R5 lane H-DOCGATES, X13) AUDIT4-opus docs-a GAP-6 (probes P19, P20, P29-P32): the lint was blind to a dead `src/` or `include/` path, to a stale `native-consumer/v8` or `native-driver/v4` domain, to "`PF_ABI_VERSION` is 3" and to "PineForge 0.13.1, the current release". - rule 3's live hash domains also read every "native-<name>/v<n>" literal the tree declares (market_driver.hpp: native-driver/v5, native-consumer/v9, native-calendar/v1); rule 7 judges a marker on one; - rule 5 reads `src/` and `include/` paths to a C/C++ file or directory; a `git show <ref>:path` object path and a file its clause calls generated are not dead; - rule 8 (new): a stated PF_ABI_VERSION / PF_NATIVE_API_VERSION must be the header's #define; a higher number is a forward reference unless stated as current, a lower one needs the marker and a history framing; - rule 9 (new): a PineForge release stated as the current one must be VERSION's. Self-tests 55 -> 67 (MustFailH: P19, P20, P29, P30, P31, P32, a marker on a native domain stated as now, a forward ABI number stated as current; MustNotFireH: live values, forward/historical numbers, git object paths, a generated header, a foreign crate's src/main.rs, a native domain as history). Against 21bdc2e8's lint the eight must-fail cases fail and the four controls pass (lint_selftests.before.txt in the lane scratch). The tree had three offenders under the new rules, all in the design record: row o (§2.ii) now says the admission journal "was" include/pineforge/market_admission.hpp + src/market_admission.cpp until N14 moved both under source/ (marked history), and §2.iii's O proposal is spelled `c_native_host.cpp` like S's, not as a tree path. The lint reads 0 offenders; docs/ci.md lists the new families. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 845b07a5a345312bfa85a71fbfd9b5aeab514724)
…r ordered, and a lint that keeps the class out (R5 lane H-DOCGATES, X17) AUDIT4-opus perf N-2: XPLAT1's bug class (e8bc323) came back. C++ leaves a call's argument order unspecified and a binary operator's operands unsequenced; GCC on x86-64 draws right to left, AppleClang left to right, so ten call sites in five test files (P7's and L2's fixtures, TA1's tests) built a different random battery on each compiler. The lint finds five more, in unsequenced `*` operands (test_adapter_live_state_equivalence, test_native_direct_mutation x2, test_native_handle_stable_replace x2). Each of the fifteen sites now takes one draw per statement into a named local, in the order the arguments are written (AppleClang's), so no Mac output moves: - the 15 affected test executables, Release, AppleClang 17 (arm64): stdout before vs after identical in every non-timing byte (15/15); - the same 15 in Docker xplat1-gcc13:amd64 (GCC 13, x86-64): before, the printed batteries differed from the Mac's in 7 tests (test_adapter_purge_index "14844 commands" vs 14575, test_native_settlement_carry, _fused_settlement, _in_place_reads, _precommit_hook, _quiet_point, _direct_mutation); after, x86-64 prints the Mac's bytes in all 15. Every test passes on both, before and after. So the only output that moves is x86-64's random battery, onto the one the Mac already runs; no pinned value, hash or fixture moves (nothing in these tests pins a draw-dependent count, or x86 CI would have failed before). scripts/check_rng_draw_order.py (binding preflight stages rng-draw-order and rng-draw-order-tests): a draw is a call that advances a std:: engine or a class whose members apply a PRNG step, found transitively through drawing helpers and lambdas; it reports ARG (two draw-bearing arguments of one call), OPERAND (two draw-bearing operands of an unsequenced operator) and BYVALUE (a generator parameter copied while other arguments are evaluated), and leaves the sequenced forms alone (one per statement or declarator, braced-init lists, && || ?: and the comma, C++17's << >> [] = orders, lambda bodies). 21bdc2e8's tests: 15 findings; this tree: 0; self-test 5 cases (a must-fail fixture of XPLAT1's three shapes and each kind, a must-pass fixture of every sequenced form). CONTRIBUTING.md lists the gate. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 7536bf01e0a4cbfdb32141b9065891048f4366a6)
…-day memo a witness that reads it (R5 lane H-DOCGATES, X17) AUDIT4-opus perf N-7 and D-17: two INT23 witnesses proved nothing. 1. uninstall_runtime_ambient's debug-build LIFO check (09ced53, INT23) had no row: a mutant deleting it survived every profile. tests/test_native_runtime_ambient_lifo.cpp holds the legal order in process (each block's writes copied back down to the thread's own) and, in a forked child, the outer block leaving first: a library built with its debug checks (PINEFORGE_LIBRARY_DEBUG_CHECKS=$<CONFIG:Debug>, from tests/CMakeLists.txt; the TU strips NDEBUG like every test) must die of SIGABRT inside the call; any other library must return, leaving the thread's own block in force with the inner block's write lost -- the silent state loss the check exists to stop. Measured on a scratch copy of this tree: Debug "ok (16 checks)", Release "ok (19 checks)", Debug with UBSan ok; with the check deleted, Debug fails 2 of 16 (the child returned). This tree's Release kernel build: "ok (19 checks)". Source-free, so it runs in the kernel profile too: KERNEL_MIN_TESTS 273 -> 274, RELEASE_MIN_TESTS 674 -> 675 (recorded below both floor lines so the pages' citations of them do not move). 2. test_chart_day_memo's `CHECK(pair.kept.holds_cache())` became vacuous with D2-C: the consumer holds the adapter's lookup index on every chart, so INT23's mutant cd5 (a memo never kept or read) passed. The new memo_witness reads the memo in place and plants keys in it (test-only: the index's day_lo / day_hi / day_key offsets come from a layout mirror of AdapterLookupIndex, held to the whole days UTC reads keep before anything is planted, so a drifting layout fails instead of writing over another member): on each UTC spelling a read keeps its whole floor day and key and a planted key answers exactly that day; on each chart timezone nothing is kept and a planted key is never answered. Mutants on a scratch copy: cd1-cd4 still fail; cd5 (never read), cd6 (kept, never read) and cd7 (a zoned chart consults the memo) now fail where the old check passed all three. No source change: tests only. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit d5ead4d5893e175f431bbd9b8d25f138fe6d5706) INT26 pick note: the floors conflicted with the merged ones; each adds this commit's LIFO death row to the merged value (KERNEL 279 -> 280, RELEASE 691 -> 692), with this commit's comment kept below RELEASE_MIN_TESTS so the cited floor lines stay put. Every other hunk of d5ead4d5 carried.
…ext script-ABI epoch's schedule are written down; three comments say what the code does (R5 lane H-DOCGATES, X17) AUDIT4-opus X17 (perf N-1, N-4, N-5, N-6, N-9, N-10; K1-9; L4-10), the documentation half. Comment-only for the three C++ files: their code and literals are token-identical to HEAD's (scripts/cxxlex.py), and the Release objects of src/native_calendar.cpp (which includes native_calendar.hpp) and src/source/pine_strategy_host.cpp (which includes pine_adapter.hpp) are byte-identical before and after (sha256 ccd2c0b06f48..., c9ce59093717...). - TLS wording: pine_strategy_host.cpp said D2-C left "no thread-local access per bar"; it left no thread-local WRITE. The comment now names the readers that still reach the block through the thread's pointer once per call (the extremum rings behind ta.highest / lowest / highestbars / lowestbars / stoch / wpr / range; the day partition behind the default ta.vwap, crosses_boundary(DAY) and the session-period helpers), measured 1.000 access a bar per call by AUDIT4. - K1: native_calendar.hpp claimed every instant a held session day holds() keys to its ordinal; America/Sitka and America/Juneau in October 1867 under "2330-2300" hold 30 and 45 instants (all out of session) whose own session_day_at carries another ordinal. The comment states the guarantee where the cycles tile and names the exception. - L4: the two retired receipt-reader slots and their waivers are scheduled for the next engine_script_run epoch (slot comment, both waiver rows, and the progress page). - docs/native-refactor-progress.md "Deferred performance work": D2-B, the PERF-D3 S1a / S1b / S1c / S2 / S2e rows and the quiet-run loop, PGO, L3's compact records, checked-values handoff and chunked trades_ store, the zoned chart-day memo, and the thread-local readers that remain -- each with its measured size (lane, host, tool), the ledger ruling that deferred it, where its prototype lives (perf-d2/proto-throwaway 92e85571, perf-d3/proto-throwaway a820b7df, r5/l3 b33ea659) and what reopens it; "audit-off mode", "LTO" and "data-oriented layout" are struck until a design note defines them. - "Recorded witness drift": K24's pre-size is dormant under Window retention; PERF-L4 reads the receipts 3.09 times a bar, not once (test_adapter_quiet_bar_probe on this tree: ReceiptRead asked 40996, 81.8 % stopped at the gate, against 13248 for a once-per-bar gate); D2-C's carry counts moved 479/397 -> 489/412 at dbcca85 (bisected on macOS), and x86-64 now prints the Mac's numbers after this lane's one-draw-per-statement fix. - The page joins check_doc_anchors.py's published set, so its 28 new citations are held; the pages' anchors that the comment lines shifted are re-anchored (native-engine.md, the ADR, the design record). No sentence is deleted: the pages gain sections, and the re-anchors change digits only. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 2201c1ac15ef463a8f75867651ee96c45e993f04) INT26 pick note: the ADR, design and native-engine pages conflicted on citation digits only (int16_digit_merge per line, digits carried from the pre-pick tree; one ADR citation of pine_strategy_host.cpp both sides moved taken additively, 1925 -> 1931, re-judged at INT26 item vii). hunkcheck: every hunk of 2201c1ac carried; two pages differ in anchor digits only.
…r writes gets an ADR-0001 row, the account of TradingView-justified comments is complete, and a gate holds the inventory (R5 lane H-DOCGATES, X10) AUDIT4-opus X10 found the ADR contradicting itself and the tree. Each sentence was re-derived on this tree: - The examples sentence claimed every C++ host includes only native_host.hpp. Three include native_toolkit.hpp or native_module.hpp (both include native_host.hpp) and the two C hosts include pineforge.h; "each including only `<pineforge/native_host.hpp>` (or `native_c_api.h`)" is rewritten to say so. - The build_close_trade_with_costs row still said "One question stays open, recorded at the site: the net basis is applied to a host-owned excursion's magnitudes too (RULING A48's hook)". R5 lane F3 closed it in 684800b; the row now says so and scopes the net basis to the kernel's own sampled excursions. - The neutral-spellings row said map.hpp and drawing.hpp are neutral names with deprecated pine_* aliases, "already ruled: "Neutral spellings" above" -- a section that does not exist, contradicting the residual table's PineMap row (primaries with no neutral alias). The row now names both cases and cites the two residual rows. - "They do not yet account for the whole population" (the paragraph ending "until each gets a row or moves") and the Consequences bullet "Not yet fully accounted for" contradicted rule 2's "no site left unruled". Four Section B rows close the eighteen unruled lines the audit's closure grep found (the chart-day partition, the bar-time accessors, the offset sign, the grid and lot helpers); the paragraph now records the re-taken census (369 comment lines in 44 of 92 files, none unruled) and the bullet says the count is held by reading, not by a gate. Rule 2 pointed at "the section below"; the section is above. - Rule 1 now names the generated-code language runtime and its admission test, which the three category rows apply. - The subscriptions row listed four exclusions ("the sites the predicate leaves out (lower timeframe, lookahead, auxiliary, streams) keep the source evaluator"); declare_security_sites_to_kernel has fifteen and declares every site or none. The row lists them. - Fourteen new rows in "Kernel state the adapter sets" cover every seam and member the new gate finds, including the two whole-struct current_bar_ writes (E21 check e), broker_fill_event_seq_, the dead source_stream_entry_comment (scheduled for the next script-ABI epoch in docs/native-refactor-progress.md), fold_exit_trail_peak_, NativeHostCache and the rows AG1/AG2 re-date. The dust sweep is recorded OPEN for lane H-THIN (A4-DUST); the position_entry_count_ overwrite is recorded OPEN. - Design row RP5 said the short-seed swaps are "measured in §3.7 part 2"; no row there measures them, and it now says so. The second "### 3.8" (lane F9) is §3.9, and RP9's "§3.8 records the old quadratic adapter fold" now points at it. - Two engine.hpp comments were false: "Generated code reads them for Pine's bare ``hour``" (the transpiler emits pine_hour(..., syminfo_.timezone); no corpus strategy names a _bar_* accessor) and script_tf_'s writers "(both sites live in engine_run.cpp)" (the one writer is the Pine host). Comment-only, line-count preserving: all 86 library objects are byte-identical with and without the edit. scripts/check_kernel_seam_rows.py (a binding ci_preflight stage, with its must-fail suite as ci_preflight stage and CTest row test_kernel_seam_rows) fails when a kernel `virtual source_*` seam, a BacktestEngine member the source layer writes, or a Trade / PyramidEntry field written through the kernel's rows has no ADR-0001 row naming it in its first cell. Over this commit's parent it reports 43 without a row; here 0. It reads class bodies itself: check_broker_state_hash_coverage.py loses a member declared right after an inline function body (current_bar_, bar_magnifier_enabled_, trace_buffer_). KERNEL_MIN_TESTS 274 -> 275, RELEASE_MIN_TESTS 675 -> 676. Sentences deleted or rewritten, by the commit that wrote them: ca0aac5 (INT16's examples sentence), 2757095 (P2's lead-in of the mechanism table), 5691220 (L14-C's neutral-spellings row), 2dd9834 (F2's "The rows above account" paragraph and its "Not yet fully accounted for" bullet) and d3cca9e (the gates paragraph's closing sentence, now naming the seam-row gate beside the review record). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 4cbc6ab6c1d8925d2d9353fc030ab511665252f9) INT26 pick note: the merged pages keep both sides. - ADR-0001 inventory: INT25's K-ULP4 and K-ULP5 rows stay after the journal window row (its V19-FIX wording kept), then this commit's fourteen rows. - ADR `subscriptions` row: this commit's all-or-nothing predicate list, plus the one clause it left out (`declare_security_sites_to_kernel` also refuses a registry whose `sec_id`s are not dense from 0), then H-MEASURE's measured sentence on what each reachable clause changes (c77ee9f9). - ADR close-trade row: this commit's closed A48 question and H-MEASURE's report-only excursion columns (word merge). - ADR rule-2 paragraph: this commit's gate list, then INT25's C-SURFACE-1.0 transport ruling section unchanged. - design RP5: H-MEASURE's measured short-seed sentence stays; this commit's "unmeasured: §3.7 has no row for them" was true only before H-MEASURE's `tests/test_short_seed_report_swap.cpp` (37090e1). - floors: this commit's seam-row self-test adds one row to the merged values (KERNEL 280 -> 281, RELEASE 692 -> 693). check_kernel_seam_rows on the merged tree: 3 seams, 44 written members, 0 without a row.
…does not expose, its reason and the checker row that fails when the gap closes; no page claims C/C++ parity beyond it (R5 lane H-DOCGATES, C-surface 1.0)
Supervisor ruling 2026-09-26: C-SURFACE-2 moves to 1.1.0, so the 1.0
docs list every C++ capability the C surface does not expose, each with
its reason and checker row, and nothing claims C/C++ parity beyond that
list.
docs/pages/native-engine.md "The 1.0 C boundary" replaces "What is not
exposed, and why", which named the five excluded host members and said
of the preview that "`strategy_native_execute_current_v1` answers the
same verdicts" -- it applies the command, so it is no preview. The table
has 27 rows: the five COVERAGE `[--]` members, the deprecated
hash_source_extension seam, the KernelRecordedAtHostMarks exclusion
(reworded: the kernel's mark is reached only by the Pine source host; a
C++ host records its own points), and 21 C_V1_EXCLUSIONS rows -- the
replace options, the applied event's tail, a closed row's entry comment,
closed rows in place, the working request's whole definition, the
open-ended session-day fact and the rest of the callback contexts,
host-sized openings, the terms hook's units answer, the excursion facts'
rate, the hash sink, the entry-bar mask outside on_applied,
timeframe_undetected, the inherited statistics, the hook views, the
command events' payloads, the command results, native_state()'s spec and
failure context, trace rows and hook re-declaration, the C++ library
around the host, and native_toolkit.hpp. The four C-SURFACE-2 items say
1.1.0; the rest say they have no lane.
scripts/check_native_c_api_surface.py: each C_V1_EXCLUSIONS row pins its
C++ declaration (a whole-word match) and one or more (C record, pattern)
pairs whose pattern must stay absent; every pattern tolerates a prefix
and a suffix (`\w*`), because the old draft's pins caught only the plain
spelling and let strategy_closed_trade_entry_comment_v1, a
keep_handle-carrying replace call, strategy_native_submit_bracket_v1 and
a request_origin / request_label applied tail through. The page must
cite every row exactly once and no row the checker lacks. Ten new
self-tests: those four spellings, a pf_native_applied_ext_v1 beside v1,
an input interval on the decision, a C++ declaration that goes, and a row
missing, doubled or made up on the page. Against this commit's parent
checker all ten fail (7 failures, 3 errors); here 29/29 pass.
Parity claims narrowed where they went past the boundary: native-engine
"`<pineforge/native_c_api.h>` is the C spelling of all of it", the
reading table's state / working / events / current-point rows (partial),
native_sized_units's C cell (it has one), the preview's C cell, the
report mark "the host calls the kernel's report mark", the spec
extension's "The one field of `NativeRunSpec` it deliberately does not
carry is `identity`" (also timeframe_undetected), on_close_units "the only
half this header exposes"; pine-to-native "needs no C++", the host-sized
answer "A C host answers the same question through `on_close_units`",
"Three rules make the C door behave like the C++ one" and the "Five
members have no direct C spelling" paragraph; README's three front doors
("so they match trigger, price fills, book lots and settle identically")
and "to its C++ **and** C spelling" (also index.md and contributing-llm);
the ADR's C API bullet, its route-or-ruling sentence and the
KernelRecordedAtHostMarks row; design §2.iii marked as the L13 plan.
Header comments (comment-only, line-count preserving; all 86 library
objects byte-identical with and without them): native_c_api.h's opening
("It is the C spelling of ... NativeStrategyHost"), the
inspect_current_execution COVERAGE row, the spec extension's omission,
on_close_units; native_host.hpp's C spellings of native_state, events,
current_execution_point, resolve_execution_terms, inspect_current_execution
and the two configure calls; native_order.hpp's HostSized note ("the C
surface refuses HostSized under any owner but BindCohort" -- a Book-scoped
WaitForApplied close is admitted too).
Sentences deleted or rewritten, by the commit that wrote them: f22a34e
(N8's "What is not exposed, and why" lead), d3cca9e (its five-member
list and the market-only note), 69228e6 (L14-C's native_sized_units and
preview C cells), 074f648 (F4's KernelRecordedAtHostMarks row reason),
2fcbb52 (F2's "Not every member of the C++ host has a C spelling"),
ca0aac5 (INT16's five-member sentence on the migration page) and 4fb9db3
(L14-B's CONTRIBUTING row for a C kernel-driving export).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit 77a3eacb6e24fec8d98c1d074bfaf8943cdfdb9a)
INT26 pick note: this commit was written before INT25's KERNEL-EDGE
(409ebad), which made the kernel's report mark installed C++ API
(`NativeStrategyHost::mark_native_report_point`, a COVERAGE `[--]` row of
native_c_api.h). Its sentences "The kernel's mark is reached only by the Pine
source host (it is not installed API); a C++ host records its own points
instead" are false on the merged tree, so:
- the ADR's KernelRecordedAtHostMarks row keeps INT25's text (a C++ host
reaches the kernel producer through mark_native_report_point);
- native-engine.md's report-mark paragraph keeps INT25's text and adds this
commit's C half: "A C host has no call that marks one (the 1.0 C boundary
table).";
- the boundary table's KernelRecordedAtHostMarks row states the C++ mark
route and cites COVERAGE `[--] mark_native_report_point` beside its
ENUM_TWINS exclusion (the sixth excluded NativeStrategyHost member).
The C configure paragraph keeps INT25's "a second extended configure of a
Ready handle is refused without changing it" and takes this commit's two
omitted fields (`identity`, `timeframe_undetected`). The ADR paragraph on
report ownership keeps INT25's digits and takes this commit's boundary
pointer. check_native_c_api_surface: 64 members, 58 with a C spelling,
6 excluded; 21 C++ capabilities outside the 1.0 C surface, each pinned and
in the boundary table.
…d Eigen's assert text a debug archive carries has its own row (R5 lane H-DOCGATES, X12)
The sanitizers profile's run of the X12 vocabulary (lab remote job
rj-20260925t190344-64918a, NTU2, x86-64 GCC) failed test_kernel_residuals
on two strings a release archive does not carry:
- `'struct SymInfo'`: UBSan's type descriptor quotes a type's name. The
line IS the name `SymInfo`, which is ruled, but X12 judged it as a text
naming a ruled identifier. check_kernel_residuals.py now reads a quoted
type name (GCC's `'struct X'`, clang's `'pineforge::X'`) as its names.
- `matrix.cols() == matrix.rows()`: the eigen_assert text of Eigen's
eigenvalue solvers, which src/matrix.cpp instantiates, compiled in only
when NDEBUG is off. X12's dotted-namespace vocabulary reads `matrix.`.
It gets an ADR-0001 row by its exact words ("not residue": Eigen's
parameter, not Pine's namespace), and a row whose second column says
"absent under NDEBUG" is no longer called stale when no surface carries
it, so the same row holds in release, debug and sanitizers.
ADR_RULED_TEXTS_MIN 45 -> 46. Five self-tests: both quoted spellings
pass as the ruled name and an unruled quoted type still fails, a quoted
Pine text is still a text, the debug-only text is not stale when absent
and covered when present, only a marked row may be absent, and an
unruled assert-shaped text still fails. Dropping the type-name rule fails
the first; dropping the debug-only rule fails the release table.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit 68b974f2d2921fbe79c72d1b9642ad393cc67d66)
INT26 pick note: scripts/ci_verify.py conflicted beside INT25's PR-only
floors and ctest bound; ADR_RULED_TEXTS_MIN takes this commit's 46 and every
INT25 line stays. The residual gate on the merged tree: 174 ruled identifiers,
46 ruled texts, 0 findings.
…ane REL10, item 1) ADR-0001 "Deprecated public spellings" scheduled pf_equity_stats_t::sharpe_tv / sortino_tv for removal at the next PF_ABI_VERSION and exit_legs::Domain::Coof / MagnifierCoof at the namespace after lifecycle_v1. They are removed for 1.0 without either epoch: an alias shares its storage or its value with the primary spelling, so no offset, size, value, hash fold or mangled name moves. PF_ABI_VERSION stays 4 and lifecycle_v1 stays lifecycle_v1; the PF_DEPRECATED and PF_ANONYMOUS_UNION helpers leave pineforge.h with them. ADR-0001 rule 2: the kept spellings are the generic ones, named for the resampling period and the fill-recalculation pass, not for a Pine or TradingView setting. - test_removed_public_spellings (F6's deprecation row, renamed; still one row): the 1.0 spellings compile clean under -Werror in strict C99 and in C++17, and each removed spelling alone fails with the unknown-member diagnostic that names it. - Tests and the Python mirrors name the 1.0 spellings; the twin-parity guard matches the renamed CHECKs by literal signature, counts unchanged. - The JSON report keys stay sharpe_tv / sortino_tv: docker/run_json.py writes the two C fields under them (EQUITY_REPORT_KEYS), pinned by scripts/test_report_schema_keys.py, a new ci_preflight stage. - Every page that named an old spelling says what is true now; the ADR section keeps its heading and records the removal. Anchor digits follow in the lane's re-anchor commit. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 38e8ad1e0f6a022e03d91e82f31d43ea66bef652) INT26 pick note: dropping the four spellings drops their ADR residual row, which H-DOCGATES (33aaf0b9) had widened to rule each alias's six texts by their exact words; the row leaves whole, as this commit removes it, and the residual gate's ruled-count floors in scripts/ci_verify.py fall with it (ADR_RULED_IDENTIFIERS_MIN 174 -> 170, ADR_RULED_TEXTS_MIN 46 -> 40; the gate on the merged kernel archive counts 170 / 40, 0 findings). ci_preflight.py keeps H-MEASURE's subset-cover stage and adds this commit's report-schema-key stage. pine-to-native.md takes this commit's text (line 141 on its tree), digits carried. The sentences the removal retires, by the commits that wrote them: lane P2c's deprecation ruling and its page notes (329e021), lane F4's strict-C99 anonymous-union note (0a46b45), the int12 guard pass's migration sentences (9b50973) and INT16's wave-F reconciliation of the same pages (ca0aac5).
…nd every surface names it (lane REL10, item 3) VERSION may be X.Y.Z-rc.N (N >= 1). CMake's project(VERSION), the package's PineForge_VERSION, PINEFORGE_VERSION_MAJOR / _MINOR / _PATCH / _STRING and pf_version_get() stay the numeric X.Y.Z; PINEFORGE_VERSION_FULL, pf_version_string() and the package's new PineForge_VERSION_FULL carry the full version, -rc.N included. AUTO keeps git describe first (it already resolved a vX.Y.Z-rc.N tag); FILE and AUTO's no-describe fallback now keep the file's -rc.N instead of dropping it, and any other suffix fails configure. version.h.in keeps its six placeholders: codegen's test harness renders exactly those. The installed-package smoke consumer prints pf_version_string() and exits 1 unless the package, the installed header and the linked library name one version. scripts/ci_verify.py compares its print with VERSION, so the numeric print it replaced would have failed every profile on an -rc.N VERSION. test_cmake_version_source adds the candidate's archive, tag and past-the-tag cases, the final release after its candidate, and the refused prerelease spellings. No pkg-config file is added: integration-cmake.md says the CMake package is the one that ships. That page now pins 1.x: the package is SameMajorVersion, so a 0.x minimum does not find a 1.x install. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit dd6e9d843e24156e49be35ac4883f11ea2668116) INT26 pick note: clean pick. Two sentences are rewritten rather than kept: lane F2's statement of what the generated <pineforge/version.h> exposes for 0.14.0 (2fcbb52) now states the full and numeric versions, and lane FPC's smoke-consumer sentence (4c9404c) keeps its -ffp-contract=off check inside the rewritten smoke paragraph.
…andidates; its version arithmetic is a tested script (lane REL10, item 4)
scripts/release_version.py `next` computes current / next / tag / prerelease
/ previous from VERSION and the tags, and refuses anything but X.Y.Z or
X.Y.Z-rc.N, a version that does not sort above VERSION, an existing tag, and
a bump from a release candidate (its successor is always an exact override).
`previous`, the release-notes base, orders tags by semver precedence: the
YAML's `git tag --sort=-v:refname` put vX.Y.Z-rc.N above vX.Y.Z, so v1.0.1's
notes would have started at a candidate. `check-install` verifies a staged
install's version.h and package files before a tarball is packed.
scripts/test_release_version.py holds all of it as a ci_preflight stage.
release.yml:
- `override` (exact version) and `dry_run` inputs beside `bump`; `override`
reaches only the script, through env.
- A release candidate is a GitHub prerelease, and the hub dispatch carries
client_payload {version: vX.Y.Z[-rc.N], prerelease: true|false, run_id}.
- The prebuilt job configures with PINEFORGE_VERSION_SOURCE=FILE and verifies
the staged version; the tarball keeps its pineforge-vX.Y.Z[-rc.N]-<triple>
name.
- A dry run computes the version, builds, installs, verifies and packs every
tarball (kept as workflow artifacts), and commits, tags, releases, uploads
and dispatches nothing.
- The App-token commit / tag / push step is unchanged; a dry run skips it.
- The workflow publishes no container image, and its header no longer says it
does: the GHCR image is the hub's.
ci_preflight's workflow-lint stage now lints release.yml too (the prebuilt
configure's intentional word split carries its shellcheck annotation).
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit 2bd8e2f3fb9307571b57167d20f892a25f53cd42)
INT26 pick note: ci_preflight.py conflicted beside H-MEASURE's subset-cover
stage; both stages stay and this commit's comment covers its two stages.
docs/pages/public-contract.md states what the version number covers from 1.0.0, mirroring codegen's docs/PUBLIC_CONTRACT.md: versions and where the full X.Y.Z-rc.N appears; the C ABI (PF_ABI_VERSION 4 for 1.x, frozen layouts, append-only functions and enumerators); the native C++ API (source-compatible within 1.x, not binary-compatible); the script ABI epoch engine_script_run_v19 and the stability of its state-hash values; the 1.0 C-surface boundary (the exclusions listed in the native-engine page's "Driving the kernel from C", where lane H-DOCGATES's 1.0 table lands; C-SURFACE-2 planned for 1.1.0); and the pairing rule -- engine and codegen share one version number, the same X.Y.Z prerelease included, and the hub enforces it. Each rule names the checker or CTest row that holds it on this tree, and the parts no checker holds (a C signature kept by name, a C enumerator value against the previous release, pf_report_t against a 1.0.0 baseline, C++ source compatibility against a 1.0.0 baseline, the stream fingerprint's value) are named as such. Linked from README, docs/README, the site index, the CMake integration page and CONTRIBUTING's new release step. pineforge.h's two hash comments no longer say a fingerprint may change between builds: its recipe is the epoch's. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 5f423b54fa8954c705fafde171f98ec0adf577f6)
What 1.0 means -- the kernel runs without any Pine adapter, and Pine is an adapter over it -- and what a 0.x user must act on since v0.13.1, the last tag (VERSION read 0.14.0 from 439bd52 on, never tagged): C ABI 4 and the grown pf_report_t, the renamed equity fields (JSON keys unchanged), the regenerate-and-relink rule of the v19 script ABI epoch and the codegen pairing, the new state hashes, the event-retention window default, -ffp-contract=off reaching consumers, the moved pine_float_compare.hpp, the 0.x find_package pins a SameMajorVersion package no longer satisfies, and prerelease versions; then the behaviour that moves results. Read from the tags, the merged PRs #232-#288 and the public headers' diff between v0.13.1 and 1a0e7ea, with each commit and PR cited checked against the history. README points to it. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit bda36e1fe578221727afff65883823f92d0b83c5)
…ice that keeps its handle inside a group no longer stops the run (R5 lane K-OCA-KEEP) Ruling (ADR-0001 rule-2 row "the order of one cause's group-effect receipts"): a drain applies a group's effect in queue order, whatever the handles' numbers, and the receipts record that order. Generic, no knob. Root cause (K-ULP5's finding 1, HIGH, pre-existing). A member's fill reaches its live siblings through WorkingRequestCore::group_recipients, which walks the book in queue order -- ascending LiveRequest::priority. A re-price with ReplaceOptions::keep_handle (R5 lane V19-D) keeps the request's incarnation and takes a fresh priority, so it moves behind younger siblings: queue order and incarnation order part. The receipt store was bisected by (cause, recipient incarnation, effect), and prepare_group_effect / apply_group_effect refused any receipt that sorted before receipts_.back(). So the second recipient of one cause -- the re-priced request, drained behind a younger sibling -- was refused CoreFailure::InvalidCause and the consumer failed the run (Contract, discriminator 1) after the member's fill was booked, staged and direct, under Cancel and Reduce. K-ULP5's probe on 2a03c658: book [inc 2 prio 2][inc 1 prio 3], recipients 2 then 1, receipt (21,2) committed, (21,1) refused. Which order is right: V19-D's contract is that a keep_handle run records the plain replace's run -- every journal event, ordinal for ordinal. The plain successor is the newest request and is drained last, i.e. in queue order. Sorting the recipients by incarnation instead would drain the re-priced request first and swap the group events' ordinals against the plain run. So the walk's order stands and the receipt store follows it: - receipts_ stays append-only in commit order (the consumer folds each once, by index, at its commit), ordered by cause alone; - receipt_lookup bisects the cause and walks that cause's receipts (a drain of k recipients makes about k*k/2 comparisons); - the order check refuses only a cause older than the newest receipt's. A completed run's receipts were already in incarnation order within each cause, and the lookup answers such a store as before, so no completed run changes and no hash value moves. receipt_cmp is gone. The other walks (waiting_children, bound_close_handles, the parent-terminal and owner-applied drains) read no receipt order; the cohort rosters and the opening rows sort by handle, which a keep_handle re-price does not change. Tests: test_native_group_keep_handle (new, kernel-only): K-ULP5's probe under Cancel and Reduce, a retained trail, a carried binding -- each under the four option sets against the plain replace's journal; the order core's receipts in queue order and in reverse with replays, an older cause replayed after a newer cause's receipts, and the retained older-cause refusal; a seeded battery (3 seeds x 30 scripts x 4 option sets, staged and direct) re-pricing group members in random subsets and orders, whose misordered drains are required under Cancel, under Reduce and with deferred recipients. Fail-before on 2a03c658: 464 of 3,356 checks; the battery stops all 180 of its keep_handle runs (of 360), code 2, discriminator 1. After: 3,404 checks, 0 failures; 0 stops; about 1,000 drains per seed out of incarnation order each record the plain replace's run. The same battery at 200 scripts per seed (scratch): 0 of 2,400 runs stop; on 2a03c658 all 1,200 keep_handle runs do. No C row: the C replace takes no options. Floors: kernel 275 (276 registered), release 676. Docs: native_order.hpp (group_recipients, the receipts' order), the ADR row, native-engine.md's keep_handle paragraph; citations re-anchored from 2a03c658 (anchors 1678/1678). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit ad7a10f599810a594a61a1d05e1cfb3157c1d317) INT26 pick note: the kernel and header hunks applied without conflict. The floors add this commit's row to the merged values (KERNEL 281 -> 282, RELEASE 693 -> 694; the four floor citations name the merged lines). The ADR row sits after INT25's K-ULP5 absorption row, where this commit put it, and before H-DOCGATES' inventory rows (8deed8c9); the design pages merged on citation digits only.
… writes (R5 lane K-OCA-KEEP, K-ULP5 finding 3) native_c_api.h said the field "reads 0" because the kernel records no discriminator on this surface. strategy_native_state_v1 (src/native_c_host.cpp) copies NativeFailure::discriminator, which the consumer sets to the request core's CoreFailure for a refused preparation (code CONTRACT or SETTLEMENT_FAILURE; p5b's stopped run on the C host read 7, UnrepresentableReservation), to the InstallError of a refused install (CONTRACT), to the settlement's execution::Status for a failed inspection or commit (SETTLEMENT_FAILURE) and to a staged FX curve's NativeFxCurveError (INVALID_SPECIFICATION); it is 0 otherwise, as on every completed run (test_native_c_api.c checks that). Comment-only: every object whose dependencies name native_c_api.h (libpineforge.a, libpineforge_kernel.a, test_native_c_api and 76 kernel test TUs, 121 objects) is byte-identical compiled with the header before and after, and so are direct compiler runs of c_abi.cpp, native_c_host.cpp and native_execution_consumer.cpp (full and kernel) and test_native_c_api.c. No page repeated the claim: the pages that name a discriminator (native-engine.md, native-settlement.md) already give the runtime's values. The header's ten new lines move the citations of later lines, re-anchored from ad7a10f5 (89 anchors, digits only; 1678/1678). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit a25a3ce4caa8096cf4e33a7fb327addc6373d315) INT26 pick note: INT25's C-SURFACE-1 had already replaced the "reads 0" comment this commit corrects, with a shorter one ("The kernel's opaque durable failure discriminator; 0 when no more specific reason was recorded"). The merged comment is this commit's, which names what the runtime writes for each failure kind; both say the same of a completed run. The four pages' hunks are this lane's re-anchor and merged on digits only; they are re-anchored again once on the integrated tree (INT26 item vii).
…equest settles them in one fill and a whole-scope close on a grid closes whole (R5 lane K-OCA-KEEP, K-ULP5 finding 2) Ruling (ADR-0001 rule-2 row "a request on a quantity grid whose pending group deduction its units absorb"): one definition of settling in one fill. Generic, no knob. K-ULP4's grid rule admits the book's own quantity -- a whole-scope ScopeFraction's held total, a host-sized close answered with its scope's total -- for a request that settles it in one fill: no point budget and no group deduction pending against it. settles_in_one_fill (src/native_execution_consumer.cpp) read any PendingDeferred as pending, but since K-ULP5 a pending total below half an ulp of the units is absorbed at the terms and takes nothing. Now settles_in_one_fill asks WorkingRequestCore::effective_host_units whether the pending total takes any; an absorbed one takes none. The three call sites (the fraction's resolution, the matcher's terms check, the current-execution preview) pass the units they test. What moved, reproduced on 2a03c658 (grid 0.1: a dust lot of one ulp closed by an OCA-Reduce sibling defers 5.55e-17 into F, which closes a 1.1000000000000227 lot): - F a whole-scope fraction: floored to 1.1000000000000001, it left a 2.2648549702353193e-14 dust lot (on f1af50dc, before K-ULP5, the run stopped: code 6, discriminator 7); now it closes the lot whole. - F a host-sized close answered with its scope's total: refused InvalidTerms and the lot left open, on f1af50dc as on 2a03c658 -- a run that completed before K-ULP5 too, found by the lane's review; now it closes the lot whole, matched at its stop or as the current execution, whose preview no longer answers InvalidTerms. The Pine adapter does not reach the rule (it emits no ScopeFraction, and it answers a close of its scope's whole total with ExplicitUnits, whose grid check never asks whether the request settles in one fill), and runs without a grid cannot move. Gate (the brief's): K-ULP4's battery (kulp_random_k4.cpp, unmodified) answers all 12,000 per-scenario hashes and every decimal-host run as on 2a03c658; K-ULP5's absorption and C-host batteries are unchanged (no grid); grid-fraction-oca-pending (a pending total that takes 0.3) is still floored. No pinned hash moved. The rows' own records move, 2a03c658 -> this commit (continuation / broker hash, staged = direct): grid-absorbed-fraction 2536ca6f7cf7d871 (same) / 7e5b9f14781aab5d -> 6c0d1f47982b48e9 grid-absorbed-host 973f81ffee75000a -> cd2c35e6c5ea9ece / 6da44867ad27aa55 -> 5f8c73fdb35d9258 grid-absorbed-host-current b549772a04b93de4 -> 6d442bf4aac15221 / 61aa04ffcfa15269 -> 3d3affc848c26292 Tests: grid-absorbed-fraction, -host and -host-current in test_native_group_keep_handle, staged and direct (hashes compared); the current row checks the preview and the execution itself (its result is the applied close of the residue, and F is gone). On 2a03c658 the three fail 26 checks: floored with dust, refused InvalidTerms, the preview answering InvalidTerms and the execution refused. Docs: native-engine.md and native-settlement.md define settling in one fill with the absorbed total; the ADR row. Citations re-anchored from a25a3ce4 (104 anchors, digits only; 1678/1678). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 399601b9af0a28a5eabb1f458affde48c0cd1824) INT26 pick note (supervisor ruling: item 5 accepted, including the host-sized close the commit discloses). The kernel and test hunks applied without conflict. The ADR row sits after this lane's receipt-order row (0a046423) and before H-DOCGATES' inventory rows; the other three pages merged on citation digits only.
…he activation, as TradingView's does (R5 lane PAR-ORDERS, E14 / H-MEASURE Finding 3)
A strategy.exit(trail_points, trail_offset) written while its entry is
still pending exited 1 to 24 bars after TradingView on all 13 trades of
H-MEASURE's two running-best tapes (hm-orders-h3-f-{long,short}-pending-seed).
Root cause. anchor_relative_exits placed the leg as the kernel's anchored
child, relative_leg_shapes' Trail{0, 0, TrailTicks{k}} under a FromOwnerFill
anchor. At the parent's fill resolve_anchored_level installs only its arm
level, and the fill point's exit() re-run builds the leg TradingView rides:
the same arm, plus Trail::best_seed = the activation (E14). The adoption
compare in submit_or_replace (the same_trigger lambda) matches arm_price,
ticks and offset and leaves best_seed out, so the fill point adopted the
unseeded child. Its best started at the raw arm print, half a tick or less
short of the activation, and its stop stayed out of reach.
Fix, adapter only. anchorable_relative_exit refuses a definition with a
trailing offset of a tick or more -- the one relative leg exit() seeds, and
one the anchored child cannot carry -- so the parent is not anchored and
its fill point submits the seeded leg, the rule every other shape the arm
cannot spell already follows (explicit qty, the ANY rule, streams). No
kernel line changes (ADR-0001 rule 2: the seed is TradingView's start, Pine
policy, already expressed by the generic Trail::best_seed).
The alternative (compare best_seed too, i.e. H-MEASURE's scratch "never
adopt a seeded leg") books the same 41 tape trades but still anchors,
arms and withdraws every such child; on the three regression batteries
below neither variant moves a trade's times, prices, quantity, P&L or
excursions.
Rows flipped to TradingView's expectation in this commit:
- test_pending_entry_trail_tapes: the 13 recorded divergences of §2 now
assert TradingView's bar and price (before 0/8 + 0/5, after 8/8 + 5/5;
the arm, §1, stays 28/28); the shape pins read {0,0,0} with no anchored
Trail and a best_seed equal to the activation. The flipped row against
the base library: FAIL 715 checks, 148 failures.
- test_adapter_brackets_relower: rel-trail-offset, rel-short-trail,
mag-rel-trail-offset and coof-rel-trail-offset re-pinned {1,1,0} ->
{0,0,0}; every closed row, equity figure and book digest there unchanged.
Three regression witnesses move and are re-pinned in the lane's named hash
commit: test_adapter_quiet_bar (16 scenarios), test_publication_witness
(17 runs) and test_adapter_live_state_equivalence (22 digests). What moves
is hash input only -- the source-layer fold, the kernel's command events
and recorded broker-state hash rows, and Trade::entry_incarnation (no
anchored child consumes a request number now): every trade's times, prices,
quantity, P&L, excursions and bar indices are identical across the 272
quiet-bar runs and the 10,122 live-state trades, and the publication
witness without its three hash inputs prints the base table byte for byte.
Docs: native-engine.md's adoption paragraph, its off-kernel table (a new
row) and the 49-scenario split {220,123,93} -> {216,119,93}; pine-to-native
and the design's anchored-relative-legs paragraph; digits re-anchored.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit d474d7286df8a13643bace526b99c6f530b76987)
INT26 pick note: the adapter and test hunks applied without conflict; the
ADR and design pages merged on citation digits only (int16_digit_merge per
line). hunkcheck: every hunk of d474d728 carried.
The sentences it retires recorded this divergence as open: H-MEASURE's
pending-entry trail tapes (99d3b95, picked here as e1d0fa3) on the
native-engine and pine-to-native pages.
… when the pending opposite entry is not in the close pass (R5 lane PAR-ORDERS, H-MEASURE Finding 6c)
Under the magnifier with process_orders_on_close and calc_on_order_fills,
H-MEASURE's differential script (variant v3, pyramiding=1) opened 86 lots
on one bar: every fill's recalculation re-issued strategy.entry("ML") as a
same-side market add and each one filled. TradingView's tape of that run
(hm-mag-diff-v3) books 12 rows and ends flat.
Root cause. entry()'s pyramiding check (pine_adapter.cpp, the
accepted_in_cycle block) is skipped under process_orders_on_close whenever
any opposite opening is pending (opposite_opening_pending): the cap is
deferred to the close pass, where ab9714b judged a market add at its fill
(add_to_pyramid_market: position_entry_count_ >= pyramiding) and
TradingView against the trades then open. That pass fills an opposite
opening first only if it processes it; here the pending opposite entry
was a PS limit short resting from the previous bar, so nothing moved the
book, and no fill-time check exists for a fixed-size add
(validate_precommit's lot test covers the variable default sizes only).
Each exempted add filled, the fill recalculated, and the next add came.
Fix, adapter only (ADR-0001 rule 2: Pine's pyramiding is adapter command
policy; no kernel line changes). The exemption still applies when the
opposite opening is in the close pass -- a market entry, or one this
script bar's own calculation placed -- where the add may be a reversal by
the time it fills. With only a priced opposite entry resting from an
earlier bar, the add is held to the lots open now: the count ab9714b and
TradingView apply at the fill.
The row: test_magnified_aggregated_tape gains "the pyramiding cap": no
path of any of the eight variants holds more lots than its pyramiding at
any script call, and the v3 magnified run books TradingView's 12 rows and
ends flat (tape hm-mag-diff-v3 committed from H-MEASURE's evidence, README
row added). Against the base library the row fails: "v3 ..., magnifier: 86
lots open at once, pyramiding 1", 8500 units open at the end. After: 176
checks, 0 failures.
Every command the change drops, traced on the tapes and the regression
batteries, is a same-side add with the lots then open already at the cap
(v3 magnified: ML at bars 33 and 59, 1 lot at pyramiding 1; quiet-bar
Random10 bar 42: 3 lots at pyramiding 2; Random14 bar 41: 2 at 2; Random21
bar 9: 1 at 1). Those three random runs are the only quiet-bar runs whose
trades move; test_publication_witness (4 runs) and
test_adapter_live_state_equivalence (9 digests) move with them. All are
re-pinned in the lane's named hash commit.
Docs: the design's magnified-residual paragraph records the bypass as
closed; digits re-anchored.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit 8d312d81fed3802d98f495f93791a3663285f21e)
INT26 pick note: the adapter, test and fixture hunks applied without
conflict; the ADR and design pages merged on citation digits only.
…dy reached fills at that close, on every path (R5 lane PAR-ORDERS, H-MEASURE Finding 6b) H-MEASURE's differential script places a buy stop entry (PL, stop = high - 0.02) at a process_orders_on_close close. On its five signal bars whose close's tick reaches that stop, TradingView fills it at that close (the close's tick, slipped like any stop fill); the engine left it resting and filled it a bar late at the next open -- on the chart, the plain aggregated and the magnified path, with or without calc_on_order_fills. On the bars whose close stays short of the stop (k = 17, 45, 59) both rest. Root cause, two parts: 1. flush_pooc_marketable_limit_entry_fills (the post-calculation close pass, ab9714b pine_fills.cpp:7604-7646) took pure LIMIT entries only, and none under calc_on_order_fills. 2. on_bar_close's quiet-bar gate for that pass (and for flush_pooc_marketable_exit_fills) tested row.projection_created_bar == context.coordinate.interval_index, while both passes test projection_bar_index(context) -- the named input slot (K-IDX, 3ed0276). Since K-IDX the two differ on an aggregated or magnified run, so the gate declared every such bar quiet and neither pass ever ran there (PERF-L4 wrote the gate, 770f7b2, when they were equal). Fix, adapter only (ADR-0001 rule 2: TradingView's close-time fill of a crossed stop is Pine policy; no kernel line changes): - the close pass also takes a pure stop entry of this bar whose stop the close's tick is at or through, under calc_on_order_fills too (limits keep their non-COOF scope), booking nearest_tick(close) plus the slip; only as the bar's lone entry marketable at the close -- two such entries keep the next open's both-marketable arbitration (lane L9b's P0-B shapes, ab9714b literals no tape orders at a close); - the gate tests projection_bar_index(context), the passes' own index. Rows flipped to TradingView in this commit: - test_magnified_aggregated_tape now replays v1 and v5 on all three paths, v3 on all three and v7 on the chart and aggregated paths (tapes hm-{mag,chart}-diff-v1/-v5, hm-mag-diff-v3 already added, hm-chart-diff-v3/-v7 committed from H-MEASURE's evidence). Every POOC stop entry books TradingView's bar and price. The rows (b) does not touch are RECORDED divergences asserted to differ: v3/v7 row 5 (a fill recalculation's market entry after a fill at bar 19's high, H-MEASURE Finding 6d, next commit), v7 rows 8-9 and v3's magnified row 2 (pre-existing, outside this lane). Against the previous commit's library the row fails 50 of 373 checks; after, 0. - test_l10am_entry_bar_priced_exit, the XAUUSD probe: its buy stop 3327.38 is placed at a close of exactly 3327.38. The pin was the owner's (ab9714b) entry at the next bar, 2025-04-16 17:00 UTC; TradingView's own trade 18 of that population probe enters at 16:45 UTC, the signal bar (Duration 6 bars; R4-D's data-probes tape). The row now asserts TradingView's bar. Corpus: one probe moves, toward its TradingView tape -- validation/order-deferred-flip-pooc-cross-bar-01 (process_orders_on_close, "open-guaranteed" stop entries). Its entry placed from the flat book after each weekly reset now fills at the signal bar's close. Of the 82 rows that move, the old output matched TradingView's bar on 25 and price on 58, the new one on 82 and 82; the 57 moved entries go 0 -> 57 of TradingView's bar and price, the whole file 791 -> 848 of 1584 rows. (Flips placed while in position still fill at the next open here, as before; TradingView fills those at the signal bar's close too -- not measured by this lane's rule, left unchanged.) scripts/corpus_parity_baseline.txt re-pins that one line (60df427d.. -> 602febda.., the sha lab remote's x86 run produced and a local run reproduces); every other probe is byte-identical. Regression batteries: test_adapter_quiet_bar and test_publication_witness move nothing; test_adapter_live_state_equivalence moves 3 configurations (reversals seeds 1152019, 1675664, 2722954, all process_orders_on_close), each exactly a lone stop entry its close crossed now filling at that close (L2 stop 118.5 / close 119, L 104.75 / 105.5, S2 82.75 / 80.5). Re-pinned in the lane's named hash commit. Docs: the design's magnified-residual paragraph records the stop entry as closed, with the gate's history; digits re-anchored. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 767bb2b1c5bed8d14de768973e8c8e32b7c89278) INT26 pick note: the adapter, test, fixture and baseline hunks applied without conflict (the accepted re-pin of validation/order-deferred-flip-pooc-cross-bar-01, 60df427d -> 602febda, toward TradingView); the ADR and design pages merged on citation digits only.
… open, as TradingView does (R5 lane PAR-ORDERS, H-MEASURE Finding 6a)
TradingView dates every fill of a chart bar at the bar's open, a magnified
one too: 218 of 218 fills on H-MEASURE's sixteen lab tv tapes
(hm-{mag,chart}-diff-v0..v7). The engine dated a fill of an aggregated
magnified run (1m input, 15m chart, use_bar_magnifier) at its sub-bar's
instant -- 71 of the 152 instants the magnified replays of the tape row
book sat inside their chart bar (15:01, 15:25, 18:16, ...).
Root cause. PineStrategyHost::on_native_applied (the AG2 re-dating, lane
F1 / E27) re-dates a lot's time and a row's exit time to
context.script_bar_open_ms for every modeled point of a plain aggregated
chart, but under the magnifier for the close points alone ("its sub-bar
fills keep their sub-bar's instant, as ab9714b dated them"). A sub-bar's
open, path and ModeledOHLCClose point were left at the kernel's instant.
Fix, host presentation only (the kernel's own instant, which its FX
lookup, decision floor and ordering read, is untouched; ADR-0001 rule 2:
TradingView's dating is presentation policy on the Pine host): on an
aggregated run every modeled point -- ModeledOHLCClose included, which
only a magnified run presents -- is dated at the chart bar's open,
magnifier or not. A chart-timeframe run (magnified or not) already dates
every point at its bar's label (0 of 1,386 magnified quiet-bar instants
off a bar boundary) and does not change; a realtime print and a stream's
quiet carried interval keep their own instant as before.
Rows flipped in this commit:
- test_magnified_aggregated_tape asserts every row's instants exactly on
every path (it compared the bar each instant opens). Against the
previous commit's library: FAIL 373 checks, 53 failures; after, 0.
- Three rows pinned ab9714b's sub-bar instants on aggregated magnified
runs; only instants move, every price, quantity, P&L and book digest
stays:
- test_adapter_brackets_relower: the nine Mag* shapes re-harvested
with the file's own -DPINEFORGE_R4D_HARVEST build on this tree; 20
instants of 16 rows move onto their 2-minute bar's open.
- test_adapter_coof_relower: the refill's l5 lot 960000 -> 900000 (its
b0cec54 cadence text notes it); the waypoint-deferral check now
proves the deferral by the lots' prices (100, 100, 99, 101, 100.25,
100.1 against the birth rule's 100.0 .. 100.5), since every lot is
dated at the bar's open.
- test_native_calc_timing_twin: the adapter's sixth lot 960000 ->
900000 (the native route keeps the kernel's instants).
The corpus runs no aggregated magnified probe, so nothing there can move.
One v19 hash witness moves with the dating --
test_adapter_continuation_view's aggregated_magnifier reads -- re-pinned
in the lane's named hash commit; the quiet-bar, publication and
live-state batteries run no aggregated magnified configuration and do
not move.
Docs: the design's AG2 row; digits re-anchored.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit 1fc67988cb7df98c9b4978379cfdc5bcfb881177)
INT26 pick note: the host and test hunks applied without conflict; the ADR
and design pages merged on citation digits only.
… spelling
The runner test trusted every event but pull_request, so a trigger a fork
can raise -- pull_request_target, a review, a comment, a workflow_run --
added to CI or to a workflow that calls native-live.yml or corpus-parity.yml
would have run on the larger runner. It now names what it trusts: a push,
the schedule, a dispatch, or a pull request event whose head is this
repository. Every other event, merge_group included, gets the standard
runner.
A second review also reproduced spellings the contract read as absent:
quoted or spaced keys ("runs-on":, runs-on :), an on: key or event it
exempted by mistake ("pull_request":, a multi-line flow sequence), --job and
--jo (argparse accepts both for --jobs), a ci_verify.py call run from
scripts/, and a verify command moved into a variable. The contract now
reads quoted and spaced keys, treats an unreadable on: block or runs-on as
a finding, counts every --jobs abbreviation, requires each heavy job's own
verification to carry the core count, and refuses a job that calls a
workflow outside .github/workflows/. Harmless edits it flagged no longer
are: a comment or blank line in the build strategy, a trailing comment, a
backslash-continued command, the parity command inside a run block, and a
quoted standard label.
test_ci_preflight.py adds each reproduced spelling and each harmless edit,
and checks a missing job is reported once. docs/ci.md states the test, the
larger runners' billing precondition, the verifier's own bounds that bind
first, and the estimates behind the full-set limits.
Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
(cherry picked from commit bd8db19f4449141413aad133fd8beb6102ea615f)
INT26 pick note: scripts/ci_preflight.py conflicted on the line beside INT26
item (iv)'s PR_SLOW_ROWS_SHA256; the digest stays item (iv)'s, every other line
is this commit's.
INT26 pick note: the docs/ci.md sentence this commit rewrites was this
lane's own time-limit commit's (6419c7f).
A third review found the head test trusted any event whose payload names a pull request: a review or review comment on a pull request from a branch of this repository -- which anyone can post on a public repository -- would have run on the larger runner in a workflow that listened for it. The head test now counts only for a pull_request event; every review, comment and pull_request_target run gets the standard runner. It also reproduced readers that still failed open or flagged harmless text: an on: block scalar (on: >-) or a decoy on: line inside a multi-line string exempted a workflow, and a ci_verify module run (python3 -m ci_verify) or a command text in a step name satisfied the core-count rule. The on: key is now read once and only as a plain event list; the core-count rules read the shell lines a job's run steps execute (a folded block as one command), count the --jobs= spelling, and leave cache keys and step names alone; trailing comments in the build strategy no longer count. The docs name the trees behind the 1.93-1.95 ratio (91d65ad, 1a0e7ea), the pull-request run behind the sanitizers compile time, and the case a fork editing the workflows itself: preflight reports it, and the repository's approval rule for outside contributors' workflow runs is what bounds it. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit a95aa4a2af9c8a2e94e0db2dbcb562c603800723)
A fourth review found the core-count rule still read commands line by line or step by step, so a second, unsized ci_verify call escaped when it shared a line with the sized one (&& or ;), sat after a blank line in a folded block, or rode in an action input (with: command:); a parity command with a second JOBS=4 part escaped the same way. The rule is now one ordered count over the whole job's code (comments, step names and hashFiles() arguments aside): every ci_verify call, as a script or a module, carries exactly one core-count --jobs before the next call, no other --jobs spelling appears, and every JOBS and parity-script mention is part of the one parity command. Chaining, blocks and action inputs no longer matter, and the command parser it replaces is gone. The same review showed on: spellings a text reader cannot see (a decoy line inside a string, an escaped key) could still exempt a new workflow. The exemption is now by name: release.yml, while its on: block names only events no fork can raise (a dispatch alone today). Any other workflow file is checked whatever starts it. test_ci_preflight.py adds each escape (a ; chain, an interpreter flag and a $pythonLocation call each on their own), a sized call inside an action input, a step name mentioning --jobs 4 and a wrapped run value as no-finding cases (each applied alone and composed), and refuses a new dispatch-only workflow on a larger runner. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit f313049f596ba86945c4f91eadee8b02769190bc)
…quidation_price() (R5 lane H-THIN, X15 a) The Pine host kept a second closed-form solve of the liquidation level (compute_liquidation_price) beside the kernel's own NativeStrategyHost::native_liquidation_price(), which project() already configures for it: the adapter declares the maintenance-only margin model with NativeLiquidationLevelBase::RealizedOnly so that the kernel's level is solved from closed money alone, exactly as the Pine formula was. The host now reads the kernel's level and keeps only TradingView's spelling (design row MG8): the level rounded onto the tick grid, down for a long, up for a short. compute_liquidation_price is deleted. Measured (probe_liq_sweep, $EV/exec/H-THIN-scratch/probes: 1,200 seeded configurations -- long/short, margins 1..150 %, percent / cash-per-order / cash-per-contract fees, ticks 0 / 1e-5 / 0.01 / 0.25 / 0.5 / 1, account FX, one to three lots with a partial close -- 12,000 printed values at %.17g, the base's library against this one): every value of a run that has a margin model is bit-identical (10,506 lines). The 1,494 lines that differ all belong to runs whose margin calls the host switched off (set_margin_call_enabled(false), a PineForge switch TradingView has no counterpart for): the kernel then has no margin model and the value is na, where the deleted solve answered the level of a liquidation the run never performs. No corpus probe, public benchmark slot or witness reads it. Nothing hashed moves: the value is a query. tests/test_margin_call_l4a.cpp's switched-off row now expects na (its expectation corrected), and the twin's pinned rewrite evidence for test_margin_call (tests/twin_parity_inventory.json, whose sha256 scripts/check_twin_parity.py pins) records the change and its reason. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit abd7978cd1560a6638ff39197297bcae8ee7fcad)
… native_civil_days (R5 lane H-THIN, X15 e) Howard Hinnant's civil_from_days / days_from_civil were restated six times: the calendar's pair (src/native_calendar.cpp), the time-of-day fields and their inverse (src/session_time.cpp civil_fields / days_from_civil), the timeframe helpers' inverse (src/timeframe.cpp), the report's two UTC month keys (src/engine_metrics.cpp month_key_utc / keep_utc_month) and the Pine adapter's chart-day key (src/source/pine_adapter.cpp civil_chart_day_key, audit AUDIT4 section 6 row G2-38). The arithmetic now lives once, as two constexpr functions of the installed calendar header, pineforge::native_calendar::native_civil_date(days) and native_civil_days(year, month, day), and every one of those sites reads them: the calendar's two keep their own types as one-line forwards, the month keys read the civil month and the first day of the next, the time-of-day fields take the day of year as days minus the year's January 1, and the adapter's chart-day key reads day and month. ADR-0001 rule 2 ruling: (a) mechanism -- proleptic-Gregorian civil arithmetic, the same for every host and venue, with no platform word; (b) knob -- none, a pure function of its arguments. Byte-identical by construction: integer arithmetic over the same ranges (|days| below 2^40 / 86400 on every caller), each result equal to the one it replaces; test_chart_day_key_arithmetic and test_utc_month_key_arithmetic sweep the adapter's key and the month key against gmtime_r and pass, as do the calendar, session, timeframe and time-of-day rows (31 of 31 on macOS). The kernel residual gate reads 0 findings. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 5e5a3ddb25d3b650afff04086b6eb8cd8a54391c)
…o the kernel (E19), and a FIFO exit reserves its entry's own quantity (P10) The lane's one hash-moving commit, inside the unreleased v19 epoch (the source extension stays pineforge-source-adapter/v4). Every witness it moves is re-pinned here, once. E19 (AUDIT4 section 6, G2-22; measured by R5 lane H-MEASURE). PineStrategyHost overrode owns_lot_excursions() / closed_lot_excursion() with ab9714b's per-lot MFE/MAE model (RULING A48). Where that model and the kernel's sampler differed, the kernel's number was TradingView's (H-MEASURE's tapes, tests/test_e19_excursion_tape.cpp). The host now keeps the kernel's default: the owner model, its entry-bar mask declarations, its excursion caches and level fills (pine_strategy_host, pine_adapter, pine_scheduler_native) and their folds in pine_state_hash.cpp are deleted, and the broker-hash waivers follow. The corpus moves on 19 probes and only in their excursion cells: of the 335 trades whose cells moved, 324 now equal TradingView's, 11 moved closer and none farther (315 of the 320 trades a TradingView export identifies toward, 5 closer; the 15 TradingView lists one bar earlier, graded by their exit identity: 9 toward, 6 closer). The new tape tests/fixtures/e19_allin_trim (lab tv hthin-e19-allin-trim, c229f8fd) pins the all-in residual's own entry-bar call: TradingView books it with the fill alone, as the sampler does. The unit rows that pinned the host model's numbers carry "expectation corrected (R5 lane H-THIN, E19 ...)" notes. P10 (H-MEASURE's pyramiding tape). A default strategy.exit(from_entry) under FIFO reserved the whole book (200 in the adapter, 100 on TradingView's tape); it now reserves min(book, the entry's own cohort exposure), and the kernel closes the oldest lots first. The corpus does not move. The lane's tape hthin-x15b-fifo-fee-basis (f170f906) books the same reservation in its scenario B. Re-pinned, each value marked "expectation corrected (H-THIN, ...)" with its cause, harvested with each TU's own switch on this tree and on the same tree without P10 (so every value names E19 or P10); the same harvest on the base 0d76a09 reproduces every old pin, and X15 d/f move none: test_adapter_report_relower, test_adapter_recording_hash_witness, test_adapter_continuation_view, test_adapter_receipts_in_place, test_adapter_command_allocations, test_adapter_host_view_memo (E19 only); test_adapter_lookup_index_witness (E19; P10 also moves kFlip and one kFlip_trades row); test_adapter_quiet_bar (E19 moves 100 trade digests, which fold max_runup / max_drawdown; P10 moves trades and counts); test_publication_witness (156 digests; P10 moves 12 runs' closed trades and two runs' folds); test_adapter_live_state_equivalence (96 of 108 transcript digests: 40 with E19, 90 with P10). test_native_calendar_hash_ witness does not move. scripts/corpus_parity_baseline.txt: the 19 E19 probes, their engine_trades.csv byte-identical to the E19-only run. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit ab297364217954d6128e51a767a5920cc50400e9) INT26 pick note (late pick, accepted 2026-09-26 11:30): every source, header and test-code hunk applied unchanged. Its hash values fold into the single INT26 v19 hash re-pin (the late-picks list), so the eleven pinned witness files keep this branch's hash values here; the behaviour this commit moves is pinned here instead, harvested on this tree with each TU's own switch: - quiet_bar: 140 of 272 runs' trade digests (E19's excursions fold into the digest) and, where P10 moves them, their counts. Random10/0/* books 23 trades where the lane's tree keeps 24 and the tree before this pick 22: the FIFO exit Y now reserves its entry's own unit and the reversal B closes the rest (A->Y 2 becomes A->Y 1 + A->B 1 at the same price), on the book PAR-ORDERS' and PAR-ORDERS-2's rules leave at that bar. - publication: P10's trades in 12 runs and the folds of Storm17/Storm17M, every value equal to the lane's. - live_state: 96 of 108 digests (the transcript holds no hash value). 55 take the lane's own value; 39 had been moved by an earlier pick too, and 29 of those move their trade count by the lane's own amount; chains seeds 104731 and 523647 take a third value, bisected by pick: H-THIN's source on K-OCA-KEEP's tip gives the lane's value, on PAR-ORDERS' E14 commit (a6e6a00) the merged one -- P10's path meets E14's pending-entry trail. - lookup_index kFlip_trades: one trade, equal to the lane's. Every other pinned behaviour harvests as pinned. The corpus baseline takes the lane's line for order-deferred-flip-guaranteed-gap-stops-01; order-deferred-flip-pooc-cross-bar-01, which PAR-ORDERS-2 moves too, keeps its line until the one re-derivation after every pick (late-picks list, CORPUS4).
…R5 lane H-THIN, X15 d) schedule_preopen_margin_slice kept its own copy of TradingView's slice (the restore floored to the lot, taken four times, floored again) without the one-contract band, the +1e-6 floor or the dust gates the shared source_margin_units applies at every other margin checkpoint (AUDIT4 section 6, G2-12). It now hands the same money to source_margin_units. H-MEASURE's M10 differential recorded where the copy parted: its band and fudge cases now book the shared rule's 1 and 1, which are the kernel's and ab9714b's, and only the frozen-units case still parts (4 lots on the frozen 19 against the kernel's 1 on the book of 18), with the row's expectation corrected. The corpus, the identity battery, the public slots and every hash witness print the same bytes. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit acec6d9647075f7ec0bf64f146d5aaf33ec4151b) INT26 pick note: X15 d meets PAR-MARGIN's M10 freeze in tests/test_adapter_margin_schedule_differential.cpp; both intents are kept (the late-picks list). PAR-MARGIN froze a default-percent stop above 100 % at its snapped level (18 lots), where the pre-open slice's own x4 sized nothing -- its own comment calls that case "the band row above"; X15 d sizes the slice through source_margin_units, whose one-contract band books that contract. On the merged tree the M10 frozen case therefore books the kernel's 1 @90 on the 18 lots (17 left), and its checks say so; band and fudge take the lane's 1 and 1; the header and the M10 comments keep both lanes' sentences, rewritten to be true of the merged tree. PAR-MARGIN's eight pm-m10 TradingView tapes re-run on it: every fill equals the tape (824 checks, 0 failures). No pinned witness behaviour moves (quiet-bar, publication, live-state and lookup-index trades harvested with their own switches).
…ates and NativeStrategyHost::native_aggregates_input_bars() (R5 lane H-THIN, X15 f) The Pine host decided whether its chart aggregates the input feed from the spec's two timeframe literals (source::detail::aggregates_input_bars: equal literals without a parse, tf_ratio for every other pair; AUDIT4 section 6, G2-39), beside the pairing the kernel itself resolves and aggregates on. The kernel now answers it: native_calendar::pairing_aggregates(pairing) is true for the pairings whose script bars are buckets gathered from the input (SameUnitMultiple, FixedDivisible, FixedToCalendar, CalendarToCalendar), NativeExecutionConsumer::aggregates_input() reads the run's resolved pairing, and NativeStrategyHost::native_aggregates_input_bars() is the host query (false with no configured spec). The host's one reader, the aggregated re-dating in on_native_applied, and the lookup index's cached fact read it; the literal copy is deleted. The C COVERAGE block lists the query as C++-only: its one reader is the Pine host. ADR-0001 rule 2 ruling: (a) mechanism -- a query of the pairing the run already resolved, with no platform word; (b) knob -- none, it reads the spec and decides nothing. tests/test_aggregates_input_bars_literals.cpp judges the kernel's answer against the deleted copy over every admitted pair of a literal population: they agree but on two counted classes (byte-identical monthly literals, and one-bucket pairings such as 1D on D), where the kernel's answer is the one a chart-timeframe run and TradingView date rows by. The corpus and every witness print the same bytes. The kernel residual gate reads 0 findings. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 3baaf78e283a6c6078aeaa85481a4f45dbba5f7a)
…red kQtyEpsilon / kFullPercentEps (R5 lane H-THIN, A4-DUST) compute_exit_reservation and reconcile_deferred_exit_reservations each kept a local copy of internal::kQtyEpsilon (1e-10) and internal::kFullPercentEps (1e-9), and enqueue_pooc_fifo_close a third (epsilon = 1e-10). The values are equal, so the fold is byte-identical by construction; the three seeded A4-DUST witness families (5,500 runs) print the same bytes before and after. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit ee02d451a96477e19d98c20992c35ac1ce111ab2)
…-THIN Design §3.9 records the lane: X15 item by item (a, d, e, f gone; b and c kept as measured rows), AUDIT4 §6 re-derived, the quantity-epsilon census of the Pine host and adapter, the size against the owner's ruling, and two findings. Rows MG3, MG7, MG8, RP1, AG1/AG2 and the excursion projection gate say what moved; the ADR's seam, margin and dust bullets, its max_open_lots and quantity_tolerance rulings and a Wave H rule-2 table (the civil-date helper and the aggregation predicate) follow; native-settlement, abi-stability (the H-THIN hash step), native-engine (the new host query), pine-to-native and contributing-llm (the pyramiding lowering trial) likewise. Every anchor re-anchored onto this tree (1678/1678); the hash-pinned citations that named code E19 deleted, or that were pinned to the wrong window on the base tree, now name their symbol. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 465fe607e7bb66717ac274f8bc0edd0593f6bbfb) INT26 pick note: the lane wrote these pages on main 0d76a09; here they merge with the wave-H pages picked before them. Anchor digits merged by carrying this branch's numbers through the lane's line moves. Where H-DOCGATES had already turned a content pin into a symbol citation, the citation stays and the lane's text beside it lands (the pyramiding row, the design page's E1-E9, P8 and j rows, the ADR's pre-open admission paragraph); where the lane cites a symbol for a pin this branch had re-anchored by line (the P6 decision's `set_pine_risk_*` setters), the lane's symbol stands. Two sentences both sides rewrote are merged to be true of the merged tree: - design E2: its excursion sample "differed by chronology (the Pine host's own excursion model, retired by R5 lane H-THIN ...)": the citation this branch had given it, `margin_call_sample_bar`, left with that model. - ADR-0001, the pre-open slice: it parted from the kernel's point on the one-contract band and the +1e-6 floor until H-THIN's shared rule, and on the frozen units until PAR-MARGIN's freeze (whose tape evidence stays); with both it books the kernel's units -- the M10 frozen case of tests/test_adapter_margin_schedule_differential.cpp, as merged at the X15 d pick. The lane's "parts on the frozen units alone (4 lots on the frozen 19 ...)" was true of its own tree, not this one. The sentences it retires or rewrites, and who wrote them: ADR-0001's two on the Pine host's own per-lot MFE/MAE and its ab9714b retention (H-MEASURE's excursion measurements, 37090e1, picked from fd3c72e) and its sentence on the pre-open admission slice, now extended (H-MEASURE's margin measurements, bc866e5, picked from bafefba); the design page's RE1 sentence on the adapter's owner hook and its row's "retained: it is the host's excursion contract" (the range-end ruling, b16e11f, lane Q6 02ed0fe); and contributing-llm.md's "The adapter keeps its count pending a re-lowering ruling." (H-MEASURE's pyramiding tapes, e1d0fa3, picked from 99d3b95).
…H-MEASURE rows R5 lane H-THIN carries The eight source-bound rows of lane H-MEASURE's three measurement commits (picked onto INT25) register in release, debug, sanitizers and native; counted with ctest -N on the lane's tree against its base 0d76a09 (release 659 -> 667 in the lane's own configuration, debug 659 -> 667, native +8). No kernel-profile row is added (270 on both trees), so KERNEL_MIN_TESTS stays 277. The two pages that cite RELEASE_MIN_TESTS by line follow it, and test_ci_verify's pin of the excluded floors is corrected with them. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 09f0bbdad145bf23a83732ebdcdbb0ef535051af) INT26 pick note: empty here. The eight rows this commit counts are H-MEASURE's, which H-THIN had cherry-picked (a27c6a2c, 6a89ddfc, cf908f75, skipped here) and which the floors already count since pick 1; H-THIN adds no CTest row of its own. ctest -N on this tree under ci_verify's own argv per profile (INT26-scratch/ctestN/hthin-*.txt) gives release 701, kernel 287 registered / 286 run, debug and sanitizers 682, native 691 -- the floors as they stand -- so this branch's floors, their citations and test_ci_verify's pin are unchanged. The commit is kept, empty, so the pick history lists every commit the late-picks list names.
… table; the host writes no excursion H-THIN was written on main 0d76a09, before H-DOCGATES' "1.0 C boundary" table and its kernel-member inventory; the late-picks list asks for its kernel additions to be recorded there. - docs/pages/native-engine.md, the 1.0 C boundary table: a row for `NativeStrategyHost::native_aggregates_input_bars()` (C++ only; its reason is the one the header's COVERAGE `[--]` row gives, which is its checker row), and the library row names the civil-date pair `native_civil_date` / `native_civil_days` and `pairing_aggregates` among `native_calendar.hpp`'s utilities. - scripts/check_native_c_api_surface.py: `C_V1_EXCLUSIONS["library_facilities"]` also refuses a C declaration spelled after those three, so the row fails when a C spelling appears, as the table says every such row does. - docs/adr/0001-kernel-adapter-boundary.md, the row "fields of the kernel's rows the Pine host amends": since H-THIN's E19 the Pine host writes no excursion (`sample_open_trade_extremes` and `replace_masked_entry_bar_extremes` are gone and the kernel's sampler books every Pine lot's), so `PyramidEntry::max_runup` / `max_drawdown` leave its list and the sentence that said the host samples them is replaced by what the code does. That sentence was H-DOCGATES' (c5c611a, picked from its seam-row commit). check_native_c_api_surface.py passes (21 boundary rows, each pinned and in the table) and its self-test 29/29; check_kernel_seam_rows.py 42 members, 0 without a row. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…er a cash commission sizes from strategy.equity and leaves out its own order's fee Root cause. PineExecutionAdapter::default_sizing_cash took the percentage of percent_commission_live_equity(), which adds the adapter's open_entry_fees_ ledger (the open entries' cash-per-order / cash-per-contract fees) back onto the kernel's marked equity; the only fee the kernel reserves out of the money is a PERCENT commission (native_order::Sized::reserve_percent_fee). So under a cash commission every default percent-of-equity quantity was sized from an equity with the open cash fees restored and with no fee kept for its own order. TradingView's rule, on thirteen `lab tv` tapes (tests/fixtures/cash_fee_sizing, ws-report-v1, rangeProof covered; twelve new -- 50, 100 and 200 %, long and short, flat, pyramided, after a partial close, reversing, limit, stop and strategy.order, BINANCE:ETHUSDT.P and CME_MINI:ES1! at point value 50, margin 25 and 100 -- plus lane H-THIN's FIFO fee-basis tape): cash per order units = floor((pct * E - fee) / (price * pointvalue)) cash per contract units = floor(pct * E / (price * pointvalue + fee)) with E = strategy.equity at the sizing mark (every open entry's pro-rata fee charged) and price = the signal close (market entry, strategy.order) or the level (limit, stop); a reversal keeps one fee for its one order. The rule fits 60 of 60 sized entries per order, 54 of 54 per contract, and all 366 trades of corpus order-percent-equity-cash-commission-01; the restored basis fits only the flat entries, no reserve none. The change (adapter policy): PineSizingSnapshot::strategy_equity records strategy.equity at the mark (mark_sizing_equity, only when default_sizing_reserves_cash_fee(): a percent-of-equity default quantity, a cash-per-order or cash-per-contract commission, a positive value), and default_sizing_cash hands the kernel's CashValue the percentage of it less the per-order fee, or scaled by unit / (unit + fee) per contract. The money gates and the margin money keep the restored equity; a per-call qty_type (PineForge-only, TradingView refuses it) keeps its conversion. The new field folds into pineforge-source-adapter/v4 only where it is recorded. Tests. New row test_cash_fee_sizing_tapes replays every tape's script through the Pine adapter on its bars: fail-before on base 09f0bbda (its headers and library) 0 of 111 trades booked as TradingView books them, 134 of 174 checks failing, first "pcf-order-p50-m25 #1 A1 26.5953 vs the tape's 26.0634"; after, 111 of 111 (ids, sides, times, prices, quantities exact, commission to 1e-9, net profit to 1e-7 of |profit| + |commission|). The two margin-100 tapes are a recorded divergence: TradingView margin-calls a default 100 % entry on its entry bar once the order's cash fee takes the equity under the position, the adapter's margin equity restores that fee; the quantities sized agree, the adapter's rows are pinned. test_l4b_policy_regressions pinned the old rule: expectation corrected 20.0 -> 19.79 (9.9 + 9.89), row renamed. Hash step -- every value that moves, harvested with each TU's own switch on this tree; the same harvest on base 09f0bbda reproduces every old value: tests/test_adapter_quiet_bar_pinned.inc: 80 values over 24 rows (boundary 24, rows 12, trades 22, final_hash 22; no count), the battery's six random scenarios with a percent-of-equity default quantity and a cash-per-order fee (Random05, 06, 20, 35, 38, 46). tests/test_publication_witness_pinned.inc: 34 of 156 digests -- exactly the Config runs whose configuration sweep passes through a percent-of-equity default quantity with a positive cash fee (census by an instrumented copy of the TU) -- six of them closing a different number of trades (Config03 50 -> 48, Config03M 48 -> 44, ConfigFlags103 65 -> 63, ConfigFlags103M 66 -> 65, ConfigFlags104 and ConfigFlags104M 12 -> 13); folds and recorded rows unchanged. scripts/corpus_parity_baseline.txt: order-percent-equity-cash-commission-01 7c8f19ad -> 44ad17ec, toward TradingView (quantities inside its 0.0001 cell 0 -> 355 of 366, the rest 1e-7 to 3e-6 under it through the corpus harness's gridless equity; largest |dqty| 0.00106 -> 0.0000985; 90th percentile |d net profit| 0.029 -> 0.0023; 366 of 366 quantities and net profits closer). It is the corpus's only probe with a percent-of-equity default quantity and a cash commission. The other witness tables (report_relower, recording_hash_witness, continuation_view, receipts_in_place, command_allocations, lookup_index_witness, host_view_memo, live_state_equivalence) pass unchanged on this tree. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 214c082c8d6ceaf36e26f5377b0061ed3842d45f) INT26 pick note (late pick, accepted 2026-09-26 14:10, after H-THIN as the list says): every source, header and test-code hunk applied unchanged. Its hash values fold into the single INT26 v19 hash re-pin, so the quiet-bar and publication tables keep this branch's hash values here; the behaviour it moves is pinned here, harvested on this tree with each TU's own switch: the trade digests of quiet-bar Random05/0/*, Random06, Random20, Random35, Random38 and Random46 (the scenarios with a percent-of-equity quantity under a cash fee; Random05/0/* had been moved by an earlier pick too, so it takes this tree's own value) and the closed trades of five publication runs (ConfigFlags103 65 -> 63, Config03M 48 -> 44, ConfigFlags103M 66 -> 65, ConfigFlags104 and ConfigFlags104M 12 -> 13), each equal to the lane's; the lane's Config03 50 -> 48 was already pinned with PAR-MARGIN-2. No other pinned behaviour moves. The publication test's provenance keeps both lanes' paragraphs. The corpus line for order-percent-equity-cash-commission-01 is the lane's, re-derived once after every pick (CORPUS4, applied after this pick, stays last).
…ane PAR-CASHFEE docs/design/native-feature-parity.md gets §3.10: TradingView's rule (per order and per contract, strategy.equity with the open entries' cash fees charged, the order's own fee left out, the level for a priced entry), the thirteen tapes with the entries the rule fits, the adapter change, the replay, the corpus probe's move toward its tape, the hash step, and two findings recorded and not changed: TradingView margin-calls a default 100 % entry on its entry bar at margin 100 once its cash fee takes the equity under the position (the adapter's margin equity restores that fee), and the FX case is unmeasured. The SZ5 row names the cash-fee reserve as adapter policy, the X15 b row says who still reads the restored equity, and H-THIN's finding 1 points at the fix. docs/pine-adapter-kernel-notes.md §5.2 keeps the retired kernel block verbatim and marks its "cash commissions reserve nothing" claim corrected. Anchors: the lane's source edits moved lines in pine_adapter.cpp, pine_adapter.hpp and pine_state_hash.cpp; every anchor citing them is carried through an exact difflib line map from 09f0bbda (182 moved, digits only, in the design doc, ADR-0001 and native-engine.md), and the two on the SZ5 row the lane rewrote are mapped the same way by hand. check_doc_anchors: every anchor resolves to its symbol; check_doc_lint: clean. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 6bae784e66e6e6426fc461e4bc1a86911d2e3000) INT26 pick note: the docs merged on anchor digits only (they re-anchor once, in INT26 (vii)).
…ane PAR-CASHFEE's row test_cash_fee_sizing_tapes is source-bound: it registers in release, debug, sanitizers and native and not in the kernel profile. Counted with ctest -N on the lane's tree against its base 09f0bbda in the same configuration: 667 -> 668, and 251 -> 251 with PINEFORGE_BUILD_SOURCE_LAYER=OFF, so KERNEL_MIN_TESTS stays 277. RELEASE_MIN_TESTS 686 -> 687, EXCLUDED_REGISTERED_MIN debug/sanitizers 667 -> 668 and native 676 -> 677; test_ci_verify's pin of the excluded floors follows with an expectation correction, and the two pages that cite RELEASE_MIN_TESTS by line (CONTRIBUTING.md, docs/pages/contributing-llm.md) follow it to ci_verify.py:365. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit b44b10b4c634a29f89eceb459bc749bb8f669df7) INT26 pick note: the floors take this lane's one source-bound row on top of the integrated counts -- RELEASE 701 -> 702, EXCLUDED_REGISTERED_MIN 682/682/691 -> 683/683/692, KERNEL 286 unchanged -- recounted with ctest -N under ci_verify's own argv per profile on this tree (INT26-scratch/ctestN/pcf-*.txt: release 702, kernel 287 registered, debug 683, sanitizers 683, native 692; the one new name is test_cash_fee_sizing_tapes). Each floor comment lists it with wave H's other rows; test_ci_verify's pin, docs/ci.md's floor sentence and the four floor citations follow.
…d2e2 (lane CORPUS4) pineforge-corpus a7ad2e2 re-derives every generated.cpp in the corpus with pineforge-codegen-oss a4259656, the codegen 1.0 line: #140 (b0ed4967), #141 (696fa25f) and #142 (a4259656) on f3285d79. It is branch regen/codegen-a425965, one commit on bcfb0d6, which is corpus main, f989e36 plus #16. - The 314 validation/ and draft-probes/ TUs go through scripts/regen_corpus_cpp.sh. - The 11 nested special-validation/ and validation/symbol-specified/ TUs, which its corpus/*/*/ glob does not reach, go through the same image, checkout and transpile call. Engine and codegen ship 1.0.0 together, so the corpus this engine pins is now emitted by the codegen that ships. 92 of the 325 TUs change, +920/-373 lines, and no other corpus file moves: - 83 of the 312 validation probes; - both draft-probes; - 2 of the 6 special-validation probes; - all 5 symbol-specified probes. They were stale since 2026-06-10, in the old BacktestEngine-based shape that no longer compiled. Every change is attributed by re-transpiling all 325 sources at each codegen commit that touches pineforge_codegen/: - #140's 4a31a3b6, 66 TUs: na truthiness at boolean boundaries, and na-preserving int conversions at call arguments. - #140's 79584d99, 39 TUs: na-preserving history offsets, and history references typed by their series. - #140's 51bbdcda, 2 TUs: the Keltner EMA warmup. - #140's e19ce6db, 2 TUs: a user type named Box is emitted as pf_safe_Box. - #142's session.ismarket calendar lowering, 5 TUs. - #141 changes none. The pins that name that (corpus, codegen) pair move together: - The corpus gitlink moves f989e36 -> a7ad2e2. - The `# corpus` header of scripts/corpus_parity_baseline.txt is re-recorded with `corpus_trades_identity.py --update`. That ran over this engine's 312 trade lists, re-run from the new TUs with the gate's per-probe run_strategy.py command on macOS arm64. The checker refused on that header first, as it must. - The baseline diff is that one line. All 312 sha256 rows are unchanged, so every engine trade list is byte-identical under the re-emitted TUs, including the 83 whose TU changed. - The verifier grades exactly those lists against unchanged TradingView tapes, so every probe keeps its tier. - The paired-codegen pin moves f3285d7 -> a4259656: CODEGEN_COMMIT in scripts/regen_corpus_cpp.sh and its source check scripts/test_regen_corpus_cpp_pin.py. - `VERIFY=1 scripts/regen_corpus_cpp.sh` at a4259656 over this corpus: 314 verified, 0 drifted. - At f3285d7 over f989e36: 314 verified, 0 drifted. These four lines were every citation of f989e36 or f3285d7 in the tree. Each is a pin statement; no historical record cites either. The Cloud Run case runner refuses a corpus bundle whose commit differs from this gitlink (pineforge-workflow cloudrun/runner/preflight.mjs). The companion pineforge-workflow branch r5/corpus4 (migration 0048) re-pins that side. The corpus PR, this commit and that branch land together. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 3d59fad496b27cc4dfb8659f521a768fa2ff1dcd)
…ived for the a4259656 TUs (lane CORPUS4) pineforge-corpus b40aa8e is a7ad2e2 plus one commit. That commit re-derives owned_strategies.json, whose generated_cpp_sha256 the regeneration had left matching 32 of its 60 owned probes. The re-derivation uses the generator and method of corpus f989e36. - 28 digests are rewritten, so all 60 match their TUs again. - validation_run names this branch's previous commit, 3d59fad4: its full parity sweep at a7ad2e2 with codegen a4259656. That commit stays in the history because the manifest cites it. - native_validation, tier_distribution and every other digest re-derive unchanged. b40aa8e keeps a7ad2e2's validation/, data/, draft-probes/ and special-validation/ trees byte-for-byte. Two pins move: - The corpus gitlink moves a7ad2e2 -> b40aa8e. - The `# corpus` header of scripts/corpus_parity_baseline.txt is re-recorded with `corpus_trades_identity.py --update`. That ran over the 312 trade lists this engine re-derives at b40aa8e, after the checker refused on that header. The baseline diff is that one line: all 312 sha256 rows are unchanged. CODEGEN_COMMIT in scripts/regen_corpus_cpp.sh and its source check stay at a4259656: that codegen still reproduces every TU of b40aa8e. The companion pineforge-workflow branch r5/corpus4 (migration 0048) registers b40aa8e's bundle. The corpus PR, this branch and that migration land together. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit cb1bbf3c0323fd492a157a2dfe335ba6d28203e2)
The late picks change behaviour a user can see; the entry says so, one sentence a user can act on per change, naming no lane. - What a native host must handle: a current execution refuses a request bound to a host roster (`UnsupportedRequest`, C 5) where it used to fail the run; the post-fill margin check measures the fill's own segment; two C++ calendar queries (`native_aggregates_input_bars()`, `native_civil_date` / `native_civil_days`), C++ only. - Behaviour: the margin bullet now covers the post-fill waypoint, adds and `process_orders_on_close` / `calc_on_order_fills` openings, the gap-open slice's shared sizing, the magnifier's long and short cases and a margin call's nearest-tick fill; a recalculation's market order or strategy.close at a bar's second extreme; a `process_orders_on_close` stop entry placed while the position still holds the other side; the kernel sampler's excursions for Pine strategies (19 corpus probes, 335 trades: 324 now equal TradingView's, 11 closer -- the corpus re-derived once at b40aa8e on the final tree moves no baseline line, so the probes' trades are byte for byte the ones those counts were taken on); a FIFO strategy.exit's own-entry reservation; `strategy.margin_liquidation_price` reading na with margin calls off; a percent-of-equity quantity under a cash commission sized as TradingView sizes it (order-percent-equity-cash-commission-01: 355 of 366 quantities within TradingView's 0.0001 cell, none before). The sentences it rewrites (the margin bullet, the process_orders_on_close bullet's last clause and its corpus-probe sentence) were INT26 (ii)'s own (8986620). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
The one commit of INT26 that moves pinned hash values. Every late pick's own
hash re-pin (PAR-ORDERS-2 9f7a025c, PAR-MARGIN-2 8876c108, H-THIN's hash step
ab297364, PAR-CASHFEE's hash step 214c082c) folds into it, as the late-picks list rules; the behaviour those
re-pins carried (trades, counts, transcript digests) landed with the picks
that move it, so this commit moves hash values alone. Nothing here is an
epoch change: v19 is unreleased.
How: on the integrated tree each pinned TU is compiled with its own harvest
switch (PINEFORGE_R1_HARVEST, PINEFORGE_F9_HARVEST, PINEFORGE_P1_HARVEST,
PINEFORGE_P4_HARVEST, PINEFORGE_QUIET_BAR_HARVEST, PINEFORGE_L5_HARVEST,
PINEFORGE_P7_HARVEST, PF_HOST_VIEW_MEMO_DUMP, PINEFORGE_D2D_PUBLICATION_HARVEST,
PINEFORGE_K1_HARVEST, PINEFORGE_V19E_HARVEST) and the re-pin tool
(INT26-scratch/tools/repin_int26.py: INT25's repin_int25.py, which is V19-FIX's,
plus the publication witness and the live-state transcripts) rewrites each
moved hash value under an appended note. The tool refuses any non-hash
change: a moved trade, count, trade digest, fingerprint field, publication
fold/trade/row count or live-state transcript is a STOP (mutation runs: a
quiet-bar trade count, a quiet-bar trade digest, a publication trade count, a
host-view fingerprint's trades and a live-state transcript each stop it).
After the write the same harvest reproduces every pin (0 moved) and every
witness row passes.
Which pick moved each value: the eleven witnesses were harvested at every
pick boundary (B0 = PAR-ORDERS' re-pin 1518fa8f, whose pins every later pick
kept; then PAR-ORDERS-2, PAR-MARGIN, PAR-MARGIN-2, the CI/INT26/PERF-KEDGE/
CI-RUNNER stretch, H-THIN X15 a+e, H-THIN's hash step, X15 d, X15 f, A4-DUST,
H-THIN's docs and floors, PAR-CASHFEE's hash step, and the final tree), and each moved value is marked with the transitions where
it changed. B0's harvest reproduces B0's pins; every non-hash value at the final
tree equals its pin.
| witness | hash values moved | by pick |
|---|---:|---|
| test_adapter_report_relower | 72 of 72 | H-THIN 72 |
| test_adapter_recording_hash_witness | 267 of 267 | H-THIN 267 |
| test_adapter_continuation_view | 169 of 227 | H-THIN 168; PAR-ORDERS-2 + H-THIN 1 |
| test_adapter_receipts_in_place | 334 of 334 | H-THIN 334 |
| test_adapter_quiet_bar | 680 of 816 | H-THIN 553; PAR-ORDERS-2 + H-THIN 69; H-THIN + PAR-CASHFEE 50; PAR-ORDERS-2 + H-THIN + PAR-CASHFEE 8 |
| test_adapter_command_allocations | 32 of 32 | H-THIN 32 |
| test_adapter_lookup_index_witness | 948 of 948 | H-THIN 948 |
| test_adapter_host_view_memo | 13 of 13 | H-THIN 13 |
| test_publication_witness | 156 of 156 | H-THIN 98; H-THIN + PAR-CASHFEE 29; PAR-ORDERS-2 + H-THIN 24; PAR-ORDERS-2 + H-THIN + PAR-CASHFEE 4; PAR-MARGIN-2 + H-THIN + PAR-CASHFEE 1 |
| test_native_calendar_hash_witness | 0 of 12 | -- |
| test_adapter_live_state_equivalence | 0 of 0 | -- |
2671 values in all. Why they move:
- H-THIN's hash step (E19, P10): the Pine host keeps the kernel's
owns_lot_excursions() default, so the retired host excursion model's state
leaves the source-layer fold (pineforge-source-adapter/v4) and every
source-layer hash value moves; P10 moves the placement of FIFO exits.
- PAR-ORDERS-2: the adapter's transient coof_fill_forced_ is folded while a
recalculation runs.
- PAR-MARGIN-2: the kernel's post-fill margin point measures from the fill's
own waypoint, which moves publication Config03's recorded path (its trades
moved with that pick: 50 -> 48).
- PAR-CASHFEE: the fold folds the sizing snapshot's strategy.equity wherever a
percent-of-equity quantity under a cash fee is recorded (quiet-bar's six
cash-fee scenarios, 34 publication runs; their trades moved with that pick).
No other pick moves a hash value (PAR-MARGIN, CI-FLAKE, the INT26 items,
PERF-KEDGE, CI-RUNNER, H-THIN X15 a/e/d/f and A4-DUST, CORPUS4: 0 each).
The Pine witness (PERF0-K's wah replay, spark GCC 13.3 aarch64, release and
stress builds): main 0d76a099 14010942914806881059 -> this tree
8577114281377521372, release and stress agreeing -- H-THIN's hash step alone
moves it (the lane measured the same pair); PAR-ORDERS-2's fold does not run
in it and PAR-CASHFEE leaves it unchanged (8577114281377521372 before and after
its picks).
Moved (old -> new [pick]; each pinned file carries the same list):
test_adapter_report_relower: 72 lines
kOrdinary_hashes[0]: 10420073189004151623ull -> 243601838968427296ull [H-THIN]
kOrdinary_hashes[1]: 13145042526267837939ull -> 14082045497352522076ull [H-THIN]
kOrdinary_hashes[2]: 2622782777793463991ull -> 16788444728701273278ull [H-THIN]
kOrdinary_hashes[3]: 17996446729054892726ull -> 4735244315032400709ull [H-THIN]
kOrdinary_hashes[4]: 3969181056128787992ull -> 9274703563551556229ull [H-THIN]
kOrdinary_hashes[5]: 16947117433974038ull -> 4437548837203718331ull [H-THIN]
kOrdinary_hashes[6]: 423735939073054907ull -> 9447280110204500336ull [H-THIN]
kOrdinary_hashes[7]: 18056612604689961163ull -> 644150700710845644ull [H-THIN]
kOrdinary_hashes[8]: 12445011709498043361ull -> 12856503234686701952ull [H-THIN]
kOrdinary_hashes[9]: 16382730376298748267ull -> 8228843622305023308ull [H-THIN]
kOrdinary_hashes[10]: 12718112296054108390ull -> 11723584407685805665ull [H-THIN]
kOrdinary_hashes[11]: 913929622865489206ull -> 12427688725613086017ull [H-THIN]
kOrdinary_hashes[12]: 13218761675008378229ull -> 5717024028566739016ull [H-THIN]
kOrdinary_hashes[13]: 10388057217060506235ull -> 9136288938210272546ull [H-THIN]
kOrdinary_hashes[14]: 4373273430774112306ull -> 14265105010801500849ull [H-THIN]
kOrdinary_hashes[15]: 11946915320520331422ull -> 5913118032193444201ull [H-THIN]
kOrdinary_hashes[16]: 2472677882334572745ull -> 2601700310587933770ull [H-THIN]
kOrdinary_hashes[17]: 4709222664471492344ull -> 16710877784426826175ull [H-THIN]
kOrdinary_hashes[18]: 5785035152764109816ull -> 12222101465241554407ull [H-THIN]
kOrdinary_hashes[19]: 15834701310167426825ull -> 1466897115669479138ull [H-THIN]
kOrdinary_hashes[20]: 18416054639860847807ull -> 8818039625616895170ull [H-THIN]
kOrdinary_hashes[21]: 9654818568811123148ull -> 17382764399684682567ull [H-THIN]
kOrdinary_hashes[22]: 7514399512975361670ull -> 5569220102658162789ull [H-THIN]
kOrdinary_hashes[23]: 375912627396258150ull -> 5858716210019128261ull [H-THIN]
kCalcOnOrderFills_hashes[0]: 13492117694829868536ull -> 8076983691197291309ull [H-THIN]
kCalcOnOrderFills_hashes[1]: 12939649384498536620ull -> 2440556825337174781ull [H-THIN]
kCalcOnOrderFills_hashes[2]: 18283200234405460746ull -> 17660598049729719549ull [H-THIN]
kCalcOnOrderFills_hashes[3]: 17715026773738590286ull -> 584654546328644269ull [H-THIN]
kCalcOnOrderFills_hashes[4]: 16652393141204816958ull -> 10522330026569309375ull [H-THIN]
kCalcOnOrderFills_hashes[5]: 10681558687161056850ull -> 2930399316675077519ull [H-THIN]
kCalcOnOrderFills_hashes[6]: 12828138156283959725ull -> 17808710347154107934ull [H-THIN]
kCalcOnOrderFills_hashes[7]: 13337213902076129151ull -> 6715617711192628536ull [H-THIN]
kCalcOnOrderFills_hashes[8]: 2897666538282385134ull -> 6587502700890907205ull [H-THIN]
kCalcOnOrderFills_hashes[9]: 4846519892874967202ull -> 2192689119498288561ull [H-THIN]
kCalcOnOrderFills_hashes[10]: 4182996206551988888ull -> 8664008431780515081ull [H-THIN]
kCalcOnOrderFills_hashes[11]: 3828630408241748525ull -> 7930584285132978374ull [H-THIN]
kCalcOnOrderFills_hashes[12]: 6013095397646776827ull -> 17064940335416518660ull [H-THIN]
kCalcOnOrderFills_hashes[13]: 1201561623500117444ull -> 9016627554631535731ull [H-THIN]
kCalcOnOrderFills_hashes[14]: 16339691134963647305ull -> 16088314143365594964ull [H-THIN]
kCalcOnOrderFills_hashes[15]: 1360168785605943262ull -> 13783309705914047335ull [H-THIN]
kCalcOnOrderFills_hashes[16]: 10446097969456318121ull -> 9827199985728418388ull [H-THIN]
kCalcOnOrderFills_hashes[17]: 2226082304527453549ull -> 16177976828038662588ull [H-THIN]
kCalcOnOrderFills_hashes[18]: 5506525745160110349ull -> 12444021166412526756ull [H-THIN]
kCalcOnOrderFills_hashes[19]: 16314828352609565244ull -> 12728919766761920669ull [H-THIN]
kCalcOnOrderFills_hashes[20]: 14800719633294876469ull -> 17328862593452428978ull [H-THIN]
kCalcOnOrderFills_hashes[21]: 1572183010617309931ull -> 565050300121405896ull [H-THIN]
kCalcOnOrderFills_hashes[22]: 6980933373957006777ull -> 12671085486866481742ull [H-THIN]
kCalcOnOrderFills_hashes[23]: 3071340150260882121ull -> 9604569239120914630ull [H-THIN]
kSuppressedTail_hashes[0]: 10420073189004151623ull -> 243601838968427296ull [H-THIN]
kSuppressedTail_hashes[1]: 13145042526267837939ull -> 14082045497352522076ull [H-THIN]
kSuppressedTail_hashes[2]: 2622782777793463991ull -> 16788444728701273278ull [H-THIN]
kSuppressedTail_hashes[3]: 17996446729054892726ull -> 4735244315032400709ull [H-THIN]
kSuppressedTail_hashes[4]: 3969181056128787992ull -> 9274703563551556229ull [H-THIN]
kSuppressedTail_hashes[5]: 16947117433974038ull -> 4437548837203718331ull [H-THIN]
kSuppressedTail_hashes[6]: 423735939073054907ull -> 9447280110204500336ull [H-THIN]
kSuppressedTail_hashes[7]: 18056612604689961163ull -> 644150700710845644ull [H-THIN]
kSuppressedTail_hashes[8]: 12445011709498043361ull -> 12856503234686701952ull [H-THIN]
kSuppressedTail_hashes[9]: 16382730376298748267ull -> 8228843622305023308ull [H-THIN]
kSuppressedTail_hashes[10]: 12718112296054108390ull -> 11723584407685805665ull [H-THIN]
kSuppressedTail_hashes[11]: 913929622865489206ull -> 12427688725613086017ull [H-THIN]
kSuppressedTail_hashes[12]: 13218761675008378229ull -> 5717024028566739016ull [H-THIN]
kSuppressedTail_hashes[13]: 10388057217060506235ull -> 9136288938210272546ull [H-THIN]
kSuppressedTail_hashes[14]: 4373273430774112306ull -> 14265105010801500849ull [H-THIN]
kSuppressedTail_hashes[15]: 11946915320520331422ull -> 5913118032193444201ull [H-THIN]
kSuppressedTail_hashes[16]: 2472677882334572745ull -> 2601700310587933770ull [H-THIN]
kSuppressedTail_hashes[17]: 4709222664471492344ull -> 16710877784426826175ull [H-THIN]
kSuppressedTail_hashes[18]: 5785035152764109816ull -> 12222101465241554407ull [H-THIN]
kSuppressedTail_hashes[19]: 15834701310167426825ull -> 1466897115669479138ull [H-THIN]
kSuppressedTail_hashes[20]: 18416054639860847807ull -> 8818039625616895170ull [H-THIN]
kSuppressedTail_hashes[21]: 9654818568811123148ull -> 17382764399684682567ull [H-THIN]
kSuppressedTail_hashes[22]: 7514399512975361670ull -> 5569220102658162789ull [H-THIN]
kSuppressedTail_hashes[23]: 7096719386424781198ull -> 8558103254181104877ull [H-THIN]
test_adapter_recording_hash_witness: 267 lines
kSubmit_rows[0]: 8933562200260968840ull -> 8019365971493599225ull [H-THIN]
kSubmit_rows[1]: 16496088491414191334ull -> 12084928604454138979ull [H-THIN]
kSubmit_rows[2]: 17745030456223078154ull -> 7685642069387429171ull [H-THIN]
kSubmit_rows[3]: 15976454321452418827ull -> 3048458165749351592ull [H-THIN]
kSubmit_rows[4]: 13867778238676275167ull -> 1016691552216785494ull [H-THIN]
kSubmit_rows[5]: 10620212436062486555ull -> 13664491885780078814ull [H-THIN]
kSubmit_rows[6]: 16387014991078439144ull -> 9587023827432894395ull [H-THIN]
kSubmit_rows[7]: 5372310558802353946ull -> 14524900109868328621ull [H-THIN]
kSubmit_rows[8]: 8117928017652874474ull -> 9306730010360799799ull [H-THIN]
kSubmit_rows[9]: 12227480580368604280ull -> 10975560481515534245ull [H-THIN]
kSubmit_rows[10]: 11671431865371234655ull -> 6175700847996002068ull [H-THIN]
kSubmit_rows[11]: 15852753888607827401ull -> 17944617882018938484ull [H-THIN]
kSubmit_rows[12]: 4564599765874863441ull -> 89066156438191170ull [H-THIN]
kSubmit_rows[13]: 12753515022268993432ull -> 7853223159133263199ull [H-THIN]
kSubmit_rows[14]: 16693007526387479527ull -> 16829337964629633742ull [H-THIN]
kSubmit_rows[15]: 9553609781489681132ull -> 14048972284943154657ull [H-THIN]
kSubmit_rows[16]: 9723295982254899748ull -> 10772403295793355383ull [H-THIN]
kSubmit_rows[17]: 9596448656160987273ull -> 12849842554292919416ull [H-THIN]
kSubmit_rows[18]: 14172117111020274407ull -> 11523841829240280476ull [H-THIN]
kSubmit_rows[19]: 1811404642983946404ull -> 14633701048963800807ull [H-THIN]
kSubmit_rows[20]: 6600438489637577460ull -> 13106625599621486697ull [H-THIN]
kSubmit_rows[21]: 1823325663201613856ull -> 11578248645351712284ull [H-THIN]
kSubmit_rows[22]: 671600216917334430ull -> 12923518206466935124ull [H-THIN]
kSubmit_rows[23]: 14450998569007950837ull -> 11664001542269768811ull [H-THIN]
kSubmit_rows[24]: 18123601071981623076ull -> 4353270054101958588ull [H-THIN]
kSubmit_rows[25]: 5788029478896071429ull -> 12509431446261158271ull [H-THIN]
kSubmit_rows[26]: 5791781074908951980ull -> 6827814975693211880ull [H-THIN]
kSubmit_rows[27]: 8180458203668078357ull -> 13768158546548443068ull [H-THIN]
kSubmit_rows[28]: 10842259428116090863ull -> 6634357882333049268ull [H-THIN]
kSubmit_rows[29]: 7789401651194802796ull -> 8521102792149394239ull [H-THIN]
kSubmit_rows[30]: 16644199069697802031ull -> 15674750399051881772ull [H-THIN]
kSubmit_rows[31]: 13033963886965614456ull -> 7695240294002266835ull [H-THIN]
kSubmit_reads[0]: 5783964658104710927ull -> 18234150623076098218ull [H-THIN]
kSubmit_reads[1]: 9790324176931117308ull -> 7528636846310271579ull [H-THIN]
kSubmit_reads[2]: 8640216615515382983ull -> 6832312803948695488ull [H-THIN]
kSubmit_reads[3]: 18016456059351763749ull -> 11582188679677093386ull [H-THIN]
kSubmit_reads[4]: 6161691521401770042ull -> 13475769493769981375ull [H-THIN]
kSubmit_reads[5]: 11652988695302303084ull -> 10681991124354674742ull [H-THIN]
kSubmit_final[0]: 13033963886965614456ull -> 7695240294002266835ull [H-THIN]
kReplace_rows[0]: 8933562200260968840ull -> 8019365971493599225ull [H-THIN]
kReplace_rows[1]: 3907924323473264241ull -> 10913970432357026228ull [H-THIN]
kReplace_rows[2]: 14461884941578386867ull -> 16718022224308212524ull [H-THIN]
kReplace_rows[3]: 16511157315480471622ull -> 11959962526167016269ull [H-THIN]
kReplace_rows[4]: 3959552939271361991ull -> 13682103540524835918ull [H-THIN]
kReplace_rows[5]: 2555551956738490898ull -> 14243367393985337845ull [H-THIN]
kReplace_rows[6]: 10502649610878884111ull -> 8014600618664019672ull [H-THIN]
kReplace_rows[7]: 18306494604560422814ull -> 12889133748772252011ull [H-THIN]
kReplace_rows[8]: 17185448195161859406ull -> 360570764097142565ull [H-THIN]
kReplace_rows[9]: 15450494133515205524ull -> 11876071708761659347ull [H-THIN]
kReplace_rows[10]: 6827766899990563012ull -> 3851347914344196379ull [H-THIN]
kReplace_rows[11]: 181096906100466027ull -> 269582453071901974ull [H-THIN]
kReplace_rows[12]: 3679474327996900584ull -> 7374511927462938135ull [H-THIN]
kReplace_rows[13]: 5841986886798320038ull -> 14141590806976750289ull [H-THIN]
kReplace_rows[14]: 1819868140276584460ull -> 10009811972588039873ull [H-THIN]
kReplace_rows[15]: 4420902119403666462ull -> 6680845581363570511ull [H-THIN]
kReplace_rows[16]: 13480284355483224649ull -> 14019640910801526228ull [H-THIN]
kReplace_rows[17]: 7175317954498263753ull -> 8435723009555847478ull [H-THIN]
kReplace_rows[18]: 17073623445577360118ull -> 11806787700855741945ull [H-THIN]
kReplace_rows[19]: 17009991270755579471ull -> 4186867479979939080ull [H-THIN]
kReplace_rows[20]: 12090343301005594287ull -> 4211449273197151184ull [H-THIN]
kReplace_rows[21]: 13041638478193314581ull -> 2665513011878476638ull [H-THIN]
kReplace_rows[22]: 1923525511758336863ull -> 6197194006704225848ull [H-THIN]
kReplace_rows[23]: 1774789224381390235ull -> 9112509013863788708ull [H-THIN]
kReplace_rows[24]: 15509873019280549637ull -> 8040469185102305882ull [H-THIN]
kReplace_rows[25]: 18049355505317406500ull -> 2771278037748002351ull [H-THIN]
kReplace_rows[26]: 9113574443316558064ull -> 11922167282207411627ull [H-THIN]
kReplace_rows[27]: 52835018303832477ull -> 11390247996551829374ull [H-THIN]
kReplace_rows[28]: 17600220618483225632ull -> 5206095883568772047ull [H-THIN]
kReplace_rows[29]: 4090055281926467129ull -> 2965585984607700150ull [H-THIN]
kReplace_rows[30]: 10973342611545588080ull -> 14433906025888897687ull [H-THIN]
kReplace_rows[31]: 17124982032285163865ull -> 8339014417427264918ull [H-THIN]
kReplace_reads[0]: 2326526227949002076ull -> 18240752413274260441ull [H-THIN]
kReplace_reads[1]: 13390056939270062271ull -> 2691016625363928396ull [H-THIN]
kReplace_reads[2]: 10021657182331917789ull -> 6810061420294520706ull [H-THIN]
kReplace_reads[3]: 14242637685443801194ull -> 9524522377897439163ull [H-THIN]
kReplace_reads[4]: 711594472462182014ull -> 7296154269922229361ull [H-THIN]
kReplace_reads[5]: 4857350833193818325ull -> 17144192060924016500ull [H-THIN]
kReplace_reads[6]: 4317633836685601759ull -> 15841551483731080184ull [H-THIN]
kReplace_reads[7]: 1066029825997878730ull -> 3093248295129869043ull [H-THIN]
kReplace_final[0]: 17124982032285163865ull -> 8339014417427264918ull [H-THIN]
kCancel_rows[0]: 8933562200260968840ull -> 8019365971493599225ull [H-THIN]
kCancel_rows[1]: 12907991694751175761ull -> 9755581588236959176ull [H-THIN]
kCancel_rows[2]: 15492238351520247563ull -> 8371403224338711542ull [H-THIN]
kCancel_rows[3]: 4949954141317803287ull -> 16042211801967482956ull [H-THIN]
kCancel_rows[4]: 6869043455093337913ull -> 16802932054993035276ull [H-THIN]
kCancel_rows[5]: 16700973384839330835ull -> 13204266665875046502ull [H-THIN]
kCancel_rows[6]: 13907977122257783994ull -> 16358615663034135167ull [H-THIN]
kCancel_rows[7]: 13690802804532944832ull -> 6541217908632789433ull [H-THIN]
kCancel_rows[8]: 6641415404822534272ull -> 16241388624320518101ull [H-THIN]
kCancel_rows[9]: 17617700982422257653ull -> 3812797098998110562ull [H-THIN]
kCancel_rows[10]: 8957395621418722884ull -> 18060365737908723675ull [H-THIN]
kCancel_rows[11]: 15533748013016881700ull -> 1812188758081721615ull [H-THIN]
kCancel_rows[12]: 10113927666003718936ull -> 5200369397060719481ull [H-THIN]
kCancel_rows[13]: 10748025209891027257ull -> 14528435239011413150ull [H-THIN]
kCancel_rows[14]: 7405357053482683011ull -> 16366047349482157266ull [H-THIN]
kCancel_rows[15]: 14210999101428183707ull -> 14462275783608418760ull [H-THIN]
kCancel_rows[16]: 5089886391592128332ull -> 15465277701067203145ull [H-THIN]
kCancel_rows[17]: 1890214210532379459ull -> 10822246540794760664ull [H-THIN]
kCancel_rows[18]: 15715071324930605218ull -> 5153708099721087119ull [H-THIN]
kCancel_rows[19]: 12760333961958415553ull -> 10351223234449594086ull [H-THIN]
kCancel_rows[20]: 1349906610605744215ull -> 17418701808057553558ull [H-THIN]
kCancel_rows[21]: 11872699637369758186ull -> 8964634856941185769ull [H-THIN]
kCancel_rows[22]: 6278706775858866003ull -> 8066351423005290858ull [H-THIN]
kCancel_rows[23]: 8489616688255836383ull -> 17339397096778631582ull [H-THIN]
kCancel_rows[24]: 8131243489711240877ull -> 10167217103912949158ull [H-THIN]
kCancel_rows[25]: 73524659065323965ull -> 7835551358700961936ull [H-THIN]
kCancel_rows[26]: 13120948974577109893ull -> 3057432646794745428ull [H-THIN]
kCancel_rows[27]: 13036340438400450584ull -> 3633706464540692363ull [H-THIN]
kCancel_rows[28]: 17320509982992261848ull -> 17115428998086447629ull [H-THIN]
kCancel_rows[29]: 16001552197493914473ull -> 6180321870109069012ull [H-THIN]
kCancel_rows[30]: 12375923388653592921ull -> 13623488446145227464ull [H-THIN]
kCancel_rows[31]: 17283281126178883990ull -> 7433824449803764975ull [H-THIN]
kCancel_reads[0]: 5066383747043332732ull -> 16017138806894645973ull [H-THIN]
kCancel_reads[1]: 14642164039413495816ull -> 14395189169447138845ull [H-THIN]
kCancel_reads[2]: 1826995519720684135ull -> 15433550368465758174ull [H-THIN]
kCancel_reads[3]: 10600767793424807315ull -> 15319181961208510706ull [H-THIN]
kCancel_reads[4]: 18413531801076714261ull -> 7116101502612005176ull [H-THIN]
kCancel_reads[5]: 7162595064832704878ull -> 5624598517067648741ull [H-THIN]
kCancel_reads[6]: 8771487694918498925ull -> 15626337877376063418ull [H-THIN]
kCancel_reads[7]: 3727599241559000403ull -> 12303175751506120794ull [H-THIN]
kCancel_reads[8]: 2036989596869214901ull -> 16768996190976851778ull [H-THIN]
kCancel_reads[9]: 15857207205534857561ull -> 9166644978234881348ull [H-THIN]
kCancel_reads[10]: 5509984618602967315ull -> 18107466278445992216ull [H-THIN]
kCancel_reads[11]: 227260307711721321ull -> 512994913100055200ull [H-THIN]
kCancel_reads[12]: 14543777879962894095ull -> 9443988914314833904ull [H-THIN]
kCancel_reads[13]: 2123158589903514105ull -> 15301609864008799700ull [H-THIN]
kCancel_reads[14]: 11488931589024505587ull -> 18376839094291697164ull [H-THIN]
kCancel_reads[15]: 6035902334985171665ull -> 3352239734550209384ull [H-THIN]
kCancel_reads[16]: 6330997617635358220ull -> 9556582455608271345ull [H-THIN]
kCancel_reads[17]: 7622013860668800144ull -> 4597279093679219283ull [H-THIN]
kCancel_reads[18]: 7135414897549443327ull -> 12371316346718768834ull [H-THIN]
kCancel_final[0]: 17283281126178883990ull -> 7433824449803764975ull [H-THIN]
kOca_rows[0]: 8933562200260968840ull -> 8019365971493599225ull [H-THIN]
kOca_rows[1]: 16488569157039504391ull -> 3232936220238691146ull [H-THIN]
kOca_rows[2]: 15308668032647221442ull -> 8093402965097552867ull [H-THIN]
kOca_rows[3]: 11025020666800289870ull -> 16342776694917511399ull [H-THIN]
kOca_rows[4]: 17376859899643293076ull -> 1176409931075103109ull [H-THIN]
kOca_rows[5]: 18031995174781967338ull -> 14796994139400300899ull [H-THIN]
kOca_rows[6]: 9135991105341529701ull -> 4041329064345231230ull [H-THIN]
kOca_rows[7]: 12521501026388244289ull -> 18203940660042607242ull [H-THIN]
kOca_rows[8]: 17387999442892602416ull -> 11789920335390250025ull [H-THIN]
kOca_rows[9]: 17523447275006301316ull -> 12162719525992402073ull [H-THIN]
kOca_rows[10]: 700544763663270973ull -> 10376658214325705912ull [H-THIN]
kOca_rows[11]: 6419555011776275829ull -> 985387310022141304ull [H-THIN]
kOca_rows[12]: 9501522493702417732ull -> 11563487340980545165ull [H-THIN]
kOca_rows[13]: 2198037920276336707ull -> 17750573796976151050ull [H-THIN]
kOca_rows[14]: 3899965171878021222ull -> 8782861391928203675ull [H-THIN]
kOca_rows[15]: 17400108061693215989ull -> 148042859240194154ull [H-THIN]
kOca_rows[16]: 6268695127500094535ull -> 2639689295090791304ull [H-THIN]
kOca_rows[17]: 15386469441856039635ull -> 10798952018967388820ull [H-THIN]
kOca_rows[18]: 1827308857775093108ull -> 13015585966305206737ull [H-THIN]
kOca_rows[19]: 9002315039531479122ull -> 619093614529828615ull [H-THIN]
kOca_rows[20]: 4336820592134659556ull -> 16432223468538835037ull [H-THIN]
kOca_rows[21]: 1568941454279137340ull -> 5709266478406133937ull [H-THIN]
kOca_rows[22]: 3586528324041147724ull -> 11031153128114419525ull [H-THIN]
kOca_rows[23]: 9921466732535290906ull -> 17759043185727148801ull [H-THIN]
kOca_rows[24]: 2210251816763789972ull -> 778153452226410841ull [H-THIN]
kOca_rows[25]: 12540125623729258183ull -> 6929057138192640130ull [H-THIN]
kOca_rows[26]: 4922139678029842511ull -> 1014477579839442850ull [H-THIN]
kOca_rows[27]: 14880777043208119420ull -> 14398065235087572465ull [H-THIN]
kOca_rows[28]: 766085567512147215ull -> 10116121127485637382ull [H-THIN]
kOca_rows[29]: 12667708910662510744ull -> 9104659107751229673ull [H-THIN]
kOca_rows[30]: 17116188563837257134ull -> 12444616329691358185ull [H-THIN]
kOca_rows[31]: 18394579596403092954ull -> 14761567357674824267ull [H-THIN]
kOca_reads[0]: 3105752370505168555ull -> 15189525287878030606ull [H-THIN]
kOca_reads[1]: 13318576850138903270ull -> 12039483643790541963ull [H-THIN]
kOca_reads[2]: 4943429593008048082ull -> 16889317257125145965ull [H-THIN]
kOca_reads[3]: 7900987300136689534ull -> 14061180146549677313ull [H-THIN]
kOca_reads[4]: 16889527581053605563ull -> 3457726981161275090ull [H-THIN]
kOca_reads[5]: 8561664608116353912ull -> 15838028967223682041ull [H-THIN]
kOca_reads[6]: 10377670066927504148ull -> 11019583341156392335ull [H-THIN]
kOca_reads[7]: 14341448323725690491ull -> 15037407705806185768ull [H-THIN]
kOca_reads[8]: 9080486838152177794ull -> 17212813844302948315ull [H-THIN]
kOca_reads[9]: 3016108360062111013ull -> 8321492686618048122ull [H-THIN]
kOca_reads[10]: 14134368882450491401ull -> 12537836709650543420ull [H-THIN]
kOca_reads[11]: 12755516166577050941ull -> 5737128231549608782ull [H-THIN]
kOca_final[0]: 18394579596403092954ull -> 14761567357674824267ull [H-THIN]
kReissue_rows[0]: 11371589716169913082ull -> 5794085833535179433ull [H-THIN]
kReissue_rows[1]: 11912421295804525448ull -> 10206102349587901947ull [H-THIN]
kReissue_rows[2]: 16162904808422149189ull -> 16740711338258568218ull [H-THIN]
kReissue_rows[3]: 1884050390405525809ull -> 157145938453825824ull [H-THIN]
kReissue_rows[4]: 1630941943368694258ull -> 11549520461694658189ull [H-THIN]
kReissue_rows[5]: 1646315788396378413ull -> 375980444520009614ull [H-THIN]
kReissue_rows[6]: 3202536020749475123ull -> 1364356711154384662ull [H-THIN]
kReissue_rows[7]: 16739146824408715591ull -> 9267951354912006062ull [H-THIN]
kReissue_rows[8]: 12465965272475823462ull -> 18013247113906258621ull [H-THIN]
kReissue_rows[9]: 12416019024705234276ull -> 15135278226663906553ull [H-THIN]
kReissue_rows[10]: 8019931705879186711ull -> 6395419845332150882ull [H-THIN]
kReissue_rows[11]: 10511748891040354060ull -> 2608642583221907887ull [H-THIN]
kReissue_rows[12]: 7873647981647748428ull -> 1439014296977039245ull [H-THIN]
kReissue_rows[13]: 13583506357494126788ull -> 4897379921696966153ull [H-THIN]
kReissue_rows[14]: 6827456748487052757ull -> 13502194017489163244ull [H-THIN]
kReissue_rows[15]: 4860432548138722281ull -> 8254807225619272358ull [H-THIN]
kReissue_rows[16]: 10318257384229209728ull -> 4041173354564745731ull [H-THIN]
kReissue_rows[17]: 13270746490627165070ull -> 5823046275575919511ull [H-THIN]
kReissue_rows[18]: 15647754736958033867ull -> 11150667084723241358ull [H-THIN]
kReissue_rows[19]: 15257413490644512113ull -> 7066649565605271382ull [H-THIN]
kReissue_rows[20]: 3422115173668721064ull -> 9147117666804548605ull [H-THIN]
kReissue_rows[21]: 11954333827210587376ull -> 2943969262508479583ull [H-THIN]
kReissue_rows[22]: 16717809947662223375ull -> 2242050686395926078ull [H-THIN]
kReissue_rows[23]: 16431286081784348505ull -> 18297932585058907168ull [H-THIN]
kReissue_rows[24]: 14674774925924029409ull -> 7328278135585233712ull [H-THIN]
kReissue_rows[25]: 8888789072620710620ull -> 4496911868369281609ull [H-THIN]
kReissue_rows[26]: 7677274857978420999ull -> 4092312770444862044ull [H-THIN]
kReissue_rows[27]: 8389711543599766598ull -> 3103138085614071329ull [H-THIN]
kReissue_rows[28]: 11866583660361571056ull -> 1640897772442143723ull [H-THIN]
kReissue_rows[29]: 8782474388336378853ull -> 11067585398331222410ull [H-THIN]
kReissue_rows[30]: 12830062157342008889ull -> 358041756474409844ull [H-THIN]
kReissue_rows[31]: 11660101618206053704ull -> 8735900797794446825ull [H-THIN]
kReissue_reads[0]: 9397758857253294369ull -> 15035498073180564574ull [H-THIN]
kReissue_reads[1]: 14952922796737447431ull -> 6351174026430191720ull [H-THIN]
kReissue_reads[2]: 350142526787915315ull -> 17029808830897663162ull [H-THIN]
kReissue_reads[3]: 9287618455889763760ull -> 1960056261526077029ull [H-THIN]
kReissue_reads[4]: 8049051401679342672ull -> 9359327854260104443ull [H-THIN]
kReissue_reads[5]: 7334056035772970331ull -> 9193727488393939674ull [H-THIN]
kReissue_reads[6]: 16777030856659722344ull -> 2562235961360585845ull [H-THIN]
kReissue_reads[7]: 12861194332908904879ull -> 15091373470769183170ull [H-THIN]
kReissue_reads[8]: 7839065249474270945ull -> 9066532592892510086ull [H-THIN]
kReissue_reads[9]: 2385401613699651006ull -> 15993610558080257077ull [H-THIN]
kReissue_reads[10]: 3151001040546167918ull -> 14590383768983463647ull [H-THIN]
kReissue_reads[11]: 6768266663339224688ull -> 14847391113272722757ull [H-THIN]
kReissue_reads[12]: 211423388548179255ull -> 9991682699480081944ull [H-THIN]
kReissue_reads[13]: 10932414881536382884ull -> 7606589495236393781ull [H-THIN]
kReissue_reads[14]: 15509429580401113050ull -> 16170401377191376471ull [H-THIN]
kReissue_reads[15]: 272542696402235168ull -> 8660956339548506257ull [H-THIN]
kReissue_reads[16]: 12650608718358639686ull -> 17474680937306256469ull [H-THIN]
kReissue_reads[17]: 16954864996066484000ull -> 14583099152188767967ull [H-THIN]
kReissue_reads[18]: 2072712234614561342ull -> 1043496941119894989ull [H-THIN]
kReissue_reads[19]: 15829080338314944658ull -> 13855326176576914141ull [H-THIN]
kReissue_reads[20]: 2272828286921366934ull -> 10342641769074306343ull [H-THIN]
kReissue_reads[21]: 16041091954465179468ull -> 11480238464600989237ull [H-THIN]
kReissue_final[0]: 11660101618206053704ull -> 8735900797794446825ull [H-THIN]
kTrail_rows[0]: 11371589716169913082ull -> 5794085833535179433ull [H-THIN]
kTrail_rows[1]: 15827480248058921916ull -> 2370845579388248975ull [H-THIN]
kTrail_rows[2]: 9179483745920742590ull -> 14433248242147310045ull [H-THIN]
kTrail_rows[3]: 6778316597629456467ull -> 6746208057179709300ull [H-THIN]
kTrail_rows[4]: 5172328729500611739ull -> 5141474228715449514ull [H-THIN]
kTrail_rows[5]: 538732652451172654ull -> 11607255782218151389ull [H-THIN]
kTrail_rows[6]: 6878958150024727018ull -> 15859825369433213587ull [H-THIN]
kTrail_rows[7]: 8673040670875734808ull -> 14000636333325119541ull [H-THIN]
kTrail_rows[8]: 1224102971077480171ull -> 8235513201704559620ull [H-THIN]
kTrail_rows[9]: 4557268190807619538ull -> 896476467432039189ull [H-THIN]
kTrail_rows[10]: 9136468491734931429ull -> 8318862700865263670ull [H-THIN]
kTrail_rows[11]: 6184955078515723301ull -> 7174198796690634212ull [H-THIN]
kTrail_rows[12]: 12362884735948053375ull -> 14047279371931353558ull [H-THIN]
kTrail_rows[13]: 15431697961609933942ull -> 10303898847732478779ull [H-THIN]
kTrail_rows[14]: 1411625524442821644ull -> 10919087129373839423ull [H-THIN]
kTrail_rows[15]: 12832334111417447482ull -> 2392471918185386717ull [H-THIN]
kTrail_rows[16]: 5598316292658291609ull -> 13975657224456405630ull [H-THIN]
kTrail_rows[17]: 1094550630882239090ull -> 5371073164686480833ull [H-THIN]
kTrail_rows[18]: 9032605003773573902ull -> 5788193476615953481ull [H-THIN]
kTrail_rows[19]: 655750707938363819ull -> 742735857153964210ull [H-THIN]
kTrail_rows[20]: 11787846682663979157ull -> 9511387276849347064ull [H-THIN]
kTrail_rows[21]: 4271553443345200153ull -> 8387023980895655564ull [H-THIN]
kTrail_rows[22]: 13505617900634614461ull -> 12129447825700318114ull [H-THIN]
kTrail_rows[23]: 14516777496449283573ull -> 6819473365388645714ull [H-THIN]
kTrail_rows[24]: 8741802295233492767ull -> 177891932096105070ull [H-THIN]
kTrail_rows[25]: 7191771264792402823ull -> 12347931419050467504ull [H-THIN]
kTrail_rows[26]: 407930561309081398ull -> 11096564370558447981ull [H-THIN]
kTrail_rows[27]: 10139811205313313301ull -> 5083341745670325276ull [H-THIN]
kTrail_rows[28]: 9692372728761498854ull -> 15979402051208842361ull [H-THIN]
kTrail_rows[29]: 17629340520421506187ull -> 10031744998823385352ull [H-THIN]
kTrail_rows[30]: 12781001967037913295ull -> 2405952843925529234ull [H-THIN]
kTrail_rows[31]: 4953750954703410960ull -> 15933138127006431029ull [H-THIN]
kTrail_reads[0]: 9397758857253294369ull -> 15035498073180564574ull [H-THIN]
kTrail_reads[1]: 8570208265068282686ull -> 2064235671204825645ull [H-THIN]
kTrail_final[0]: 4953750954703410960ull -> 15933138127006431029ull [H-THIN]
test_adapter_continuation_view: 169 lines
k_chart[1]: 17778912298194596574ull -> 2540222023230692795ull [H-THIN]
k_chart[3]: 8941018855024971093ull -> 7277266162097189602ull [H-THIN]
k_chart[4]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_chart[6]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_magnifier[1]: 14738067743722080804ull -> 10187142414804555211ull [H-THIN]
k_magnifier[3]: 2917741806179085516ull -> 13316113226488762715ull [H-THIN]
k_magnifier[4]: 13581436790443683042ull -> 489358674406674971ull [H-THIN]
k_magnifier[6]: 13581436790443683042ull -> 489358674406674971ull [H-THIN]
k_aggregated[1]: 13031512803108236715ull -> 12703961494282243636ull [H-THIN]
k_aggregated[2]: 6906214955679447270ull -> 4636245846172056503ull [H-THIN]
k_aggregated[4]: 6906214955679447270ull -> 4636245846172056503ull [H-THIN]
k_aggregated_magnifier[1]: 7363580706773703120ull -> 6822321611223800121ull [H-THIN]
k_aggregated_magnifier[2]: 5380311451522306220ull -> 1968062868302397607ull [H-THIN]
k_aggregated_magnifier[4]: 5380311451522306220ull -> 1968062868302397607ull [H-THIN]
k_coof[3]: 1856715264914641232ull -> 17725898018428294595ull [H-THIN]
k_coof[5]: 9115044940243703863ull -> 8234685298969568092ull [PAR-ORDERS-2, H-THIN]
k_coof[6]: 9198850018143016781ull -> 13907186164657073030ull [H-THIN]
k_coof[7]: 784137025905909089ull -> 5915100548425272856ull [H-THIN]
k_coof[9]: 784137025905909089ull -> 5915100548425272856ull [H-THIN]
k_recording[1]: 16309388099732889217ull -> 13909724611150684752ull [H-THIN]
k_recording[3]: 14697449118452563264ull -> 6058006111773907271ull [H-THIN]
k_recording[4]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_recording[6]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_recording[7]: 11912929120179152844ull -> 14971695095207148331ull [H-THIN]
k_recording[8]: 7111499071038382551ull -> 10535748930949530126ull [H-THIN]
k_recording[9]: 14395892391241930212ull -> 12991008539092747157ull [H-THIN]
k_recording[10]: 9034635987304089269ull -> 15956762843095239782ull [H-THIN]
k_recording[11]: 7745035282290493167ull -> 2607245150229644476ull [H-THIN]
k_recording[12]: 9653978480792136139ull -> 2184445209065093070ull [H-THIN]
k_recording[13]: 6575784925310671623ull -> 2897664079743275822ull [H-THIN]
k_recording[14]: 16756306850270906652ull -> 4157996150621490761ull [H-THIN]
k_recording[15]: 6791844355462743637ull -> 10537503143714109070ull [H-THIN]
k_recording[16]: 9752175874850418240ull -> 13754546407945448507ull [H-THIN]
k_recording[17]: 5581794927458177019ull -> 16440431375654315850ull [H-THIN]
k_recording[18]: 16367531041072987671ull -> 7003661191077414576ull [H-THIN]
k_recording[19]: 5499206076623092635ull -> 11353048097065184288ull [H-THIN]
k_recording[20]: 16891823664600062531ull -> 12848736740973846400ull [H-THIN]
k_recording[21]: 15306266440153708710ull -> 3161842879106046797ull [H-THIN]
k_recording[22]: 8382791724770590634ull -> 10847056918133263985ull [H-THIN]
k_recording[23]: 4926336483410460532ull -> 8350647617751486789ull [H-THIN]
k_recording[24]: 12823090459845782834ull -> 1856794670313281419ull [H-THIN]
k_recording[25]: 10217177223946990874ull -> 3189033237966511301ull [H-THIN]
k_recording[26]: 12680312482263936655ull -> 9556919139953515754ull [H-THIN]
k_recording[27]: 15032085204869760060ull -> 5681429441061062241ull [H-THIN]
k_recording[28]: 7696336452231268012ull -> 10425853480784439841ull [H-THIN]
k_recording[29]: 6819477884530924764ull -> 12097190747565164239ull [H-THIN]
k_recording[30]: 13932522791731114426ull -> 12637836836690018377ull [H-THIN]
k_recording[31]: 15842817164955438950ull -> 14424918618138801803ull [H-THIN]
k_recording[32]: 4250764768037495411ull -> 17903030095845904958ull [H-THIN]
k_recording[33]: 1760469320874157114ull -> 15510962773836543503ull [H-THIN]
k_recording[34]: 7565330933885892856ull -> 16031650111081263649ull [H-THIN]
k_recording[35]: 3348650657119335616ull -> 15453192344610479715ull [H-THIN]
k_recording[36]: 16026642042438818681ull -> 12604736624722151438ull [H-THIN]
k_recording[37]: 15336121108426360137ull -> 17308957480242505390ull [H-THIN]
k_recording[38]: 12610087835245307199ull -> 452142121530738962ull [H-THIN]
k_recording[39]: 3169655936610324835ull -> 6150193546982553982ull [H-THIN]
k_recording[40]: 18005345939863936504ull -> 12917335185226580263ull [H-THIN]
k_recording[41]: 10374887129263366256ull -> 3249697982624166735ull [H-THIN]
k_recording[42]: 3316605285128650350ull -> 3343978410969230181ull [H-THIN]
k_recording[43]: 10411230090089985874ull -> 16247831777829745607ull [H-THIN]
k_recording[44]: 2321647345879300563ull -> 7514289197254818298ull [H-THIN]
k_recording[45]: 9282855342318040804ull -> 17972948283988009341ull [H-THIN]
k_recording[46]: 8782939554936041465ull -> 4872902272073809254ull [H-THIN]
k_recording[47]: 9270809468617755726ull -> 16118270799549857939ull [H-THIN]
k_recording[48]: 9705564861311910669ull -> 14672005653726242528ull [H-THIN]
k_recording[49]: 1984027035687621850ull -> 2133921838620278979ull [H-THIN]
k_recording[50]: 5309816640440296119ull -> 13677532362142245502ull [H-THIN]
k_recording[51]: 61906512444861614ull -> 7883065542401673469ull [H-THIN]
k_recording[52]: 18408253739502061131ull -> 7126839422434123000ull [H-THIN]
k_recording[53]: 2900636347809437670ull -> 3907128035298066349ull [H-THIN]
k_recording[54]: 8590510826456084479ull -> 4948527793100784708ull [H-THIN]
k_recording[55]: 16739036358771975930ull -> 142644456983149613ull [H-THIN]
k_recording[56]: 3846505090147632664ull -> 14555917326272639085ull [H-THIN]
k_recording[57]: 13346518438036570112ull -> 5212018862612370299ull [H-THIN]
k_recording[58]: 3939181335635768762ull -> 865072719653853777ull [H-THIN]
k_recording[59]: 1996675722330704212ull -> 14621783374817857573ull [H-THIN]
k_recording[60]: 271113896427528122ull -> 12663926541947072239ull [H-THIN]
k_recording[61]: 1511893874670543988ull -> 7631475035369278017ull [H-THIN]
k_recording[62]: 15973548105797383183ull -> 951171557373679674ull [H-THIN]
k_recording[63]: 4392899708297163730ull -> 9891512222295021637ull [H-THIN]
k_recording[64]: 11467883812317724901ull -> 14067535954397498792ull [H-THIN]
k_recording[65]: 11051413718335140252ull -> 14311549026741467081ull [H-THIN]
k_recording[66]: 903533060614176790ull -> 775415503723595045ull [H-THIN]
k_recording[67]: 14466209299323094098ull -> 2025287021890762573ull [H-THIN]
k_recording[68]: 4010960734010157804ull -> 5576052922734185379ull [H-THIN]
k_recording[69]: 5172512134487820157ull -> 1575805364117614574ull [H-THIN]
k_recording[70]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_stream[0]: 16458853630937199693ull -> 6675987432147888000ull [H-THIN]
k_stream[2]: 15852567477617018112ull -> 15316836834528354089ull [H-THIN]
k_stream[3]: 8395254103899656747ull -> 122347678355491576ull [H-THIN]
k_stream[4]: 9137153746257222586ull -> 17060189170921966279ull [H-THIN]
k_stream[5]: 4321243615010347791ull -> 12998233506120003610ull [H-THIN]
k_stream[7]: 4335032133758631355ull -> 5790160451626852554ull [H-THIN]
k_stream[8]: 3418642895666580588ull -> 8747488118396803171ull [H-THIN]
k_stream[10]: 15778603109418817912ull -> 11301555486053984887ull [H-THIN]
k_stream[12]: 8082887755714141501ull -> 16019190197976852534ull [H-THIN]
k_stream[13]: 18272796975887582060ull -> 14554266247005678391ull [H-THIN]
k_stream[14]: 4620349392656757831ull -> 9863308761378043570ull [H-THIN]
k_stream[16]: 11681022048666484124ull -> 3981212442403576087ull [H-THIN]
k_stream[17]: 1110410394930231379ull -> 16893712934576968012ull [H-THIN]
k_stream[18]: 8353289200898942510ull -> 17103134812120181635ull [H-THIN]
k_stream[19]: 5464661787014092283ull -> 2716679541586828074ull [H-THIN]
k_stream[21]: 17913569146247237990ull -> 2142815117417671925ull [H-THIN]
k_stream[22]: 14252084119842247317ull -> 1297101144475427900ull [H-THIN]
k_stream[24]: 14984524306684102418ull -> 17860190683404402179ull [H-THIN]
k_stream[26]: 8427843384471180011ull -> 12743930332679229528ull [H-THIN]
k_stream[27]: 12312569890916686665ull -> 13672064593010625780ull [H-THIN]
k_stream[28]: 7806471840435792838ull -> 15322331001617686957ull [H-THIN]
k_stream[29]: 10841176947711978698ull -> 2540452936526860029ull [H-THIN]
k_stream[31]: 15796138674937755121ull -> 5707160760001918266ull [H-THIN]
k_stream[32]: 4930499034900633496ull -> 17256519628932910437ull [H-THIN]
k_stream[33]: 11894749826123257324ull -> 1265742856577179629ull [H-THIN]
k_stream[35]: 6209022505833017115ull -> 8935675646451046114ull [H-THIN]
k_stream[36]: 13004202639896233962ull -> 1995113508368758049ull [H-THIN]
k_stream[37]: 1029059189446661931ull -> 12126669220334860080ull [H-THIN]
k_stream[39]: 9236479431486641300ull -> 13100650686759242355ull [H-THIN]
k_stream[40]: 5209128789544115679ull -> 1320523439935521014ull [H-THIN]
k_stream[41]: 5582126543454279956ull -> 10835572324283436971ull [H-THIN]
k_stream[43]: 16435999169585034112ull -> 411402308123821837ull [H-THIN]
k_stream[44]: 2858404675926398753ull -> 18325644631502656152ull [H-THIN]
k_stream[45]: 2863207613356019619ull -> 6533533400826708814ull [H-THIN]
k_stream[47]: 1651019462700250297ull -> 11035145778810736216ull [H-THIN]
k_stream[48]: 9342015881796079139ull -> 4664106270365911266ull [H-THIN]
k_stream[49]: 971242319250035563ull -> 6512545530849110454ull [H-THIN]
k_stream[51]: 971242319250035563ull -> 6512545530849110454ull [H-THIN]
k_stream[53]: 971242319250035563ull -> 6512545530849110454ull [H-THIN]
k_stream_aborted[0]: 16458853630937199693ull -> 6675987432147888000ull [H-THIN]
k_stream_aborted[2]: 15852567477617018112ull -> 15316836834528354089ull [H-THIN]
k_stream_aborted[3]: 8395254103899656747ull -> 122347678355491576ull [H-THIN]
k_stream_aborted[4]: 9137153746257222586ull -> 17060189170921966279ull [H-THIN]
k_stream_aborted[5]: 4321243615010347791ull -> 12998233506120003610ull [H-THIN]
k_stream_aborted[7]: 4335032133758631355ull -> 5790160451626852554ull [H-THIN]
k_stream_aborted[8]: 3418642895666580588ull -> 8747488118396803171ull [H-THIN]
k_stream_aborted[10]: 15778603109418817912ull -> 11301555486053984887ull [H-THIN]
k_stream_aborted[12]: 8082887755714141501ull -> 16019190197976852534ull [H-THIN]
k_stream_aborted[13]: 18272796975887582060ull -> 14554266247005678391ull [H-THIN]
k_stream_aborted[14]: 4620349392656757831ull -> 9863308761378043570ull [H-THIN]
k_stream_aborted[16]: 11681022048666484124ull -> 3981212442403576087ull [H-THIN]
k_stream_aborted[17]: 1110410394930231379ull -> 16893712934576968012ull [H-THIN]
k_stream_aborted[18]: 8353289200898942510ull -> 17103134812120181635ull [H-THIN]
k_stream_aborted[19]: 5464661787014092283ull -> 2716679541586828074ull [H-THIN]
k_stream_aborted[21]: 17913569146247237990ull -> 2142815117417671925ull [H-THIN]
k_stream_aborted[22]: 14252084119842247317ull -> 1297101144475427900ull [H-THIN]
k_stream_aborted[24]: 14984524306684102418ull -> 17860190683404402179ull [H-THIN]
k_stream_aborted[26]: 8427843384471180011ull -> 12743930332679229528ull [H-THIN]
k_stream_aborted[27]: 12312569890916686665ull -> 13672064593010625780ull [H-THIN]
k_stream_aborted[28]: 7806471840435792838ull -> 15322331001617686957ull [H-THIN]
k_stream_aborted[29]: 10841176947711978698ull -> 2540452936526860029ull [H-THIN]
k_stream_aborted[31]: 15796138674937755121ull -> 5707160760001918266ull [H-THIN]
k_stream_aborted[32]: 4930499034900633496ull -> 17256519628932910437ull [H-THIN]
k_stream_aborted[34]: 4930499034900633496ull -> 17256519628932910437ull [H-THIN]
k_aborted[1]: 17778912298194596574ull -> 2540222023230692795ull [H-THIN]
k_aborted[3]: 12754404695042992156ull -> 8965275888317139301ull [H-THIN]
k_aborted[5]: 12754404695042992156ull -> 8965275888317139301ull [H-THIN]
k_reused[1]: 17778912298194596574ull -> 2540222023230692795ull [H-THIN]
k_reused[3]: 8941018855024971093ull -> 7277266162097189602ull [H-THIN]
k_reused[5]: 17778912298194596574ull -> 2540222023230692795ull [H-THIN]
k_reused[7]: 8941018855024971093ull -> 7277266162097189602ull [H-THIN]
k_reused[8]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_reused[10]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_reused[11]: 4063572268643314481ull -> 3045160088509885646ull [H-THIN]
k_reused[12]: 4620349392656757831ull -> 9863308761378043570ull [H-THIN]
k_reused[14]: 4620349392656757831ull -> 9863308761378043570ull [H-THIN]
k_refused[1]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_refused[3]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_refused[5]: 17778912298194596574ull -> 2540222023230692795ull [H-THIN]
k_refused[7]: 8941018855024971093ull -> 7277266162097189602ull [H-THIN]
k_refused[8]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
k_refused[10]: 2898399952537902865ull -> 13929697350787785222ull [H-THIN]
test_adapter_receipts_in_place: 334 lines
kDeclined_rows[0]: 16367413721785097631ull -> 10078075251929413260ull [H-THIN]
kDeclined_rows[1]: 8673411908040166317ull -> 9021013497480718974ull [H-THIN]
kDeclined_rows[2]: 711509299982175852ull -> 5211498519342463915ull [H-THIN]
kDeclined_rows[3]: 7197939734931235205ull -> 8693678377712780894ull [H-THIN]
kDeclined_rows[4]: 7029670217763137463ull -> 3263497715304832018ull [H-THIN]
kDeclined_rows[5]: 3635687300847380421ull -> 4887532512140189270ull [H-THIN]
kDeclined_rows[6]: 16534761561291369739ull -> 3474228148466484630ull [H-THIN]
kDeclined_rows[7]: 10876124900683281275ull -> 8939974732258322358ull [H-THIN]
kDeclined_rows[8]: 10020927749345911019ull -> 2229197510643109192ull [H-THIN]
kDeclined_rows[9]: 8691527508212156618ull -> 5373392566564228697ull [H-THIN]
kDeclined_final[0]: 8691527508212156618ull -> 5373392566564228697ull [H-THIN]
kDeclinedMag_rows[0]: 17043975752116642733ull -> 16782433437025871990ull [H-THIN]
kDeclinedMag_rows[1]: 10606185829452660874ull -> 1222497984017113931ull [H-THIN]
kDeclinedMag_rows[2]: 15448675564357825832ull -> 13459087267571170739ull [H-THIN]
kDeclinedMag_rows[3]: 15175044830743125885ull -> 9516889388168741832ull [H-THIN]
kDeclinedMag_rows[4]: 6450443484594143151ull -> 7518654345809068380ull [H-THIN]
kDeclinedMag_rows[5]: 2398923910778006973ull -> 11893247087917015032ull [H-THIN]
kDeclinedMag_rows[6]: 8459031541244945398ull -> 12055886405220663097ull [H-THIN]
kDeclinedMag_rows[7]: 1773947867498079483ull -> 10055241910018728642ull [H-THIN]
kDeclinedMag_rows[8]: 15294623478765439011ull -> 12275394792888174860ull [H-THIN]
kDeclinedMag_rows[9]: 483092226467101870ull -> 9368999989622318001ull [H-THIN]
kDeclinedMag_final[0]: 483092226467101870ull -> 9368999989622318001ull [H-THIN]
kRevive_rows[0]: 13340112391979823686ull -> 13853830474015623389ull [H-THIN]
kRevive_rows[1]: 3080039388426713206ull -> 4728749920725358539ull [H-THIN]
kRevive_rows[2]: 7902869859755540775ull -> 4849688479110990770ull [H-THIN]
kRevive_rows[3]: 18430037521897822255ull -> 16929648573929730497ull [H-THIN]
kRevive_rows[4]: 8604888200074309324ull -> 1041650372773372953ull [H-THIN]
kRevive_rows[5]: 10980118139031631968ull -> 5462196043591698097ull [H-THIN]
kRevive_rows[6]: 17030525150602589392ull -> 2747991239711285631ull [H-THIN]
kRevive_final[0]: 17030525150602589392ull -> 2747991239711285631ull [H-THIN]
kReviveMag_rows[0]: 9323387230543354105ull -> 832728159842300632ull [H-THIN]
kReviveMag_rows[1]: 17230544106411439877ull -> 10054388176425177056ull [H-THIN]
kReviveMag_rows[2]: 8558481171000670347ull -> 18222497838575167482ull [H-THIN]
kReviveMag_rows[3]: 11778096795536835427ull -> 7009173660391284590ull [H-THIN]
kReviveMag_rows[4]: 6288134072033682736ull -> 13277765918702967861ull [H-THIN]
kReviveMag_rows[5]: 5799450267550970898ull -> 6034130187223021955ull [H-THIN]
kReviveMag_rows[6]: 16015312550992593014ull -> 9402276759429607197ull [H-THIN]
kReviveMag_final[0]: 16015312550992593014ull -> 9402276759429607197ull [H-THIN]
kCascade_rows[0]: 551096499902803590ull -> 11665685740161685773ull [H-THIN]
kCascade_rows[1]: 6515737401085179265ull -> 6762973723098471536ull [H-THIN]
kCascade_rows[2]: 13117702113570278612ull -> 13194180830256499995ull [H-THIN]
kCascade_rows[3]: 1257083709566184300ull -> 5915515851064168701ull [H-THIN]
kCascade_rows[4]: 1236032771344307983ull -> 14468652264495611008ull [H-THIN]
kCascade_rows[5]: 17545089905645669552ull -> 4582123328933630207ull [H-THIN]
kCascade_rows[6]: 11022588141404321180ull -> 16894420136553841491ull [H-THIN]
kCascade_final[0]: 11022588141404321180ull -> 16894420136553841491ull [H-THIN]
kCascadeMag_rows[0]: 15338041165786710953ull -> 10293226467739870528ull [H-THIN]
kCascadeMag_rows[1]: 9326370104822563476ull -> 15440279261765505431ull [H-THIN]
kCascadeMag_rows[2]: 2546778736934085057ull -> 3033096808895778346ull [H-THIN]
kCascadeMag_rows[3]: 15492970885942622778ull -> 8603410363956848503ull [H-THIN]
kCascadeMag_rows[4]: 16758361987609330968ull -> 3716382050228218553ull [H-THIN]
kCascadeMag_rows[5]: 4624738216223074340ull -> 15049237438778114557ull [H-THIN]
kCascadeMag_rows[6]: 2074679355477699332ull -> 3591493413416270605ull [H-THIN]
kCascadeMag_final[0]: 2074679355477699332ull -> 3591493413416270605ull [H-THIN]
kBrackets_rows[0]: 16217277159719941353ull -> 7500883169712558290ull [H-THIN]
kBrackets_rows[1]: 8338318974496761540ull -> 11727648583129089083ull [H-THIN]
kBrackets_rows[2]: 4387288109901666172ull -> 6413647876750793739ull [H-THIN]
kBrackets_rows[3]: 17194843007024741926ull -> 16308656194518151033ull [H-THIN]
kBrackets_rows[4]: 13764914223976981334ull -> 16727135511009534069ull [H-THIN]
kBrackets_rows[5]: 5165427215729956474ull -> 6044943424043481425ull [H-THIN]
kBrackets_rows[6]: 4634967915219578727ull -> 14841136291072554584ull [H-THIN]
kBrackets_rows[7]: 16692219291368299752ull -> 1773096913540911661ull [H-THIN]
kBrackets_rows[8]: 14748223541663733754ull -> 17033478288745263781ull [H-THIN]
kBrackets_rows[9]: 3456524395963272453ull -> 17415237666140008114ull [H-THIN]
kBrackets_rows[10]: 12434621022045497961ull -> 14903371499312557794ull [H-THIN]
kBrackets_rows[11]: 16335369385158554819ull -> 1559388622250313888ull [H-THIN]
kBrackets_rows[12]: 12991044494042544886ull -> 11339295434477982165ull [H-THIN]
kBrackets_rows[13]: 4973527342518025567ull -> 5188816558658073040ull [H-THIN]
kBrackets_rows[14]: 17883762509965744260ull -> 10562336006974642565ull [H-THIN]
kBrackets_rows[15]: 2061839802394366722ull -> 9944319438386404069ull [H-THIN]
kBrackets_rows[16]: 9666386366910181655ull -> 18087204908683637838ull [H-THIN]
kBrackets_rows[17]: 4436881865564527894ull -> 6643491299232430087ull [H-THIN]
kBrackets_rows[18]: 16715420632714991716ull -> 6148826652091198175ull [H-THIN]
kBrackets_rows[19]: 1529353304450412038ull -> 4758323598983849211ull [H-THIN]
kBrackets_rows[20]: 1035717575522872886ull -> 2642662310786859897ull [H-THIN]
kBrackets_rows[21]: 16225013858806894718ull -> 595312524362424357ull [H-THIN]
kBrackets_rows[22]: 8409169559076599494ull -> 14890548070825444249ull [H-THIN]
kBrackets_rows[23]: 9707763992756481156ull -> 3533069104010016939ull [H-THIN]
kBrackets_rows[24]: 2831826005880704344ull -> 1617991145468681997ull [H-THIN]
kBrackets_rows[25]: 17431835404196442687ull -> 10622401576246976900ull [H-THIN]
kBrackets_rows[26]: 9788230484951507538ull -> 8817393790173822955ull [H-THIN]
kBrackets_rows[27]: 13167836072962096695ull -> 16364625047298717046ull [H-THIN]
kBrackets_rows[28]: 9063096009681232646ull -> 14563367105470732551ull [H-THIN]
kBrackets_rows[29]: 5410108115990088215ull -> 4971637099003501106ull [H-THIN]
kBrackets_rows[30]: 13040426354353828713ull -> 7489452283312605238ull [H-THIN]
kBrackets_rows[31]: 14801076939233187415ull -> 12683946654012290214ull [H-THIN]
kBrackets_rows[32]: 16815914518686289691ull -> 17971398269388980488ull [H-THIN]
kBrackets_rows[33]: 2747558237080166725ull -> 16748341084474510752ull [H-THIN]
kBrackets_rows[34]: 8660899489027983548ull -> 824168580839598771ull [H-THIN]
kBrackets_rows[35]: 17102303971583026849ull -> 17966172105988324718ull [H-THIN]
kBrackets_rows[36]: 15533897202822525630ull -> 12921910347520578453ull [H-THIN]
kBrackets_rows[37]: 3654409746117594394ull -> 10997125561879301907ull [H-THIN]
kBrackets_rows[38]: 13081935113382965168ull -> 6586432521644155739ull [H-THIN]
kBrackets_rows[39]: 10127071882762265462ull -> 5868434502871598073ull [H-THIN]
kBrackets_final[0]: 10127071882762265462ull -> 5868434502871598073ull [H-THIN]
kBracketsMag_rows[0]: 16815971932027180960ull -> 7509436481287183131ull [H-THIN]
kBracketsMag_rows[1]: 8203166635201027950ull -> 9787443206195299241ull [H-THIN]
kBracketsMag_rows[2]: 17138741981140426534ull -> 9468051353845057081ull [H-THIN]
kBracketsMag_rows[3]: 1925655849137931056ull -> 11617996857175938359ull [H-THIN]
kBracketsMag_rows[4]: 14052428529967425108ull -> 17297388508275178983ull [H-THIN]
kBracketsMag_rows[5]: 9832333236513193860ull -> 8305808312144255951ull [H-THIN]
kBracketsMag_rows[6]: 16191684320998506441ull -> 6113367866531691422ull [H-THIN]
kBracketsMag_rows[7]: 8371860663058915477ull -> 9106991683344179872ull [H-THIN]
kBracketsMag_rows[8]: 8552593071486288536ull -> 14803910782973314363ull [H-THIN]
kBracketsMag_rows[9]: 1454522877014641667ull -> 8372038073428945080ull [H-THIN]
kBracketsMag_rows[10]: 2707471427108666620ull -> 7616171107040094915ull [H-THIN]
kBracketsMag_rows[11]: 16372300294283464170ull -> 10072793551676710573ull [H-THIN]
kBracketsMag_rows[12]: 13159511447411425168ull -> 202129580709274867ull [H-THIN]
kBracketsMag_rows[13]: 7564232112284716309ull -> 4132398015409106530ull [H-THIN]
kBracketsMag_rows[14]: 1543613811599180298ull -> 4510478381903057991ull [H-THIN]
kBracketsMag_rows[15]: 15537720168749660922ull -> 8742602620032897417ull [H-THIN]
kBracketsMag_rows[16]: 1622379678095332862ull -> 9123990550757961143ull [H-THIN]
kBracketsMag_rows[17]: 12005994129115025487ull -> 11712877018079407950ull [H-THIN]
kBracketsMag_rows[18]: 5070356265405608919ull -> 2366334284611481108ull [H-THIN]
kBracketsMag_rows[19]: 13665825986379254999ull -> 13240125918553875754ull [H-THIN]
kBracketsMag_rows[20]: 5146373771364769642ull -> 9789183794260015895ull [H-THIN]
kBracketsMag_rows[21]: 6239145605357339126ull -> 14154778537780493947ull [H-THIN]
kBracketsMag_rows[22]: 3824110391792374830ull -> 17674589416348533163ull [H-THIN]
kBracketsMag_rows[23]: 6558902854431182828ull -> 12580566125972638241ull [H-THIN]
kBracketsMag_rows[24]: 8689860431737549825ull -> 12408515542794035006ull [H-THIN]
kBracketsMag_rows[25]: 7395806610126361265ull -> 12236372317329550998ull [H-THIN]
kBracketsMag_rows[26]: 4003508704365535789ull -> 18175585318787098632ull [H-THIN]
kBracketsMag_rows[27]: 15338849660478731120ull -> 10989358971982145541ull [H-THIN]
kBracketsMag_rows[28]: 12122897657346658873ull -> 12151142627304375048ull [H-THIN]
kBracketsMag_rows[29]: 14082864916763771424ull -> 7079152462663640793ull [H-THIN]
kBracketsMag_rows[30]: 4695176159045771576ull -> 9430854713541920393ull [H-THIN]
kBracketsMag_rows[31]: 11640860124898684186ull -> 10120897727742141847ull [H-THIN]
kBracketsMag_rows[32]: 7934415857533705714ull -> 6015137363156052521ull [H-THIN]
kBracketsMag_rows[33]: 2180712887517991172ull -> 9143335679527440329ull [H-THIN]
kBracketsMag_rows[34]: 13696242844024611290ull -> 1965209665081157387ull [H-THIN]
kBracketsMag_rows[35]: 4388532892304967463ull -> 16559717930979642786ull [H-THIN]
kBracketsMag_rows[36]: 886913764131836035ull -> 6332179897502099272ull [H-THIN]
kBracketsMag_rows[37]: 6026087689782884746ull -> 1448475308516474107ull [H-THIN]
kBracketsMag_rows[38]: 7992738227861920074ull -> 7560963980189861213ull [H-THIN]
kBracketsMag_rows[39]: 2507370523932097816ull -> 16163234093112718807ull [H-THIN]
kBracketsMag_final[0]: 2507370523932097816ull -> 16163234093112718807ull [H-THIN]
kGroups_rows[0]: 428451890117060597ull -> 16343339797501156050ull [H-THIN]
kGroups_rows[1]: 16045090594768170214ull -> 4412441122235541001ull [H-THIN]
kGroups_rows[2]: 18166866907386903819ull -> 8796315700613324416ull [H-THIN]
kGroups_rows[3]: 6958941312543333314ull -> 7395320384889894535ull [H-THIN]
kGroups_rows[4]: 12357763379855329333ull -> 14779897915981054858ull [H-THIN]
kGroups_rows[5]: 10319108494843725228ull -> 12902321761157770999ull [H-THIN]
kGroups_rows[6]: 8057235825342986589ull -> 13233007585699491660ull [H-THIN]
kGroups_rows[7]: 775027953877311050ull -> 4759091960862828143ull [H-THIN]
kGroups_rows[8]: 14610483346660466821ull -> 9823824249826547972ull [H-THIN]
kGroups_rows[9]: 1198104509264338521ull -> 10222432195471458288ull [H-THIN]
kGroups_rows[10]: 15842771393076564009ull -> 12268080935222816256ull [H-THIN]
kGroups_rows[11]: 5342656873780671151ull -> 1820590039511046510ull [H-THIN]
kGroups_rows[12]: 2165268433984104ull -> 13378031530146436277ull [H-THIN]
kGroups_rows[13]: 16270682949794220379ull -> 12953190010614641206ull [H-THIN]
kGroups_rows[14]: 14994318600896901474ull -> 1053166407871468103ull [H-THIN]
kGroups_rows[15]: 3023615581009694835ull -> 9272374160641534696ull [H-THIN]
kGroups_rows[16]: 13496533941019930808ull -> 10364329263136600283ull [H-THIN]
kGroups_rows[17]: 6174715221277441970ull -> 4225956051004008949ull [H-THIN]
kGroups_rows[18]: 5113739070112146000ull -> 7108588782921604133ull [H-THIN]
kGroups_rows[19]: 1772495940269705534ull -> 5489213286228074399ull [H-THIN]
kGroups_rows[20]: 10686035606077590379ull -> 10616002336161510798ull [H-THIN]
kGroups_rows[21]: 17379645375024748460ull -> 9622546459129830553ull [H-THIN]
kGroups_rows[22]: 3810215059026298411ull -> 944039958041978562ull [H-THIN]
kGroups_rows[23]: 6980015280280300871ull -> 15116276931277952764ull [H-THIN]
kGroups_rows[24]: 17653590613423189804ull -> 10604949906509802561ull [H-THIN]
kGroups_rows[25]: 5097055414090822762ull -> 2073356378818895203ull [H-THIN]
kGroups_rows[26]: 16040617079938685278ull -> 2582840377395668879ull [H-THIN]
kGroups_rows[27]: 7474835689400851509ull -> 2562757827364035110ull [H-THIN]
kGroups_rows[28]: 3588654748202396640ull -> 12699965404948142476ull [H-THIN]
kGroups_rows[29]: 482256096822295700ull -> 1195332705294901458ull [H-THIN]
kGroups_rows[30]: 491618572355040023ull -> 16972648823711764497ull [H-THIN]
kGroups_rows[31]: 15447520409861182807ull -> 4481092489104066192ull [H-THIN]
kGroups_rows[32]: 13546661642780035054ull -> 7005130885374206459ull [H-THIN]
kGroups_rows[33]: 586417508450537570ull -> 6610411880574253007ull [H-THIN]
kGroups_rows[34]: 16805284807511709227ull -> 3204572366595249610ull [H-THIN]
kGroups_rows[35]: 14582173341406959084ull -> 2120665229545761995ull [H-THIN]
kGroups_rows[36]: 4670485499468050406ull -> 6282585683572106081ull [H-THIN]
kGroups_rows[37]: 8464039108905730677ull -> 12064630322548111510ull [H-THIN]
kGroups_rows[38]: 16757005045255032303ull -> 1478230385172911488ull [H-THIN]
kGroups_rows[39]: 14459029476982242904ull -> 11603812731166869657ull [H-THIN]
kGroups_final[0]: 14459029476982242904ull -> 11603812731166869657ull [H-THIN]
kGroupsMag_rows[0]: 18395077400277767983ull -> 2680312739779497464ull [H-THIN]
kGroupsMag_rows[1]: 12064304672483746293ull -> 822058034361535600ull [H-THIN]
kGroupsMag_rows[2]: 14523426078186844972ull -> 3962469670734696157ull [H-THIN]
kGroupsMag_rows[3]: 8862832225214863179ull -> 17411473840245726690ull [H-THIN]
kGroupsMag_rows[4]: 14588621505662414032ull -> 5739216726257722739ull [H-THIN]
kGroupsMag_rows[5]: 4447156622707225162ull -> 4823834691276900811ull [H-THIN]
kGroupsMag_rows[6]: 4361493804042466119ull -> 14557402943266793758ull [H-THIN]
kGroupsMag_rows[7]: 1804450653994911768ull -> 17153420186503897123ull [H-THIN]
kGroupsMag_rows[8]: 14783451729418173724ull -> 11456037253658883689ull [H-THIN]
kGroupsMag_rows[9]: 8082972508033422197ull -> 2071497720185716146ull [H-THIN]
kGroupsMag_rows[10]: 8979544420957768909ull -> 10228359593541992710ull [H-THIN]
kGroupsMag_rows[11]: 7493375864971444891ull -> 8164374031973170202ull [H-THIN]
kGroupsMag_rows[12]: 2222992351194986144ull -> 14741153401126253421ull [H-THIN]
kGroupsMag_rows[13]: 11771896598749089907ull -> 5321723665543660526ull [H-THIN]
kGroupsMag_rows[14]: 12560649180545194470ull -> 13847739486469904387ull [H-THIN]
kGroupsMag_rows[15]: 14421558832844187772ull -> 5160912244748048563ull [H-THIN]
kGroupsMag_rows[16]: 4296761660805133425ull -> 9669498150986227540ull [H-THIN]
kGroupsMag_rows[17]: 742061714794648722ull -> 8947635553433824973ull [H-THIN]
kGroupsMag_rows[18]: 14109205439874640145ull -> 12178890551572236268ull [H-THIN]
kGroupsMag_rows[19]: 6057192239224243194ull -> 5673400076925890495ull [H-THIN]
kGroupsMag_rows[20]: 18247263908222071868ull -> 15315129035357191511ull [H-THIN]
kGroupsMag_rows[21]: 17174776223039553865ull -> 13281596230891049428ull [H-THIN]
kGroupsMag_rows[22]: 13727420337195600730ull -> 4615956555268131813ull [H-THIN]
kGroupsMag_rows[23]: 2818312375125287588ull -> 5864244316711809037ull [H-THIN]
kGroupsMag_rows[24]: 9915087812300743522ull -> 1805681795225876151ull [H-THIN]
kGroupsMag_rows[25]: 7161399393808283031ull -> 3885225909948070556ull [H-THIN]
kGroupsMag_rows[26]: 2862680592861432951ull -> 16301392942591338516ull [H-THIN]
kGroupsMag_rows[27]: 1307007383947855281ull -> 16771933549340211026ull [H-THIN]
kGroupsMag_rows[28]: 18356049985413183826ull -> 1873451560715463970ull [H-THIN]
kGroupsMag_rows[29]: 15935937615335005856ull -> 8712225159834374858ull [H-THIN]
kGroupsMag_rows[30]: 16415296467281494110ull -> 3729496159990057708ull [H-THIN]
kGroupsMag_rows[31]: 16803171265864625638ull -> 1612160720622215895ull [H-THIN]
kGroupsMag_rows[32]: 10957401283361829601ull -> 5717348211442227590ull [H-THIN]
kGroupsMag_rows[33]: 11252967136817419064ull -> 2472676727577223345ull [H-THIN]
kGroupsMag_rows[34]: 4760661672048575327ull -> 8470082562618443630ull [H-THIN]
kGroupsMag_rows[35]: 14915144339907298167ull -> 1840587632070777498ull [H-THIN]
kGroupsMag_rows[36]: 575503570718308907ull -> 15629226293335228938ull [H-THIN]
kGroupsMag_rows[37]: 5741952581690045810ull -> 2022458278016162571ull [H-THIN]
kGroupsMag_rows[38]: 1055864288829102030ull -> 13820365368293950247ull [H-THIN]
kGroupsMag_rows[39]: 16431710829567235323ull -> 7247005295497143736ull [H-THIN]
kGroupsMag_final[0]: 16431710829567235323ull -> 7247005295497143736ull [H-THIN]
kStopLimit_rows[0]: 4402211772532359251ull -> 10950004051556324382ull [H-THIN]
kStopLimit_rows[1]: 5449557300220864793ull -> 14490347146816688448ull [H-THIN]
kStopLimit_rows[2]: 2575787073227669374ull -> 17137431077388642227ull [H-THIN]
kStopLimit_rows[3]: 9938418473191636202ull -> 2067378368474728109ull [H-THIN]
kStopLimit_rows[4]: 10058127381824367565ull -> 11488424314019716432ull [H-THIN]
kStopLimit_rows[5]: 1315470856055524560ull -> 8954327035592863039ull [H-THIN]
kStopLimit_rows[6]: 15263698702667167777ull -> 7512665423720105326ull [H-THIN]
kStopLimit_rows[7]: 13220310601440668918ull -> 4187947268963235259ull [H-THIN]
kStopLimit_rows[8]: 15409637845860903908ull -> 2913839783495075163ull [H-THIN]
kStopLimit_rows[9]: 6446798858981198964ull -> 17362053743420220567ull [H-THIN]
kStopLimit_rows[10]: 10451839227886399841ull -> 18277069102810285906ull [H-THIN]
kStopLimit_rows[11]: 11816001997725235374ull -> 6966128010082440393ull [H-THIN]
kStopLimit_rows[12]: 1932657111780796664ull -> 343766021385529931ull [H-THIN]
kStopLimit_rows[13]: 5608877402063171472ull -> 14896797560397420035ull [H-THIN]
kStopLimit_rows[14]: 4816751693073396948ull -> 17434159485109243471ull [H-THIN]
kStopLimit_rows[15]: 406036428804793947ull -> 6133926189978579814ull [H-THIN]
kStopLimit_rows[16]: 8411172447822998997ull -> 13535889090349139748ull [H-THIN]
kStopLimit_rows[17]: 9566812430047964551ull -> 7154291922301271050ull [H-THIN]
kStopLimit_rows[18]: 7047212701932505101ull -> 12262784895722576372ull [H-THIN]
kStopLimit_rows[19]: 12944086715960255318ull -> 127621…
One pass over every page check_doc_anchors.py scans, after the last pick, the behaviour pins and the hash re-pin, so the digits are the final tree's. Digits only: no sentence changes. How, in order: 1. The multi-origin exact map (INT24's int24_exact_reanchor.py, INT19's method with --exclusive-first): main 0d76a09 first, then each lane's tip in pick order (H-MEASURE 2b494497, H-DOCGATES 68b974f2, REL10 bda36e1f and 5582fff2, K-OCA-KEEP 399601b9, PAR-ORDERS 6945fc19, PAR-ORDERS-2 9f7a025c, PAR-MARGIN 38442cec, PAR-MARGIN-2 3ea143e5, PERF-KEDGE f1f3febd, CI-RUNNER f313049f, H-THIN 09f0bbda, PAR-CASHFEE b44b10b4): each anchor carried through an exact difflib line map from the tree its digits were written against. 1721 anchors: 533 moved, 1047 kept, 141 stuck (digits a pick's digit merge wrote, which no single origin carries). 2. The gate's own --fix (the unambiguous symbol misses), then anchor_origin_fix.py for the rest: walk every INT26 commit and lane tip, newest first, to the commit where the anchor was last TRUE by the gate's own judge(), carry its lines through the exact map to this tree, and re-judge here -- 22 by the same digits, 26 by the same line and position (the lane tip's own digits: H-THIN 09f0bbda, H-DOCGATES 68b974f2, PERF-KEDGE f1f3febd). 3. By hand, each checked against the code it names: `max_open_lots` pineforge.h:505; `exit_from_bracket` pine_strategy_host.cpp:870 (in adapter_label_bracket_trades); `declare_security_sites_to_kernel` pine_strategy_host.cpp:1158; `leg_activation` pine_adapter.cpp:869-874 (the bind the base cited); `submit_margin_call_slice` pine_adapter.cpp:13979 and `schedule_margin_call_path` pine_adapter.cpp:14519; MG4's `AdmitWithHostMargin` pine_adapter.cpp:13079-13145 and 13078-13080 (main's 13280-13345 and 13279-13281, carried by content, which INT25's stale_scan found kept at main's digits); design row 135's native_execution_consumer.cpp:1438-1454 (main's 1429-1445, the same). Results on this tree: - check_doc_anchors.py: 1721 anchors, 1721 OK, 0 bad. - stale_scan.py against 0d76a09: 2 reports, both false: main cited `max_open_lots` native_run_spec.hpp:596 while its field sat on 595; the field is on 596 here. - verify_carry.py over the same origins: 1668 EXACT (an origin cites the same text), 27 EDITED (a pick rewrote the cited lines; each still passes the gate's claim), 26 NEW (prose the picks and INT26 wrote). - check_doc_lint.py: no offenders. docs/build.sh: Doxygen warnings 0. - The floor citations name the assignment lines (ci_verify.py:260 and :390). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
…blings its leg had (R5 lane INT26, round 2: the gate sweep's leaver) INT26's gate sweep (exp-r5-int26-20260926 against rebaseline e69aa1f7) refused the merge on one leaver, scrapper:data-BINANCE-BTCUSDT/standard/vasudevshenoy-manoj-betrayed-me (BTCUSDT 15m, process_orders_on_close, pyramiding 0; stop entries 'Buy'/'Sell' with strategy.exit stop/limit brackets, a pending entry cancelled when the next bar does not trigger it): 821 of TradingView's 821 trades on main 0d76a09, 820 on ebe6748 (canonical 100 -> 99.9). Bisect (the probe's own feed, spark, one build per pick boundary): a6e6a00 and 2922ade book 821, e1d7a98 -- R5 lane PAR-ORDERS, H-MEASURE Finding 6b, a process_orders_on_close stop entry its placing close already reached fills at that close -- books 820, and so does every later pick. Mechanism, on 2025-08-03 10:00 UTC. The 09:45 close cancels its pending 'Buy', places it again (stop 113689.29) and re-issues 'Buy Exit' (limit 113771.41); the re-issued legs keep their older book slot, so on the 10:00 bar the pre-script drain settles the limit on its parent's touch bar -- after that bar's receipt read. The 10:00 bar closes at its high 113771.47; its body cancels 'Buy' again and places it at that high with a fresh 'Buy Exit' (limit 114004.53), and since e1d7a98 the close pass fills that re-entry at the close, as TradingView does (#274), so the fresh legs are working when 10:15 opens. The first limit's terminal receipt is read only then, and observe_terminal_receipts' sibling cancel withdrew every working leg of the same exit id, from_entry and origin -- the fresh bracket's included, both legs at origin 0. The re-entry ran on to the 15:15 session close and swallowed TradingView's #275 (11:45). Before e1d7a98 the re-entry rested to 10:15, its legs still staged, so the late read found no sibling to take. The pick is right; the sibling cancel was not. Fix, adapter only: cancel_bracket_siblings takes the ordinal the terminal receipt executed at when the observer reads it, and skips a matching leg of a later strategy.exit call (another command_sequence) that the kernel accepted after that ordinal (its Birth::acceptance_ordinal, read through native_working_requests() only when such a leg is among the matches): that leg is the same id's later order. A leg of the filled leg's own call is its sibling however late it was accepted -- the drain submits a bracket's legs one at a time, executing each, so a stop can be accepted after its limit filled -- and goes as before (a review of the first form, which skipped every leg accepted after the fill, found that case). The close passes that call it synchronously pass nothing and are unchanged. No state is added. The probe (spark, generated.cpp of codegen a4259656, the lane feed 6b54c44a): 821 trades, canonical rubric excellent, countAbsDelta 0 (820 / strong before). TradingView's #273-#275 exact: 10:00 113689.29 -> 10:00 113771.41; 10:00 113771.47 -> 11:00 114004.53; 11:45 114005.84 -> 15:15 113844.70. 819 of 821 trades exact to the minute and cent on both legs (main: 771; the two others, #1 and #3, differ on main too). Witness: tests/test_pooc_stop_reentry_bracket_tapes.cpp replays three `lab tv --no-note` tapes of synthetic scripts of the same shape on NYSE:F 15m (tests/fixtures/pooc_stop_reentry_bracket; tv_trades e0447b53 / b7e89ce1 / efbd25e3): three flat signal closes that each cancel and place again a stop entry with its bracket, 10c beyond the close, then 1c (the next bar fills the entry and then the limit and closes flat), then at that close (filled there), long on bars 39-41 and short on bars 44-46; TradingView books the same four rows on the chart and under the magnifier. Every row is compared field by field, with the end book and its working bracket legs. - int26-reentry-bracket-chart: all four rows, flat; the short is the leaver's shape. - int26-reentry-bracket-mag records a divergence the fix does not touch (the same before and after): there the drain leaves the short's retained limit to the flush below the body, whose book still holds the short, so the re-entry is never placed -- rows 1-3 exact, both books flat. - int26-reentry-noexit-chart, the control: the short's re-entry places no strategy.exit (TradingView's row 4 still open at the end); the short bracket's stop, accepted after its limit filled, must still be withdrawn. Fail-before: against ebe6748 2 of 27 checks fail (the chart tape: 3 rows against 4, short 100 against flat); against the first form of the rule 1 of 28 (the control's stop left working); after, 28 of 28. Floors: one source-bound row. RELEASE_MIN_TESTS 702 -> 703, EXCLUDED_REGISTERED_MIN 683/683/692 -> 684/684/693 (and test_ci_verify's expectation, docs/ci.md). KERNEL_MIN_TESTS unchanged. docs/ci.md's sentence "The PR registration floors at INT26 are 683 for Debug and sanitizers and 692 for native" is rewritten with the new counts. Docs: the design page's PAR-ORDERS paragraph records the rule and the magnified divergence; the CHANGELOG 1.0.0 entry's process_orders_on_close item adds it for a user. Every doc anchor carried onto this tree by the exact line map from ebe6748 (135 moved); the three citations of ci_verify.py's RELEASE_MIN_TESTS line (CONTRIBUTING.md, contributing-llm.md twice) set by hand, 390 -> 393. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Sep 27, 2026
…fills at extremes, O(bars) drawing checkpoints, dynamic TA lengths, finer-than-feed security, zoned session speed (#291) * Read a request.security finer than every supplied feed as na instead of stopping the run TradingView reads a lower timeframe from that timeframe's own bars and keeps the last 2,000,000 of them. On BINANCE:ETHUSDT.P 15m and 1D over 2025-04-01..2026-05-01, request.security(tickerid, "5S", close) is na up to 2026-01-04 22:45 UTC and "15S" up to 2025-05-18 03:15 UTC; the 1m series (568,783 bars) is whole. A gaps_on read is na on the 27 chart bars that hold no 5S bar. A chart bar holding no loaded bar of the requested timeframe reads na (lab tv pf-krunerr-ltf-horizon, -ltf-values, -ltf-count2, 2026-09-26). The campaign lanes' finest bars are 1m, so a "5S" or "15S" site has no loaded bar anywhere, yet validate_security_timeframes refused it: "request.security: requested timeframe '5S' is finer than input '1'". That stopped all 14 rows of karmasantosh773-growwithcare-final-5s-master-strategy (baseline e69aa1f7). Where the host already supplied bars finer than the chart -- the auxiliary slice, or an input finer than the script timeframe -- such a site is now marked no_loaded_bars and never fed, so it and its TA read na throughout. A chart fed without intrabar bars (input_tf == script_tf) keeps the refusal, unchanged: it asks the host for finer bars, and the verifier's split-feed retry keys on it. This is Pine request.security semantics, so it lives in the source adapter (ADR-0001 rule 1); the kernel is untouched. The flag is folded into the source security hash only when set, so every site that loads bars keeps the digest it had: no witness moves. tests/test_security_finer_than_feed.cpp (release-only, floor 678 -> 679): 15m chart + 1m slice with "5S"/"15S"/"30S" beside a served "1" site, a 1D chart, a 1m input aggregated to 15m, and the unchanged refusal of "5S" and "5" on a chart fed alone. At 0d76a099 the first three stop with the population's own error (9/22 checks). test_pine_security_state_hash carries the new field's mutation row. Doc anchors into the header and ci_verify.py move with the inserted lines. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit d82fb6f04b07e6922fd406abc4968d7dd1fb5788) INT27 pick note: every source, header and test hunk applied unchanged. The docs conflicts were citation digits only (the lane's header and ci_verify.py insertions against INT26's re-anchored pages), merged token by token; INT27's single re-anchor pass sets every digit on the integrated tree. The release floor is INT26's 703 plus this row, 704. * Keep an after-close Muhurat session's own slice on the calendar split feed The nifty-1d lane's chart feed -- TradingView's own NSE:NIFTY 1D bars -- holds Muhurat sessions held after the regular close: Monday 2022-10-24 18:15 IST and Sunday 2023-11-12 18:15 IST. prepare_aux_security_chart_ranges keys a calendar bar by the session it covers (11febbc7, for OANDA's break-stamped dailies), and such a bar covers the NEXT regular session, the key of the native bar after it. The strictly-increasing key guard then stopped every split-feed run on the lane: "native chart feed trading-period identities must be unique and strictly increasing with an auxiliary security feed". karmasantosh773-growwithcare-final-5s-master-strategy on nifty-1d reached it once its "5S" sites stopped refusing. The calendar route partitions the auxiliary bars by the native timestamps, [chart_ts[i], chart_ts[i + 1]), which are strictly increasing (checked just above), so the Muhurat bar and the next regular bar keep their own slices. The guard now refuses only a calendar key that runs backwards; intraday keys are the routing labels themselves and stay strictly increasing. Only runs that stopped here change. tests/test_security_finer_than_feed.cpp gains the scenario: Friday, the Sunday Muhurat and Monday as three native bars with two 1m bars each read 12 / 22 / 32 from a "1" site, and a "5S" site stays na. Before this commit it stops with the duplicate-identity error (27/30 checks). Doc anchors into pine_aux_security.cpp move with the inserted lines. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 281186653c29b74a55137449c41685e17e2aad44) INT27 pick note: the source and test hunks applied unchanged; the one docs conflict was citation digits only, merged token by token (INT27's single re-anchor pass sets every digit on the integrated tree). * Kernel: session-day facts on a certified cycle of an exchange zone resolve no calendar interval per bar (R5 lane PERF-ZONED) PERF-KEDGE recovered KERNEL-EDGE's per-bar cost on UTC calendars only. On every other zone present_session_day still resolved the bar's script interval through the calendar memo at every bar, and read the label and both neighbours through it: a New York 5-minute FeedTolerant run cost 1.73x the instructions of 1a0e7ea1 (+2,443 Ir a bar), a Tokyo 1-minute run 1.22x (+3,439). native_calendar::cycle_certificate certifies the session day holding an instant when the zone makes its cycle read from that day alone: UTC or a fixed offset, or, under glibc or macOS, a TZif v2+ zone whose 64-bit table covers the reach (22 days around the cycle, widened by the spacing) and whose transitions there move the offset by at most 3 hours, between offsets within 14 hours of UT, never backwards while keeping the daylight-saving flag, and at least 8 days apart, each read back from libc (localtime on both sides, chained). Then every civil time in reach resolves to the first instant the wall clock reaches it, whatever was resolved before: one reading is found from any start; the two readings of a fold that flips the flag are both found (glibc's mktime probes a week at a time for the flag asked, and the spacing puts that probe on the fold's own side; macOS's mktime keeps no state) and resolve_stamp keeps the earlier; a gap resolves to the move itself inside the 14-hour search. So the cycles tile, each instant's local date is within a day of its cycle's open date, the memo's candidate lookup finds exactly that day, and no other day holds its instants. The zone is asked first, around the instant, and a day is resolved only where it holds: a refused certificate asks the calendar nothing. On a certified cycle present_session_day reads an instant in one of the day's spans in session on the day's ordinal, and an instant whose fixed bucket (fixed_bucket_ms, the calendar's own unit) meets no span out of session, resolving nothing. A bucket that reaches a span from outside one, every instant a certificate refuses, the walk and the scheduled close make the calls they always made. Measured on spark (instructions:u, A725 core 12): - zoned configs, 3000 bars idle, main 1a0e7ea1 / f1f3febd / this commit: NY 5m tolerant 1.7294x -> 1.0000x, NY 1m tolerant 1.7648x -> 0.9993x, Tokyo 1m tolerant 1.2201x -> 1.0003x; every canonical and tolerant config of NY, Tokyo, Chicago, London, Kolkata and UTC at most 1.0008x main; - the 100 public slots against f1f3febd: median 0.9952 (magnifier on), 0.9942 (off), no slot above 1.0; against main 1.0013 / 1.0001; - the budget workload: +0.41% over main at f1f3febd, +0.32% here. Identity (spark, f1f3febd against this commit, byte for byte): 100 slots x magnifier off/on with trade digests, equity and broker_state_hash; the 132-configuration battery on 8 host variants with every hash column; the KERNEL-EDGE probes and the AUDIT4 acid tests; PERF-KEDGE's facts battery (9,216 rows); a new 60-window zoned facts battery (45,600 rows: 2024 changes of New York, Chicago, Denver, Los Angeles, St John's, Havana, Santiago, London, Berlin, Dublin, Sydney, Lord Howe, Auckland, Chatham, Casablanca, Troll; Sao Paulo 2018/19, Tehran 2021, Apia and Tongatapu at +14, Caracas, Pyongyang; constant zones; and the refused folds and jumps of Tokyo 1887, Sitka and Juneau 1867, Apia 2011, Kwajalein 1969, Moscow 2011/2014, Recife 2000, New York 1883 and 2040, Amsterdam 1937, Manila 1844); the Pine witness replay. - native_calendar.cpp / native_calendar_memo.hpp: cycle_certificate, fixed_bucket_ms, SessionDayMemo::libc_local_reads() (a derived cost reading), the TZif v2+ table reader, and tz_read_resource shared with the identity digest. - native_execution_consumer: the certified-cycle cache (four entries, the last hit first), certified_point, certified_interval_meets_span; the PERF-KEDGE UTC member calendar_is_utc() is gone (a UTC calendar certifies every cycle). ADR-0001 rule 2: a generic capability of the run's own calendar -- its zone is data, the same for every venue -- with no spec field, switch or Pine vocabulary, and no answer moves. The only platform condition picks the libcs whose mktime the proof reads; elsewhere TZif zones take the exact path. Nothing is hashed: the facts fold into no digest and the new members are derived memos. Witness, tests/test_native_session_day_zoned.cpp (kernel-only): certificates at real transitions (New York, Chicago, London, Sydney, Lord Howe 2024 certified where the host's table lists them; Tokyo, Kolkata, a fixed offset, Apia at +14, Sitka's +14:58:47 and Moscow 2015 certified; Tokyo 1887, Sitka 1867, Apia 2011, Kwajalein 1969, Moscow 2014, Recife 2000, New York 2040 and POSIX zones refused, a refused certificate reading nothing), each certified cycle checked against the memo-free session_day_at; the same tapes under each TZif zone and its POSIX twin (never certified) present identical facts at every decision point over 8 windows, 7 sessions and 12 runs each, plus the magnifier, seconds and undetected paths (700 runs, 0 mismatches); and New York and Tokyo FeedTolerant batches resolve no interval for their facts where their twins resolve one a bar. Fail-before at f1f3febd: "no member named 'libc_local_reads' in 'pineforge::native_calendar::SessionDayMemo'". 17 of 19 mutants fail it; the two that survive loosen guards no zone in the host's database reaches (the 14-hour offset bound, the libc chain check). The PERF-KEDGE witness's probe reads the memo's UTC decision directly and its header records the change. Floors: kernel 278 -> 279, release 679 -> 680, PR registration 660/660/669 -> 661/661/670 (ci_verify.py, its self-test pin and docs/ci.md). 24 doc anchors carried through the exact line map from f1f3febd; the 6 that cite the two rewritten floor lines set by hand (ci_verify.py:253, :365). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 27e1f384f1063c13efe3961ff58b8a0c6410c425) INT27 pick note: the lane's base f1f3febd is PERF-KEDGE's tip, which INT26 carries as a3b4b971/debbd7f1. Every source, header and test hunk applied unchanged against INT26's text (each file's patch is byte-identical to the lane's), and no other caller of PERF-KEDGE's calendar_is_utc() is left on the merged tree. The floors are INT26's plus K-RUNERR's plus this lane's row: kernel 287 run (288 registered), release 705, PR registration 686/686/695 (ci_verify.py, its self-test pin and docs/ci.md). The docs conflicts were citation digits, merged token by token (INT27's single re-anchor pass sets every digit on the integrated tree), and the one floors paragraph, rewritten with the merged counts. * Pine v6 strategy() defaults: TradingView's tapes, replayed under the configuration the generated constructor declares TradingView changed three Pine v6 strategy() defaults around 2026-09-24T20:45Z. For a v6 script that omits them it now uses initial_capital = 100000, default_qty_type = strategy.percent_of_equity and default_qty_value = 100 (100 whatever the type: 100 contracts under strategy.fixed, 100 of the account currency under strategy.cash), where it used 1000000 / strategy.fixed / 1. Pine v5 keeps the old three, and none of the other strategy() defaults moved: lane TV-DEFAULTS exported 244 controlled lab-tv tapes of synthetic probes (Pine v5 and v6; BINANCE:BTCUSDT, NYSE:F, BINANCE:ETHUSDT.P and CME_MINI:ES1! 15; each parameter omitted, at its old default and at a value that moves the tape). The defaults are Pine policy -- what an omitted strategy() argument means, by language version -- so the kernel does not learn them (ADR-0001 boundary rules 1 and 2: a default capital or order size means nothing to a venue that states its own account, and a kernel knob would be hash-visible surface for a value every host already declares in its NativeRunSpec; engine.hpp's initial_capital_ member default is overwritten from the spec at every run begin). PineStrategyConfig's member defaults stay 1000000 / fixed / 1 -- Pine v5's, and what every hand-built source host relies on -- and pineforge-codegen (cg/tvdefaults d7e095f) declares the v6 values in the generated constructor for a script that omits them. test_tv_strategy_defaults replays seven of those tapes (BINANCE:ETHUSDT.P 15, 2025-04-01..05-01, byte-for-byte in tests/fixtures/tv_strategy_defaults) through the Pine adapter over 521 corpus 15m bars (bars.inc), under the configuration the generated constructor declares for each probe, and requires every trade the tape closes inside them -- 6 of 42 or 8 of 58, two v6 margin refusals among the six -- to be the engine's on TradingView's 0.01 tick and 0.0001 lot: an omitted capital (100% of 100000), an omitted type (1% of equity), an omitted value (100 contracts; 100 USDT), all three omitted, and two probes that declare every one, which run the same configuration either way. Under the configuration the pre-lane constructor declared, the host's defaults for the omitted arguments, each of the five omitted-argument probes misses its tape. The row pins the engine side; codegen's test_e2e_strategy_defaults pins the emission end to end on the same tapes and fails on codegen a4259656. Floors: the row is source-bound, so RELEASE_MIN_TESTS 678 -> 679 and the PR registration floors debug/sanitizers/native 659/659/668 -> 660/660/669 (the kernel floor stays 277); the floor notes are folded into the comment lines already there, so no line the documentation anchors moves. No hash witness moves and no engine source changes; the cheatsheet and configuration page state the v6 defaults. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 4b457291ab1100c812384923e8de7eb442a6a3f8) INT27 pick note: the engine half of lane TV-DEFAULTS only -- the row, its seven tapes, the docs and the floors. The lane's second commit, 1320b01d (the corpus gitlink f989e36 -> b73f8d6 and its baseline line), is not picked: its six initial_capital pins wait for the next corpus regeneration, and the corpus stays at b40aa8e. The test, fixture and docs hunks applied unchanged; the floors are INT26's plus K-RUNERR's and PERF-ZONED's plus this row: release 706, PR registration 687/687/696 (ci_verify.py, its self-test pin and docs/ci.md); the kernel floor does not move. * Kernel: a retained lower bar walks its own four turning points, and a bar that traded nothing at one price is one point (R5 lane MAG-INTRABAR) - NativeExecutionConsumer::deliver_intrabar_script: a lower bar the direct four-sample path declines (a leg of zero length, an open at its own low) is walked through its four corners, the repeated one included, instead of the general ENDPOINTS sampler's uniform fill -- every sample is a margin check point since PAR-MARGIN, so the fill measured a price the bar never printed there; a bar with volume 0 and open = high = low = close is one discrete sample, walked once. - ADR-0001: the rule-2 row (a mechanism correction, no knob). - tests/test_native_intrabar_turning_points.cpp (kernel-only, new row): the open-at-its-low sub-bar's marks are 60 60 90 85 and the call armed at that open is booked at 60; a volume-0 one-price sub-bar gives one mark. Against 3ea143e5's library 4 of its 21 checks fail (the uniform 77.5, no call, 12 marks on bar 3); against the v18 closure the TU does not compile ("no member named 'IntrabarSample'"). - tests/test_magnifier_ordered_sampler.cpp: a lower sub-bar with a zero-length leg is expected at its corners. - Floors: kernel 279 -> 280, release 681 -> 682 (the new row registers in both); docs/ci.md and the floor citations follow; published anchors re-anchored to the moved kernel lines. No witness value moves; the 65 ctest rows that run a lower path or the magnifier pass unchanged on this commit. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 4a89056ce2faba4605db1b79e97d7178640aecb4) INT27 pick note: the lane's base 3ea143e5 is PAR-MARGIN-2's tip, which INT26 carries under other shas. The kernel, test and CMake hunks applied unchanged (each file's patch is byte-identical to the lane's). The ADR-0001 rule-2 row sits after PAR-MARGIN-2's margin_segment_origin row, above H-DOCGATES' inventory rows, where INT26 put the other mechanism rows. The floors are INT26's plus the earlier INT27 picks plus this row: kernel 288 run (289 registered), release 707, PR registration 688/688/697 (the lane counted no PR registration floor; its kernel row registers in all three excluded profiles). The other docs conflicts were citation digits, merged token by token (INT27's single re-anchor pass sets every digit on the integrated tree). * Adapter: the bar magnifier walks TradingView's own intrabars -- its table's timeframe, each owned by the chart bar of its last minute (R5 lane MAG-INTRABAR) TradingView's magnifier does not walk the host's 1-minute feed: its help-centre table picks the intrabar per chart timeframe (1 -> 10S, 5 -> 30S, 10 -> 1, 15 -> 2, 30 -> 5, 60 -> 10, 240 -> 30, 1D -> 60, 3D -> 240, 1W -> 1D), each intrabar is the symbol's regular bar anchored at the session day's open and cut at its close, and it belongs to the chart bar that holds its LAST minute. - source::tradingview_intrabar_timeframe / tradingview_magnifier_bars (include/pineforge/source/magnifier_intrabars.hpp, src/source/ magnifier_intrabars.cpp): build that path from the input feed on its own grid -- the chart bar's open as a volume-0 print when its first intrabar straddles into it, each owned intrabar aggregated and stamped at its first input (a straddler one millisecond after the print), the chart bar's close as a print when its last minute belongs to the next bar's intrabar. The input comes back unchanged when the intrabar cannot be built from it (a 1- or 5-minute chart needs 10S / 30S bars) or a calendar interval is unresolved. - PineExecutionAdapter::project hands that path to IntrabarPath::lower_tf. - calc_on_order_fills on that path (72 of 72 TradingView cascades): the open point is the walked intrabar's own Open, re-admitted at every intrabar (PineStrategyHost::on_native_sub_bar -> PineScheduler::sub_bar_complete); next_input_waypoint looks the bar up on the lower path and returns the intrabar's open, first and second extreme, then the next intrabar's open (never its close; a print goes straight to the next open), with the adapter's own same-point rule (coof_fill_at_path_point) for a booked tick; a market entry or close whose next point is the next intrabar's open stays a plain market order (coof_waits_for_next_sub_bar), which the kernel fills there even at the price the recalculation stands at. broker_bar reads the walked intrabar. - Tests: test_magnifier_tradingview_intrabars (the table, grids, sessions, ownership; 168 checks) and test_adapter_magnifier_intrabar_tapes (TradingView's request.security_lower_tf intrabars for 1m..1D on ETH, NSE:NIFTY and NYSE:F; three bracket tapes; the two refill tapes; 1160 checks), new rows, fail-before "magnifier_intrabars.hpp file not found". The differential's intrabar rows now assert TradingView's rows on all 20 magnified tapes (0130 no longer recorded). Re-pinned to TradingView's cascade: the calc_on_order_fills twin's adapter lots and test_adapter_coof_relower's refill trace -- 100 @900000, then the straddler 100, 100, 99, 101 @900001, then 100.1 @960000 (were 100, 100, 99, 101, 100.25 @900000, 100.1 @960000). - Fixtures: tests/fixtures/magnifier_intrabars (13 lab tv exports of the lane's own scripts, bars_1m.inc, README); intrabar_margin README updated. - Docs: magnifier page (the intrabars a Pine strategy walks), pine-to-native use_bar_magnifier row, native-engine margin passages, ADR-0001 (the adapter's path and refill points; the kernel row's writer), design rows CT9 and E4; anchors re-anchored. - Floors: release 682 -> 684 (two source-bound rows). No witness value moves (the release ctest's witness rows pass unchanged). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 9df16c24b6186b9adadaedfd2d467e76ecffe9e3) INT27 pick note: the lane's base 3ea143e5 predates INT26's PAR-ORDERS and PAR-ORDERS-2 picks, which rewrote the same recalculation code. Composed, each lane's intent kept: - PineExecutionAdapter::close keeps PAR-ORDERS-2's second-extreme rule on the chart path (coof_close_at_second_extreme) and gains this lane's next-intrabar rule on a lower path (coof_close_next_sub_bar); entry() merged cleanly the same way. - test_adapter_coof_relower's refill lots and test_native_calc_timing_twin's adapter lots take this lane's prices (TradingView's cascade on the 2-minute intrabars: 100, then 100, 100, 99, 101, then 100.1) at PAR-ORDERS' instants (every magnified fill dated at its chart bar's open, 900000); both rows pass on the merged tree, and both lanes' sentences are kept. - tests/CMakeLists.txt: git's clean merge closed H-MEASURE's fixture list twice and repeated its margin row; the list is closed once, with this lane's tape row inside it. - Floors: release 709, PR registration 690/690/699 (the lane counted no PR registration floor; its three rows register in all three excluded profiles). - Docs: the design rows CT9 and E4 keep INT26's re-anchored text and gain this lane's sentences; the ADR row of the kernel's lower-bar samples takes this lane's text above H-DOCGATES' rows; the rest were citation digits, merged token by token. On this commit H-MEASURE's test_magnified_aggregated_tape, a row the lane's base did not carry, fails: its v3 row 2 now books TradingView's fill (a move toward the tape), and v2/v3 row 5 moves away from it -- the next commit (INT27 merge) settles both. * INT27 merge: a magnified recalculation's market order after the matcher's fill at an intrabar's second extreme fills there R5 lane MAG-INTRABAR's base (PAR-MARGIN-2's tip) did not carry INT26's PAR-ORDERS-2 picks or H-MEASURE's test_magnified_aggregated_tape, so the two lanes' rules met first on this tree. - PAR-ORDERS-2 (H-MEASURE Finding 6d): the matcher's fill of a resting request at its own level AT a bar's second extreme ends the leg there, and the recalculation's market order fills at that extreme; a fill the adapter forced there advances. It is written for the chart path (PineExecutionAdapter::coof_fill_at_second_extreme); on a lower path the magnified run met it only by accident: the old next_input_waypoint took an off-grid extreme's booked tick for a fill short of it and returned the extreme. - MAG-INTRABAR: a magnified run walks TradingView's 2-minute intrabars, and after an intrabar's second extreme the next fill point is the next intrabar's open (mi-coof-refill*, 72 of 72 cascades, every one a market order's -- forced -- fill), with the same-point rule that no longer mistakes a booked tick for a fill short of its print. Together, on hm-mag-diff-v2 and -v3 bar 19 (NYSE:F, 14:15 ET) PX's limit fills at its own level on the high of the 14:26 intrabar (11.715, booked 11.72), its second extreme, and the ML entry its recalculation places went to the 14:28 intrabar's open, 11.71; TradingView books 11.72 on both tapes. PineScheduler::next_input_waypoint now returns the second extreme itself for the matcher's own (unforced) fill there, so the market order fills at it, and keeps the next intrabar's open for a forced fill: row 5 of both magnified replays is TradingView's again, and every cascade, bracket and margin tape of MAG-INTRABAR still passes (test_adapter_magnifier_intrabar_ tapes, test_adapter_coof_relower, test_native_calc_timing_twin, and the 95 magnifier / intrabar / lower-path / margin / calc_on_order_fills / POOC / extreme-order rows all pass). No hash witness moves (the eleven witness rows pass unchanged). The same test's v3 row 2 (magnified), a recorded divergence (11.58 where TradingView books 11.54), flipped to TradingView's with MAG-INTRABAR's kernel commit alone: PX's limit fills on the leg to the high of a sub-bar that opens at its own low (bar 6, the 11:01 ET minute), and the kernel now walks such a bar through its four turning points instead of the sampler's uniform fill, so the entry books that high, 11.54. It stays exact on the 2-minute intrabars. The row is no longer recorded, and the file's header says why. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Adapter: an exit a recalculation places on a fill at a bar's extreme reads that fill -- a level fill leaves no leg in flight, a forced one is read from the extreme itself (R5 lane PAR-ORDERS-3, findings 1 and 2) exit()'s calc_on_order_fills classification took the recalculating fill's remaining leg from next_source_path_waypoint(point) alone: - a fill AT the bar's first extreme -- the matcher's fill of a resting request at its own level there -- read the whole next leg as the in-flight remainder of its own (9f7a025c pine_adapter.cpp:9026-9048), so a priced exit born there was forced onto the second extreme (Limit{endpoint}); TradingView books it at its own level on the leg to that extreme (lab tv pa2-i2-level-w1-{long,short}{,-pooc}); - a fill forced onto an OFF-grid first extreme books its tick (11.425 -> 11.43, 11.645 -> 11.65), which next_source_path_waypoint read as a fill short of the low, so the exit was a plain limit and the next entry filled at the second extreme; TradingView starts the next leg at the extreme (lab tv pa2-i2-point-w2-long{,-pooc}). The classification now reads the fill as 4985dcaa does for entries and strategy.close: at_own_extreme (coof_fill_at_path_point on the phase's own extreme) and coof_fill_forced_ tell a level fill, which ends its leg and leaves no remainder in flight (fill_ends_leg), from a forced one, whose next waypoint is read from the extreme itself. Rows (tests/test_second_extreme_order_tapes.cpp; 25 of its 132 checks fail on the base): every RECORDED boundary row flips to exact -- pa2-i2-level-w1-long rows 1-6 (both variants), -short rows 1, 2, 5, 6, -short-pooc rows 1, 2 (still compared on its first cycle: finding 3), and pa2-i2-point-w2-long rows 2, 3, 5, 6 (2, 3, 5 under process_orders_on_close). The exit tapes' rows 5 and 7 / 1 stay RECORDED (finding 4). Hash: publication witness ConfigFlags103 moves (its X limit, placed by the recalculation on a limit entry's level fill at bar 24's low 99.75, fills at its level 100.75, not at the high 103.00); re-pinned once in the lane's hash commit. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit fe50e34118c7bb20a342198e3137a2193a968da6) INT27 pick note: the adapter and test hunks applied unchanged (each file's patch is byte-identical to the lane's); the docs conflicts were citation digits, merged token by token (INT27's single re-anchor pass sets every digit on the integrated tree). The lane's hash values (publication ConfigFlags103) fold into the single INT27 v19 hash re-pin, not this commit. * Adapter: after the matcher's fill at its own level on a bar's first extreme, the recalculation's orders act from that extreme (R5 lane PAR-ORDERS-3, finding 4) coof_next_waypoint advanced every order a non-first-open recalculation placed to the waypoint AFTER its fill's point (fe50e341 pine_adapter.cpp:5834), so after a fill AT a bar's first extreme a market entry, strategy.close, close_all or a market strategy.order waited for the second extreme or the next open, and an exit stop already through was held to the leg's end or deferred to the next open. H-MEASURE Finding 6d and 4985dcaa had settled the second extreme; the first was predicted, not taped. The lane exported the tapes that decide it (lab tv, NYSE:F 15m, 2025-07-01..08, 20 tapes, tests/fixtures/second_extreme_orders/pa3-f4-*): - after the matcher's fill of a resting request at its own level ON the first extreme (a limit entry A there), TradingView fills a market entry B, strategy.close("A"), close_all and a market strategy.order AT that extreme (pa3-f4-level-w1-{mkt,close,closeall,order}-*), fills A's exit stop, already through, AT it (-xstop-*), and fills a stop entry B between the extremes at its own level on the leg to the second extreme (-bstop-*); - the two shapes ab9714be's rows pinned hold the same: a STOP entry exactly on the extreme then the market add (pa3-f4-stop-w1-mkt-*), an EXIT limit exactly on it then the market re-entry, whose own exit limit, already through, fills where the path next re-crosses its level (pa3-f4-xlimit-w1-reentry{,-tp}-*); - a fill forced onto the first extreme still starts the next leg: the control pa3-f4-point-w1-mkt-* fills B at the second extreme. coof_next_waypoint returns the point itself for a matcher's (not forced) fill at an extreme (pine_adapter.cpp:5841); exit() fills a stop already through at the point the fill ended its leg on (pine_adapter.cpp:9118-9127), never staged behind the recalculation or deferred as a wrong-side stop (:9379, :9391). That leg is a stop AT the point, not a market leg: the recalculation executes market newborns in place, which a cohort-bound leg (close_entries_rule "any": Owner BindCohort, refused by current execution since af7618d0) cannot take, and a market leg would then book the point's price on a later bar (the xstop tapes replayed under "any": bar 5 @11.46 for TradingView's bar 4 @11.46; with the stop, exact). The same reading moves the second-extreme exit tapes: a stop B's recalculation places on the second extreme, reached on the leg to the close, fills at its own level there instead of the close's tick. Rows: tests/test_second_extreme_order_tapes.cpp 285 checks (54 fail on fe50e341, 79 on the base): pa2-i2-exit-w2-long{,-pooc} rows 5, 7 and -short{,-pooc} row 1 flip RECORDED -> exact; the 20 pa3-f4 tapes, 93 rows, exact (48 of them fail on fe50e341). Frozen rows moved with their notes, toward the tapes: - test_calc_on_order_fills EndpointMarketAddProbe chart row, and its frozen twin test_calc_on_order_fills_l4c: the add's lot 90 (second extreme) -> 105 (the first extreme the stop entry's fill ended its leg on; pa3-f4-stop-w1-mkt-*); tests/twin_parity_inventory.json pins it as an observable rewrite, INVENTORY_SHA256 264aef4a -> cb035ede; - the L0 oracle tests/oracle/test_oracle_coof.cpp (twin test_native_oracle_coof_l2) and its copy test_coof_cascade_eligibility, row R1: the cascade re-entry 90 (W2) -> 101 (W1) and its tp exit bar 2 -> 1 (pa3-f4-xlimit-w1-reentry{,-tp}-*); tests/oracle.sha256 test_oracle_coof.cpp 647f8a24 -> e006f064, tree f39b54fe -> f25b1dd2. CHECK counts unchanged (census 791). Hash: quiet-bar CalcOnFills, Random10, Random20 (chart, both runs each), publication ConfigFlags103 (X's stop, 99.75 at the point its entry's level fill ended the leg on, fills there) and seven live-state digests move; re-pinned once in the lane's hash commit. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit bc5f7a212050f2dd97f03e6da201f7d8def9bc0e) INT27 pick note: every adapter, test, oracle and fixture hunk applied unchanged (each file's patch is byte-identical to the lane's). The twin inventory merged cleanly with INT26's; its pin in check_twin_parity.py is the merged file's own sha256 (b0066ba1, the lane's cb035ede being its own inventory's), and check_twin_parity.py and check_oracle_sha256.py pass. The docs conflicts were citation digits, merged token by token (INT27's single re-anchor pass sets every digit on the integrated tree). The lane's hash and behaviour pins (quiet-bar, publication, live-state) are harvested on the integrated tree: its behaviour half lands after this lane's picks, its hash values in the single INT27 v19 hash re-pin. * Adapter: a process_orders_on_close limit entry fills at the close that placed it when the close's tick reaches it, with or without calc_on_order_fills (R5 lane PAR-ORDERS-3, finding 3) The post-calculation close pass (fill_pooc_close_entries) tested a pure limit entry placed by the bar's close calculation against the RAW close, and skipped every limit under calc_on_order_fills (bc5f7a21 pine_adapter.cpp:16649-16671). TradingView reads the close's TICK, as the pass already did for a stop, with or without calc_on_order_fills (lab tv pa3-f3-pooc-limit-{long,short}{,-coof}, NYSE:F 15m, 2025-07-01..08, tests/fixtures/pooc_limit_close): a sell limit at 11.76 over a raw 11.755 close (tick 11.76) and at 11.86 over 11.855 fill at that close; a buy limit at 11.65 over a raw 11.655 close (tick 11.66) and at 11.74 over 11.745 rest, and so does every limit only the bar's range reached -- each fills on the next bar's touch. PAR-ORDERS-2 recorded the short case on pa2-i2-level-w1-short-pooc, cycle 2 (bar 31: TradingView fills A's sell limit at the close its high already reached, the engine on bar 32). pure_limit no longer excludes calc_on_order_fills, and at_close compares the close's tick for a limit as for a stop (pine_adapter.cpp:16654-16675). Rows: tests/test_pooc_limit_close_tapes.cpp (new, 28 checks; 4 fail on bc5f7a21 and on the base: both short tapes' j = 22 and j = 31 entries a bar late); tests/test_second_extreme_order_tapes.cpp compares pa2-i2-level-w1-short-pooc whole again, rows 1-5 (was its first cycle, rows 1-2): 288 checks, 3 fail on bc5f7a21, 82 on the base. Release floor 682 -> 683 (+1 test_pooc_limit_close_tapes, source-bound; the ci_verify.py:359 citations in CONTRIBUTING.md and docs/pages/contributing-llm.md follow the line). No hash witness moves beyond the lane's earlier commits. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 1550a694e859e7606bee7fad6081fe54594a4307) INT27 pick note: the adapter and test hunks applied unchanged (each file's patch is byte-identical to the lane's). tests/CMakeLists.txt: git's clean merge closed H-MEASURE's fixture list after MAG-INTRABAR's row and left this lane's row outside it; the list is closed once, with both rows inside. The floors are the earlier picks' plus this row: release 710, PR registration 691/691/700 (ci_verify.py, its self-test pin and docs/ci.md). The design page's close-pass paragraph keeps both insertions -- this lane's limit sentence, then INT26 round 2's re-entry bracket sentences; the other docs conflicts were citation digits, merged token by token. The lane's b65cee22 (its hash re-pin) is not picked: its behaviour half follows, and its hash values fold into the single INT27 v19 hash re-pin. * PAR-ORDERS-3: the trades and transcripts its fixes move, pinned (INT27: the behaviour half of b65cee22) R5 lane PAR-ORDERS-3's own re-pin, b65cee22 ("PAR-ORDERS-3 v19 hash re-pin"), moves hash values and behaviour together. INT27 folds its hash values into the single INT27 v19 hash re-pin, whose tool refuses any non-hash change, so the behaviour it pins lands here, with the fixes that move it. Harvested on this tree with each TU's own switch (PINEFORGE_QUIET_BAR_HARVEST, PINEFORGE_D2D_PUBLICATION_HARVEST, PINEFORGE_V19E_HARVEST and the other eight), at the pick boundary before the lane (0631e045, which reproduces every pinned value) and after each of its three commits, and compared field by field with the pins before the picks, the lane's b65cee22 and its base 1550a694: - fe50e341 (findings 1 and 2) moves publication ConfigFlags103's digest only; bc5f7a21 (finding 4) moves it again, and the quiet-bar and live-state rows below; 1550a694 (finding 3) moves nothing -- the lane's own attribution. - test_adapter_quiet_bar: the trade digests of CalcOnFills/0/*, Random10/0/* and Random20/0/* (CalcOnFills keeps every trade and renumbers Trade::entry_incarnation), and the boundary counts Random10/0/* 69 -> 67 and Random20/0/* 70 -> 69, equal to the lane's. The same runs the lane moved; INT26's picks had moved their trade digests too, so the digests are this tree's. The list sits in the pinned file. - test_adapter_live_state_equivalence: 6 of 108 transcript digests (the transcript holds no hash value) -- reversals seeds 314187, 1780393 and 3246599, brackets 314188 and 1780394, chains 314189, the lane's seeds; INT26's picks had moved each of them before, so the digests and counts are this tree's (reversals 314187: 168 -> 196 trades, 3246599: 147 -> 149; brackets 314188: 144 -> 134, 1780394: 95 -> 96; chains 314189: 62 -> 75). The lane's seventh, chains 1780395, a digest-only move on its tree, does not move here. The list sits in the data file. - test_publication_witness: ConfigFlags103's digest only, a hash value; nothing lands here. Until the INT27 v19 hash re-pin, test_adapter_quiet_bar and test_publication_witness fail on those hash values only (15 values over the 6 quiet-bar runs, ConfigFlags103's digest); every other witness row passes. (behaviour half of commit b65cee223f1839df0989da9fba24501788417c01) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Drawing arenas: share records between checkpoint copies so a COOF run costs O(bars) calc_on_order_fills checkpoints the generated script state at every script bar (pine_scheduler_native.cpp: snapshot at the bar open, restore before the close execution, commit after it, two restores per fill recalculation), and the generated hooks copy each DrawingArena by value. A record is never forgotten -- delete and max_*_count eviction only tombstone it -- so every copy cost O(every drawing ever created) and a drawing COOF run was quadratic in bars (job-2892: ~239 s CPU on NYSE:F 15, ~12,950 s on ETH 15). DrawingArena's records now live in a store that is a vector until the arena is copied, exactly as before, and nothing in a vector is ever shared. A copy is built as blocks of 32 under a 32-way radix trie plus a tail block, and a copy of a block store -- or a store assigned from one -- shares every block; a write clones only the blocks and nodes on its path that another copy still shares. Under the scheduler's sequence the first snapshot copies the vector (O(records), once, at the first bar) and the restore assigns the copy back, so from then on a checkpoint copy or restore is O(1) for records plus O(live) for the order_ deque (at most max_*_count ids), and a script execution pays for the blocks it writes. The generated by-value checkpoint needs no codegen change. An arena that is never copied keeps the vector and inlines only the vector paths; every block path is out of line. Every observable -- ids, liveness, every field of live and dead records, order() (the *.all and eviction order), every pf_* result and exception -- is unchanged. Getters read through a const path that never unshares. Eviction tombstones a record before it leaves order_, so a refused allocation in that write leaves the arena consistent; a moved-from arena is empty and a self-move keeps the arena. Rows: - test_drawing_checkpoint: differential against the pre-lane vector arena (verbatim) over random create/delete/eviction/set_* and every pf_* getter/setter/copy, interleaved with snapshot/restore/commit and arbitrary copy graphs, past three trie levels, every checkpoint compared whole before it is dropped; the scheduler's sequence across a run reset; refused allocations, including partway through copying a block of labels; the cost pins (after the first bar an unchanged checkpoint copies no record and allocates the same for 10,000 and 40,000 records; synth-label-coof's churn copies <= 64 records per execution and the checkpoint steps' bytes stay per-step bounded, N -> 2N ratio <= 2.25). Under AddressSanitizer the random and cost rows run fewer steps (its fake stack made the row take 575 s). - test_coof_drawing_checkpoint_cost: synth-label-coof through the Pine host with calc_on_order_fills and fills, 4,000 vs 8,000 bars, the same bounds on record copies and on what the checkpoint hooks allocate. - test_coof_drawing_rollback_tape: TradingView's coof-drawing-rollback tape (CG-POPFIX, 41 trades) replayed through the Pine host: all 41 trades identical in times, prices, quantities and both comments (x2 == n). Fail-before (the three rows against the old drawing.hpp): every cost pin fails (30,000,000 record copies for an unchanged 10,000-record arena; ratio 4.000), every exactness row passes. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit 52f0395087ac6b8d9e83475ab1e664c71df058aa) INT27 pick note (late pick, accepted 2026-09-26 22:47, placed after the last scheduled pick and its behaviour half; the list names no place): drawing.hpp, the three rows and the fixture applied unchanged. git's clean merge put this lane's fixture-dir block inside TV-DEFAULTS' `if(TARGET test_tv_strategy_defaults)` block, before its endif(); each block stands on its own. The lane's floors and doc anchors (0d651058) are not picked: INT27's floors item recounts the floors (this lane: kernel +1, release +3, each PR registration floor +3) and INT27's single re-anchor pass sets the digits. * Compute ta.* calls with a simple or series length as TradingView does TradingView accepts a length that is neither a constant nor an input. PineForge refused every such call at transpile time. This adds the Pine runtime those calls lower onto, in the source layer (include/pineforge/source/pine_ta_length.hpp, src/source/pine_ta_length.cpp): - A simple length (fixed for the run: a syminfo preset, an input-string ternary) is answered exactly as the constant. FirstCallBound builds the fixed-length class from the call's first execution; simple_ta_length stops the run on 0, a negative length or na, with TradingView's text. - A series length for ta.highest / ta.lowest / ta.highestbars / ta.lowestbars re-windows every call over the site's own bar history (skipped bars hold the last executed source), through a cached extremum whose growth, poison and late-first-execution rules fit 5,647 recorded TradingView calls of 35 synthetic call sites with no mismatch (SeriesHighest, SeriesLowest, SeriesHighestBars, SeriesLowestBars). - ta.supertrend compiles a series factor but reads it once: PineSupertrend is the Pine reference with the first execution's factor, warm-up included (1,200/1,200 recorded bars). TradingView refuses a series length for ta.rma / ema / rsi / atr / dmi / macd / kc / hma / tsi / rci and supertrend's atrPeriod at compile time, so those only ever see a simple length. Three rows replay the lab tv tapes (test_ta_series_length_extremes, test_ta_series_length_supertrend, test_ta_simple_length); the release floor moves 678 -> 681. No kernel translation unit changes. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> (cherry picked from commit ea7021ac08529bbecc54f41364af2b23ebd142cd) INT27 pick note (late pick, accepted 2026-09-26 23:20, placed after the late pick K-DRAWSNAP): the source-layer runtime, the library's source list and the three rows applied unchanged (each file's patch is byte-identical to the lane's). Its floor hunk (release 678 -> 681 on its base) is not applied: INT27's floors item recounts the floors with its three rows (release and the three PR registration floors +3; the kernel floor does not move, its TUs reach the source layer). The paired codegen commits land in the codegen integration. * INT27 (iii): the lower-lookup shape witness times user CPU, so the allocator's page faults no longer decide it test_native_intrabar_lower_lookup bounds the cost of 16,000 script bars (and a four times longer lower feed) by 6x that of 4,000 bars; a scan of the whole feed per script bar reads 16-18. It timed process CPU (std::clock), and on the lab's x86 cloud hosts it read 6.19-6.28 where NTU and spark read about 5.9 -- and on this tree it fails on spark too. The excess is not the code the row times. Split on spark (gcc 13, one pinned X925 core, 4,000 / 16,000 bars x64, best of three): - process time: 0.15 s / 0.98 s, ratio 6.12-6.61 (main d0935605: 0.10 s x32 / 0.59-0.61 s, 5.71-5.88); - of the large leg's 0.98 s, 0.38-0.41 s is SYSTEM time; the small leg's is 0.00-0.004 s. The allocator maps the large leg's buffers afresh on every run -- a first-touch page fault per page -- where the small leg reuses its heap; - user time: 3.88-4.00 on this tree, 3.91-3.95 on main. R5 lane PERF-ZONED exposed it: its certified fixed-offset cycles (this spec runs at UTC+5) took the per-bar calendar cost out of both legs, so the fixed fault cost weighs more (6b601ef0, right after that pick: 6.50-6.63). tests/ratio_timing.hpp gains ratio_timing::user_cpu_seconds() (getrusage RUSAGE_SELF's ru_utime; std::clock where getrusage does not exist), the lane CI-FLAKE helper file every ratio row shares, and this row samples it. The legs, the calibration (100 ms of the same clock, the doubling of tests/ratio_timing.hpp) and the x6 bound are unchanged. The guarded property still fails on a real quadratic regression: with deliver_intrabar_script's lower_bound replaced by the pre-K24 scan of the whole feed (scratch copies only, never committed), the row reads - 18.11 on spark under user time (18.19 under the old process time), - 17.04 on the M4 Max, and fails "ratio < kShapeBound" on both; unmutated it reads 3.88-4.00 on spark and 3.88-4.36 on the M4 Max. The value half and every pin are untouched. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * INT27 (iv): the effective-strategy report reads the configuration the generated constructor declares The provenance's "strategy" block (scripts/run_strategy.py's --fingerprint-json and docker/run_json.py's "fingerprint") is the seed of strategy() defaults, then what the TU's constructor declares, then the run's strategy_overrides. Its parser read only pre-R4-C member writes (`initial_capital_ = ...;`), and pineforge-codegen has since filled a source::PineStrategyConfig (`cfg.initial_capital = 100000.0;`, `cfg.default_qty_type = static_cast<int>(QtyType::PERCENT_OF_EQUITY);`) and handed it to configure_pine_strategy, so every report showed the seed whatever the script declared (R5 lane TV-DEFAULTS, follow-up 3) -- and with TradingView's new Pine v6 defaults declared in the constructor, a v6 script's report named capital and sizing it did not run with. parse_strategy_params now reads the constructor's PineStrategyConfig assignments (the variable its declaration names; enum members stored as int, `static_cast<int>(...)` unwrapped, an integer index mapped too) and, for older TUs, the member writes as before. The seed is PineStrategyConfig's member defaults (the values it already held; its comment named engine.hpp's pre-R4-C members). The block's keys are unchanged, so the margins and calc_on_order_fills the constructor also declares stay out of it. Both copies are the one helper block, byte for byte. - scripts/fingerprint_self_test.py: two fixtures in the constructor's current form -- every field declared, including a decoy StrategyOverrides line outside the constructor, and a sparse one whose undeclared fields are the struct's defaults. 284 checks pass; against the previous helpers 6 of them fail (every cfg-form field read, the declared values, the sparse defaults). - Over the corpus's 312 TUs at b40aa8e (pure parsing, both copies agree): before, 311 reports equal the seed exactly (the other only by its inputs.json overrides); after, 88 change -- pyramiding 81, default size 63, capital 62, commission 61, slippage 59, sizing type 25, process_orders_on_close 4, commission type 3 -- and every numeric literal a constructor declares equals its report's value unless an override replaces it. analyzer-anvil-percent-costs-01, for one: fixed / 1 / 1000000 / 0 / 0 -> percent_of_equity / 7.5 / 100000 / 0.08 / 2. Provenance only: nothing the run executes reads the block, so no trade moves (the corpus parity step runs this harness). Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * INT27 (i): the 1.0.0 entry says what INT27's picks change for a user Added to "Behaviour that moves results against 0.13.1", each a sentence a user can act on: - Pine v6's current strategy() defaults for an omitted initial_capital, default_qty_type or default_qty_value (100000, percent_of_equity, 100), which pineforge-codegen 1.0.0 declares; v5 and a hand-built PineStrategyConfig keep 1000000 / fixed / 1; declare the three to keep the old sizing. - calc_on_order_fills after a resting order's own-level fill on a bar's high or low: the recalculation's market orders, closes and passed exit stops fill at that point, an exit limit placed on the first extreme's fill is live at its level on the leg to the second, a forced fill still moves on, an off-grid extreme's booked tick is that extreme, and under the bar magnifier a market order after such a fill at an intrabar's second extreme fills there (the existing second-extreme sentence, widened). - process_orders_on_close: a limit entry at the placing bar's close fills there when the close's tick reaches it, with or without calc_on_order_fills. - The bar magnifier walks TradingView's own intrabars, built from the finer feed, and what a 1/5-minute chart and an exchange-listed daily chart still walk; a zero-length-leg lower bar walks its four turning points and a volume-0 one-price bar is one point. - A request.security finer than every supplied feed reads na instead of stopping the run; a daily run with an auxiliary feed no longer stops on an after-close session (NSE Muhurat). - A ta.* call with a simple or series length (the late pick's runtime, which pineforge-codegen 1.0.0 lowers onto) and what is still refused. A new "Performance" section: a calc_on_order_fills strategy that draws no longer slows with every drawing it made -- the late pick's shared checkpoint copies; codegen has checkpointed the script state, drawings included, on every fill recalculation since codegen v0.9.0, which 0.13.1 paired with. A new "Reports and tools" section: the provenance's strategy block records what the generated constructor declares, so such fingerprints change and the trades do not (INT27 item iv). The session-day speedup on exchange-zone charts has no line: it removes a cost introduced after 0.13.1, and no answer moves. The lower-lookup timing witness is a test change. No lane name is cited. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * INT27 (ii): the ctest floors are the integrated tree's own counts Counted with `ctest -N` per profile, each build dir configured with ci_verify.py's own configure argv (no compiler launcher, as CI has none), on this tree and on main d0935605: profile main d0935605 INT27 floor release 703 716 RELEASE_MIN_TESTS 716 kernel 287 reg / 286 run 290 reg / 289 run KERNEL_MIN_TESTS 289 debug 684 697 EXCLUDED 697 sanitizers 684 697 EXCLUDED 697 native 693 706 EXCLUDED 706 The thirteen rows, and the lanes that moved each floor (no row left): - K-RUNERR: test_security_finer_than_feed (release and the three PR registration floors); - PERF-ZONED: test_native_session_day_zoned (source-free: kernel, release, PR registration); - TV-DEFAULTS: test_tv_strategy_defaults (release, PR registration); - MAG-INTRABAR: test_native_intrabar_turning_points (source-free: kernel, release, PR registration), test_magnifier_tradingview_intrabars and test_adapter_magnifier_intrabar_tapes (release, PR registration); - PAR-ORDERS-3: test_pooc_limit_close_tapes (release, PR registration); - K-DRAWSNAP (late pick): test_drawing_checkpoint (source-free: kernel, release, PR registration), test_coof_drawing_checkpoint_cost and test_coof_drawing_rollback_tape (release, PR registration) -- the deltas the late-picks list names (kernel +1, release +3, each PR floor +3), its own floors commit 0d651058 not picked; - K-TA-DYNLEN (late pick): test_ta_series_length_extremes, test_ta_series_length_supertrend and test_ta_simple_length (release, PR registration; their TUs reach the source layer, so the kernel floor does not move) -- the lane's own floor hunk (release 678 -> 681 on its base) not applied. K-RUNERR and MAG-INTRABAR had counted no PR registration floor on their branches; the picks added them, and this commit folds the per-pick floor notes into one INT27 block per floor. The self-test's EXCLUDED pin and docs/ci.md's floors paragraph say the same numbers. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * INT27 v19 hash re-pin Inside the unreleased v19 epoch; no epoch token moves. Every witness pin harvested once on the integrated tree, each pinned TU compiled with its own harvest switch against the tree's library (INT26's harvest set: the eleven witnesses PINEFORGE_R1/F9/P1/P4/QUIET_BAR/L5/P7/D2D_PUBLICATION/K1/V19E _HARVEST and PF_HOST_VIEW_MEMO_DUMP), and at every pick boundary that could move one, so each moved value names its pick: - 0631e045 (after K-RUNERR, PERF-ZONED, TV-DEFAULTS, MAG-INTRABAR and the INT27 merge) reproduces every pinned value: those picks move none; - c54f939e (PAR-ORDERS-3 findings 1-2), e5efd189 (finding 4), 9dc3fc08 (finding 3, which moves none); - 4160b3e3 and 6fa516ec, the late picks K-DRAWSNAP (after the lane's behaviour half) and K-TA-DYNLEN: their eleven harvests are byte-identical to 9dc3fc08's; - this tree (INT27's items (iii), (iv), (i), (ii)): identical again. 16 hash values over 7 rows move, all by R5 lane PAR-ORDERS-3; the trade digests, counts and live-state transcripts its fixes move were pinned with them (5c6988c2, the behaviour half of the lane's own re-pin b65cee22, which is not picked): - test_adapter_quiet_bar: 15 of 816 values, CalcOnFills/0/*, Random10/0/*, Random20/0/* (the chart-path runs; finding 4, the first-extreme rule); - test_publication_witness: 1 of 156, ConfigFlags103's digest (findings 1-2, then 4: its X limit placed on a limit entry's level fill at bar 24's low fills at its level, and X's stop, already through at the point that fill ended the leg on, fills there); - 0 moved: report_relower 72, recording_hash_witness 267, continuation_view 227, receipts_in_place 334, command_allocations 32, lookup_index_witness 948, host_view_memo 13, calendar_hash_witness 12; live_state holds no hash value. Old -> new (each pinned file carries the same list): test_adapter_quiet_bar CalcOnFills/0/1: boundary 0xbd9feba11a355c84ull -> 0x109b8bbd2db3c39cull, rows 0xbd62a54cd2c27075ull -> 0x4990637dd008c142ull, final_hash 0x8e716ca55979f5e4ull -> 0x23caae4465e49b8dull [PAR-ORDERS-3 f4] test_adapter_quiet_bar CalcOnFills/0/0: boundary 0xbd9feba11a355c84ull -> 0x109b8bbd2db3c39cull, final_hash 0x8e716ca55979f5e4ull -> 0x23caae4465e49b8dull [PAR-ORDERS-3 f4] test_adapter_quiet_bar Random10/0/1: boundary 0x82933908492fe6aeull -> 0x53a92b8342582407ull, rows 0x839a10fa6478c692ull -> 0x337fd61947e125a0ull, final_hash 0x6907e89e2f502bd7ull -> 0xfb592dc1ad328c0bull [PAR-ORDERS-3 f4] test_adapter_quiet_bar Random10/0/0: boundary 0x82933908492fe6aeull -> 0x53a92b8342582407ull, final_hash 0x6907e89e2f502bd7ull -> 0xfb592dc1ad328c0bull [PAR-ORDERS-3 f4] test_adapter_quiet_bar Random20/0/1: boundary 0xad83f25bfdab1b50ull -> 0x6d39d123fcb64c3cull, rows 0x103b25042e1313deull -> 0x4350e4a911697ba6ull, final_hash 0xb27d00f43fad75a1ull -> 0x2fff8a1132834fe4ull [PAR-ORDERS-3 f4] test_adapter_quiet_bar Random20/0/0: boundary 0xad83f25bfdab1b50ull -> 0x6d39d123fcb64c3cull, final_hash 0xb27d00f43fad75a1ull -> 0x2fff8a1132834fe4ull [PAR-ORDERS-3 f4] test_publication_witness ConfigFlags103: digest 0x9e412b4fb357ae55ull -> 0x275174bdfd481a1bull [PAR-ORDERS-3 f1-2, PAR-ORDERS-3 f4] The tool (INT26's repin_int26.py with this epoch's notes) refuses any non-hash change: 7 of 7 mutated harvests stop it (a quiet-bar trade digest and boundary count, a publication trade count, a live-state transcript, a host-view-memo fingerprint field, a calendar witness row field, a report_relower curve statistic). After the write the same harvest reproduces every pin (0 moved) and the eleven witness rows pass. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * INT27: the doc-revert gate starts after main's newest merged pull request when a checkout has no main ref INT27's lab remote preflight failed doc-reverts on a tree whose own commits pass it: "21 commits since this gate landed: 5 unnamed sentence deletions or reverts". The lab's remote hosts check out a bundle with no branch refs, so default_base() found no origin/main or main and the walk ran back from HEAD to the gate's first commit -- which, on main's squashed history, is the squash merge of INT26 itself, d0935605 (#290). It carries the whole branch's deletions under the pull request's title: H-THIN's `owns_lot_excursions()` sentence (introduced by e7350f7), PAR-ORDERS' two F7 E14 sentences (39cc605) and two E20 probe-tail sentences (b80a082). Each was named by its own commit on r5/int26, whose remote preflight passed; the squash cannot name them again. `check_doc_reverts.py --base 0d76a099 --head d0935605` reproduces the 5; CI, which has origin/main, never judges the squash (its merge base with a branch is the squash itself). Every lane based on main after INT26 hits the same failure on a lab remote host. With no branch ref, default_base() now takes the newest first-parent ancestor of HEAD whose subject ends in a pull request number (` (#N)`, the subject GitHub writes for a merged pull request on main), HEAD included: the merge base CI would find. Every commit after it is judged as before; with none, the walk still starts at HEAD and stops before the gate's first commit. --base, PINEFORGE_DOC_REVERT_BASE and the origin/main / main merge base keep their precedence, and the replay mode is unchanged. - scripts/test_check_doc_reverts.py: a squash-titled commit that deletes an unnamed sentence is the base without a main ref (the walk judges the one commit after it, and the squash judged alone still fails), and an unnamed deletion after a merged pull request still fails. 12 tests pass. - docs/ci.md states the rule. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * INT27 (v): every doc anchor re-anchored once, on the integrated tree One pass over every page check_doc_anchors.py scans, after the last pick, the behaviour pins and the hash re-pin, so the digits are the final tree's. Digits only: with every citation's digits blanked, each of the 8 pages is byte-identical to its parent (181 lines change). How, in order: 1. The multi-origin exact map (INT24's int24_exact_reanchor.py with --exclusive-first): main d0935605 first, then each lane's tip in pick order (K-RUNERR 28118665, PERF-ZONED 27e1f384, TV-DEFAULTS 4b457291, MAG-INTRABAR 9df16c24, PAR-ORDERS-3 1550a694; the late picks K-DRAWSNAP and K-TA-DYNLEN touch no page): each anchor carried through an exact difflib line map from the tree its digits were written against. 1725 anchors: 293 moved, 1394 kept, 38 stuck (digits a pick's digit merge composed, which no origin carries). 2. INT26's anchor_origin_fix.py --relaxed over every INT27 commit and the lane tips: 15 anchors by the same line and position on main's page, carried through the exact map and re-judged by the gate here -- e.g. the design page's OL10 `exit()` pine_adapter.cpp:8527 (main 8485; the merge had composed 13134). 3. By hand, each checked against the code it names: the floor citations `KERNEL_MIN_TESTS` ci_verify.py:274 and `RELEASE_MIN_TESTS` ci_verify.py:429 (the assignment lines; CONTRIBUTING.md and contributing-llm.md); design row E4's `PineScheduler::recalculate` pine_scheduler_native.cpp:636 and `coof_next_waypoint` pine_adapter.cpp:5742 (the row this lane merged by hand kept main's digits); design row CT9's `volume_weighted_cap` pine_adapter.cpp:2282-2338 (MAG-INTRABAR's own span, the retained lower-timeframe branch through the spec's validation, carried exactly from 9df16c24; main's 2281-2337 had drifted into cohort_for) and `deliver_confirmed_script` native_execution_consumer.cpp:7549-7815 (main's span carried exactly). Results on this tree: - check_doc_anchors.py: 1725 anchors, 1725 OK, 0 bad. - stale_scan.py against d0935605: 0 stale-carried anchors. - verify_carry.py over the same origins: 1707 EXACT, 9 EDITED (the six floor citations, whose cited assignment lines the floors item rewrote, and three design spans whose code a pick rewrote -- each passes the gate's claim), 9 NEW (prose the picks wrote). - check_doc_lint.py: no offenders. docs/build.sh: Doxygen warnings 0. - check_doc_reverts.py over d0935605..HEAD (20 commits), and in a checkout with no branch refs as on a lab remote host: 0 unnamed deletions or reverts. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * INT27 (vi): the engine's merge-gate hook entry runs for MCP tool calls too, and blocks when it cannot start pineforge-workflow's docs/VERIFY.md ("Open decisions") records two gaps in the product repos' .claude/settings.json: the entry ran pr-gate.mjs for Bash only, so an MCP merge tool in an engine session met no hook, and without `|| exit 2` a hook that could not start (the file missing, a syntax error, node's own exit 1) let the call through, since Claude Code blocks only on exit 2. campaign/README.md's wiring closes both. The entry's matcher `Bash` becomes `Bash|mcp__.*`, and its pr-gate command gets `"timeout": 120` and a trailing `|| exit 2`, as the workflow repo's own entry has them. pr-gate.mjs reads only `tool_input.command`, so an MCP payload reaches it as an empty command and it answers "no opinion"; the same entry therefore also runs campaign/hooks/merge-gate.mjs (the file campaign/README.md wires for `mcp__.*`, with the same timeout and `|| exit 2`), which reads `tool_name` and `tool_input` and judges an MCP merge of an engine PR. On a Bash call it repeats the merge gate pr-gate.mjs runs first; both are deny-only. Checked through `sh -c` with the payload on stdin, as Claude Code runs a command hook: a benign Bash call and a benign MCP call exit 0 for both commands; with the hook file missing each exits 2. This is the last commit before the final lab remote: a session loads its project hooks at start, so the session that wrote this commit keeps running the previous entry. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Adapter: an exit limit the open's refill recalculation armed at the first extreme gap-fills there as a forced fill (R5 integration INT27, round 2: the gate sweep's regressed probe) INT27's gate sweep (exp-r5-int27-20260927, engine d3b753c1 + codegen a4259656, against rebaseline exp-rebaseline2b-20260926 on engine d0935605) refused the merge on one script, officialjackofalltrades-aureate-market-architecture-strategy-joat, on four lanes: OANDA:XAUUSD 15m (count +1), OANDA:EURUSD 15m (+3), BINANCE:BTCUSDT 15m (+7) and the scraped BINANCE:ETHUSDT.P lane (+4), every one excellent on the baseline. On XAUUSD the entry price moves from trade #60 on (3266.82 -> 3261.29). Bisect (the probe's own feeds and the pinned Lab verifier on spark, one library per pick boundary): 0631e045 (the INT27 merge fix) and c54f939e (PAR-ORDERS-3 findings 1-2) book the baseline trades (e8107dece428); e5efd189 -- PAR-ORDERS-3 finding 4, bc5f7a21: after the matcher's fill at a resting request's own level on a bar's first extreme, the recalculation's orders act from that extreme -- books 477b4cca24af, as every later commit. Mechanism, on the XAUUSD bar 2025-04-16 00:30 UTC (O 3261.715, H 3266.82, L 3261.29, C 3263.885, low first), traced in a scratch copy of the adapter: the strategy.exit limit leg carried from the previous bar (below the price) fills at the open; its recalculation re-enters, filled at the open too (the refill); that entry's recalculation re-places the exit, whose limit 3260.5585 is already through, so exit() arms it at the first extreme (later_same_open: StopLimit{W1 3261.29, 3260.5585}), where the path gap-fills it at 3261.29 -- TradingView's trade #59 exit. Its placement carries no forced_execution_price, so begin_coof_recalc left coof_fill_forced_ false, and finding 4's rule in coof_next_waypoint read the fill as the matcher's at the limit's own level ON the extreme: the market re-entry filled at W1, 3261.29. TradingView books it at the second extreme, 3266.82 (#60), as it books a market order after the control's forced fill (pa3-f4-point-w1-mkt-…
luisleo526
added a commit
that referenced
this pull request
Sep 30, 2026
…309) v1.0.0 (tag 5718c5d, built from main 133f571) and pineforge-codegen 1.0.0 shipped on 2026-09-30, and the hub image pineforge-release:1.0.0 carries the pair. The pages still said "Unreleased", "main is ahead of v0.13.1", "codegen main (not in a release yet)" and "1.0.0-rc.1". What is now true: - CHANGELOG.md: "Unreleased" is "1.0.0 — 2026-09-30", opened by a summary: the first stable release under semantic versioning, engine and codegen on one version (engine v1.0.0 + codegen 1.0.0, hub image 1.0.0), the three prebuilt tarballs, v1.0.0-rc.1 (bb9ec14) and the one commit after it (133f571, #308: the test_adapter_lookup_index_scaling CI flake fix, the docs-only CI skip, the benchmark refresh; no src/, include/, cmake/, examples/ or CMake file changed), and that the notes below are the notable changes since v0.13.1. The planned-1.0 hedges are present tense; codegen "main branch" is 1.0.0. - README.md: a "Prebuilt library" subsection names the v1.0.0 release and its three tarballs; front door 1 installs pineforge-codegen==1.0.0; the MCP image bundles engine v1.0.0 with codegen 1.0.0; the Releases list opens with v1.0.0; the scoreboard and the benchmark refresh line name the release (neither was re-measured on it; the releases changed no grade). - docs/pages/install.md: a "Prebuilt tarballs" section (asset names, checksum, layout, Eigen) and the hub's engine1.0.0-codegen1.0.0 tag. - docs/pages/integration-cmake.md: find_package pins are 1.0, and the page states the rule the package installs (write_basic_package_version_file, SameMajorVersion over MAJOR.MINOR.PATCH; FILE and git-describe versions). - docs/pages/abi-stability.md: version.h as v1.0.0 ships it (FULL "1.0.0", sha 5718c5d; rc.1 reads "1.0.0-rc.1"); ABI v4 and the v19 epoch ship in v1.0.0. - public-contract, live-surface, native-engine (prose), pine-to-native (table text), report-schema, ffi-python, examples-multi, configuration, mtf, tutorial-macd, tutorial/README.md, docker/README.md, docs/coverage.md, docs/pine_v6_audit_master.md, docs/pine_v6_coverage_detail.md: "main" / "not in a release yet" / "the last tagged release" become v1.0.0 or codegen 1.0.0; the four recorded request.* rows of the coverage detail are "✅ Runtime" (the legend's bucket for strategy_set_recorded_series) and request.footprint is "❌ Unsupported" like the footprint.* rows; the "Fundamentals and external data" list says 0.10.4 rejects the four and 1.0.0 reads recorded answers. - CHANGELOG.md: time()/time_close() with bars_back/timeframe_bars_back: 0.10.4 accepted both arguments but ignored them and read the current bar's time (checked with PyPI 0.10.4: it emits pine_time(current_bar_.timestamp, ...)), so the note no longer says they were refused. - abi-stability.md: the v18 -> v19 step (both epochs are development builds after v0.13.1, PF_ABI_VERSION 4 at ab9714b and fc7aad6) is the internal epoch transition; native-engine.md: the Coof / MagnifierCoof enumerators existed only in development builds (no tag has them). Checked against the tagged trees and artifacts, not memory: VERSION at v1.0.0 is 1.0.0; PF_ABI_VERSION 4 at v1.0.0, 3 at v0.13.1; v0.13.1 has no native_c_api.h; codegen v1.0.0 (5bf595b) differs from 70c2b4af only in docstrings and metadata, attaches the Pine adapter, lowers varip, imports, foreign request.security and the recorded requests, and has no CLI; the three tarballs pass their .sha256 and hold lib/, include/pineforge/ and lib/cmake/PineForge/; codegen 1.0.0 from PyPI plus the macOS tarball runs front door 1 (50 trades, net 569.97) and 0.10.4's output fails to compile against v1.0.0; find_package 1.0 / 1 / 1.0.0 EXACT find the tarball and 0.13 / 0.14 / 1.1 / 2.0 do not; the hub 1.0.0 image prints the documented tutorial report and provenance (engine 1.0.0, codegen 1.0.0). Replaces or deletes text introduced by (scripts/check_doc_reverts.py's History.introducer for judged pages; git blame / git log -S at origin/main for CHANGELOG.md, docker/README.md, tutorial/README.md and code blocks): - b2a578c (DOCS-ENGINE, #300): CHANGELOG.md, README.md, docker/README.md, tutorial/README.md, docs/coverage.md, docs/pine_v6_audit_master.md, docs/pine_v6_coverage_detail.md, docs/pages/abi-stability.md, configuration.md, examples-multi.md, ffi-python.md, install.md, integration-cmake.md, live-surface.md, mtf.md, native-engine.md, pine-to-native.md, public-contract.md, report-schema.md, tutorial-macd.md - 133f571 (#308): README.md (the benchmark "Last refresh" sentence) - 0d76a09 (Wave G, #289): docs/pages/abi-stability.md (the V19-FIX sentence) - d093560 (INT26, #290): docs/pages/abi-stability.md (the H-THIN sentence, the version-macros text), docs/pages/native-engine.md (a line of the 1.0 C boundary paragraph) - 2fcbb52 (R5 lane F2): code-block lines in docs/pages/abi-stability.md (PINEFORGE_GIT_SHA) and docs/pages/integration-cmake.md (pkg-config Version) - 112c134 (#302): README.md (the scoreboard paragraph, extended only) - b1fbf0b (detailed Pine v6 coverage report): docs/pine_v6_coverage_detail.md (the "(hard reject)" heading and the request.financial bullet) - e7cdf05 (native execution terms): docs/pages/abi-stability.md (the "PF_ABI_VERSION remains 4" clause) Three rewrites bring back d093560's wording, which b2a578c made "planned 1.0" and which is true again now: README.md's "the 1.0 C surface does not spell", and docs/pages/native-engine.md's "does not spell in 1.0" and "Deprecated public spellings, removed for 1.0". docs/pages/native-engine.md and docs/pages/pine-to-native.md are ci_docs_only.py PROOF_READS, so this change runs CI's full lanes; no code block of either page changed. Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Oct 4, 2026
… rule #325 (confirmed-bar streams compute what the batch computes) and #327 (docker/run_json.py --symbol-feeds) merged before the release notes, so their Unreleased bullets join the 1.1.0 section, rewritten and linked; no Unreleased heading stays. - CHANGELOG.md: the lead names the stream fix and, in the pairing sentence, codegen 1.1.0's request discovery (transpile_full()["requests"], codegen #164). #325's bullet says what a stream user sees; #327's bullet and its Report keys entry (applied_runtime.symbol_feeds, the --symbol-feeds: failure messages). A new State hashes section lists the four recipe additions since v1.0.1 (#315, #316, #319, #325; none removed, renamed or re-encoded; domain tags unchanged). #315's range-end equity-extreme change moves to the Pine adapter parity bullet as a behaviour fix. The #319 bullet named the broker-state hash; the change is in the native continuation hash, which the broker-state hash folds. The known-issue bullet now says it is fixed in 1.1.0 (#325). Migration gains a line on stream results and hashes. - README.md: the known issue is fixed in 1.1.0 (#325); the v1.1.0 Releases line gains the stream fix, request discovery and the harness's multi-symbol request.security feeds. Fact markers rendered from the facts export that maps releases[1.1.0] to pineforge-parity-baseline-20261004-engine-7b596622 (7,951 excellent / 38 strong of 7,989); the active scoreboard moves to the same baseline, here and in docs/pages/contributing-llm.md. - docs/pages/streaming.md: the known issue affected v1.0.0 and v1.0.1 and is fixed in 1.1.0. - docs/pages/public-contract.md: the state-hash rule, amended by the owner's ruling for 1.1.0. It covers the recipe only: a minor release may add a hashed field (domain tags unchanged, the added field changing no trade or report, disclosed under State hashes); removing, renaming or re-encoding a hashed field is a new epoch and a major release; behaviour changes follow the normal release and parity rules. The first uses are #315 and #316. The semver rule is unchanged. Replaces text introduced by 7b59662 (#325): CHANGELOG.md's "Confirmed-bar streams compute what the batch computes:" bullet, and the "Fixed on main (#325); included in the next release." lines of README.md and streaming.md; by 4f2a475 (#327): CHANGELOG.md's "Harness symbol feeds:" bullet; by d093560 (#290): public-contract.md's "State-hash values are stable within the epoch." and "a new recipe is a new epoch and a major release"; by a80485c (this branch's first commit): the "Known issue, as in v1.0.0 and v1.0.1" bullet, streaming.md's "(v1.0.0, v1.0.1, v1.1.0)", the #319 bullet's "A tick stream's broker-state hash folds the new accumulator state only where it adds information, so the existing tick, bar and batch hash pins hold.", the Report keys failure-output bullet and the v1.1.0 Releases line; by 66be240 and 83d64dc: the lead's state-hash sentences ("Three changes also change what the hashes fold"); and, as git attributes them through this branch's merge of main, by e59c09f: README.md's v1.1.0 Releases line and streaming.md's "(v1.0.0, v1.0.1, v1.1.0)". Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Oct 4, 2026
* docs: release notes and version scoping for v1.1.0 v1.1.0 is a minor release: <pineforge/pineforge.h> declares six more functions, the checked settings calls that a strategy generated by pineforge-codegen 1.1.0 exports (#317). It pairs with pineforge-codegen 1.1.0. PF_ABI_VERSION stays 4 (pineforge.h only gains declarations; native_c_api.h and the native C++ host headers are unchanged) and the script ABI epoch stays engine_script_run_v19. - CHANGELOG.md: "## Unreleased" becomes "## 1.1.0 — 2026-10-04": a lead paragraph, one bullet per change a user can observe since v1.0.1 (#312-#324), each linking its PR, a Report keys subsection (docker/run_json.py v1.0.1 -> v1.1.0) and a Migration subsection. The three Unreleased bullets stay; the lot-grid bullet now gives both failure messages. - README.md: pineforge-codegen==1.1.0, the v1.1.0 tarballs, the pairing sentence, the stream known issue's scope, the benchmark refresh line, the release scoreboard sentence (releases[1.1.0] markers) and a v1.1.0 line in Releases. The public corpus sweep's "311 excellent + 1 declared anomaly" is scoped to the v1.0.1 library it was measured on. Facts rendered from the facts file that adds releases[1.1.0]; the active scoreboard markers move to baseline pineforge-parity-baseline-20261003-engine-dbd17b38. - docs/pages/install.md: the v1.1.0 tarballs and the hub tag engine1.1.0-codegen1.1.0. - docs/pages/public-contract.md: 1.1.0's release line, engine v1.1.0 with codegen 1.1.0 among the supported pairs, and the four C-boundary rows that were planned for 1.1.0 are not in it. - docs/pages/streaming.md: the known issue's scope includes v1.1.0. Lines that state what an earlier version shipped or did stay. Replaces text introduced by dc74e63 (#318): README.md's "Release 1.0.1 still grades ... until the next release" sentence, now 1.1.0's; by d093560 (#290): public-contract.md's "Four of its rows are planned for 1.1.0"; by 783bb39 (#322): CHANGELOG.md's "The engine library is unchanged."; by dbd17b3 (#320): CHANGELOG.md's "The engine is unchanged."; by b2a578c (#300): README.md's "this repository's sweep: 311 excellent + 1 declared anomaly"; by 271d687 (#311): README.md's "its releases 1.0.0 and 1.0.1 do". Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * docs: state the 1.1.0 hash folds and scope two runner sentences The 1.1.0 lead now says how state-hash values change while the epoch and the domain tags stay: a run whose fills an adapter change alters hashes to new values, and three changes fold more state, so a run can hash differently from 1.0.1 with byte-identical trades: #315 (an unbatched same-bar entry request and placement; the stream report's terminal re-mark leaves the hashed extremes; witness row Stream/0/1 re-pinned), #316 (an opening stop's next waypoint; Random44/0/0 and /1 re-pinned) and #319 (tick-volume state, every existing pin kept). In the runner tooling bullet, "No versioned engine PF_API export ... changes" and "Plugin-free ledger identity bytes remain unchanged" read as release-wide; they now speak for #320 itself and for a strategy without the checked settings calls. The Report keys intro points at the report schema page. The terminal-quote bullet names the chart feed that PINEFORGE_RUN_REPORT_CHART_QUOTE points at, and two runner bullet headings are re-wrapped. Replaces text introduced by a80485c (this branch's first commit): the lead's "A run whose fills one of the Pine adapter changes below alters hashes to new values, and [#316] adds one placement field to the adapter's hashed state, for which two witnesses with byte-identical trades were re-pinned.", the Report keys intro and the terminal-quote harness clause; and text introduced by dbd17b3 (#320): "No versioned engine PF_API export, native C++ surface, script ABI epoch or engine behavior changes." and "Plugin-free ledger identity bytes remain unchanged". Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * docs: #315's range-end change folds less, not more The 1.1.0 lead said three changes "fold more state"; #315's range-end change instead stops folding a stream report's terminal re-mark into the hashed extremes. The sentence now says the three changes change what the hashes fold, and names Stream/0/1 as a re-pinned witness row without claiming it is #315's only one. Replaces text introduced by 66be240 (this branch's second commit): "Three changes also fold more state" and "re-pinning one witness row (`Stream/0/1`, whose recorded-row digest alone moves)". Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * docs: fold #325 and #327 into 1.1.0, add State hashes, amend the hash rule #325 (confirmed-bar streams compute what the batch computes) and #327 (docker/run_json.py --symbol-feeds) merged before the release notes, so their Unreleased bullets join the 1.1.0 section, rewritten and linked; no Unreleased heading stays. - CHANGELOG.md: the lead names the stream fix and, in the pairing sentence, codegen 1.1.0's request discovery (transpile_full()["requests"], codegen #164). #325's bullet says what a stream user sees; #327's bullet and its Report keys entry (applied_runtime.symbol_feeds, the --symbol-feeds: failure messages). A new State hashes section lists the four recipe additions since v1.0.1 (#315, #316, #319, #325; none removed, renamed or re-encoded; domain tags unchanged). #315's range-end equity-extreme change moves to the Pine adapter parity bullet as a behaviour fix. The #319 bullet named the broker-state hash; the change is in the native continuation hash, which the broker-state hash folds. The known-issue bullet now says it is fixed in 1.1.0 (#325). Migration gains a line on stream results and hashes. - README.md: the known issue is fixed in 1.1.0 (#325); the v1.1.0 Releases line gains the stream fix, request discovery and the harness's multi-symbol request.security feeds. Fact markers rendered from the facts export that maps releases[1.1.0] to pineforge-parity-baseline-20261004-engine-7b596622 (7,951 excellent / 38 strong of 7,989); the active scoreboard moves to the same baseline, here and in docs/pages/contributing-llm.md. - docs/pages/streaming.md: the known issue affected v1.0.0 and v1.0.1 and is fixed in 1.1.0. - docs/pages/public-contract.md: the state-hash rule, amended by the owner's ruling for 1.1.0. It covers the recipe only: a minor release may add a hashed field (domain tags unchanged, the added field changing no trade or report, disclosed under State hashes); removing, renaming or re-encoding a hashed field is a new epoch and a major release; behaviour changes follow the normal release and parity rules. The first uses are #315 and #316. The semver rule is unchanged. Replaces text introduced by 7b59662 (#325): CHANGELOG.md's "Confirmed-bar streams compute what the batch computes:" bullet, and the "Fixed on main (#325); included in the next release." lines of README.md and streaming.md; by 4f2a475 (#327): CHANGELOG.md's "Harness symbol feeds:" bullet; by d093560 (#290): public-contract.md's "State-hash values are stable within the epoch." and "a new recipe is a new epoch and a major release"; by a80485c (this branch's first commit): the "Known issue, as in v1.0.0 and v1.0.1" bullet, streaming.md's "(v1.0.0, v1.0.1, v1.1.0)", the #319 bullet's "A tick stream's broker-state hash folds the new accumulator state only where it adds information, so the existing tick, bar and batch hash pins hold.", the Report keys failure-output bullet and the v1.1.0 Releases line; by 66be240 and 83d64dc: the lead's state-hash sentences ("Three changes also change what the hashes fold"); and, as git attributes them through this branch's merge of main, by e59c09f: README.md's v1.1.0 Releases line and streaming.md's "(v1.0.0, v1.0.1, v1.1.0)". Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> --------- Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Oct 7, 2026
* Split native CI profiles and retain bounded cold-run diagnostics * Document independent native proofs and preserve source anchors docs/ci.md replaces two superseded descriptions of the old shared native-live job: - dbd17b3 (#320): the sentence "native-live.yml runs both profiles alongside native, reusing the same checksum-pinned WebSocket-enabled curl" is replaced by the three independent matrix cells description. - INT26 (d093560): the old `native-live` timeout-table row (the larger runner's full set "about 25 min", "The verification hosts' release profile, the nearest they run, took 11.2-18.4 min" and "A fork's pull request runs the set without that row: 3.4 min on the standard runner") is replaced by the per-cell native, live-sanitizers and live-tsan rows measured on main runs 37398893123, 37461653250 and 37478400505. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Bound native rows by the slowest measured host and keep failed-row counts A cold full-row native profile of d5ffd30 on a c5.4xlarge Spot host ran 941/941 rows: 940 passed and test_ci_verify was cut off by the 2100 s default deadline (Timeout 2100.07 s). The same script then completed in 2177.7 s (162 tests OK) in that host's preflight. GitHub measured 984-1695 s. Raise the native default per-test deadline to 2700 s (24% over the slowest measured host) inside a 2820 s CTest stage. The measured cold pre-CTest time was 12.3 min, so a worst-case stage still fits the unchanged 65-min verification step and 75-min job. Live profiles keep 900/1200 s. That failed run's ci-summary recorded no executed/skipped counts. CTest prints a listed row's labels after its status ("2 - test_ci_verify (Timeout) slow"), and CTEST_LISTED_ROW required the line to end at the status, so the row list was unreadable. Accept trailing labels. A new real-CTest test pins labelled failed, skipped and not-run rows. docs/ci.md rewords the `native-live (native)` timeout-table row written by the docs commit "Document independent native proofs and preserve source anchors". Its sentence "The longest measured test_ci_verify row was 1695 s; its new 2100-s default deadline gives 24% margin within a 2400-s CTest stage" now carries the Spot measurement and the new bounds. Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]> * Keep real CTest deadline test compatible with optional JUnit Use the existing CTest capability detector and condition only XML presence; retain the real timeout, witness, row-count, elapsed and log checks. Rewrite the driver-default and blanket two-times timeout sentences introduced by d093560 (INT26, #290). Document the workflow's 47-minute native and 20-minute live overrides and the table's measured-margin policy without changing historical timings. * Accept older CTest failed-list rendering without losing label coverage Allow the real labelled fixture to render an undecorated failed-list row. Verify slow/live labels for every fixture row through genuine CTest JSON inventory, retain the synthetic label-suffixed parser witness and all row accounting, and require the real failure exit code. Leave JUnit capability handling and production code unchanged. --------- Co-authored-by: Claude Opus 5.5 (1M context) <[email protected]>
luisleo526
added a commit
that referenced
this pull request
Oct 18, 2026
…415) * ci: keep every verification job on standard runners Apply the owner cost stop of 2026-10-18 to pushes, schedules, dispatches and every pull request until the ci-spot pool is live. Replace the paid-runner routing introduced by d093560 and carried into native-live by 065ef1d; retain the standard image matrix and all existing timeouts. No tests, builds or workflows run locally per the executor brief. * ci: enforce the standard runner contract in preflight Replace the event-based runner contract and mutation cases introduced by d093560 with ubuntu-24.04 and matrix.os. Refuse pf-linux-x64-16, every *-xlarge or *-large label and every larger_runner key, including in the release matrix, while retaining the remaining workflow checks. Add rejection cases for paid labels, obsolete keys and conditional paid routing. Preserve comment tolerance and core-count checks. Tests intentionally not run under the executor no-run rule. * docs: record the standard runner cost stop and ci-spot handoff Reword the runner-selection and timing assumptions introduced by d093560 (#290) and the documentation-only runner sentences introduced by 133f571 (#308). Keep the platform job limits recorded by 2394ba2 (#373). Record the owner decision of 2026-10-18 after larger-runner costs exceeded US$3,000: every event uses free standard runners until the ci-spot pool is live. Describe the unconditional runner contract and remove obsolete larger-runner timing estimates while retaining measured standard-runner durations. No local verification run, as required by the executor brief. * test(ci): pin the standard-runner mutations precisely Target the full runs-on line in both build-runner rejection cases. The bare matrix.os expression matched the earlier leg name, leaving runs-on unchanged and producing the wrong finding in PR #415 CI run 39119916194. Preserve the build leg name and the expected runner-finding assertion. Leave scripts/ci_preflight.py unchanged. No tests or verification run locally under the executor no-run rule.
luisleo526
added a commit
that referenced
this pull request
Oct 18, 2026
* ci: route CI Linux x64 jobs through the live ci-spot pool * ci: route corpus parity through the ci-spot build class * ci: route native live profiles through the ci-spot pool * ci: route documentation through the public ci-spot class * ci: route manual baseline promotion through ci-spot * ci: route release Linux x64 jobs through ci-spot * ci: require exact ci-spot routing and job labels in preflight Replace the CR-170 standard-only runner contract with the public and engine-x64-16 fragments, including fork and untrusted-event fallback. Require one matching PF_CI_LABELS string at job scope; pin the Linux-only build and release matrix routing and the unchanged hosted legs. Retain larger-runner, timeout, core-count and reusable-workflow guards. Update mutation and stage tests for missing, duplicate and incorrect PF_CI_LABELS, wrong label lists, unsafe fragment changes, paid labels and hosted exceptions. No tests, builds, linters or verification scripts run locally under the executor no-run rule. * docs: record the live ci-spot pool and hosted fallbacks Supersede the stopgap sentences from 3484a7c, squash-merged as 693fd9e (#415, CR-170). Reword the runner-selection and timing assumptions from d093560 (#290) and the documentation-only runner sentence from 133f571 (#308); preserve the platform limits from 2394ba2 (#373). Record the 2026-10-18 live-pool bulletin, exact fragment and environment labels, class allocation, actor allowlist, hosted matrix legs and event fallbacks. Keep historical timings separate from unmeasured pool performance. No local verification run under the executor no-run rule. * ci: restore release and deployment jobs to their original hosted runners Apply the L6 production-credential ruling to Cloudflare docs deployment, baseline promotion and every release job. Restore all three workflow files byte-for-byte from origin/main, including their original hosted labels, and remove pool environment labels. No steps, permissions, timeouts or matrix populations change. No tests, builds, linters, preflight, corpus verification or workflows run locally under the executor no-run rule. Nothing pushed. * ci: adopt the b240f6d7 hosted fallback for pool jobs Match the current pf-ci-spot public and engine-x64-16 fragments from bulletin #635. Change the hosted fallback to ubuntu-24.04 for all ten pool job definitions and preserve their matching PF_CI_LABELS, actor checks, fork protection and macOS routing. No tests, builds, linters, preflight, corpus verification or workflows run locally under the executor no-run rule. Nothing pushed. * ci: require hosted runners for credential-bearing jobs Pin the b240f6d7 expressions and original hosted release/deployment routes. Detect non-GITHUB_TOKEN secrets, inherited workflow environment secrets, job or workflow OIDC write permissions and deployment environments. Require hosted routing without PF_CI_LABELS for credentials and current fragments with matching labels for other Linux x64 jobs. Preserve the larger-runner, timeout and core-count guards. Add must-fail credential and old-fallback cases and a must-pass case for the current hosted release workflow. No tests, builds, linters, preflight, corpus verification or workflows run locally under the executor no-run rule. Nothing pushed. * docs: record the L6 hosted credential rule and current pool fallback Reword the pool-allocation, release/deploy routing and fallback sentences introduced by 28fe3466a and carried into f9bee22. Cite pf-ci-spot b240f6d7 and bulletin #635, retain the Dependabot and historical policy references, and explain the exact original hosted labels and updated preflight contract. No tests, builds, linters, preflight, corpus verification or workflows run locally under the executor no-run rule. Nothing pushed. * test(ci): anchor pool label mutations to job-level env An unanchored four-space env search matched the tail of step-level env in promotion and release jobs, so the negative fixture never put PF_CI_LABELS in the job environment. Anchor the env and steps keys to complete job-level lines in both label fixture builders. Assert the injected label at job scope and require the exact hosted-job diagnostic. Keep the existing hosted release baseline and the production guard unchanged. No tests, builds, linters or verification scripts run locally under the executor no-run rule. Nothing pushed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
INT26 integrates wave H with the late picks and the corpus re-pin: 82 commits on main 0d76a09. This is the 1.0.0-rc.1 candidate.
VERSION 1.0.0-rc.1configures, deprecatedsharpe_tvrefusedHash values (v19 epoch, unreleased)
Verification on the exact head (tree 16c0779b, clean, corpus b40aa8e)
--updatechanges 0 lines at b40aa8e. The merged tree's trades are byte-identical to what each lane measured:The population sweep against the active baseline follows. It is posted as
pineforge/parity.Follow-ups (not in this PR)
-fbracket-depth=1024to the compile recipes in pineforge-app, pineforge-release, pineforge-live and the corpus specials.test_native_intrabar_lower_lookupmeasured 6.21 against its 6.0 bound on one cloud host.🤖 Generated with Claude Code
https://claude.ai/code/session_01LifAW9e5J6gFx7gatuxETE