This boundary is clear.
Necessary, but never sufficient on its own.
BCOT Core · Modularity
Real commitments rest on many checks, owned by different teams and authorities. BCOT Core gives every check the same three-state interface, then combines them with one rule: the strictest finding survives. Adding a module can tighten the outcome. It can never loosen it. Risk is never inherited.
Replace one module. The interface and composition rule stay the same.
One language at every boundary
A payment might depend on identity, amount, location, merchant status, and sanctions authority—five checks, five owners, one commitment. Modules do not need to know about one another. They report a finding; the architecture composes the set.
Permit means the boundary is clear. Observe means it is unresolved—the evidence needed to close it isn't there. Abstain means a required condition failed.
Necessary, but never sufficient on its own.
The candidate does not commit, and what's missing is named.
The candidate cannot commit while the condition remains false.
Interactive composition lab
Change the operating condition to see how independent findings resolve into one stable outcome.
Independent findings
Governed outcome
ObserveObserve activates evidence acquisition and determines the next route.
Change the order of the modules in any of these scenarios and the result is the same. Order does not determine outcome.
Structural guarantees
The combining behavior belongs to the architecture, not to the implementation order, machine, vendor, or number of checks.
Verdicts combine by taking the strictest.
It cannot loosen it. A new required module can only restrict what’s authorized.
Wire modules in any order and the outcome is identical.
Repeating a permissive verdict has no effect—Permit is neutral.
Evaluating in groups gives the same outcome as evaluating flat.
And one guarantee that isn't a consequence—it's a design decision: Fail-closed. A required verdict that is missing or malformed never resolves to Permit. Absence is not consent.
What modularity gives you
A new required module can only preserve or narrow what’s allowed; it cannot open a path that was closed.
A behavioral flag can route to step-up review while a regulatory block refuses outright. Your customers get a response proportionate to the finding.
This isn’t flattened into a yes or a no to fit a two-state interface. What’s missing stays visible and attributable.
Tracing decision making is a list: which modules ran, what each one found, which authority it consulted. Nobody has to read code to reconstruct it.
Observe carries unresolved contact into active assessment and routing instead of silently flattening it into a binary answer.
A regulator can inspect the module list, interfaces, authorities, and outcomes instead of tracing scattered conditionals across repositories.