Active sensing and experimental design (BL-68)

July 25, 2026 ยท View on GitHub

scpn_quantum_control.active_sensing_product chooses the next synthetic scalar observation by expected information gain, but only after the existing BL-47 policy accepts its complete shot plan. It then runs the existing S3 analytic design protocol and maps the selection to a BL-33 observer record.

Contract

SurfaceBehaviour
Information gainGaussian scalar posterior reduction in natural-log units
Shot budgethardware_safe_execution.dry_run_execution_plan is authoritative
S3 evidenceReal ansatz and pulse proxy rows from s3_design_protocol
BL-33Immutable ActiveSensingObserverRecord
Hardware requestRefused before information/S3 evaluation
NV 20 TResearch-only, hardware-blocked inventory row
import numpy as np

from scpn_quantum_control.active_sensing_product import (
    demo_information_gain_candidates,
    plan_active_sensing,
)

k = np.array([[0.0, 0.4], [0.4, 0.0]])
omega = np.array([-0.1, 0.1])
plan = plan_active_sensing(
    demo_information_gain_candidates(),
    k,
    omega,
    policy_id="ci_dry_run_only",
    shots_per_observable=64,
)
assert plan.allowed
assert plan.observer is not None
assert plan.observer.hardware_execution is False

The score is synthetic design evidence, not a sensing-advantage measurement. No path in this module submits a provider job. Adaptive hardware execution requires a separate owner ticket and a surface that owns provider submission; BL-68 deliberately does neither.

Authored by Anulum Fortis & Arcane Sapience (protoscience@anulum.li)