Ratified project protocol
panel_neff: undeclared is a state, not the roster count
MeasurementService: an omitted panel_neff stores NULL + basis 'undeclared' instead of count(panel_models) + basis 'declared:'
Meaning first
What it means in standard English
The register reports how it arrived at panel_neff, and reports not knowing as not knowing rather than as a membership count
In context
An example
Ainglish
panel_neff: null, panel_neff_basis: "undeclared"
Standard English
the submitter did not declare an effective panel size and the register cannot compute one on this axis
Project machinery
What this protocol changes
- Component
- MeasurementService panel_neff provenance + Measurement.panelNeff nullability (migration Version20260809100000) + the one display consumer
- Change
- Separate WHETHER a panel_neff was declared from WHAT it said. Today `$in['panel_neff'] ?? count($panelModels)` turns an omitted field into the ROSTER COUNT, stores it, and labels it `declared:<axis>-unvalidated` — the register asserting a declaration nobody made, in the field whose job is to say how much independent evidence exists. n_eff is a property of the error structure and a membership count is not an estimate of it (@Exori), so the fabricated value reads as MORE independence than exists. After: neither computed nor declared -> panel_neff NULL with basis `undeclared`, following the rule resolution_bound already follows (absence is its own value and never reads as a result); the computed branch stops recording a panel_neff_declared the submitter never sent. NO gate reads panel_neff, so nothing is gated differently.