You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracking issue for the eight verification/refactor items reconciled during the July 2026 issue audit but deliberately deferred — each is a larger refactor that needs a fresh context to land well rather than being rushed at the tail of the audit session.
The audit itself resolved 22 of 30 issues (9 closed as already-resolved or not-tractable, 12 across the PRs listed under Blocked by below, and #130 updated and kept open). This meta issue coordinates the remainder.
Deferred work
Each item below needs a production seam extracted first, then the tests/proofs the original issue asked for.
Hypothesis stateful tests for metrics/tracing/logging hooks (cuprum/adapters/metrics_adapter.py) #78 — metrics_adapter + logging_adapter: add stateful machines (counters/histograms and log records created exactly when intended across event sequences). Tracing is already done — mirror cuprum/unittests/test_tracing_span_stateful.py; _LabelRecordingCollector in _adapter_test_support.py is a ready collector seam.
Rust: snapshot and integration tests for consume_stream UTF-8 replacement output #105 — Rust-level snapshot tests for consume_stream UTF-8 output (ASCII, multi-byte split across buffers, invalid → U+FFFD, incomplete trailing sequence). The four categories are already oracle-tested on the Python boundary (cuprum/unittests/test_rust_streams.py::TestRustConsumeStream); this adds insta/syrupy snapshots and a Rust-level integration test. Touches lib.rs/lib_tests.rs, which are contended by the landed PRs — stack on the latest.
For context: #86/#87/#88/#89 were closed during the audit because their functions carry std::io::Error (whose bit-packed representation makes CBMC symbolic execution non-terminating) or concern OS file-descriptor state Kani has no model for — their behaviours are exhaustively proptest/runtime-verified instead. #84 is different: its extracted state machine is designed to be io::Error-free, so Kani should apply there.
Blocked by
The landed audit PRs (merge these first; #228 is stacked on #227):
A full per-issue reconciliation (findings, current-code locations, and implementation notes) was recorded at /tmp/cuprum-audit-progress.md during the audit session.
Tracking issue for the eight verification/refactor items reconciled during the July 2026 issue audit but deliberately deferred — each is a larger refactor that needs a fresh context to land well rather than being rushed at the tail of the audit session.
The audit itself resolved 22 of 30 issues (9 closed as already-resolved or not-tractable, 12 across the PRs listed under Blocked by below, and #130 updated and kept open). This meta issue coordinates the remainder.
Deferred work
Each item below needs a production seam extracted first, then the tests/proofs the original issue asked for.
_pipeline_wait: extract a pure, clock-injected transition method(state, completed_idx, exit_code) -> decision, then add a HypothesisRuleBasedStateMachineproving first-failure-wins, timing-slot population, and correct termination decisions._pipeline_streams: introduce an FD-state object + context manager for the pause/blocking lifecycle, then Hypothesis fault-injection over FD-extraction /os.set_blocking/rust_pump_streamfailure points asserting blocking mode is always restored, plus a property over_surface_unexpected_pipe_failures._subprocess_timeout._handle_subprocess_timeoutand_process_lifecycle._terminate_pipeline_remaining_stages: Hypothesis/CrossHair for timeout-payload consistency across both exception arms, and idempotent cleanup with no double-termination.metrics_adapter+logging_adapter: add stateful machines (counters/histograms and log records created exactly when intended across event sequences). Tracing is already done — mirrorcuprum/unittests/test_tracing_span_stateful.py;_LabelRecordingCollectorin_adapter_test_support.pyis a ready collector seam.pump_stream_files_readwrite: extract a pureReadEvent/WriteEventstate machine (deliberatelyio::Error-free, so it is Kani-tractable unlike the splice/io paths), then proptest monotonic-total / stop-after-broken-pipe / drain-continues / fatal-propagate, plus a bounded Kani harness.tests/helpers/maturin.py(394 lines / 12 functions → 2–3): inline the pin-reading logic intotest_maturin_build.pyand drop the speculative platform-normalisation. Python-only, so no contention with the Rust PRs below.consume_streamUTF-8 output (ASCII, multi-byte split across buffers, invalid → U+FFFD, incomplete trailing sequence). The four categories are already oracle-tested on the Python boundary (cuprum/unittests/test_rust_streams.py::TestRustConsumeStream); this addsinsta/syrupysnapshots and a Rust-level integration test. Toucheslib.rs/lib_tests.rs, which are contended by the landed PRs — stack on the latest.Why Kani could not close #84's siblings
For context: #86/#87/#88/#89 were closed during the audit because their functions carry
std::io::Error(whose bit-packed representation makes CBMC symbolic execution non-terminating) or concern OS file-descriptor state Kani has no model for — their behaviours are exhaustively proptest/runtime-verified instead. #84 is different: its extracted state machine is designed to beio::Error-free, so Kani should apply there.Blocked by
The landed audit PRs (merge these first; #228 is stacked on #227):
<9.1(Pin pytest below 9.1 until pytest-bdd supports its fixture-registration API #208)Reference
A full per-issue reconciliation (findings, current-code locations, and implementation notes) was recorded at
/tmp/cuprum-audit-progress.mdduring the audit session.