Skip to content

Correct CLAUDE.md's solver-selection API, module list and file paths - #244

Closed
tschm wants to merge 1 commit into
bodono:masterfrom
tschm:fix/237-claude-md-drift
Closed

tschm wants to merge 1 commit into
bodono:masterfrom
tschm:fix/237-claude-md-drift

Conversation

@tschm

@tschm tschm commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Closes #237

Three drifts in CLAUDE.md, each verified against the code rather than inferred:

1. Solver selection documented as removed flags. It described selection via use_indirect, gpu, mkl, cudss, dense. Those were removed in 3.3.0 (78758c8, "Add LinearSolver enum, remove boolean solver-selection flags", #189) in favour of linear_solver= and the LinearSolver enum. Checked against a built extension — each removed kwarg now raises:

{'use_indirect': True} -> TypeError 'use_indirect' is an invalid keyword argument for this function

2. Incomplete extension list. It omitted _scs_accelerate, which meson.build:424 builds unconditionally under host_machine.system() == 'darwin', and described _scs_dense as conditional on use_lapack without noting that use_lapack defaults to true (meson.options:14), so it is effectively always built.

3. Nonexistent paths. Key Files pointed at scs/include/scsmodule.h and scs/include/scsobject.h; there is no scs/include/ directory. Also added the previously undocumented scs/py_ctrlc.c, which carries the process-shared SIGINT state that replaces scs_source/src/ctrlc.c in Python builds.

Two smaller things while in there: the vague Solver Variants paragraph now describes what _SOLVER_DISPATCH and _resolve_auto actually do (deferred imports, so an unbuilt backend raises ModuleNotFoundError at construction rather than breaking import scs), and the scspy.c header comment no longer refers to the front-facing Python code as "scs.py".

Docs and one C comment only — no behaviour change. Suite still green: 397 passed, 67 skipped.

🤖 Generated with Claude Code

Three drifts, all verified against the code:

- Solver selection was documented as the boolean flags `use_indirect`, `gpu`,
  `mkl`, `cudss`, `dense`. Those were removed in 3.3.0 (78758c8) in favour of
  `linear_solver=` and the `LinearSolver` enum, and now raise TypeError.
- The extension list omitted `_scs_accelerate` (meson.build builds it
  unconditionally on macOS) and described `_scs_dense` as conditional on
  use_lapack without noting that use_lapack defaults to true, so it is
  effectively always built.
- Key Files pointed at `scs/include/scsmodule.h` and `scs/include/scsobject.h`;
  there is no `scs/include/` directory. Added the undocumented `scs/py_ctrlc.c`.

Also replaced the vague Solver Variants paragraph with what `_SOLVER_DISPATCH`
and `_resolve_auto` actually do, and fixed the scspy.c header comment, which
still referred to the front-facing Python code as "scs.py".

Closes bodono#237

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@bodono

bodono commented Sep 7, 2026

Copy link
Copy Markdown
Owner

Thanks. CLAUDE.md is being removed from version control in #247 so it can no longer drift, and the scspy.c comment fix is included there. Closing.

@bodono bodono closed this Sep 7, 2026
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.

CLAUDE.md documents removed solver-selection kwargs and a nonexistent scs/include/ path

2 participants