The detail layer beneath the architecture model. Two cycles: provisioning (what loads into the L2 kernel on first boot or parameter update) and the transaction lifecycle (tap → assembled canonical). Every step from engage to normalize is processor-independent — the adapter is only called once the work is already done.
A configure-then-verify cycle. Top of the hierarchy is the terminal's own identity; AIDs hang off configuration groups; keys sit beneath. Nothing here knows the processor — Santander doesn't decide which AIDs or floor limits you load. This whole cycle is core, processor-independent, and idempotent: same code reconciles desired-state vs. kernel-state whether it's boot or an update.
set* → retrieve* → check-value idempotently. The manifest is data and can be deployment-specific (a transit kiosk's limits ≠ a retail terminal's). The loader is core. Both live above the processor boundary.
Steps 1–5 are the answer to "what happens when a card taps." They are 100% processor-independent — engage, capture, handle decryption, parse TLV, normalize. The processor does not exist until step 6, and re-enters only to deliver its result in step 7.
Everything that makes a transaction work — engage, capture, decrypt-handling, TLV parse, normalize, and the finalize back to the kernel — happens independent of the acquirer. The adapter is handed an already-assembled canonical transaction and asked one thing: get it authorized. That's why the canonical model is designed first — steps 1–5 all produce it, step 6 consumes it. It is the contract both sides are built against.