cadrumo.core.access_gate package¶
Unified access gate for live AEAT reads and permanent write refusal.
The gate consolidates live-test preconditions for pytest-driven live
reads while keeping operator-facing live reads as operational surfaces.
Live AEAT writes are permanently forbidden, so the write-side helper
always raises a typed refusal. The gate is consumed by the repair CLI
for surfacing a “Live access gate” row and by every live-read module
(filing history, missing-filing detection, AEAT messages, IVA balance
tracking) that needs a typed precondition rather than per-call-site
if os.environ[...] != "1" boilerplate in tests.
The gate is always constructed inline from a
core.config.Settings instance at the call site. It is
never injected via a constructor, never stored as state on engines,
and never passed as a kwarg that could make a write path
substitutable. That anti-injection stance preserves the
“no substitutable dependency on the write-gate” property: tests
cannot swap the gate for a no-op because there is no seam to swap
through.
See also
AeatAccessGateInline gate object used by read-only live surfaces and permanent write-refusal checks.
application.liveRead-only application-live facade that calls the read gate before opening AEAT remote surfaces.