Skip to content

cr150 L6b-1: report sink ABI, receipt, header and trailer; E and T at fill - #431

Merged
luisleo526 merged 22 commits into
core/cr150-p00-contractsfrom
core/cr150-l6b1
Oct 19, 2026
Merged

luisleo526 merged 22 commits into
core/cr150-p00-contractsfrom
core/cr150-l6b1

Conversation

@luisleo526

Copy link
Copy Markdown
Collaborator

CR-150 lane L6B-1, per DESIGN rev 6 and its PARALLEL-PLAN row; the lane's REPORT.md has the file:line detail. It's built on L6a (#416, merged). The base is the integration branch core/cr150-p00-contracts.

Lab: rj-20261018t210515-402928 green on every stage except preflight doc-reverts. That's a known class: an earlier lane commit deleted a docs sentence without naming its source, which can't be fixed by adding commits. The squash message must name 4c78f39, which clears it. The gating read by CORE-TOP comes before merge. The sink format of DESIGN 3.7 version 1 is fixed.

🤖 Generated with Claude Code

Add the P00-only runtime witness, 1,000,000 checked-in Python repr samples and all 2,098 binary64 powers of two, UTF-8 cases, writer artifacts and strict-reader refusals. Expected red on a6abb14: undefined report_sink formatting and LineWriter implementations; pf_sink is also absent. Compilation and execution are reserved for CORE-TOP lab per the lane brief; no observed red diagnostic is claimed.
Implement the FIPS 180-4 block schedule, streaming updates, copy-on-finalize digest and lowercase hex encoding. Extend the already-red format unit with NIST vectors and every two-part split of the short messages. Lab compilation and execution remain pending per the executor brief.
Add Python repr-compatible binary64 rendering, byte-validating UTF-8 escaping, the seven fixed descriptors, E/T serialization and SHA-counted trailers. Buffer checked writes in 64 KiB and latch validation or I/O failure before publication. Keep P00 declarations unchanged. S2 uses internal WriterError and cached repeated finalization, with runtime error-code mapping reserved for L6b-1. No build or tests were run on this machine.
Validate fixed ordered v1 descriptors, typed records, exact Python f64 lexemes, bounded UTF-8 JSON lines and the final counts/SHA receipt. Yield immutable typed rows in one pass and expose completion only after EOF. Extend the format witness with an exact 1 MiB boundary, zero/nonzero descriptor shapes, finalization lifecycle and malformed-stream cases. Execution is deferred to CORE-TOP lab as required.
Keep Python assertions enabled regardless of PYTHONOPTIMIZE, suppress bytecode artifacts and retry an interrupted child wait. This only strengthens the pending lab witness; no build or test was executed here.
Apply CORE-TOP wave1 and the Fable gating read: add report_sink_writer.cpp and sha256.cpp to PINEFORGE_KERNEL_SOURCES, one per line, and append the format unit inventory/registration after the pinned test lines.

Mechanically re-anchor only shifted top-level CMake citations. Preserve the prose and claims recorded by 47184e5 and 868aa65; no sentence is reworded. Keep all C++/Python bodies, P00 declarations, fixture evidence and other lines unchanged.

No configuration, compilation, tests or guards run in this fix round per the executor brief. Commit hooks are disabled for this invocation to honor that instruction; lab proof remains with CORE-TOP.
No local build or execution, per CORE-TOP. Generated run-failure enum and catalog-diff companions remain an explicit scope handoff; this head is not a verification claim.
Merge refs/heads/pf/cr150-p00-contracts at 0faaf06 without rewriting lane history. Keep both sides of the appended CMake registrations and resolve doc citations against the merged CMake and consumer source; retain the sink export inventory.

Explicit acknowledgement of the 4c78f39 sentence replacement in 102db33: README.md and docs/pages/index.md changed "The counts below include recorded outputs and describe the released 1.5.0 API." to current-API wording because CR-150 adds the report sink. The old sentence replacement was unnamed in that historical commit; record its intent here without changing that commit or the doc-revert guard.
The old negative fixture issued Pine strategy_entry calls before the selected window. Pine captures those calls as pre-roll intents, so the setup was valid and produced a complete receipt. Preserve every incomplete-receipt, empty-digest, failure-status and no-trailer assertion; submit a real native-host carry-in instead, require the exact selected capture failure, add the valid Pine pre-roll as a sink-off/on positive control, and print the failing case and error when a receipt contradicts the contract. No production receipt behavior or check is changed.

Separate the documented 83 compiled-strategy runtime symbols from the 43 native-host symbols instead of labelling their sum as the former inventory. This explicitly replaces that inventory sentence from 102db33.

Named documentation replacement acknowledgement for 4c78f39 and 102db33: README.md and docs/pages/index.md replaced "The counts below include recorded outputs and describe the released 1.5.0 API." with a current-API sentence because CR-150 adds the report sink. The replacement is intentional and is named here without rewriting the old commit. The unmodified per-commit doc-reverts checker still requires a CORE-TOP ruling on its existing retrospective --message-from audit input for the old 102db33 omission; no checker or CI invocation is weakened or changed.
CR150-CX fix round 3: the requested full ref resolves to 23834ff, beyond 0faaf06. Preserve the L6B1 sink changes and API inventories alongside the incoming L1, L6a and L16 work. Carry the conflicting documentation citations to the merged source, retain the pinned CMake line 3267, and register the shared format test once while keeping every test from both parents. No build, test, generator or guard was run locally.
Restore "The counts below include recorded outputs and describe the released 1.5.0 API." verbatim in README.md and docs/pages/index.md. Commit 102db33 removed that sentence from 4c78f39 without naming it. This new commit explicitly replaces its alternative sentence, "The counts below describe the current API, including recorded outputs and the report sink.", and preserves the numeric inventories. CR150-CX fix round 3; no history rewrite and no local build, test, generator or guard execution.
CR150-CX fix round 4: the requested full ref now resolves to 9464717 and imports the L8b percentage-prefix slice. Keep both the report-sink and percentage-prefix state and their existing hash waivers. Preserve all test registrations after pinned line 3267 and register the shared format test once. No builds, tests, generators or guards ran on this machine.
CarryInFixture leaves its accepted entry open. NativeRunSpec defaults report_open_position_at_end to false, so selected capture has no trade row and reaches the open-lot refusal instead of the expected trade-row refusal. Opt this fixture into the existing KernelRecorded range-end row, preserving the exact engine_invariant and trade-message assertions and all incomplete-receipt/no-trailer checks. Print the actual selected error code and text before those assertions. Red evidence is the release and debug CTest abort at line 454 in lab rj-20261018t193610-327bb6. No local build, test, generator or guard execution.
Take the CMKD integration at 5be8c54 without rewriting history. tests/CMakeLists.txt is byte-identical to the integration parent in this merge; the L6b registration relocation follows as a separate commit under the CORE-TOP 09:36 ruling. All other imported files are taken from integration unchanged. No build, test, generator or repository Python was run locally.
Move the format-test list/registration pair into tests/cr150.d/core-cr150-l6b1.cmake and remove the integration copy to prevent duplication. Preserve the real-module conditional block byte for byte after the sorted include loop, inside the required core-cr150-l6b1 fences, under the binding CORE-TOP 09:36 L6b ruling. No source logic or test assertion changes.

OPEN for CORE-TOP: the supplied check_cr150_cmake_d.py still requires the include loop to be the last statement, so its tail rule conflicts with the required fenced footer. Leave the checker unchanged as instructed and record the incompatibility in the m8 report. No local build, test, generator or repository Python execution.
Import integration 09a8a45, including L19a/L19c/L19d/L8d/L3/L4 and CMKD2, without rewriting history. Source files merged automatically; no manual source hunk or accepted logic change. Resolve only the two documentation conflicts by retaining both inventories and integration source citations/content pins, with run_rich at 10561-10611. The two changed C-ABI pins were recomputed from the exact cited text with no final newline. Take tests/CMakeLists.txt entirely from integration here; restore the stable owned CMake layout in the second commit.

Preserve the accepted L6B1 inventory updates from 102db33. Explicitly replace integration wording "are a second, disjoint inventory beside the 80 runtime exports" and "80 runtime `PF_API` symbols: native configure, the 12-symbol stream family, pending-order views, broker-state hash, security feeds, FX curve, reports." and "The 80 compiled-strategy runtime symbols in `c_abi.cpp` are distinct from the native C host API in `native_c_host.cpp`: the latter exposes submit, replace, cancel and a callback table to a C host." with the existing 83-symbol inventory that includes the three sink exports. Also retain the ADR update replacing "`src/c_abi.cpp` implements the **80** codegen-facing runtime `PF_API` symbols that `scripts/check_c_abi_runtime.py` pins by name, and `src/native_c_host.cpp` implements the **43** additive symbols of `<pineforge/native_c_api.h>`." Only those inventory numbers change; all feature claims and table rows remain.

No build, test, generator, guard, repository Python or lab dispatch ran locally. Commit hooks and signing are disabled.
Restore the existing full-stem core-cr150-l6b1 block after the integration include loop, preserving the report_sink_l6b1_strategy module name and every target/test setting byte for byte. Keep the original unconditional format-test pair in tests/cr150.d/core-cr150-l6b1.cmake and remove the integration root copy to avoid duplicate registration. The lane file and fenced block match the supplied CMKD2 real-L6b1 fixtures. No accepted source logic, test assertion, other lane file or fence changes.

The m8 checker/layout OPEN is addressed by the imported CMKD2 implementation, which is retained byte-identical to 09a8a45. No local build, configure, test, guard, generator, repository Python or lab dispatch was run; final lab proof remains CORE-TOP work.
@luisleo526
luisleo526 marked this pull request as ready for review October 19, 2026 07:29
@luisleo526
luisleo526 merged commit 39a718b into core/cr150-p00-contracts Oct 19, 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