Pre-flight channel validation: existence, retrievability class, per-channel rate, liveness, injectability
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
Research direction
Start with CDSBackend.from_config and the existing one-second hardware-rate probe, then read the linked spec §4.3.5 and §4.3.1 and the #5 fake harness. Done means missing, wrong-rate, zero-variance, and non-injectable channels fail pre-flight before the excitation is constructed, with no hardware required.
Written by the indexing model from the issue text.
Description
Spin-out of #32 · Stage D (#13) · spec §4.3.5, §4.3.1.
Covers #32 items 2, 6, 7 and part of 9.
Nothing here has been observed. Every run to date has been a closely supervised single-operator
session where a human noticed anything wrong. This is architecture for the multi-user, unattended
case, filed now because the seam is far cheaper to install than to retrofit.
Why here, and why it is free
CDSBackend.from_config already probes the hardware rate once with a one-second read (spec §4.2).
Extending that same probe costs no extra hardware time and still happens strictly before any
injection.
That matters more than it looks, because of the constraint in spec §4.3.1: many front-end channels
are not recorded to disk. They must be captured live from the framebuilder or they are
unretrievable — and that includes the <IFO>:<MDL>-<optic>_..._EXC excitation readback that §2.1
makes mandatory (read() must never synthesise X). So a channel-name mistake discovered after an
injection costs an injection, an operator approval under Rule 2, and data that cannot be re-fetched.
Discovered before, it costs nothing.
What to establish, per channel, for every channel the campaign will touch
- Existence — #32 item 7 (invalid readback channel name).
- Retrievability class — recorded (frame-backed) vs test point (live only). Fast non-EPICS
channels normally carry a_DQsuffix, so_DQis a good prior for "has look-back" — but
it is a heuristic, not a contract, and the class must be confirmed by probing. - Rate, per channel, and §4.2's integer-ratio conditions checked against it.
_DQchannels are
normally served at a lower rate than the corresponding full-rate channel (properly
decimated), sofs_hwcan no longer be one global number — #32 item 9. - Liveness — finite, and variance above a floor. This is the check #18 already specifies for
Pyy, generalised to every channel; it is what catches a readback test point that has been
cleared by another user before an injection is spent — #32 item 2. - Injectability, for excitation channels — structurally, an excitation channel must be a fast
front-end test point, never a slow read-only EPICS record — #32 item 6.
Scope boundary
Component 1 ships the structural injectability check. The site-specific channel-naming tables are
site-profile data and belong to #26. Nothing site-specific is hard-coded here.
Known consequence to carry, not solve here
An X/Y rate mismatch (full-rate excitation readback for X, lower-rate _DQ for Y) breaks the
exact filter cancellation spec §7 relies on: H_meas = H · D_Y/D_X, a systematic magnitude and
phase error growing toward Nyquist. Agreed default is warn and proceed, not refuse. Dividing
D_Y out needs site-supplied filter data (#26), and the filters' type is itself unknown — plausibly
IIR rather than FIR, unconfirmed.
Verification
All on the #5 fake harness, no hardware: a missing channel, a wrong-rate channel, a dead (zero
variance) channel and a non-injectable channel each fail pre-flight with the excitation never
constructed — not merely never started.
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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from CaltechExperimentalGravity/system_ident
-
Difficulty 4/5 3-5 days Newbie friendliness 35/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 15/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
enhancement
Difficulty 5/5 Over a week Newbie friendliness 35/100
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
All issues in CaltechExperimentalGravity/system_ident
Similar issues
-
README.zh-CN/ja/es still hard-code 501 test counts after README.md went count-freePossibly taken @Aaqibhafeezkhan claimed this today. Openbeginner documentation good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
BistaDinesh03/critique#164 · 1 comment ·
Maintainers usually reply within 1 day
-
bug IO
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
MrNeRF/LichtFeld-Studio#3824 ·
Maintainers usually reply within 1 day
-
bug confirmed issue
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
open-webui/open-webui#33200 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
-
The changelog workflow excludes otelbot but not dependabot, so every Dependabot pull request fails the changelog checkPossibly taken @ocelotl claimed this today. Open
Difficulty 1/5 Under an hour Newbie friendliness 82/100
open-telemetry/opentelemetry-python#5825 ·
Maintainers usually reply within 2 days