Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

Stage F: wire --cds (CLI, build_cds_backend, BACKENDS registry, mandatory channels.drive)

Open
#20 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
42/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
python
Domain
backend, cli

Research direction

Read the linked CDS design spec and plan first, then inspect cli.py, config.py, loop.py, and configs/rtsfreerun_hsts.yml. Trace the existing backend selection and channel validation entry points before implementing the --cds wiring, registry, configuration, mandatory drive validation, site-agnostic example, and band warning. Done means the CDS backend is selectable without the old refusal and all stated configuration and safety requirements are covered.

Written by the indexing model from the issue text.

Description

enhancement

Stage F (spec §4, §6). The backend exists but nothing can reach it. Note --cds currently
appears exactly once in the whole repo — in the roadmap note, as future work.

cli.py
  • Add --cds.
  • Remove the hard refusal at src/system_ident/cli.py:62 ("the CDS-hardware backend is not
    available yet").
  • (_confirm and --yes are handled in the approval-gate issue.)
config.py
  • build_cds_backend(...) beside build_twin_backend (src/system_ident/config.py:144) and
    build_rtsfreerun_backend (src/system_ident/config.py:162).
  • A BACKENDS registry mirroring ESTIMATORS / DESIGNERS (src/system_ident/config.py:31), so
    the backend choice stops being a pair of hard-coded booleans. Note MIMOTwinBackend, ReducedPlantBackend
    and DARMBackend currently have no config path at all — they are constructed directly in
    experiments/ and tests. A registry is the place to fix that later.
  • A cds: section — transport: awg_nds | twin, start_buffer, the site IFO key — validated in
    REQUIRED (src/system_ident/config.py:37).
  • channels.drive mandatory for this backend — a ConfigError, not a warning.
    src/system_ident/loop.py:90 silently falls back to exc[d] and _warn_open_drive_monitor
    (src/system_ident/loop.py:274) only warns. On hardware that fallback, combined with a synthesised
    X, is the measured 200%-error configuration (see the read() invariants issue).
New config

src/system_ident/configs/cds_twin_transport.yml, modelled on
src/system_ident/configs/rtsfreerun_hsts.yml — which already has the right shape
(channels.excitation/drive/readback, measurement.t_ramp, safety.actuator_sat). Deliberately
site-agnostic: no 40m channel names, no C1. Site specifics are the deferred site-profile layer.

Band guard

warnings.warn when freq_max > 0.8 * (fs/2), explaining the cost is SNR, not bias. The sibling
project needed a hard --f-max because scipy.signal.decimate uses cheby1(8, 0.05, 0.8/q), measured
−9.04 dB at 0.9·Nyquist and −22.37 dB at Nyquist; resample_poly's Kaiser FIR is +0.02 dB at 0.8 and
−0.67 dB at 0.9, and being LTI and applied to both X and Y it cancels exactly in Ybar/Xbar. Record
that cancellation argument in the docstring — it is a second, independent reason X must never be a
synthesised array.

pyproject.toml:34 already reserves the cds = [] extra; no change needed there.


Campaign: CDS hardware backend · branch feat/cds-hardware-backend
· spec · plan · handoff
Code is deferred until the plan and issues have been reviewed.

Dominant language
Python
Stars
0
Forks
1
PR merge metrics
No merged PRs in 30d

Getting set up

This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from CaltechExperimentalGravity/system_ident

All issues in CaltechExperimentalGravity/system_ident

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.