Gates are non-bypassable
Atlas distinguishes two kinds of judgment calls. A classification is a decision: Atlas examines a task and declares it analytical or transactional, core or BTP. A gate is a condition: given the plan in front of it, a gate asks whether a specific, testable property holds. You can disagree with a decision and take responsibility for a different one; that is what override is for. You cannot disagree with a condition by asserting it is not true. What you can do is either fix the cause or declare, in writing, why the condition is acceptable as it stands.
That distinction is the whole design.
What a gate is
Section titled “What a gate is”Each gate is a small, explicit predicate over the plan graph. Does this analytics view read a physical table directly? Does any emitted binding land on a P_ view? Does any amount field lack a currency annotation? Because a gate is a predicate, its result is deterministic — given the same plan, it always produces the same answer — and therefore its failure is reviewable. The reviewer can look at the plan and check Atlas’s work.
A gate’s job is to protect an invariant that downstream consumers will rely on. When the gate fires, it is telling you the invariant is in danger. Resolving the gate means removing the danger. Overriding the gate means accepting the danger and writing down why accepting it is reasonable in this specific case.
Why not allow a third exit
Section titled “Why not allow a third exit”The third exit would be skip this check, no reason needed. The moment a system accepts that exit, every downstream consumer of that system’s output has to re-litigate whether the check was meaningful. The invariant the gate was protecting stops being an invariant; it becomes a polite suggestion. Atlas is in the business of trust under evidence, and trust depends on the invariants actually holding or actually being written down when they do not. A silent skip breaks both conditions at once.
This is why overriding requires a reason — a 20-character minimum is the contract. A two-word excuse is not a reason; a sentence is. Your release manager will see it on the transport, and your auditor will see it in the evidence trail.
What overriding costs
Section titled “What overriding costs”An override is not free, but it is legible. Every override shows up on the plan’s evidence summary, on the transport description, and in the evidence trail any reviewer or auditor reads. An override that reads “we decided not to fix this” costs you more later than an override that reads “I_Customer is not released in target system 2020; correction will land with the 2023 upgrade.” One of those is a reason. The other is an outage waiting to happen.
What Atlas will never do
Section titled “What Atlas will never do”No matter how politely you ask, Atlas will not delete a gate result
from evidence after the gate has run. It will not silently redefine a
gate without producing a new plan generation. There is no
--skip-validate flag; the flag does not exist and never will. These
are not limits Atlas is reluctant about — they are the reason anyone
downstream of Atlas can rely on what the gate results mean.
The quiet second use
Section titled “The quiet second use”Once you have lived with the rule for a while, you will notice a second thing it does. When someone inherits your project six months later, every override they find is a note from the past that explains something non-obvious — a release-window constraint, a temporary workaround, a missing upstream view. The overrides you wrote to pass validate today become the documentation the next engineer thanks you for tomorrow. That is the payoff from the 20-character minimum.