refactor(linking): move fixed-anchor transformations to Rust - #663
refactor(linking): move fixed-anchor transformations to Rust#663seonghobae wants to merge 1 commit into
Conversation
|
Important Review skippedDraft detected. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
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 |
|
@opencode-agent address Exact bounded GREEN implementation handoff for issue #662 / Draft #663. Final pre-write guard is mandatory: immediately refetch #663, protected The intended production-boundary RED is now proven. Exact CI run Implement the minimum GREEN only:
After one coherent GREEN completion, stop source writes to this branch and leave exact-head gate/review/merge decisions to the maintainer loop. |
|
@opencode-agent address Fresh current-main reconciliation + GREEN handoff for Draft #663. The prior handoff was explicitly bound to old protected Fresh compare is Then implement the minimum issue #662 GREEN: Rust-owned fixed-anchor scale/shift plus theta/alpha/b transformation, thin |
|
@opencode-agent address Fresh current-main GREEN handoff for issue #662 / Draft #663. Immediately before any write, refetch #663 head, protected Reconcile protected main non-destructively first, preserving all newer accepted backend/security/public-contract behavior. Then complete only the already-proven GREEN: move current fixed-anchor scale/shift plus linked theta/alpha/b transformation arithmetic into |
|
@opencode-agent address Fresh current-main reconciliation + GREEN handoff for Draft #663 after protected-main movement. Immediately refetch source head, live Fresh compare is Then implement the minimum #662 GREEN only: Rust-owned fixed-anchor scale/shift and linked theta/alpha/b transformation, thin |
|
@opencode-agent address Reacquire the bounded source-writer lease for Draft #663 / issue #662 only if a final refetch still shows source head Fresh compare is diverged: this branch has exactly one unique fail-first test path and is 186 protected-main commits behind, merge base The valid RED from CI
Do not widen into another linking/equating method, dependencies/workflows/version/release, hosted persistence or canonical #604/#621 docs. Keep Draft; exact-head review/Ready/merge returns to the maintainer loop. |
|
@opencode-agent address Fresh replacement implementation lease for issue #662 / Draft #663 after protected-main movement invalidated the prior exact-base handoff. Immediately before writing refetch source head, live protected Implement only the fixed-anchor Rust ownership slice: move current scale/shift and linked theta/alpha/b transformation arithmetic into Add direct Rust↔public parity plus deterministic known-affine recovery with coefficient/linked-parameter bias/MAE/RMSE, full malformed/duplicate/out-of-range/factor cases, primary APA 7 equation/source links (Stocking & Lord; Kolen & Brennan), rustdoc/docstrings and authoritative changelog after GREEN. CPU-f64 remains reference; benchmark before GPU. Then run one unchanged final head through Python 3.12/3.14, Rust/PyO3/package/GPU-existing/fuzz/Security/SAST/coverage/current-head review. Do not widen into other linking methods, canonical #604 docs, dependencies/workflows/version/release/hosted state. Stop on any source/base/lease movement. |
|
@opencode-agent address Fresh current-main clean-lineage reconciliation/replacement lease for Draft #663 / issue #662. Immediately before any write refetch exact source head Fresh compare is Because this is a one-test branch almost 200 protected-main commits behind, prefer exactly one clean-lineage replacement from current protected main over conflict-heavy ancestry repair: carry the same fail-first ownership test and exact RED lineage into the replacement PR, make that replacement the sole #662 implementation authority, then close #663 with precise supersession lineage. Never leave both branches active. Implement only the bounded fixed-anchor linking ownership slice:
Stop writing immediately if source/base/lease state moves. |
|
Superseded by clean-lineage Draft #737. Fresh evidence on protected |
Production numerical-ownership gap
Advances #662. Protected
maina7be9eb8ca0b807364173f8471fc300e3cf9350fstill computes fixed-anchor scale/shift coefficients and transformed theta/alpha/b directly in Python/NumPy insidelink_fixed_item_parameters(). Those values determine score-scale comparability, so this is production psychometric linking arithmetic and must have one Rust numerical owner.Intentional fail-first boundary
Exact test-only head:
78c08f6898c1f24332e95bc614b346d121b2b7ca, directly based on current protected main.tests/test_linking_fixed_anchor_rust_ownership.pyinstalls an unmistakable compiled-core sentinel forlink_fixed_item_parametersand requires the public Python API to obtain linked theta/alpha/b plus scale/shift evidence from that Rust result. Current protected-main production code never consults the compiled core in this function, so the intended RED is the zero-call/sentinel mismatch after normal package setup and import. Setup/import/fixture/changelog failure is not valid RED.Minimum GREEN after exact RED proof
mlsirm-core; reuse existing linking primitives if and only if the estimand is exactly equivalent.MLSIRMParams, and evidence transport only. Missing compiled capability fails closed; no ordinary Python numerical fallback remains.Primary scientific basis already verified for this slice includes Stocking and Lord (1983), Applied Psychological Measurement, https://doi.org/10.1177/014662168300700208, and Kolen and Brennan (2014), Test Equating, Scaling, and Linking, https://doi.org/10.1007/978-1-4939-0317-7.
Keep Draft until RED→GREEN history and all exact-head gates are complete.