---
title: SAIF.Framework.Bindable business rules
summary: Enumerated business rules with per-rule trigger, enforcement, and outcomes.
status: draft
owner: <owner>
last_reviewed: 2026-07-23
library: SAIF.Framework.Bindable
reference_type: package
---

# SAIF.Framework.Bindable business rules

This library implements no concrete business rules of its own — it defines only the *mechanism* for rule-violation notification (`clsRulesManagerBase`) and change notification (`clsBindableBase`, `clsBindableCollectionBase`). Concrete rule statements are defined in subclasses outside this library's scope. One implementation-level behavioral trait affecting correctness is documented below as BR-001.

## BR-001: Rule violation notification requires a subscribed listener

| Field | Value |
| --- | --- |
| **Statement** | `clsRulesManagerBase.OnRuleBroken` and `OnRuleNotBroken` invoke their respective event delegates (`RuleBroken(rule)`, `RuleNotBroken(rule)`) without a null check, so calling either method with zero subscribers throws a `NullReferenceException` at runtime.* |
| **Trigger** | A subclass invokes `OnRuleBroken(rule)` or `OnRuleNotBroken(rule)` while no listener has subscribed to the corresponding event. |
| **Enforcement** | `SAIF.Framework.Bindable\clsrulesmanagerbase.cs` — direct `RuleBroken(rule);` / `RuleNotBroken(rule);` invocation with no `!= null` guard, unlike the guarded pattern used in `clsBindableBase.OnIsModifiedChanged()`. |
| **Outcome** | No defensive guard exists; an unhandled `NullReferenceException` propagates to the caller instead of the notification being silently skipped.* |
| **Confidence** | Inferred |
| **Source** | `SAIF.Framework.Bindable\clsrulesmanagerbase.cs` |

---

## Notes
- Whether this unguarded invocation pattern has caused runtime failures in consuming code cannot be determined from this library alone.**
- Concrete business rule statements (i.e., what conditions constitute a broken rule) are defined by subclasses outside this library's scope and are not documented here.

## Related documentation
- [Index](index.md)
- [Overview](overview.md)
- [Architecture](architecture.md)
- [Dependencies](dependencies.md)
- [Operations and processes](operations-processes.md)
- [Configuration](configuration.md)
- [API reference](api/index.md)

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Framework.Bindable\clsrulesmanagerbase.cs`
- `SAIF.Framework.Bindable\clsBindableBase.cs`
