Wave G: no ordinary quantity request stops a run, cancelled exits stay cancelled, script-bar indices for aggregated runs, kernel edges, the 1.0 C surface, and docs as executable truth - #289
Merged
Conversation
…wned_strategies.json re-derived (lane CORPUS3)
pineforge-corpus f989e36 (branch release/specials-owned, two commits on
eede4a2) closes the corpus's two release-checklist items. Neither touches
the 312 validation probes: validation/ and data/ are byte-identical to
eede4a2, so no generated.cpp, trade list, tape or tier moves.
- 1d3ed90: special-validation/build_specials.sh compiles against the
engine's build tree. It lacked -I build/include, so every compile died on
the generated <pineforge/version.h>; it now adds it, checks for the header
as it checks for libpineforge.a, and takes Eigen from EIGEN3_INCLUDE_DIR,
else the build's FetchContent copy (build/_deps/eigen-src), else Homebrew.
The six special-validation generated.cpp, last emitted 2026-06-10 and
deriving GeneratedStrategy from BacktestEngine (15-20 errors each against
this engine), are re-derived from their strategy.pine with codegen f3285d7
through the transpile call of scripts/regen_corpus_cpp.sh, whose
corpus/*/*/ glob never reaches special-validation/<category>/<probe>/;
all six now compile and link. The two whose feed the corpus ships run
(mtf-htf-monthly-ema-cross-01, leverage-margin-call-perp-5x-01); the other
four need licensed OHLCV and a TradingView export that are not in the
corpus, and no probe has a TV tape to grade against.
- f989e36: owned_strategies.json is re-derived from the tree and this
engine's verifier. generated_cpp_sha256 matches 60/60 (was 0/60); the
other five artifact digests re-check 60/60; tier_distribution is
{excellent 311, anomaly 1} (was {excellent 307, strong 4, anomaly 1});
validation_run is this engine's full parity sweep at eede4a2 (91d65ad,
2026-09-25); native_validation moves on five entries, all still
excellent.
The pins that name the corpus commit move together:
- the corpus gitlink, eede4a2 -> f989e36;
- the `# corpus` header of scripts/corpus_parity_baseline.txt, re-recorded
with `corpus_trades_identity.py --update` over this engine's 312 trade
lists on disk (all 312 re-run at eede4a2 first: baseline match=312,
moved=0), after the check at the new gitlink refused on that header, as
it must. The baseline diff is that one line; all 312 sha256 rows are
unchanged.
That header was the only citation of eede4a2 in the tree outside corpus/,
and it is a pin statement. The paired-codegen pin (CODEGEN_COMMIT
f3285d7 in scripts/regen_corpus_cpp.sh) does not move: `VERIFY=1` at
f3285d7 over this corpus still reports 314 verified, 0 drifted.
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/corpus3 (migration 0041) 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 ff8bf5cf5ce9d36bf7b72e5f8ac27ecacc0c7bfb)
(cherry picked from commit aac30d6230eb0d51d1f351d366842a495b4044bb)
Rule 2 ruling: the C callback host mirrors the generic C++ kernel contract by published byte lengths and callback frames. It adds no Pine or TradingView knob and moves no durable state or hash value. Pin the INT23 caller, strict enum width, local refusals, and observed command legality; refresh exact documentation anchors. (cherry picked from commit 7114139f15877b3da555f8c7cae5e763593bccaf) INT25 merge: scripts/ci_verify.py keeps CI-LITE's EXCLUDED_REGISTERED_MIN beside this lane's floors (673/272); five anchors into native_c_api.h, pineforge.h and c_abi.cpp the lane's pages carried unmoved over its own insertions are carried through the exact line map to the content they cited (int24_exact_reanchor).
Keep synchronous current-execution points out of the walked FX predecessor marks, and derive stream session-day neighbours from eligible calendar slots. Calculate a final pending script bucket at a complete batch end or stream_end(true) only when its contributing input reached the session close; warmup and stream_end(false) carry it. Expose KernelRecordedAtHostMarks through a C++ host call, document FeedTolerant warmup, and pin the four failures in a source-free test. Unreleased v19 value move, once in this commit: re-pin tests/test_native_calendar_hash_witness.cpp ny_daily_over_hourly (digest 0x12d290fd048a6c7c -> 0xfa85a7f9a92aea39; calculated bars 12 -> 13; driver rows 48 -> 52; trades 1 -> 2) because the final calendar-closed daily bucket now calculates. Update the final-batch sequence witness in test_native_htf_subscriptions_stream; the stream_end(false) and warmup sequences stay pending. Full remote profiles and corpus identity judge the final tree. (cherry picked from commit 6cded2c420b6e16ca13da16674d507871cccad34) INT25 merge: the floors add this lane's row to C-SURFACE-1's (kernel 273, release 674; CI-LITE's EXCLUDED_REGISTERED_MIN kept). The six pages merge on digit-normalised text (int16_digit_merge, a citation both sides moved mapped from this lane's tree); 80 anchors the lane's pages kept unmoved over its own native_execution_consumer.cpp / native_c_api.h / native_run_spec.hpp edits are carried through the exact line map (int24_exact_reanchor). Every anchor cites the text one parent cited (verify_carry: 1672 exact, 6 = the floor lines).
…sentableQuantity refusal, the book's own quantities on the grid, and an opt-in quantity tolerance (R5 lane K-ULP4)
Audit X1 (AUDIT4-opus kulp NF1-NF4): a bare C++ or C host lost its whole run
on an ordinary decimal close. Open 1.5, Reduce 1.3, open 2.9: the book is
{0.19999999999999996, 2.9}, and Reduce 0.2 needs 2^-54 of the 2.9 lot, below
half its ulp; next_close_split answered UnrepresentableQuantity and the
consumer turned every non-Applied inspection into a durable
SettlementFailure (lifecycle Failed, code 6, discriminator 5). A dust lot at
the head of the book did the same to the next Reduce (stuck rest) and to the
next opening on its side (absorbed aggregate). On a quantity grid,
Reduce{ScopeFraction{1}} was floored onto the grid (a step short, a dust lot,
or nothing to close) and a close of a lot's own off-grid size was OffGrid.
(a) Mandatory, generic -- a request the settlement cannot represent exactly
is a TERMINAL, TYPED refusal of that request:
- native_order.hpp: MatchRejectReason::UnrepresentableQuantity = 10 (appended);
C PF_NATIVE_MATCH_REJECT_UNREPRESENTABLE_QUANTITY = 10 (appended, pinned in
native_c_host.cpp, translated by c_word).
- native_execution_consumer.cpp consume_matched_request: an inspection of
UnrepresentableQuantity -- next_close_split's refusals, order_action::plan's
absorbed reduction/transaction, the opening a surviving book absorbs -- is
terminal(MatchRejectReason::UnrepresentableQuantity); nothing moves, the
run goes on. Every other non-Applied inspection still fails the run.
execute_current answers the MatchRejectedEvent without throwing;
inspect_current_execution already showed the readiness.
- The grid admits the book's own quantities: a ScopeFraction whose product is
its scope (fraction == 1) resolves to the scope unfloored and the terms
grid check admits it; a close (Reduce ExplicitUnits, or a Transact against
the book's side) of exactly one lot's binary64 size is on the grid at
submit (CommandContext::units_are_lot_quantity, appended) and as a
host-sized close's answered units.
(b) Opt-in, default off, generic -- NativeRunSpec::quantity_tolerance
(appended; validated NotFinitePositive on NativeRunSpecField::
QuantityTolerance; folded into the spec digest only when present; C: the
sixth pf_native_run_spec_ext_v1 layout, PF_NATIVE_SPEC_EXT_QUANTITY_TOLERANCE
= 1u << 11, PF_NATIVE_RUN_SPEC_EXT_V1_RETENTION_SIZE for the fifth,
PF_NATIVE_SPEC_FIELD_QUANTITY_TOLERANCE = 65). engine_execution.cpp
tolerant_close_split: a close within t of a FIFO boundary ends there, charged
its request (the lot it ends in keeping at most t closes whole; a rest of at
most t is not taken from a lot larger than t; a trailing dust lot is taken;
the scope's end is a boundary, so an overshoot opens nothing), and a lot of
at most t that binary64 cannot take off the rest or the running sum closes
whole; a dust survivor book beside an opening stays. The engine reads the
value from a private BacktestEngine member the consumer projects at begin.
Absent, the exact walk runs, bit for bit; the Pine adapter declares no
tolerance and keeps its own 1e-10 policy.
ADR-0001 rule 2 (recorded as the mechanism row and the quantity_tolerance
ruling row, docs/adr/0001-kernel-adapter-boundary.md): (a) mechanism --
binary64 bookkeeping is venue-neutral; any host of any venue meets the same
absorbed quantities and gets the same typed outcome for the one request; the
grid admits the book's own sizes for every venue; the tolerance is data, a
spec value with no platform branch. (b) knob -- the refusal is none: it
replaces a whole-run failure no host could want, and an exact request settles
as before; the tolerance is a knob, but absent it is the exact walk and the
pre-field spec digest (pinned from 91d65ad), so no existing run faces a
hash-visible choice. Ruled adapter-policy in the feature table: the adapter's
prefix Flatten is charged the lots it holds and its sweep books no row, so
moving it onto the tolerance is a later lane's measurement.
What moves: only runs that stopped (they complete with the typed refusal)
and, on a quantity grid, whole-scope fractions and one-lot closes that were
floored or OffGrid. Within the unreleased v19 epoch; no witness re-pinned
(the K-ULP2/K-ULP3 witnesses' genuine-* cases now assert the typed refusal,
their other checks unchanged).
Tests (source-free, kernel profile too): test_native_unrepresentable_refusal
(333 checks; on 91d65ad it does not compile -- no enumerator -- and, spelled
10, fails 84 of 292), test_native_quantity_tolerance (368 checks; staged and
direct, fused and staged-only), check_unrepresentable_quantity in
test_native_c_api.c (C-language, the ext layout pinned at 320). Floors:
KERNEL_MIN_TESTS 271 -> 273, RELEASE_MIN_TESTS 672 -> 674.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit f961f73b69dc1edd32f008112d5ab6fee88b4a4e)
INT25 merge: the floors add this lane's two rows to C-SURFACE-1's and KERNEL-EDGE's
(kernel 275, release 676); strategy_configure_native_ext_result_v1 keeps
C-SURFACE-1's c_refuse() on its refusals beside the sixth layout; ADR-0001 keeps
KERNEL-EDGE's walked-driver-point wording on the journal-window row and adds
this lane's row after it. The pages are re-anchored once, at the lane's last pick.
…'s own quantities, the quantity tolerance; the citations K-ULP4 moved re-anchored (R5 lane K-ULP4)
- docs/native-settlement.md: the "refused before settlement" sentence and the
K-ULP2 paragraph's refusal list now say what a host gets -- the request's
terminal MatchRejected(UnrepresentableQuantity), nothing moved, the run
going on (it was code 6 / discriminator 5 and a stopped run) -- with the
ordinary decimal example (Reduce 0.2 after 1.5 - 1.3 then 2.9) and the dust
head that refuses the next close and opening; a "what a native host gets"
paragraph (K-ULP1/2/3/4, the grid's own quantities); a new "Quantity
tolerance" section with the rules and what stays refused; the Pine
paragraph records why the adapter keeps its own 1e-10 rule.
- docs/pages/native-engine.md: quantity_tolerance in the optional spec list;
the grid admission of a lot's own size; UnrepresentableQuantity among the
MatchRejectedEvent reasons; a "What a host gets from a quantity" section
beside K-ULP1's, linking native-settlement.md; ScopeFraction{1} not floored;
the sixth pf_native_run_spec_ext_v1 length.
- README.md, docs/pages/pine-to-native.md, docs/design/native-feature-parity.md
(SZ7): the six ext lengths, qty_percent=100 on a grid, the grid's own
quantities.
- Every published citation carried from 91d65ad by an exact difflib line map
(K-ULP4-scratch/tools/kulp4_exact_reanchor.py): 464 + 60 anchors moved, 0
failed their re-judgement; the four spans that grew contain the lines this
lane inserted and still name their symbol; the ci_verify floor lines (their
numbers changed) set by hand. check_doc_anchors 1678/1678, check_doc_lint 0.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 87218e628163776435c6ce45d2407934da8bfad2)
… typed refusal; the grid admits a Reduce of a FIFO boundary of its scope; the tolerance's digest fold is tagged (R5 lane K-ULP4, review fixes)
A review pass of f961f73b (scratch harness, all four twins agreeing) found:
1. Under a quantity tolerance, a book of dust closed by a far larger request
({2^-55}, Reduce 1.0) settled Applied with closed 2^-55, and the request
core then could not take 2^-55 off 1.0 (checked_sub_cap):
PreparationError{NonrepresentableQuantity}, the run Failed with code 6,
discriminator 2 -- where the exact walk refused the request, typed.
2. The same core failure already stopped exact runs on 91d65ad: a bound
opening holding 2^-55 (Transact 0.1, 0.2, 5.0; Reduce 0.3) reduced by 1.0.
Fix for both: consume_matched_request answers a
CoreFailure::NonrepresentableQuantity from check_execution /
prepare_execution -- which check and prepare without a mutation -- as
terminal(MatchRejectReason::UnrepresentableQuantity), staged and direct
alike. The two C8 point-budget rows (a one-unit PointBudget on a 2^60-unit
Transact) pinned the old run failure; test_native_resting_acceptance and
test_native_resting_replay_contract now pin the typed refusal, and the
first also that the next request fills.
3. The grid exemption matched any lot's size, at submit, for Reduce and
Transact: a Book-scope Reduce of a later lot's size was taken FIFO from
the on-grid head lot and split it off the grid, and a resting Transact
could later open off-grid. Now CommandContext::units_are_scope_boundary:
only a Reduce{ExplicitUnits} whose units are a FIFO boundary of its scope
(the binary64 sum, in book order, of the scope's lots through one of them:
the head lot's own size, a prefix, the whole scope; the book for an
Independent request, the bound openings' lots for BindOpening /
BindOpenings) is admitted; a Transact is gridded as before. A host-sized
close's answered units are admitted when they are its scope's held total.
4. The tolerance folded as a bare value, so {event_retention Full} and
{Window, tolerance 2^-1074} shared a digest; it now folds a tag word
first. The no-tolerance digest is unchanged (the pin from 91d65ad holds).
5. A request of at most t on a dust head ({2^-55, 2.9}, Reduce 1e-11) ends at
the dust lot's boundary; that is the documented rule (a boundary within t,
zero excluded), now pinned rather than changed.
ADR-0001 rule 2 as in f961f73b: (a) the core's quantity refusal is the same
venue-neutral typed outcome for the one request; (b) no knob. The ADR row
records the C8 move and the battery count: 48 of AUDIT4's 3,091 previously
clean scenarios move (40 boundary Reduces, 6 whole-scope fractions, 2 both),
each where a rule fired, no other.
Witnesses: test_native_unrepresentable_refusal 404 checks (scoped-dust, the
boundary cases; on 91d65ad, spelled 10, 100 of 350 fail),
test_native_quantity_tolerance 403 checks (dust-only book refused, dust head
with a small request). Docs: native-settlement.md, native-engine.md, the ADR
row and design SZ7 say the boundary rule and the core's refusal; citations
carried from 87218e62 by the same exact line map (136 moved, two widened
spans set to admit_placement_units' own lines).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit ef180962989871e212b64c7ac3d9fdf768be0428)
…date too; the preview's reach stated (R5 lane K-ULP4, second review)
The second review of the lane (ef180962) confirmed findings 1-5 fixed and
found one more gap: the FIFO-boundary exemption was measured only at submit,
so a Reduce admitted as the head boundary could match after the book changed.
{A', 0.5} with A' = fl(1000.1 - 1000) on a 0.1 grid: a bound close of A' and
an Independent Reduce{A'} in one callback -- the second took A' FIFO from the
on-grid 0.5 lot and left {0.39999999999997726}.
- make_command_context sets CommandContext::units_are_scope_boundary only for
a request of ImmediateRemaining capacity (one that settles in one fill); a
point-budget Reduce of a boundary is gridded as before.
- consume_matched_request holds the candidate to the same test
(grid_boundary_holds): an off-grid Reduce{ExplicitUnits} -- which only the
exemption admits -- that is no longer a FIFO boundary of its scope ends
with MatchRejectReason::UnrepresentableQuantity before its inspection;
nothing moves. Runs without a quantity grid and on-grid requests are not
touched (the check answers true first).
- The preview does not run the request core's check or this re-check: the
docs (native_host.hpp's NativeCurrentExecutionPreview, native-settlement.md,
native-engine.md) now say the settlement's refusal shows in
inspect_current_execution and the other two are made at execution only.
ADR-0001 rule 2 unchanged from f961f73b (the ADR row now says the boundary is
held again at the candidate). Witness test_native_unrepresentable_refusal:
431 checks (grid-boundary-moved, grid-boundary-budget). Citations carried
from ef180962 by the exact line map (308 moved, none stuck or grown).
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit d2932403a52098a26472a41b93e4847406ee529b)
…ction is the gross scope settled in one fill (R5 lane K-ULP4, third review)
The third review of the lane (d2932403) proved three defects in the grid
rules, each with a probe (copied to the lane scratch, review3/):
1. The candidate re-check refused a whole-book close once the book had
shrunk below it. A stop Reduce{fl(0.5 + A')}, A' = fl(1000.1 - 1000), is
admitted on a 0.1 grid as the whole book; a partial close of 0.3 leaves
{0.2, A'}; the stop fired and was refused (reason 10), where with no grid
it closes the book. A quantity at least the scope's held total closes every
lot whole, so the candidate now admits it.
2. The re-check tested the request's original units, not what the candidate
settles. An OCA-Reduce opening's fill lowered a boundary Reduce's remaining
to fl(U - 0.3), no boundary of {0.5, A', 0.3}, and the close split the
on-grid 0.5 lot to 0.19999999999997725; a take-profit's fill lowered a
stop's remaining to exactly the book it met, and the stop was refused.
grid_boundary_holds now tests the remaining units, capped as
inspect_candidate caps them: on the grid, a boundary of the scope as it
stands, or at least its held total; anything else is the typed refusal.
3. A fraction of one resolved unfloored for any scope whose product it is:
net of a live sibling's claim (it closed 0.30000000000002275 and left
0.19999999999997725; with the sibling claiming 0.6 it booked a 2.3e-14
close and left 0.49999999999997724), under a pending OCA-Reduce deduction,
under a point budget. resolve_sized_units now resolves unfloored only the
gross scope as it stands (scope == the scope's held total) for a request
that settles it in one fill (ImmediateRemaining, no PendingDeferred), and
own_quantity admits a closing size equal to the scope's held total under
the same condition; everything else is floored exactly as before.
Nothing else moves: the kulp battery (C++, C, staged; seeds 11/22/33), the
decimal host at tolerance 0 / 1e-10 / 1e-9, the findings probes and the
clean-set census are byte-identical to d2932403's (48/3091 moved, 48 fired).
No run without a quantity grid is touched (the new conditions reduce to the
old return value there).
ADR-0001 rule 2 unchanged from f961f73b: (a) mechanism -- the grid admits the
book's own quantities for every venue, now measured on what settles; (b) no
knob. The ADR row states the refined reach.
Tests: test_native_unrepresentable_refusal gains seven scripted cases
(grid-stop-after-partial and its no-grid twin, grid-oca-lowered,
grid-oca-take-then-stop, grid-fraction-net, -net-dust, -oca-pending,
-budget): 547 checks. Fail-before: linked against d2932403's execution
consumer the TU fails 23 of 547 checks, every one in the new cases. No new
ctest row, floors unchanged. Citations carried from d2932403 by the exact
line map (112 moved, none stuck; two spans lost the deleted line).
Still open, pre-existing and not the grid's (91d65ad fails identically):
an OCA-Reduce member's fill smaller than half an ulp of a sibling's remaining
cannot be deducted from it, and the run stops with code 6, discriminator 7
(UnrepresentableReservation) after the fill is booked -- the post-commit
group-effect contract the G5 rows pin.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit 66dd8742c01035d0cdc6397058ff5866a52f86c8)
…ibling's reservation -- stated where the pages promise none (R5 lane K-ULP4)
native-settlement.md ("What a native host gets") and native-engine.md ("What
a host gets from a quantity") said no run stops for a quantity. The third
review's p5b probe shows one that does, before and after this lane alike:
in an OCA group with GroupEffect::Reduce, a member's fill smaller than half
an ulp of a sibling's remaining units cannot be deducted from them, and after
the fill is booked the run fails with code 6, discriminator 7
(CoreFailure::UnrepresentableReservation). Probe output (91d65ad and
66dd8742 identical): the fraction's 2.2759572004815709e-14 fill is applied,
then "lifecycle=FAILED code=6 disc=7 err=native working-request preparation
failed". Both pages now carry the exception; native-settlement.md also says
that a sibling's fill lowers a member's remaining units without regard to the
grid (the reviewer's c_probe: an on-grid Reduce 0.4 lowered by a bound
Flatten sibling's off-grid fill settles 0.29999999999997728 on 91d65ad and
on 66dd8742 alike), so the grid's re-check holds only the Reduce it admitted
as a boundary. Docs only; anchors 1678/1678, doc lint clean.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
(cherry picked from commit f1af50dca5ad19438c90ed127faebad0fd20c499)
INT25 merge: the six K-ULP4 picks merge their pages on digit-normalised text
(int16_digit_merge, a citation both sides moved mapped from the picked
commit's tree); here the pages are re-anchored once for the lane: 25 citations
carried through the exact line map from 409ebad or f1af50dc, and the six
CONTRIBUTING / contributing-llm citations of the floors set to ci_verify.py:236
and :344. Every anchor cites the text one parent cited (verify_carry: 1672
exact, 6 = the floor lines).
…rough a refused anchored level
C-SURFACE-1's check_csurface_failure_discriminator provoked its settlement
failure with a Transact whose point budget cannot be booked (intent 2^60,
capacity 1.0). R5 lane K-ULP4 rules exactly that request a typed
MatchRejected(UnrepresentableQuantity) refusal: the run completes, and the
row's four checks failed on the merged tree ("nonrepresentable request did
not fail settlement (got 0, want -11)").
The row's purpose is the C state's copy of the kernel's nonzero failure
discriminator, so it keeps every assertion (PF_NATIVE_E_RUN_FAILED, failure
code SETTLEMENT_FAILURE, operation SETTLEMENT, discriminator != 0) and takes
the failure from a path K-ULP4 keeps: the host answers an anchored leg's arm
(on_anchored_level) with a negative level, which the kernel's
representability check refuses at the arm, as test_native_anchored_legs'
l7b-hook-broken row pins in C++. K-ULP4's own C row
(check_unrepresentable_quantity) pins the typed refusal of the old request.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ncelling and recording cost what is live, the dead path_order_ goes Audit X2 and X9 (AUDIT4-opus section 7), inside the unreleased v19 epoch; the source extension stays pineforge-source-adapter/v4. - strategy.cancel / strategy.cancel_all retire every leg of each exit row they name (retire_cancelled_exits): the live ones they take off the book, caused at the Cancelled event (a pair hold earlier in the same callback no longer turns the withdrawal into a refused conflicting replay), the dormant ones and the ones the adapter took off the book itself, each caused past the lifecycle's last step; and they drop a gapped stop a declined reversal parked for the next margin-call slice (pending_margin_revivals_). A margin call no longer revives an exit the script cancelled while it was live or parked. TradingView decides it, on NYSE:F 15, 2025-04-15..05-20, range proof covered: v19fix-cancel-before- pair, v19fix-cancel-at-1000, v19fix-gapped-stop-cancel and v19fix-gapped-stop-cancel-after-pair all book the badapter-v19dp1-cancel file (tv_trades sha256 662ce8c8...: margin calls 12 @10.39 and 92 @10.57, 836 open), and v19fix-gapped-stop-control (bdf3d470...) the parked stop's close without a cancel (X 928 @10.39). All six AUDIT4 v19dp1 variants now print the ab9714b log byte for byte, and the gapped-stop variants book what ab9714b books. - K1 (erase_retired_rows) no longer holds a withdrawn leg for the revival; it keeps one only while its origin is live or opened, the one question (origin_leg_consumed) that still reads it. An exit cancelled and re-placed every bar at one level keeps 3 rows, not one per bar: x1.9 to x2.1 per doubling up to 64,000 bars (x4.7 to x4.9 before, 57 s at 64,000 for the cancel/re-place leg), strategy.cancel_all + exit at position_avg_price * 0.95 likewise. - release_closed_cohort_origins: at a bar open after a receipt read that saw a command event, an origin whose request chain no longer works and that holds no open lot leaves its kernel roster (cohort_remove); a replace successor's open lot keeps every older member of its roster. A flip recorded per bar costs x2.0 per doubling from 4,000 to 32,000 bars (x2.45, x2.80, x3.06 before). Cost: one removal per closed opening; the 100 public slots (spark, magnifier on) run +0.54 % instructions at the median, +1.57 % at most (slots 007 and 030). - PineExecutionAdapter::path_order_ (written, folded, never read) and set_path_order are removed. Named hash move: every Pine host-extension, broker-state and recorded per-bar value, and the kernel continuation wherever an origin leaves a roster. Trades move only on the revival shape the two tapes prove. Re-pinned (each TU's harvest switch; the base 91d65ad harvest reproduces every old pin; no non-hash declaration or field moved; the host-extension fold, recorded rows and final hash taken out of test_adapter_quiet_bar and test_publication_witness, both print identical tables on base and lane): tests/test_adapter_report_relower.cpp tests/test_adapter_recording_hash_witness.cpp tests/test_adapter_continuation_view.cpp tests/test_adapter_receipts_in_place.cpp tests/test_adapter_lookup_index_witness_data.hpp tests/test_adapter_quiet_bar_pinned.inc tests/test_adapter_command_allocations.cpp tests/test_adapter_host_view_memo_data.hpp tests/test_publication_witness_pinned.inc Pine witness (ReissueReplay x64 on btcusdt_15m_7d): 10045334278681590956 -> 9305091844641472748. Tests: test_adapter_margin_revival_cancel gains the five tapes, the other cancel spellings and rows on a chart with no quantity grid (base: 89 of 291 checks fail); test_adapter_live_state_scaling gains the constant-level re-cancel (recording off and on), the cancel_all shape and the flip, each with a small leg calibrated to at least 0.1 s CPU, rows and roster members bounded, the churn's ratio gated, and --row; test_adapter_live_state_ equivalence --margin-revival: the erasing run's retention in variants 2 and 3 (expectation corrected, no trade moves). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 336c9acde83321c87851e6d0b35e9d37e9fbd1b3) INT25 merge: test_adapter_live_state_scaling keeps RATIO-HARDEN's calibration (every gated leg doubles until its best sample takes kMinLegSeconds, both legs checked against it), which sizes this lane's constant / cancel_all / flip rows too, so the lane's own pre-sizing loop goes; the ratio gate keeps this lane's churn gating (CHECK(ratio < kShapeBound) for every workload).
…cost what is live; OL14 says what is tested (R5 lane V19-FIX) - design OL14: the revival rule as the seven lab tv tapes and test_adapter_margin_revival_cancel hold it -- live, dormant and parked (gapped-stop) cancels, the untaped spellings, the no-grid rows -- citing retire_cancelled_exits. - design section 3.8 (F9): row A completed by V19-FIX for the constant-level cancel/re-place, new row D (the kernel's cohort rosters on a Pine host), and the measured before/after, the scaling rows and their mutants. - native-engine.md (the continuation fold): a roster costs what its host keeps on it; the Pine adapter takes an unbindable origin off. - abi-stability.md: the V19-FIX hash step, what moved and why, trades only on the taped revival shapes. - design P4: the hash-state content pin re-taken (path_order_ left the fold). - Every citation of the four changed sources carried from 91d65ad through an exact line map (INT24's int24_exact_reanchor.py): 266 moved, anchors 1681/1681, doc lint clean. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit b40509ae3a6142496c1a9627c5725dc49979c474)
ADR-0001 rule 2 ruling: generic kernel coordinates use script-bar interval_index, with input_interval_index retained beside it for hosts that need input cadence. Remove Pine index restamping and repin the v19 coordinate witnesses once. (cherry picked from commit e362bc4b89964a8fc7ced24f5fea0465b93120c3) INT25 merge: test_native_calendar_hash_witness takes this lane's re-pinned rows, except ny_daily_over_hourly, which keeps KERNEL-EDGE's row (13 calculated bars, 52 driver rows, 2 trades: the final calendar-closed daily bucket) until the INT25 v19 hash re-pin harvests its digest over both lanes. The pages merge on digit-normalised text; the pine-to-native decision row merges word by word (C-SURFACE-1's POLICY_SIZE clause, KERNEL-EDGE's eligible-slot clause and this lane's script-bar index sentence all kept).
ADR-0001 rule 2, Option A: NativeCoordinate::interval_index, lots, trade rows and bar metrics stay in script-bar space. NativeCoordinate::input_interval_index remains the named input coordinate for hosts that need input cadence. Pine source projection state reads that explicit input coordinate; the kernel report and lot coordinates are never re-stamped. Behavior fix: test_adapter_brackets_relower keeps Pine's pending-order created_bar and scheduler source chart policy on the input coordinate under aggregation and magnifier. The adapter no longer uses the kernel script coordinate for those source-only comparisons. One v19 hash/witness re-pin, caused only by the coordinate fold; trade/event counts, driver points and behavior remain unchanged: test_native_continuation_view; test_adapter_continuation_view; test_adapter_host_view_memo; test_native_match_hash_witness; test_native_intrabar_lower_lookup; test_native_batch_log_presize; test_native_event_retention; test_native_match_band_witness. No PF_API export or frozen C layout changed. (cherry picked from commit 6df7850af41b7f63f49a28915d3c53f7356fa234) INT25 merge: test_adapter_continuation_view and test_adapter_host_view_memo_data keep V19-FIX's pins in their conflict blocks (this lane's header notes kept); both lanes moved the same values, so the INT25 v19 hash re-pin harvests them once over both. The pages merge on digit-normalised text and are re-anchored once for the lane: 64 citations carried through the exact line map from 07fc918 or 6df7850a; the five citations on the word-merged pine-to-native decision row checked by hand.
(cherry picked from commit 66f95745cc243fe3b56fced95c4798368337c5b2)
(cherry picked from commit 21bdc2e8f68b081322f0517bccd0c81176a6b3c7)
INT25 merge, DOC-TRUTH-4 over wave G's code lanes (both picks):
- strategy_configure_native_v1 (pineforge.h, native-engine.md) keeps C-SURFACE-1's
refusal contract (a Running handle is refused at the C boundary without
mutation, a Completed or aborted handle may be reused) and adds this lane's
facts: an aborted handle is reused with the same session key and a higher
run number, and a handle whose configure call failed remains Failed.
- The run-spec extension has six published layouts since K-ULP4: README keeps
K-ULP4's six-layout sentence, and this lane's "five" in the RISK_SIZE /
POLICY_SIZE comments (native_c_api.h) and in native-engine.md's POLICY_SIZE
paragraph ("the other four") read six / "the other five".
- The design page's row 8 keeps C-SURFACE-1's text; its c_abi.cpp:289-929
content pin is re-hashed over both lanes' edits (the window moved only by
this lane's one-line comment fix at :313).
- The floors add the extracted Complete host (kernel 276, release 677). The
pages are re-anchored once for the lane (9 citations through the exact line
map from 3ed0276 or 21bdc2e8, the floors' citations set by hand).
…r through the last path point consumed (audit N3) AUDIT4's N3: the partial-bar sentences promised "close at the cursor", and the acid check F8e refuted it. The kernel folds a discrete point (the open of the bar or of a sub-bar, a DistributionSamples sample, an observed print) before its callbacks run, but a segment's destination only after the segment has been matched (note_partial_point after match_segment, src/native_execution_consumer.cpp emit_segment and the intrabar sampler). So a fill inside a segment -- its on_native_applied and its OrderFill recalculation -- reads a bar that still ends at the segment's origin and does not hold the fill price: TP-E1 at 4990 on the High -> Low segment of O 4992 H 4992.5 L 4987 reads O 4992 H 4992.5 L 4992 C 4992.5; the liquidation at 5088.53 on the Low -> High segment of the 10:00 spike reads O 5062 H 5062 L 5061 C 5061. Comment-only and doc-only; no behaviour moves: - native_host.hpp current_partial_bar() and on_native_recalculate's note; - native_c_api.h strategy_native_partial_bar_v1; - native-engine.md: the open-bar warning (at the bar open, the open alone), "The bar so far, and the open-bar view", the host-reads table row and the C read-back paragraph; the design page's CT4 row; README's C read row. Citations the longer comments moved are carried through the exact line map. F8e, copied from $EV/exec/AUDIT4-opus-acid-test.cpp into INT25-scratch/acid/acid_int25.cpp and rewritten to the corrected sentence (the original is untouched), prints PASS in all four runs (bk, bp, sk, sp). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… and reads the merge gate on the PR head The owner squash-merges PRs, so the PR head is never an ancestor of main and the "Verify exact-head" step skipped every such merge. The step now takes the merge commit from github.event.pull_request.merge_commit_sha (dispatch: inputs.merge_commit, plus a new required pr_head input for the verified head) and promotes only when - the merge commit is on origin/<base>, - the PR head (fetched by sha when it is on no branch) exists, - tree(merge commit) == tree(PR head), and - tree(origin/<base>) == tree(merge commit) (the base has not moved on). Every other outcome writes ok=false and exits 0 before any promotion step. pineforge/verify + pineforge/parity are still read on the PR head, newest status per context. baseline-promote.mjs receives the merge commit as --merge-commit and the verified head as --head-sha / --ci-head; its exit-2 notice now names the squash case. AGENTS.md and docs/ci.md say the same: the exact-tree guard and the statuses on the PR head, and that a squash still defers while the campaign tool requires the merge commit to be the gated head itself. The design page's content pin on that AGENTS.md section is re-hashed over its new extent (AGENTS.md:132-148). scripts/ci_preflight.py pins the new guard (merge_commit_sha, the pr_head input, ancestry of the merge commit only, both tree comparisons, four skips that exit, the three mjs arguments); scripts/test_ci_preflight.py adds ten mutations, each of which the contract refuses. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…d, an hour for a full sanitizers run, floors recounted
Slow rows. The rows wave G enlarged or added were re-measured in a full
sanitizers and Debug run of this tree on the maintainers' x86-64 build host
(lab remote rj-20260925t192212-92d7b5, NTU2, 12 parallel CTest jobs):
RATIO-HARDEN's legs (test_native_state_continuation 34.7 s sanitizers / 18.9 s
Debug, test_adapter_lookup_index_scaling 24.3 / 3.0, test_native_match_rescan_
scaling 14.7 / 8.4, the continuation-tail, intrabar-lookup, journal-window and
bare-host rows under 4.1 / 3.4), V19-FIX's scaling rows (inside the labelled
test_adapter_live_state_scaling, 52.6 / 8.1) and the new rows of KERNEL-EDGE,
K-ULP4, C-SURFACE-1 and DOC-TRUTH-4 (each under 1 s). No row outside the 27
crosses >60 s under sanitizers or >30 s in Debug, so the label list and its
pinned digest stand; docs/ci.md records the measurement.
Bound. ci_verify.py's ctest stage keeps 30 minutes for every run but a full
sanitizers run (no --exclude-label: push to main, manual dispatch, the
maintainers' verification), which gets an hour (ctest_timeout(),
SANITIZERS_FULL_CTEST_TIMEOUT); main's own full set ran out of 30 minutes
twice. The PR set keeps 1800 s. ci.yml's sanitizers job allows 120 minutes so
the hour after a ~30-minute build is the binding limit. test_ci_verify pins
the bound per profile and exclusion; three mutants (the exclusion ignored, the
hour back to 1800, the stage hard-coded) each fail it.
Floors, recounted with ctest -N per profile (ci_verify's own configure argv):
release 672 -> 677, debug 653 -> 658, sanitizers 653 -> 658, native 662 -> 667,
kernel 272 -> 277 registered (276 run with the WebSocket row skipping on a
system libcurl). The five rows, in every profile: C-SURFACE-1
test_native_c_api_int23_header, KERNEL-EDGE test_native_kernel_edge, K-ULP4
test_native_unrepresentable_refusal and test_native_quantity_tolerance,
DOC-TRUTH-4 test_native_engine_complete_host. RELEASE_MIN_TESTS 677 and
KERNEL_MIN_TESTS 276 (set by the picks) get one measured comment naming those
lanes; EXCLUDED_REGISTERED_MIN becomes {debug 658, sanitizers 658, native 667}.
The floor citations in CONTRIBUTING.md and contributing-llm.md follow the
constants to ci_verify.py:241 and :349.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…t is absorbed, and the run goes on (R5 lane K-ULP5) Ruling (supervisor, owner-level, on K-ULP4's finding 2): a sibling reservation deduction that is unrepresentable -- at most half an ulp of the sibling's remaining units, so fl(units - d) is the units again -- is ABSORBED as a no-op. The sibling's units stay as they are, the exact binary64 result of the subtraction; the member's fill stands; the absorption is an observable event; generic, no knob. Recorded as the ADR-0001 rule-2 row "an OCA-Reduce sibling's deduction binary64 cannot take". A member's fill in a GroupEffect::Reduce group is deducted in four places of the request core (src/native_order.cpp), each of which answered CoreFailure::UnrepresentableReservation and failed the run (code 6, discriminator 7) after the fill was booked; each now absorbs, on the staged and the direct path alike: - prepare_group_effect / apply_group_effect, a sibling with remaining units: a ReservationReducedEvent with actual_deduction 0 and after == before; the row is not touched (C: RESERVATION_REDUCED, closed_units 0). - the same, a sibling whose units are deferred: a fill the pending total cannot move is a DeferredGroupAdjustmentEvent with deferred_delta 0 whose pending_after is its pending_before; it joins no chain (C: DEFERRED_GROUP, closed_units 0). A total below half an ulp of a later fill rounds into it (pending_sum), which stopped the run too; collect_pending_chain re-sums the same way. Only a pending total that overflows binary64 still fails the run with discriminator 7. - prepare_terms / apply_terms through effective_host_units, and prepare_owner_applied / apply_owner_applied: a pending total the resolved (or the owner's opened) units absorb leaves those units standing, recorded as effective_deduction 0 beside a positive pending_total. A deduction binary64 can take is taken exactly as before, bit for bit: no completed run changes. inspect_current_execution no longer throws "native host-sized deduction is not representable" for such a request. Tests: test_native_group_absorption (new, kernel-only): p5b, each site, pending-rounds, the overflow control and a seeded battery of 3 x 1,000 OCA-Reduce runs at ulp scale, staged and direct (bit-equal, hashes included) -- 0 stopped; on f1af50dc 914 stopped (all code 6 / disc 7) and 970 of 177,824 checks fail. check_reservation_absorbed in test_native_c_api.c (8 failures on f1af50dc). Rows that pinned the old contract move to the new rule, each with its reason: G5 in test_native_resting_acceptance and test_native_resting_replay_contract (the overflow row stays a failure), checked_reservation_arithmetic in test_native_order_resting_core, A-T4d in test_native_execution_terms, numeric_absorption_and_chain_authentication in test_native_order_terms_core. Floors: kernel 274 (275 registered), release 675. Header docs for the four events, CoreFailure::UnrepresentableReservation and effective_host_units; native-settlement.md and native-engine.md drop K-ULP4's "one case still stops the run" and say what a host gets; every citation the lane moved is re-anchored from f1af50dc (anchors 1678/1678). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 1d7639c80de4250babe30935cb1fd4904a57c657) INT25 merge: picked after the integration items (the lane was accepted at 03:55, after picks 6-8 and items (i)-(iii) had landed; it sits on K-ULP4, which it follows). The floors add its row to the wave-G comment (kernel 277 run / 278 registered, release 678, PR registration floors 659/659/668) and its new row test_native_group_absorption is labelled slow: 70.35 s under sanitizers (17.37 s Debug) in the lane's own lab remote run on NTU2 (rj-20260925t190356-3de52e / rj-20260925t190357-b83ced), over CI-LITE's 60 s rule -- 28 labelled rows, the preflight digest re-pinned. The pages merge on digit-normalised text and are re-anchored once at the lane's second pick.
… its own, and the checks that could pass for the wrong reason tightened (R5 lane K-ULP5, review) An independent review of 1d7639c8 found no defect in the kernel change and these tightenings, each applied here: - native-engine.md said "a C row's closed_units is 0" after listing all four markers; C's TERMS_RESOLVED and QUANTITY_BOUND rows carry no deduction. The page now says a C host reads the first two as RESERVATION_REDUCED / DEFERRED_GROUP rows with closed_units 0, and the terms/bind absorption as the units that stand beside the DEFERRED_GROUP rows it received. - "effective_deduction 0 beside a positive pending_total" also describes a host that answers 0 units; the marker now requires units above zero (page and TermsResolvedEvent doc). - Each deduction is taken on its own: a hundred fills of 1 against 2^60 are a hundred absorbed deductions and leave it 2^60, where one deduction of 100 leaves fl(2^60 - 100) = 2^60 - 128. Stated in native-settlement.md and pinned by the new units-repeated row (the hundred share one cohort, so they reduce the recipient and not each other). - CoreFailure::UnrepresentableReservation's doc names the defensive non-finite guards beside the overflow. - test_native_c_api.c: the lot count could not fail for "the fraction's fill did not stand" (two lots either way); it now checks the fraction's one APPLIED row of the dust and the head lot's units. The -current rows now assert what execute_current answered: the host-sized fill (test_native_group_absorption) and the typed UnrepresentableQuantity refusal (A-T4d in test_native_execution_terms). - native-feature-parity.md OL7 cited ReservationReducedEvent's lines for the deferred form too (carried from the base); it now cites DeferredGroupAdjustmentEvent. Citations re-anchored from 1d7639c8 (anchors 1678/1678). Fail-before on f1af50dc: test_native_group_absorption fails 975 of 177,837 checks (914 of 3,000 battery runs stop, all code 6 / disc 7); the C rows fail 8. On this commit: 206,377 checks, 0 failures; C ok. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> (cherry picked from commit 2a03c6580c74906c585618b050c3c32cff999827) INT25 merge: the pages merge on digit-normalised text; the lane is re-anchored once here (4 citations into native_c_api.h carried through the exact line map from c3a45b50). Every anchor cites the text one parent cited (verify_carry: 1675 exact, 6 = the floor lines).
… c_abi.cpp insertions
docs/design/native-feature-parity.md row 8 cites c_abi.cpp:848 (the end of
strategy_set_native_security_feed, "? 0 : -1;") and c_abi.cpp:902
("cpp.identity.run_number = spec->run_number;"). C-SURFACE-1 inserted lines
above both in src/c_abi.cpp and moved the row's hashed ranges, but left these
two symbol-less single-line citations at their base digits, so on this tree
they cited `});` and `if (!host) return -1;`. The anchor gate only checks that
a symbol-less line is code, and the pick's exact carry accepted the lane's own
copy of the file unjudged. They now cite the same text: c_abi.cpp:862 and
c_abi.cpp:929. A scan of every page for anchors that kept base digits while
the base text moved (stale_scan.py, against 1a0e7ea) finds no other.
Found by the independent review of the integration.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
V19-FIX, K-IDX and KERNEL-EDGE each moved v19 hash values in their own named
commits, each against a tree without the others, and their pins met in three
witnesses; the picks kept one side in each conflict. This commit re-harvests
every witness pin once, on the integrated tree (after the K-ULP5 picks, which
moved none: all ten harvests are byte-identical before and after them), inside
the unreleased v19 epoch; no epoch token moves.
How: each pinned TU compiled with its own harvest switch against this tree's
library, with its ctest target's exact compile and link lines (harvest_int25:
V19-FIX's harvest3 plus PINEFORGE_K1_HARVEST for the calendar witness), then
repin_int25 (V19-FIX's repin_int21 plus the calendar rows), which STOPs on any
non-hash change: a moved trade, trade digest, net profit, error, count, bar,
driver row or other non-hash field aborts the run (both refusals checked by
mutating a harvested trade count and a calendar trade count). Seven of the ten
harvested witnesses reproduce their pins exactly (report_relower,
recording_hash_witness, receipts_in_place, quiet_bar, command_allocations,
lookup_index_witness, publication_witness); every other witness row passes
unchanged in the full suite. A second harvest after writing reproduces every
pin: 0 moved.
Moved (hash values only; the notes above each table list them again):
test_adapter_continuation_view k_chart (7 of 7):
14621553252499744072 -> 5575980828577033360
1560069015253079270 -> 17778912298194596574
8181232920474966978 -> 16463834114134690168
8150352125352055815 -> 8941018855024971093
4370795498617211977 -> 2898399952537902865
10361542891827113526 -> 8964175343669296125
4370795498617211977 -> 2898399952537902865
test_adapter_continuation_view k_magnifier (7 of 7):
1310098789583311035 -> 4430826578646987126
9252967425603149690 -> 14738067743722080804
9717019523752667192 -> 2077753189921542836
14284557384012157011 -> 2917741806179085516
15984354419168920510 -> 13581436790443683042
16607038826027722339 -> 14737345821341801219
15984354419168920510 -> 13581436790443683042
test_adapter_continuation_view k_aggregated (5 of 5):
7408940017323371281 -> 16542564830293500828
11387000028137044299 -> 13031512803108236715
4995545673543620333 -> 6906214955679447270
9893483468656556008 -> 10543459672655655434
4995545673543620333 -> 6906214955679447270
test_adapter_continuation_view k_aggregated_magnifier (5 of 5):
2376229218543853263 -> 14031106247497767919
301774797075971540 -> 10607093485200722581
6106527879897255797 -> 22607172627576334
14842205570428090150 -> 12265832737220737843
6106527879897255797 -> 22607172627576334
test_adapter_continuation_view k_coof (10 of 10):
10706142720152936082 -> 16820608513549156800
14042469651802437968 -> 9462991605602344175
1992762524201176782 -> 12220673217690837314
9972018108613272455 -> 1856715264914641232
9011525226083087013 -> 12811765853164186626
7755254022538140640 -> 9115044940243703863
16056359684121154720 -> 9198850018143016781
10916717879615654635 -> 784137025905909089
17916071608255404005 -> 11981249830754474578
10916717879615654635 -> 784137025905909089
test_adapter_continuation_view k_recording (71 of 72):
14621553252499744072 -> 5575980828577033360
16947653718640119089 -> 16309388099732889217
8181232920474966978 -> 16463834114134690168
384032772146433484 -> 14697449118452563264
4370795498617211977 -> 2898399952537902865
10361542891827113526 -> 8964175343669296125
4370795498617211977 -> 2898399952537902865
11635388043626139808 -> 11912929120179152844
5137642655964282706 -> 7111499071038382551
1067158101705749258 -> 14395892391241930212
17589216349291364682 -> 9034635987304089269
13103826456263923669 -> 7745035282290493167
14125475791418217750 -> 9653978480792136139
5496734832958426517 -> 6575784925310671623
3300864403891436803 -> 16756306850270906652
14334667028075329258 -> 6791844355462743637
19027534220486873 -> 9752175874850418240
17400684420983527587 -> 5581794927458177019
16843748232757858737 -> 16367531041072987671
5910420545552211065 -> 5499206076623092635
4037494890945270795 -> 16891823664600062531
13685270228904493022 -> 15306266440153708710
12610051923577992823 -> 8382791724770590634
13419685112760992640 -> 4926336483410460532
6561776234336247499 -> 12823090459845782834
11286535916465691925 -> 10217177223946990874
9286401377316929631 -> 12680312482263936655
11941619648187175172 -> 15032085204869760060
2781110012097249044 -> 7696336452231268012
5152088055254729287 -> 6819477884530924764
14925422330047382771 -> 13932522791731114426
18068979986855895194 -> 15842817164955438950
3293728938989802792 -> 4250764768037495411
3040154494312885091 -> 1760469320874157114
3914527074597397115 -> 7565330933885892856
6028800054409062637 -> 3348650657119335616
17539544361470737737 -> 16026642042438818681
17497902664474484401 -> 15336121108426360137
16821147754446235025 -> 12610087835245307199
3501965129295230921 -> 3169655936610324835
17136543747664596622 -> 18005345939863936504
6796102544471338071 -> 10374887129263366256
10258488113034267824 -> 3316605285128650350
15437545425183691961 -> 10411230090089985874
10208872586329130020 -> 2321647345879300563
14368668855499836453 -> 9282855342318040804
628171839165946395 -> 8782939554936041465
10702221356985455012 -> 9270809468617755726
2314157047087909764 -> 9705564861311910669
12920471494293590838 -> 1984027035687621850
8752737450779041921 -> 5309816640440296119
7994102271719463356 -> 61906512444861614
4741946402210887143 -> 18408253739502061131
739366574823717504 -> 2900636347809437670
3655914840365203865 -> 8590510826456084479
7448010022416009296 -> 16739036358771975930
11266041923012349372 -> 3846505090147632664
16061447354858643806 -> 13346518438036570112
6641998937765131086 -> 3939181335635768762
15745847663605277053 -> 1996675722330704212
2232785799096296677 -> 271113896427528122
12057790076704791676 -> 1511893874670543988
14126847163984952264 -> 15973548105797383183
6703125855558665936 -> 4392899708297163730
750370809058189391 -> 11467883812317724901
727242285392145435 -> 11051413718335140252
9029503590661437192 -> 903533060614176790
6205861443650071106 -> 14466209299323094098
5548300568428407565 -> 4010960734010157804
4191735526950747220 -> 5172512134487820157
4370795498617211977 -> 2898399952537902865
test_adapter_continuation_view k_stream (54 of 54):
16510252855932086823 -> 16458853630937199693
14048324983519873828 -> 10534014544629119321
17804079663198632649 -> 15852567477617018112
7665081442761407167 -> 8395254103899656747
1510562666313522433 -> 9137153746257222586
16253369998080909938 -> 4321243615010347791
15976513930905472129 -> 2464381025353933752
3846751227738950664 -> 4335032133758631355
15450124388103584652 -> 3418642895666580588
2225665425051551577 -> 12043850726481513634
15615312821753524918 -> 15778603109418817912
11958084298410326056 -> 7422979898823356625
7978187604899367877 -> 8082887755714141501
876738446875159256 -> 18272796975887582060
3498362567022607364 -> 4620349392656757831
7053403205296459880 -> 11062470475981718812
11858356529053237 -> 11681022048666484124
5137924053122990913 -> 1110410394930231379
1455779883697863925 -> 8353289200898942510
1450972605221627516 -> 5464661787014092283
6748150359618158603 -> 18042314908697358845
17100694157255179539 -> 17913569146247237990
16383805058165184155 -> 14252084119842247317
14458762612387161134 -> 13951402111806527659
7578874640041129857 -> 14984524306684102418
1091721997205765161 -> 4929388494852177725
4972829120680344696 -> 8427843384471180011
11905106519757767589 -> 12312569890916686665
14990642672847258155 -> 7806471840435792838
18051484560037243770 -> 10841176947711978698
7846354589731725875 -> 14141658027994245481
1584652476433904101 -> 15796138674937755121
12788838416146221578 -> 4930499034900633496
859043901073302035 -> 11894749826123257324
5668633829937549152 -> 331885767850924737
7252967951263295973 -> 6209022505833017115
13226339972060618816 -> 13004202639896233962
1981332788226950674 -> 1029059189446661931
17570152268719247518 -> 9179914352160302837
808203791867106338 -> 9236479431486641300
8732491230892848194 -> 5209128789544115679
960688443443831230 -> 5582126543454279956
8967860587877234272 -> 14370442711223214011
12765059320032069741 -> 16435999169585034112
3138802922902822053 -> 2858404675926398753
6653748162035956560 -> 2863207613356019619
12107272552955766436 -> 4197841241754323017
11629978161529728893 -> 1651019462700250297
12532033173457401429 -> 9342015881796079139
8444087394523764362 -> 971242319250035563
13899343461558324542 -> 6367780246848246992
8444087394523764362 -> 971242319250035563
14079671624423886806 -> 6931684686417541656
8444087394523764362 -> 971242319250035563
test_adapter_continuation_view k_stream_aborted (35 of 35):
16510252855932086823 -> 16458853630937199693
14048324983519873828 -> 10534014544629119321
17804079663198632649 -> 15852567477617018112
7665081442761407167 -> 8395254103899656747
1510562666313522433 -> 9137153746257222586
16253369998080909938 -> 4321243615010347791
15976513930905472129 -> 2464381025353933752
3846751227738950664 -> 4335032133758631355
15450124388103584652 -> 3418642895666580588
2225665425051551577 -> 12043850726481513634
15615312821753524918 -> 15778603109418817912
11958084298410326056 -> 7422979898823356625
7978187604899367877 -> 8082887755714141501
876738446875159256 -> 18272796975887582060
3498362567022607364 -> 4620349392656757831
7053403205296459880 -> 11062470475981718812
11858356529053237 -> 11681022048666484124
5137924053122990913 -> 1110410394930231379
1455779883697863925 -> 8353289200898942510
1450972605221627516 -> 5464661787014092283
6748150359618158603 -> 18042314908697358845
17100694157255179539 -> 17913569146247237990
16383805058165184155 -> 14252084119842247317
14458762612387161134 -> 13951402111806527659
7578874640041129857 -> 14984524306684102418
1091721997205765161 -> 4929388494852177725
4972829120680344696 -> 8427843384471180011
11905106519757767589 -> 12312569890916686665
14990642672847258155 -> 7806471840435792838
18051484560037243770 -> 10841176947711978698
7846354589731725875 -> 14141658027994245481
1584652476433904101 -> 15796138674937755121
12788838416146221578 -> 4930499034900633496
6600350751158217016 -> 6596242839819495123
12788838416146221578 -> 4930499034900633496
test_adapter_continuation_view k_aborted (6 of 6):
14621553252499744072 -> 5575980828577033360
1560069015253079270 -> 17778912298194596574
8181232920474966978 -> 16463834114134690168
12415576349368044635 -> 12754404695042992156
14564863596030526264 -> 8825354032181240290
12415576349368044635 -> 12754404695042992156
test_adapter_continuation_view k_reused (15 of 15):
14621553252499744072 -> 5575980828577033360
1560069015253079270 -> 17778912298194596574
8181232920474966978 -> 16463834114134690168
8150352125352055815 -> 8941018855024971093
14621553252499744072 -> 5575980828577033360
1560069015253079270 -> 17778912298194596574
8181232920474966978 -> 16463834114134690168
8150352125352055815 -> 8941018855024971093
4370795498617211977 -> 2898399952537902865
10361542891827113526 -> 8964175343669296125
4370795498617211977 -> 2898399952537902865
1258618990550900905 -> 4063572268643314481
3498362567022607364 -> 4620349392656757831
9810780513184341561 -> 7040750059417794475
3498362567022607364 -> 4620349392656757831
test_adapter_continuation_view k_refused (11 of 11):
10361542891827113526 -> 8964175343669296125
4370795498617211977 -> 2898399952537902865
10361542891827113526 -> 8964175343669296125
4370795498617211977 -> 2898399952537902865
14621553252499744072 -> 5575980828577033360
1560069015253079270 -> 17778912298194596574
8181232920474966978 -> 16463834114134690168
8150352125352055815 -> 8941018855024971093
4370795498617211977 -> 2898399952537902865
10361542891827113526 -> 8964175343669296125
4370795498617211977 -> 2898399952537902865
test_adapter_host_view_memo (13 of 13 runs, broker-state hash):
batch/A: 13831511007419341774 -> 496593797863776142
batch/B: 16942810041893704776 -> 5316201723780989919
stream/A: 3001610611355826173 -> 4351362905685696693
stream/B: 8241673901617223988 -> 1033336853289890500
interleaved/A: 3001610611355826173 -> 4351362905685696693
interleaved/B: 8241673901617223988 -> 1033336853289890500
round_robin/A1: 3001610611355826173 -> 4351362905685696693
round_robin/B: 8241673901617223988 -> 1033336853289890500
round_robin/A2: 3001610611355826173 -> 4351362905685696693
rebuilt/0: 13831511007419341774 -> 496593797863776142
rebuilt/1: 16942810041893704776 -> 5316201723780989919
rebuilt/2: 13831511007419341774 -> 496593797863776142
rebuilt/3: 16942810041893704776 -> 5316201723780989919
test_native_calendar_hash_witness ny_daily_over_hourly digest: 0xfa85a7f9a92aea39 -> 0xe4365dfe9a898fbd
Non-hash fields: none moved -- host_view_memo keeps every run's trades, trade
FNV, net profit and error; the calendar row keeps KERNEL-EDGE's 13 calculated
bars, 13 opens, 300 inputs, 52 driver rows, 14 other rows and 2 trades; the
continuation-view tables are continuation values only.
Pine witness (ReissueReplay x64 on btcusdt_15m_7d, spark GCC 13.3, normal and
stress builds): main 1a0e7ea 10045334278681590956 -> INT25 14010942914806881059
(43008 callbacks, 43008 bars, position 1 on both); V19-FIX alone gave
9305091844641472748 and K-IDX alone 10808029678210119875.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Wave G: the last correctness wave before the 1.0 release candidate. It integrates nine lanes on main (
1a0e7ea1), plus three integration items. The shipped change is a squash of the commits listed at the end.What changes
UnrepresentableQuantityrefusal;The one remaining stop, a pending total that overflows binary64, is documented.
path_order_member is gone.stream_end(true);reserved1 != 0is refused;last_erroris cleared on C-layer refusals.trail_pointsC columns, excursion units, aborted-host reuse, per-bar rows for bare hosts and the partial-bar contract are corrected;f989e36(CORPUS3). The special-validation strategies build against the engine's build tree again.Hash values move once, inside the unreleased v19 epoch, in the single commit "INT25 v19 hash re-pin". Every moved witness is listed there. No trade moved anywhere.
Evidence (all on this exact tree):
f989e36(311 excellent, 1 anomaly), subset 30/30.b0ed4967: 0 coverage lost, 0 tier changes, 0 hard regressions, 0 leavers (a neutral verdict under the no-regression merge rule).🤖 Generated with Claude Code
https://claude.ai/code/session_01LifAW9e5J6gFx7gatuxETE