The bounds algebra: the pointwise narrowest intersection of the
Blueprint's declared bounds, the Deployment Manifest's host_bounds, and
the host's live policy, over the closed 13-bound vocabulary.
Distinct from parse bounds: AgentBlueprintProtocol.Bounds are
tighten-only decoder ceilings and are never intersection inputs (the
two families are never conflated).
The direction law
"Narrowest" is taken in each family's own narrowness order: for the scope families (classification, disclosure) a
lower ceiling is narrower, so the meet is the written-order minimum; for
the obligation families (authority, approval, effect impact) the STRICTER
value is narrower, so the meet is the strictest value. Classification
markers ({pci, phi}) are retained regulatory obligations: the
effective marker set is the UNION of the sources' sets — dropping a
marker silently disables regulated-data handling and is the widening the
mutation gate names.
Posture
A protected narrowing never happens silently. Under the default :deny
posture it denies with :protected_bound_clamp_denied carrying the
field/requested/effective triple; under :acknowledge it clamps and
ALWAYS emits acknowledged: true evidence. Because decoded artifacts
lift marker sets empty and the Blueprint derives disclosure_ceiling as
:full (it declares no disclosure member), a host asserting any marker
or any sub-full disclosure policy narrows a protected bound on every
import — a regulated or disclosure-limiting host therefore runs the
:acknowledge posture and records every narrowing. That is the designed
default, not a defect.
Lifters
from_blueprint/1 derives the Blueprint side totally: the operational
eight from its ceilings member; classification as the WIDEST across all
five declaration sites (top-level, both port arrays, output_contract,
capability_requirements); approval/authority as the strictest claim
across capabilities (empty array → :none); effect impact as the
strictest across capabilities and effect intents (empty → :ordinary);
disclosure as :full, the identity element for the meet — the Blueprint
makes no disclosure claim, so the deployment and host policies govern,
and this derivation is a total function over the artifact's members, not
a missing-source default. from_deployment/1 lifts the host_bounds
member only: model_policy ceilings are the deployment-local model
policy (not intersection inputs) and data_bindings classification is
per-dataset metadata checked against the effective bound by the composed
import.
The algebra computes facts; it never authorizes an operation.
Summary
Functions
Lift a Blueprint's declared bounds. Present members validate
(:bound_value_invalid); the derived envelope is total over the current
registry; an absent ceilings/classification member lifts absent
(totality is intersect/1's demand, never a default here).
Lift a Deployment's host_bounds member (the intersection's middle term,
the Deployment table's row 13 — model_policy and data_bindings are not inputs).
Intersect the three sources: per-bound validation, totality (all three
total over the 13 — an operational absence denies :missing_ceiling, a
protected absence :bound_source_missing), the within-currency cost
rule, then the pointwise narrowest meet. Operational narrowings emit
unacknowledged evidence; a protected narrowing denies under :deny
(carrying the triple) or clamps with acknowledged: true under
:acknowledge. Clamps are emitted in the name-sorted vocabulary order.
true iff a (an effective set) widens b (e.g. the host policy) on
any bound — per family, classification ordered lexicographically
(ordinal, then marker strict subset at equal ordinals). Fail-closed: a
bound missing from either set, or an incomparable money pair, is true
(non-widening cannot be proven).
Functions
@spec from_blueprint(AgentBlueprintProtocol.Blueprint.t()) :: {:ok, AgentBlueprintProtocol.BoundsAlgebra.BoundSet.t()} | {:error, AgentBlueprintProtocol.Error.t()}
Lift a Blueprint's declared bounds. Present members validate
(:bound_value_invalid); the derived envelope is total over the current
registry; an absent ceilings/classification member lifts absent
(totality is intersect/1's demand, never a default here).
@spec from_deployment(AgentBlueprintProtocol.Deployment.t()) :: {:ok, AgentBlueprintProtocol.BoundsAlgebra.BoundSet.t()} | {:error, AgentBlueprintProtocol.Error.t()}
Lift a Deployment's host_bounds member (the intersection's middle term,
the Deployment table's row 13 — model_policy and data_bindings are not inputs).
@spec intersect(AgentBlueprintProtocol.BoundsAlgebra.Sources.t()) :: {:ok, AgentBlueprintProtocol.BoundsAlgebra.Result.t()} | {:error, AgentBlueprintProtocol.Error.t()}
Intersect the three sources: per-bound validation, totality (all three
total over the 13 — an operational absence denies :missing_ceiling, a
protected absence :bound_source_missing), the within-currency cost
rule, then the pointwise narrowest meet. Operational narrowings emit
unacknowledged evidence; a protected narrowing denies under :deny
(carrying the triple) or clamps with acknowledged: true under
:acknowledge. Clamps are emitted in the name-sorted vocabulary order.
@spec widens?( AgentBlueprintProtocol.BoundsAlgebra.BoundSet.t(), AgentBlueprintProtocol.BoundsAlgebra.BoundSet.t() ) :: boolean()
true iff a (an effective set) widens b (e.g. the host policy) on
any bound — per family, classification ordered lexicographically
(ordinal, then marker strict subset at equal ordinals). Fail-closed: a
bound missing from either set, or an incomparable money pair, is true
(non-widening cannot be proven).