GuardConfig.fail_closed is defined at sdk/src/unplug/config/guard.py:99 and never read anywhere in the SDK. Errors always fail closed regardless of what it is set to, so the field does nothing.
Three places write or carry it:
sdk/src/unplug/guard.py:126, from the deprecated fail_mode argument
sdk/src/unplug/config/loader.py:290-291, from [guard] in unplug.toml
The deprecation warning at loader.py:368 reads the raw config dict rather than the model, so it keeps working after the field is gone. That means existing fail_closed = false config files still explain themselves instead of erroring.
Where to start: sdk/src/unplug/config/guard.py. Run uv run pytest tests/unit/config before and after, and check the warning still fires for a config that sets fail_closed = false.
Comment here to claim it and a maintainer will assign it to you.
GuardConfig.fail_closedis defined atsdk/src/unplug/config/guard.py:99and never read anywhere in the SDK. Errors always fail closed regardless of what it is set to, so the field does nothing.Three places write or carry it:
sdk/src/unplug/guard.py:126, from the deprecatedfail_modeargumentsdk/src/unplug/config/loader.py:290-291, from[guard]in unplug.tomlThe deprecation warning at
loader.py:368reads the raw config dict rather than the model, so it keeps working after the field is gone. That means existingfail_closed = falseconfig files still explain themselves instead of erroring.Where to start:
sdk/src/unplug/config/guard.py. Runuv run pytest tests/unit/configbefore and after, and check the warning still fires for a config that setsfail_closed = false.Comment here to claim it and a maintainer will assign it to you.