Finding
Phase 06 aspis containment and Phase 08 lethe protected-route policy are
different intents over one host-global nftables ruleset. Independent writers
would race on locking, snapshots, reconciliation, status, and rollback, and a
partial update could weaken either security boundary.
Desired correction
Give the Akroasis application one typed nftables transaction backend. Aspis
submits containment intents and lethe submits protected-route intents through
that owner; neither domain writes nftables directly.
Done when
- One application-owned backend exclusively owns nftables locking, current-
state observation, intent composition, atomic apply, reconciliation,
status, and rollback.
- Aspis containment and lethe protected-route requests use distinct typed
intents and disjoint owned tables/chains. Conflicts are rejected before
mutation; neither consumer can address or weaken the other's rules.
- The backend composes all accepted intents into one validated transaction.
Apply either commits the complete intended state or restores the last
verified state; restart reconciliation cannot silently accept a partial or
foreign ruleset.
- Consumer APIs expose intent and status only. Static and runtime tests prove
there is no direct aspis/lethe command or library path that mutates nftables
outside the backend.
- Deterministic mock or isolated-network-namespace tests cover simultaneous
intents, conflict, malformed state, partial failure, cancellation, restart,
rollback, and status. Protected-route failure remains fail closed and
containment failure never broadens access.
- Any real host-network mutation remains a separately authorized operation;
software acceptance does not require changing the operator's live ruleset.
Relationships
- Phase 06 owns aspis containment policy and response authorization.
- Phase 08 owns lethe protected-route policy and the praxis automation stop.
- This issue owns only their shared host-global transaction mechanism.
Finding
Phase 06 aspis containment and Phase 08 lethe protected-route policy are
different intents over one host-global nftables ruleset. Independent writers
would race on locking, snapshots, reconciliation, status, and rollback, and a
partial update could weaken either security boundary.
Desired correction
Give the Akroasis application one typed nftables transaction backend. Aspis
submits containment intents and lethe submits protected-route intents through
that owner; neither domain writes nftables directly.
Done when
state observation, intent composition, atomic apply, reconciliation,
status, and rollback.
intents and disjoint owned tables/chains. Conflicts are rejected before
mutation; neither consumer can address or weaken the other's rules.
Apply either commits the complete intended state or restores the last
verified state; restart reconciliation cannot silently accept a partial or
foreign ruleset.
there is no direct aspis/lethe command or library path that mutates nftables
outside the backend.
intents, conflict, malformed state, partial failure, cancellation, restart,
rollback, and status. Protected-route failure remains fail closed and
containment failure never broadens access.
software acceptance does not require changing the operator's live ruleset.
Relationships