Skip to content

Varying slopes: solve-result side-channel for unidentified directions (#69)#77

Merged
schroedk merged 1 commit into
feature/slopesfrom
slopes/69-unidentified-side-channel
Jul 7, 2026
Merged

Varying slopes: solve-result side-channel for unidentified directions (#69)#77
schroedk merged 1 commit into
feature/slopesfrom
slopes/69-unidentified-side-channel

Conversation

@schroedk

@schroedk schroedk commented Jul 7, 2026

Copy link
Copy Markdown
Collaborator

Implements the contract for #69 (contract only — nothing detects rank drops until #59 relaxes the slope guard).

  • UnidentifiedDirection { term, level, column } entries on SolveResult and BatchSolveResult; the batch list is shared across RHS (identification depends only on design + weights).
  • Coefficient-array contract documented on x: dropped slots hold minimal-norm 0, never NaN.
  • Python surface: unidentified on both result classes as (term, level, column) tuples, with stubs.
  • The issue's done-when assertion (constant-within-level slope → 0 + one entry) lands as Varying slopes: single slope on one factor (V=1) — centering + back-transform #59's first test.

Note: merging into feature/slopes won't auto-close #69 — close it manually after merge.

…nnel (#69)

UnidentifiedDirection (term, level, column) entries on SolveResult and
BatchSolveResult (shared across RHS), mirrored on the Python result
classes. Always empty until Solver::new accepts slope terms; dropped
slots hold minimal-norm 0, never NaN.
@schroedk schroedk merged commit 4e85d29 into feature/slopes Jul 7, 2026
3 checks 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