LabOne Q Experiment Maintainer
Scope
Use for development and debugging of:
- •
experiments/*.py - •
analysis/*.py - •
qpu_types/fixed_transmon/*.py - •validation notebooks under
examples/selectiveRIP/*.ipynb
Hard Rules
- •Modify paired experiment/analysis modules together when behavior changes.
- •For new module requests, run a Comprehension Gate before coding (no implementation until user confirms the brief).
- •Enforce acquisition contract in
create_experiment(...)with explicit errors. - •Keep workflow branching that depends on values inside
@workflow.task(avoidReferencelogic in workflow body). - •Treat workflow-body values as
Reference; do not call dict methods on unresolved references. - •Persist calibration values only through
new_parameter_valuesand apply withupdate_qpu(...). - •Save workflow artifacts only inside
@workflow.task. - •In notebooks, append validation cells; do not rewrite existing cells unless requested.
- •Keep workflow option values concrete and type-safe (
bool,str,int, etc.); do not pass unresolvedReferenceinto option setters. - •Keep tune-up option defaults explicit (
do_analysis=True,update=False) unless intentionally overridden.
Workflow
- •If this is a new experiment/analysis request, complete Comprehension Gate and get user confirmation.
- •Read both experiment and analysis files for the target flow.
- •Implement behavior change in experiment sequence/options and analysis outputs consistently.
- •Verify update path (
old_parameter_values/new_parameter_values) for persisted parameters. - •Verify
temporary_parametershandling andqpu.copy_qubits()usage when runtime overrides are needed. - •Add or update notebook validation cells (pass/fail style).
- •Run quick syntax checks before finishing.
Validation
- •Workflow executes without
OptionBuilder/Referencetype errors. - •Matrix/count outputs are finite and normalized on the correct axis by definition.
- •Reconstructed density matrix checks: Hermitian, trace≈1, min eigenvalue ≥ tolerance.
- •If
update=True, expected parameter keys are present innew_parameter_values. - •If workflow output is needed in notebooks, materialize task outputs and handle
workflow_result.tasksasTaskView/sequence (not plain dict).
Do Not
- •Do not call
workflow.save_artifactfrom notebook helper functions. - •Do not silently coerce unsupported acquisition modes.
- •Do not change existing notebook cells when append-only validation is sufficient.
- •Do not use deprecated
update_qubitsin new code; useupdate_qpu.
References
For concrete error signatures and fixes, see references/common-errors.md.
For doc-backed workflow contracts and update semantics, see references/applications-library-contracts.md.
For User Manual guardrails (Reference/TaskView/acquisition/debug contracts), see references/laboneq-user-manual-guards.md.
For request understanding and implementation standardization, see references/comprehension-gate.md.
Reference trigger policy:
- •Core layer first (
laboneq.dsl,Experiment,acquire_loop_rt,AcquisitionType, compile/session/device mapping): readreferences/laboneq-user-manual-guards.md. - •Applications layer first (
laboneq_applications,experiment_workflow,.options(),do_analysis,update,update_qpu,temporary_parameters): readreferences/applications-library-contracts.md. - •New module request (
make new experiment/analysis,add workflow from scratch, major redesign): readreferences/comprehension-gate.mdfirst, then continue with layer-specific references. - •Boundary changes (experiment + analysis + update path edited together): read both references, then cross-check with
references/common-errors.md. - •Error-first fallback:
Reference/OptionBuilder/TaskView/update_qpuissues -> applications contracts + common errors; compile/device/signal-map issues -> user-manual guards + common errors.