Skip to content

INT26: wave H, the late picks and the corpus re-pin to b40aa8e (1.0.0-rc.1 candidate) - #290

Merged
luisleo526 merged 83 commits into
mainfrom
r5/int26
Sep 26, 2026
Merged

luisleo526 merged 83 commits into
mainfrom
r5/int26

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

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.

lane what it brings
H-MEASURE measured claims made executable (12 test rows)
H-DOCGATES doc gates and ADR rows
REL10 (engine) 1.0.0 release plumbing: VERSION 1.0.0-rc.1 configures, deprecated sharpe_tv refused
K-OCA-KEEP an OCA keep handle re-prices instead of being refused
PAR-ORDERS, PAR-ORDERS2 fills at a bar's extremes; pending-entry trails; reversing stops (TradingView tapes)
PAR-MARGIN, PAR-MARGIN2 intrabar margin calls and the post-fill path (824 tape checks, 0 failures)
CI-FLAKE, CI-RUNNER timing-leg flakes fixed; preflight within 45 min
PERF-KEDGE UTC session-day witness; kernel edge speed-ups
H-THIN E19 excursions and P10 pyramiding closes, as TradingView books them
PAR-CASHFEE percent-of-equity sizing under a cash-per-order commission
CORPUS4 corpus gitlink f989e36 → b40aa8e: every generated.cpp re-emitted by codegen a4259656, no trade list moves

Hash values (v19 epoch, unreleased)

  • One commit, "INT26 v19 hash re-pin", moves 2,671 pinned hash values. Each one is listed old → new with the pick that moved it, both in the commit message and in every pinned file.
  • The re-pin tool refuses any change that is not a hash (5 of 5 mutation runs stop it).
  • A fresh harvest reproduces every pin, 0 moved.
  • The Pine witness moves 14010942914806881059 → 8577114281377521372, from H-THIN's hash step alone.

Verification on the exact head (tree 16c0779b, clean, corpus b40aa8e)

  • ci_preflight: passed, 43 stages.
  • release: 702 of 702 rows (floor 702).
  • sanitizers: 683 of 683.
  • debug: 683 of 683.
  • kernel: 287 rows (floor 286), 0 kernel residual findings.
  • Doxygen warnings: 0.
  • corpus_trades_identity: 312 probes at b40aa8e, baseline match 312, moved 0.
  • TradingView parity: holds. Excellent 311, anomaly 1.
  • Subset: match 54, moved 0.
  • Re-derived baseline pins: --update changes 0 lines at b40aa8e. The merged tree's trades are byte-identical to what each lane measured:
    • H-THIN's E19 lines: 324 of 335 moved trades now equal TradingView, 11 are closer, 0 are further away;
    • probe 96: all 792 trades exact;
    • the cash-commission probe: 355 of 366 within TradingView's cell.
  • Identity battery: all 8 host variants × 132 configurations are byte-identical to main. The only field moves over 100 slots are E19 excursions (21 rows); every other move is a broker-state hash, attributed to H-THIN's hash step.
  • Performance: instructions over 100 slots with the magnifier on, final/main: median 0.901, whole set 0.929, no slot above +2 %. Runtime budget 3.58× (limit 15×).

The population sweep against the active baseline follows. It is posted as pineforge/parity.

Follow-ups (not in this PR)

  • Add -fbracket-depth=1024 to the compile recipes in pineforge-app, pineforge-release, pineforge-live and the corpus specials.
  • test_native_intrabar_lower_lookup measured 6.21 against its 6.0 bound on one cloud host.
  • Findings the lanes recorded stay open: the magnifier's 2-minute intrabars, margin calls at margin 100 under a cash commission, and the remaining findings on fills at a bar's extremes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01LifAW9e5J6gFx7gatuxETE

luisleo526 and others added 30 commits September 26, 2026 08:33
…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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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.
luisleo526 and others added 29 commits September 26, 2026 12:55
…val per bar (R5 lane PERF-KEDGE)

Wave G's KERNEL-EDGE made present_session_day read the bar's label and each
neighbour at the first eligible instant of its script interval, and resolved
those intervals through the calendar memo at every bar: three
interval_containing calls a bar (two ring hits, one resolution). On
FeedTolerant labels -- the Pine adapter's shape -- nothing else asks the
calendar per bar, so the 100 public benchmark slots ran a median +11.9 % more
instructions than 1a0e7ea (INT25 finding 1); callgrind puts all of slot 033's
+1,020 Ir a bar in those calls.

On a UTC calendar an instant that is itself in session reads exactly as its
interval's first eligible instant does. The calendar is integer arithmetic
there (no libc zone, no mktime) and its session days are the fixed daily
cycles [date + origin, next date + origin), which tile time: every instant has
one session day, and both the memo's candidate-date lookup and the consumer's
session-day memo find it. The interval's open is that day's origin plus a
whole number of buckets at or before the instant, and its first eligible
instant is the first in-session instant of [open, instant] -- on that day, in
session. So present_session_day reads such an instant's session point
directly and resolves an interval only for an instant out of session, for the
walk to the previous eligible slot and for the scheduled close (the last two
only with nothing held). Every other zone issues the calendar calls in the
order the base issued them, because a libc zone's mktime can answer from the
previous call's offset.

- native_calendar_memo.hpp / native_calendar.cpp: utc_calendar(calendar,
  memo), the memo's own once-per-calendar UTC decision, and
  SessionDayMemo::interval_resolutions(), a derived cost reading folded
  nowhere.
- native_execution_consumer: calendar_is_utc() (cached, reset with the
  calendar memos); eligible_session_point() out of line, so the neighbour
  reading stays inlined; the bar's own interval resolved lazily.

ADR-0001 rule 2: no capability, spec field or knob is added and no answer
moves. The reading is the run's own calendar -- its zone is data -- the same
for every venue, and nothing branches on a platform. Nothing is hashed: the
facts fold into no digest and the new members are derived memos.

Witness, tests/test_native_session_day_utc.cpp (kernel-only): the calendar's
UTC decision; the same tapes under "UTC" and "UTC0" (the same clock through
the zone path) present identical facts at every bar open, bar, fill
recalculation, applied execution and print across 6 sessions, 6 timeframe
pairings, both label policies, 5 tape shapes and 4 drive modes (1152 runs,
1.77M facts); and a UTC FeedTolerant batch resolves 1 interval where UTC0
resolves 529 for 528 bars. Fail-before at 0d76a09: "no member named
'interval_resolutions' in 'pineforge::native_calendar::SessionDayMemo'". Six
mutants -- either fallback dropped, the walk's or the scheduled close's slot
left unresolved, every zone taken for UTC, the shortcut removed -- each fail
it.

Floors: kernel 277 -> 278, release 678 -> 679, PR registration 659/659/668
-> 660/660/669 (ci_verify.py, its self-test pin and docs/ci.md). 24 doc
anchors carried through the exact line map from 0d76a09; the 6 that cite the
two rewritten floor lines set by hand (ci_verify.py:247, :357).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 16788d057fe06407fcd39843b9368ec1ab2782d9)

INT26 pick note (late pick, accepted 2026-09-26 10:30, after INT26 item iv):
the kernel and test hunks applied without conflict. The floors take this
lane's row on top of item (iv)'s integrated counts -- KERNEL 285 -> 286,
RELEASE 700 -> 701, EXCLUDED_REGISTERED_MIN 681/681/690 -> 682/682/691 (after
PAR-ORDERS-2's and PAR-MARGIN-2's picks) --
and each floor comment lists it with wave H's other rows; test_ci_verify and
docs/ci.md follow (docs/ci.md's floor sentence still named PAR-MARGIN's
680/278, which item iv missed). The four floor citations name the merged
lines; the pages merged on citation digits only.
…eaches every delivery path (R5 lane PERF-KEDGE, review)

The first lab remote runs of 16788d05 timed the witness at 120.5 s under
sanitizers (NTU2) and 43.9 s in Debug, over the 60 s / 30 s that put a row in
the PR set's `slow` list. The differential keeps its reach at about a third of
the work: the tapes run Friday through Tuesday (a weekend and a masked day
still inside), the 1-minute and 2-minute inputs are 3-minute (aggregated to
15) and 10-minute ones, and the confirmed-bar streams end with
stream_end(true) only, which also seals and presents a calendar-closed final
bucket -- the stream_end(false) runs presented nothing the true runs do not.
864 runs, 0.52M facts, 142k of them at prints; all six mutants of 16788d05's
message still fail it.

An independent review (read-only) found no defect and four low items, taken
here:
- the delivery paths the matrix did not reach now run, UTC against UTC0: the
  magnifier's synthesized path over a chart and an aggregated bar
  (deliver_intrabar_script), a 7-minute bucket that does not divide a session
  day (its bars at the calendar's own labels), a 30-second timeframe, and an
  undetected timeframe's one raw-labelled bar -- 54 runs, all completed;
- native_calendar_memo.hpp says what it means: one session day for every
  instant the calendar can represent, and a resolution count since the memo
  last bound a calendar or was reset (comment-only);
- ADR-0001's present_session_day row names the witness.

No source line of the library moves: the header change is comment-only.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit f1f3febd0e64607ab46aa783a38ae5c668c78ff9)

INT26 pick note: the ADR conflicted on citation digits only; every other
hunk of f1f3febd carried unchanged.
REL10's CHANGELOG entry (5476aa1e) covered the history up to its own base,
1a0e7ea. It now also covers #289 (wave G) and this release's picks, one
sentence each that a user can act on, citing no lane:

- a new section, "What a native host must handle": the typed
  UnrepresentableQuantity refusal (C 10) and the opt-in quantity_tolerance
  with the grid's own quantities; OCA-group absorption, keep_handle
  re-prices inside a group, and a grid request whose pending deduction its
  units absorb; aggregated runs' script-bar indices and
  input_interval_index; mark_native_report_point; final calendar buckets;
  the IntrabarSample margin check kind (C 4); the callback table's
  reserved1 marker, refused when nonzero;
- in the behaviour list: margin calls on a leveraged opening's entry bar,
  frozen units for a default-percent stop entry above 100 %, per-sample
  margin calls under the bar magnifier, a pending entry's trailing exit
  seeded at its activation, process_orders_on_close stop entries filling at
  the close that reached them and the pyramiding cap they could bypass,
  magnified fills dated at the chart bar's open, and the exits a margin call
  may not revive;
- the state-hash bullet names #289, and the -ffp-contract=off bullet the
  -fbracket-depth=1024 that Clang consumers now receive.

CI-FLAKE and PERF-KEDGE change no user-visible value.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…in point

H-MEASURE's composite witness (58e0f162, picked as aeb2181a) was written
before PAR-MARGIN's NativeMarginCheckKind::IntrabarSample (7c37ae41, picked
as b58592c9). On the merged tree the magnified run offers 968 IntrabarSample
points beside 88 BarOpen and 16 AfterApplied (1,073 checks, 160 requirement
views), and the C port kept only the first 256 checks and 64 views
(MAX_CHECKS / MAX_REQS), so its mag.margin.checks / mag.margin.reqs FIELD
summaries differed from the C++ ones and CX c-port-shared-fields-identical
failed (only-C++ 9, only-C 2). The kernel treats both hosts alike; the
record was too short. The C port now keeps 4,096 checks and 1,024 views
(host_state is calloc'd): C++ 914 and C 914 FIELD lines, identical; 16
features, 228 checks, 0 failures.

The printed (unasserted) intrabar-margin finding said "no per-sample point"
and cited the doc sentence as unmet; it now counts the IntrabarSample
points separately and names the check kind. The magnified run's other
fields move with PAR-MARGIN's intended change (the spike liquidates at its
crossing sample): one fewer fill, lot snapshot, margin call, recalculation
and trade row, two more call views and requirement rows (914 FIELD lines
against main's 915).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…tandard ones

preflight, the build matrix, sanitizers, kernel-only, native-live and both
corpus-parity jobs now select the organization's 16-core pf-linux-x64-16, or
GitHub's macos-26-xlarge (the macos-26 arm64 image on an M2), for a push, a
dispatch, the schedule and a same-repository pull request. A larger runner
bills the organization even for a public repository, so a pull request from a
fork keeps ubuntu-24.04 and macos-26. The build legs keep their names through
an explicit name; the build aggregate stays on the standard runner.

Every ci_verify.py call and the corpus parity script take the runner's core
count (getconf _NPROCESSORS_ONLN) instead of a fixed 4.

ci-workflow-contract now pins each job's runs-on, timeout-minutes and
parallelism in ci.yml, native-live.yml and corpus-parity.yml, and keeps
docs.yml and promote-baseline.yml on standard runners. test_ci_preflight.py
mutates each pin, and runs the stage's own argv in a copied tree whose
sanitizers job moved back to the standard runner or let a fork onto the
larger one.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 7b4adb0c6707d00b4b76ebbf6d76720b5590d8cd)

INT26 pick note (late pick, accepted 2026-09-26 10:50): scripts/ci_preflight.py
conflicted beside INT26 item (iv)'s PR_SLOW_ROWS_SHA256 (29 slow rows); the
digest stays item (iv)'s and this commit's runner constants follow it.
Each timeout-minutes is now at least twice the slowest time measured for the
job on a runner it can land on: the standard runners over the eight CI runs
from 8cf3be5 to 0d76a09 (a fork's pull request still gets them), and the
maintainers' x86-64 verification hosts standing in for the larger Linux
runner until its own runs accumulate.

- preflight 10 -> 30: main's run at 0d76a09 was cancelled at 10.3 min,
  still inside verifier-tests, which took 394-543 s before and passed 570 s.
  One preflight stage is now bounded at 1500 s (was 900 s), inside the job.
- build 45 -> 75: a Release leg runs its full population on every event, a
  fork's pull request included, and took 30.3 and 32.0 min at 0d76a09; the
  full macOS Debug leg took 37.0 min on the M1 that bounds the M2.
- kernel-only 45 -> 60: 22.3 min at 0d76a09 for the whole kernel set, which
  every event runs.
- native-live 45 -> 60: the full set waits on the test_ci_verify CTest row
  (1034 s at 0d76a09), which more cores do not shorten.
- sanitizers 120, corpus-parity 120, corpus-parity-subset 30 and the build
  aggregate 5 hold at least twice their measured times and stay.

ci-workflow-contract pins the new values, test_ci_preflight.py keeps the
stage bound inside the preflight job, and docs/ci.md gives the table with
each limit's basis.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 6419c7fd822429bc44c3c34263467a1bd2b9b758)
…ough

An independent review reproduced edits that put a fork's pull request on a
larger runner, or a heavy job back on four jobs, with no finding:

- a runs-on block value (group: / a label list), which the one-line regex
  never saw -- in docs.yml, promote-baseline.yml or a new ci.yml job;
- an extra build include entry: a leg whose os is a larger runner, or one
  that overrides a leg's larger_runner (the matrix was pinned as a substring);
- a job id with an underscore, or text before the first job, which the job
  parser dropped;
- a multi-line run block, --jobs=N, or a later --jobs, which the single-line
  run scan missed; and a comment naming --jobs 4 was a false finding.

The contract now folds a runs-on block value onto one line, pins the build
job's whole strategy block and its name separately, parses every job id
GitHub accepts (a header comment included) and reports any jobs line it
cannot read, scans every non-comment line of a pinned job for --jobs and
JOBS, and applies the standard-runner rule to every workflow file a pull
request can start; one only a push, the schedule or a dispatch starts
(release.yml) is exempt. Findings are deduplicated. test_ci_preflight.py
adds each reproduced edit as a mutation, the comment and header-comment
cases as no-finding checks, and the other-workflow rule; the stage test now
runs on a copy of the whole workflows directory.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 6f744e87390d532572cf13aabb9ed13a50c2085b)

INT26 pick note: the docs/ci.md sentence this commit rewrites was this
lane's own first commit's (7b4adb0).
preflight 30 -> 45 min, its per-stage bound 1500 -> 2400 s. The 570 s and
10.3 min the first sizing used were a cut-off: main's run at 0d76a09 was
cancelled 593 s into verifier-tests. That stage is one serial process. At
this tree it takes 458-475 s on the maintainers' verification hosts, which
ran it 1.93-1.94 times as fast as the standard runner on the same trees
(91d65ad, 53d3655), so about 15 min on the standard runner a fork's pull
request gets, and more cores do not shorten it on the larger one. 45 min
is about 2.8x the resulting 16-min preflight, 2400 s about 2.6x the stage,
and the stage bound stays 300 s inside the job.

The measured bases are corrected where the review found them short: the
full corpus sweep took 16.3-26.2 min over its ten runs, the full sanitizers
runs 34.0-69.4 min on the standard runner (they now land only on the larger
one), and a fork's sanitizers compile uses 1277-1335 s of the verifier's
1800-s build bound; docs/ci.md also loses its stale 4-vCPU sentence.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 1b5a30fc06b8a7f056a1c0f4e3ebcb14bbefc462)

INT26 pick note: the docs/ci.md sentence this commit rewrites was this
lane's own time-limit commit's (6419c7f).
… 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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
…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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
(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) <noreply@anthropic.com>
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) <noreply@anthropic.com>
…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) <noreply@anthropic.com>
@luisleo526
luisleo526 merged commit d093560 into main Sep 26, 2026
7 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant