Follow-up from #50, filed so the decision is recorded rather than to reverse it.
RelayResolver is exported from the package root. In 0.7.0 its register(..., always_on=) parameter widened from "relay-behavior is always-on, or explicit always-on: true" to the full locked bit, which now includes non-controllable. The name was kept deliberately, and the reasoning in #50 is sound: SPAN commissions this flag as alwaysOn and publishes relay-controllable as its inverse, so the name is the hardware's rather than a subset of the new meaning.
The residual risk is a producer that drives RelayResolver directly and computes the flag itself the old way (relay_behavior == "always-on"). It re-unlocks a circuit whose $settable the emitter has already omitted from the published description, restoring exactly the inconsistency #49 removed, silently.
Two things would close it, either or both:
- Export
manifest_physics.relay_locked from the package root. The new docstrings point producers at it as the single supported derivation, but it is the one name in that module not re-exported (CircuitPhysics and ManifestPhysicsView are), so a caller following the docstring has to reach into a submodule.
- Rename the parameter to
locked=, keeping always_on as a deprecated keyword alias for one release.
Follow-up from #50, filed so the decision is recorded rather than to reverse it.
RelayResolveris exported from the package root. In 0.7.0 itsregister(..., always_on=)parameter widened from "relay-behaviorisalways-on, or explicitalways-on: true" to the full locked bit, which now includesnon-controllable. The name was kept deliberately, and the reasoning in #50 is sound: SPAN commissions this flag asalwaysOnand publishesrelay-controllableas its inverse, so the name is the hardware's rather than a subset of the new meaning.The residual risk is a producer that drives
RelayResolverdirectly and computes the flag itself the old way (relay_behavior == "always-on"). It re-unlocks a circuit whose$settablethe emitter has already omitted from the published description, restoring exactly the inconsistency #49 removed, silently.Two things would close it, either or both:
manifest_physics.relay_lockedfrom the package root. The new docstrings point producers at it as the single supported derivation, but it is the one name in that module not re-exported (CircuitPhysicsandManifestPhysicsVieware), so a caller following the docstring has to reach into a submodule.locked=, keepingalways_onas a deprecated keyword alias for one release.