Skip to content

CR-150 batch A: L9c + L19o + L19n (integration) - #457

Merged
luisleo526 merged 26 commits into
core/cr150-p00-contractsfrom
core/cr150-batch-a
Oct 20, 2026
Merged

luisleo526 merged 26 commits into
core/cr150-p00-contractsfrom
core/cr150-batch-a

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

CR-150 batch A into integration: L9c (round 3), L19o (L19l parts A+B+C + L19m, citation re-anchor, reversal fix) and L19n, merged onto integration 5022017 with no conflicts.

  • Merge proof on this exact commit (tree 54a0dac41505): lab rj-20261020t052524-735003, release 1001/1001, debug 982/982, parity 312/312 with 0 moved, 0 missing, 0 schema violations (sink-off).
  • Gating reads: L19n SHIP; L9c FIXES of one help-text token (scripts/check_corpus_parity.sh:67, folded into the L9b re-merge); L19o FIXES of two stale citations (native-feature-parity.md:145, tests/heap_census_report.md:224), fixed in a docs-only follow-up commit.
  • The sink-on subset ran clean but its canary count was 0, so it proves nothing about sink-on yet; the canary wiring is CX-CANARY-WIRE.

🤖 Generated with Claude Code

luisleo526 and others added 26 commits October 20, 2026 04:48
Edit-only Codex executor output committed by the supervisor on integration b3c3923. Design, tests, wiring and the compile audit are in the lane's REPORT.md. Not yet proven on the lab; the four-step proof and any parity sweep follow on a squash proof commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Edit-only Codex executor output committed by the supervisor on integration b3c3923. Design, tests, wiring and the compile audit are in the lane's REPORT.md. Not yet proven on the lab; the four-step proof and any parity sweep follow on a squash proof commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Edit-only Codex executor output committed by the supervisor on integration b3c3923. Design, tests, wiring and the compile audit are in the lane's REPORT.md. Not yet proven on the lab; the four-step proof and any parity sweep follow on a squash proof commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Edit-only Codex executor output committed by the supervisor on integration b3c3923. Design, tests, wiring and the compile audit are in the lane's REPORT.md. Not yet proven on the lab; the four-step proof and any parity sweep follow on a squash proof commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Parts A (disk id table helper and adapter id maps) and B (kernel rosters) touch disjoint files and merge without conflicts.
…s A and B

Conflicts in include/pineforge/source/pine_adapter.hpp and src/source/pine_adapter.cpp resolved by a Sonnet executor: part A's cohort and entry-rank tables and part C's placement-minima and consumed-cycle tables keep their own storage; one adapter function binds the scratch directory for both.
…, sink canary line, keep-sink switch (fix round 1)

The temporary report sink is a named mode-0600 file unlinked at close, so every
SinkReader opens its own descriptor on Linux and Darwin (no /proc/self/fd or
/dev/fd branch). run_strategy.py prints
`sink_canary: probe=<id> bytes=<n> records=<n> trades=<n> ok` per probe and
PINEFORGE_KEEP_REPORT_SINK keeps the sink file of the named probes (or all).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…osters (executor result)

The closed-trade exit phase byte vector (one byte per closed-trade index) moves
to a ScratchFile-backed ExitPhaseStore with one fixed 4 KiB page. The cohort
live_units_by_origin map (104 B per distinct entry id) and the opened roster
vector (24 B per id) are released as soon as they are empty. Written on the old
base; merged onto the L19l head in the next commit.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…wing declarations kept)

Conflicts resolved by hand: PineExecutionAdapter::set_id_tables_directory is the
L19l definition plus `trade_exit_phase_.set_directory(directory)` (one
definition, the duplicate appended by L19m dropped); command_sequence_for_exit
and is_open_phase_exit are both non-noexcept (L19l-C and L19m throwing paths).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ir span buffers once (executor result)

The session-day memo (64 direct-mapped slots) and the certified-cycle ring (4
entries) were already fixed-size; what grew was the heap each slot owned, one
span buffer per new day until the table filled. Every slot's buffer is now
reserved once to a proven per-day bound (session_day_span_bound) and only
assign()ed afterwards, so live heap is constant. Table geometry, slot function
and eviction rule are unchanged. Two new source-free tests compare against the
memo-free calendar.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L19f #433; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L19f #433; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L19f #433; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
… checks the E records against the engine receipt (fix round 2)

scripts/run_corpus.sh and scripts/check_corpus_parity.sh keep the sink_canary:/sink_kept: lines of every probe, passing or failing, in one PINEFORGE_CANARY_LOG (unset: no log I/O, behaviour unchanged). New scripts/check_sink_canary_log.py requires exactly one well-formed ok canary per probe of the sweep's own list. run_strategy.py reads the engine's receipt count_e from the live handle and the canary compares the E records a fresh strict read decodes against it; the line gains `equity=<n>` before the verdict. The DESIGN 3.11 wording for the named temporary sink is in the design folder, outside this tree.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L2 #429; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L2 #429; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…ore removed, coded throws, portable fault injection, comments restored, citations refreshed

The exit-phase byte vector returns to its base form (its windowing is L8c's); KernelRosterStore is removed (cohort_exists is a range check plus the map); the two uncoded throws in pine_adapter.cpp now carry run-failure codes (report_sink_failed for a corrupt scratch cohort record, engine_invariant for a fixture backend selected after use); the fixture lifecycle is explicit and tested; the Pine prefix of 18 literals in id_pair_store.hpp (kernel-residuals check) is removed; fault injection opens the file by path instead of /dev/fd; the orphan fixture and a stale process comment are removed; the four deleted comment sentences of the base are restored; two witnesses (live settlement capacity release, part C typed failure) are added; 426 doc citations across seven documents are refreshed (digits only).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L2 #429; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L8c #455; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L8c #455; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Integration moved with L8c #455; this merge brings the lane up to it before its proof.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Digits only, no prose changed: every citation into a file this lane or L8c changed was recomputed from the final tree.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…t only the resident ones (behaviour fix, witness test)

L19l-A's disk-resident cohort table made the reversal cancellation loop (on_applied, full close) visit resident rows only, while a spilled cohort with no exposure can still own queued exits; cancellation is an action over the id, so spilling an eligible row suppressed it and changed command events, pending requests, hashes and later trades. The loop now snapshots the same two exemptions as the base (the applied snapshot's source id and any live entry opening on the new side) and streams every logical id in lexicographic order through the new DiskResidentIdTable::for_each_sorted_id, without restoring facts or building a history-sized vector. tests/test_adapter_reversal_storage.cpp runs a live reversal fixture with capacity release and cohort eviction on and off against the retained-storage run, comparing every trade field, recorded and callback hashes and the final hash.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@luisleo526
luisleo526 merged commit a35a64c into core/cr150-p00-contracts Oct 20, 2026
1 check 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