Purpose
Enable JointHarmonicGls without prebuilt calibration artifacts: derive the per-channel noise model once per LI run from pulse.background_before, with digest provenance. No manual model files or hashes.
Scope
- New calibration_source field on the joint GLS config: artifact (default, current behavior) or prepulse
- prepulse: derive once per LI run (pmoke li standalone or inside analyze), per channel, from background_before; record prepulse_calibration_digest
- Validation: prepulse requires empty calibrations (ambiguous mix is an error); artifact per-channel rule unchanged; boxcar_legacy unchanged
- Mirror the validation change in pmoke-config-core; bilingual reference updates via docs-export only
Non-goals
Per-window or per-shot adaptive refit; background_before redefinition; artifact deprecation or forced migration; boxcar changes; schema version bump; failure_policy extension; live hardware operation.
Acceptance criteria
- prepulse with empty calibrations starts on both analyze and standalone li and yields LI output
- Deterministic reruns: same digest and equivalent LI output
- Named-error abort (no fallback) on empty, adequacy-failing, or non-finite pre-pulse intervals
- artifact mode unchanged (missing entry still blocks); prepulse with non-empty calibrations is an error
- noise_mode=identity with prepulse still derives and records; boxcar output unchanged
- config-core parity with native validation; bilingual refs with zero generated drift
Compatibility impact
Existing configs behave identically (default artifact). One additive provenance digest field. New configs are unreadable by old binaries (deny_unknown_fields, one direction only).
Security impact
Recorded-data only, synthetic fixtures for tests, no external I/O. No private data in the repo or PRs.
Validation plan
Nix shell: fmt, clippy -D warnings, affected unit and integration tests, docs-export zero drift, EN/JA parity. Review 1 (design/behavior) and Review 2 (staged diff) per repo gates. Merge only on green exact head with explicit authorization; close this issue explicitly afterwards.
Purpose
Enable JointHarmonicGls without prebuilt calibration artifacts: derive the per-channel noise model once per LI run from pulse.background_before, with digest provenance. No manual model files or hashes.
Scope
Non-goals
Per-window or per-shot adaptive refit; background_before redefinition; artifact deprecation or forced migration; boxcar changes; schema version bump; failure_policy extension; live hardware operation.
Acceptance criteria
Compatibility impact
Existing configs behave identically (default artifact). One additive provenance digest field. New configs are unreadable by old binaries (deny_unknown_fields, one direction only).
Security impact
Recorded-data only, synthetic fixtures for tests, no external I/O. No private data in the repo or PRs.
Validation plan
Nix shell: fmt, clippy -D warnings, affected unit and integration tests, docs-export zero drift, EN/JA parity. Review 1 (design/behavior) and Review 2 (staged diff) per repo gates. Merge only on green exact head with explicit authorization; close this issue explicitly afterwards.