fix(cat): seal administration evidence before NumPy protocols - #1345
Conversation
|
Warning Review limit reachedNext included review available in 59 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (7)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
# Conflicts: # python/fast_mlsirm/__init__.py
|
Merge-forward: resolved |
|
@coderabbitai review |
|
Pin the baseline to protected main@9c12eab1 (v0.9.0). The open-PR queue collapsed from 74 to 6 since the previous snapshot; replace the stale PR table with the current six lanes (#1363, #1345, #1279, #1029, #1005, #998) including their merge-forward state. Update gap-matrix evidence columns for landed work: automatic Rust backend (#951/#1070), crossed multiple-membership (#1014), the Figma design-boundary ADR now at docs/adr/0016 via merged #1130, and cross-engine conformance (#1082) after #1077 closed as completed. No production code, formula, estimator, or release surface changed.
Closes #1344.
Closes #1347.
Closes #1354.
Defects
Protected-main CAT administration admission allowed
_lossless_signed_int64_indices()and_real_response_array()to start with unrestrictednp.asarray(...). Caller-defined top-level__array__providers could therefore synthesize or replace administered item identities or observed 0/1 response evidence during Python validation before Rust CAT ability estimation.After callback-safe carrier admission was established, exact NumPy EAP/MLE administration/response vectors could still be over-rank, length-mismatched, or longer than the calibrated item bank and yet reach value-wise validation plus dense
int64/float64marshalling first.Review then exposed an adjacent semantic distinction:
ability_standard_errortreatsadministeredas a set-valued mask, so duplicate-laden and multidimensional exact NumPy evidence must remain valid and be deduplicated withnp.unique. Removing the EAP/MLE uniqueness-specific preflight restored that compatibility, but left no absolute logical-size ceiling before signed-64 value scanning/dense conversion/deduplication. A tiny-backing broadcast view could therefore induce unbounded O(N) Python work on the standard-error surface.A later exact-head review found one more EAP/MLE ordering gap: when
administereditself was an inert exact vector longer than the calibrated bank butresponseswas an unsupported protocol-bearing provider, the wrapper delegated before applying the over-bank bound. The raw validator could then start dense/value-wise work on an administration that was already structurally impossible.RED → GREEN
Callback-free scientific evidence — #1344
07061034de7903b1f8427c58013dd8730b2ed2dc: hostile administered/response array providers must fail with zero callback execution and before compiled-core use.8a564d026808e6fe045e5c8273d174a896bd7ee0: admit only exact NumPy numeric arrays or exact built-in list/tuple vectors whose leaves are package-trusted concrete Python/NumPy numeric scalars before materialization.454ffaa10e6d72997b8c68da66afbc39a7a663d2: concrete NumPy scalar sequences normalize to package-ownedint64/float64Rust payloads.Bounded EAP/MLE administration metadata — #1347
4308892734594d87b74c571824b7d517d67f4dfc: over-bank length, length mismatch, and over-rank EAP/MLE evidence fail before dense conversion/native discovery.f4ee035809d2ab26ae9d4b06b334c70288c8a405+ public installationd1cac772cd336bc120e34e6fb9807fe8b66c109c: inert exact-container rank/length preflight preserves unsupported-provider callback/type semantics while rejecting structurally impossible unique administrations.4ede92ed0179c507ae37e5cf06e54cca73565f9c.b6e27dad5971089f970cec582de558104378a715: a 3-entry broadcast administration against a 2-item bank must fail before an unsupported response provider is inspected or invoked.8385299cbe96671215eccbc0f8913ab32e76c731: once exact administered metadata is available, apply the impossible-over-bank bound before inspecting the response carrier; unsupported administered providers still retain the original callback/type rejection path.ebcf17f8e56c469d2d152a7364327dfb1fce5654records the response-independent over-bank ordering contract.Standard-error set-mask compatibility and resource envelope — #1354
a099969ebef0bc1d60811369d66c08f0c3737efe→ GREEN38e3f20f2223658031dcbf7a559f2a9d9cf4f0c5: preserve duplicate-laden and multidimensional exact NumPyadministeredevidence; Rust receives the deduplicated set-valued mask.90b715138fd40378816781a3c6361e0cecda9714: with a test-only lowered ceiling, an exact NumPy broadcast mask must fail before_lossless_signed_int64_indices()or compiled-core discovery.f7d4b867783a289cae08d72bd7f16295664f3988: independently wrapability_standard_errorand bound exact NumPy/list/tuple mask evidence to 20,000,000 logical cells from inert metadata before signed-64 scans, dense conversion, ornp.unique. This does not impose EAP/MLE rank/uniqueness semantics on the set-valued mask.Scientific ownership
No CAT probability, likelihood, posterior/EAP/MLE, Fisher-information, item-selection, stopping, standard-error, or uncertainty arithmetic changes. Those production numerical paths remain Rust-owned. Python changes are validation, bounded materialization, marshalling, package adapter installation, and regression evidence only.
Current integration boundary
Exact head is
ebcf17f8e56c469d2d152a7364327dfb1fce5654, open / non-Draft / mergeable. Protectedmain@7006815a7a4de9e72af4a9dc12103188e2803ddc; fresh comparison is 23 commits ahead / 0 behind with merge base equal to current main. Effective current-main delta is six CAT validation/resource files.Fresh exact-head repository-local runs are newly generated and remain nonterminal: CI is pending and Security Scan, SAST Semgrep, and CodeQL are queued. Predecessor-head evidence does not transfer. Formal reviews still provide no independent approval. The addressed response-independent over-bank review thread is resolved; the remaining carrier-type thread is informational and describes the intentional callback-safe narrowing away from generic protocol-bearing array-likes.
Ready is not merge authority. Require the repository ruleset's two effective approvals, last-push approval, resolved blocking review threads, and every applicable protected central
Analyze (actions),close-empty,scan-pr-queue,required-workflow-bootstrap,coverage-evidence,opencode-review, Python/Rust/package/fuzz, dependency/OSV/Trivy/Scorecard/Strix, SBOM/provenance/release context before merge. No gate weakening, review dismissal, self-approval, force update, or destructive rebase is used.