draft-imran-systems-and-arguments-04Internet-Draft
← draft-imran-systems-and-arguments-04
Off the Bit Position Paper 5.4 Internet-Draft draft-imran-easy-button-tax-01 Confidence: 0.85 State: holding
M. Imran Published 2026-04-20 Revised 2026-08-14 Expires: 15 February 2027

The Easy Button Tax

Removed friction is relocated friction, and the invoice arrives during the incident.

Text

Abstract. Friction is information. An abstraction that removes a step also removes the moment where the constraint behind that step was learned. The constraint does not disappear; it reappears at incident time, in front of a person who did not choose the abstraction, priced in hours they do not have. This is not an argument against abstraction. It is an argument for reading the invoice before signing, and for insisting that every easy button ship with a tested escape hatch. Confidence 0.85. The missing 0.15 is Section 5, where the argument still cannot tell a good abstraction from a costly one in advance.

1. The claim

Every convenience layer makes a trade with a specific shape: it converts a large number of small, predictable, design-time costs into a small number of large, unpredictable, incident-time costs. The trade is often correct. It is almost never priced, because the two sides of it are paid in different currencies by different people at different times.

The word “tax” is chosen carefully. A tax is not a scam. It is a known charge on a transaction, and the failure here is not that the charge exists but that it is undisclosed at the point of sale.

2. The three transfers

TransferFromTo
In timeDesign time, when the system is calm, the decision is reversible and the person has contextIncident time, when the system is degraded, the decision is urgent and the context has to be rebuilt from logs
In personThe author, who chose the abstraction and understands what it hidesThe operator, who inherited it, and who is often on a different team, in a different timezone, three years later
In kindMany small comprehension costs, each cheap and each teaching somethingOne large diagnostic cost, expensive and teaching nothing except the shape of this particular abstraction's internals

The third transfer is the one that compounds. Learning a constraint by hitting it during authoring produces knowledge that transfers to the next system. Learning it by reading a stack trace through four layers of framework at 03:00 produces knowledge about that framework’s internals, which is worth very little the moment the framework is replaced.

  cost
   ^
   |  ..... friction paid at design time
   |  .   .   .   .   .   .   .   .   .
   |  --------------------------------- calm
   |
   |                                  ##
   |                                  ##  incident
   |  ................................##
   +------------------------------------> time
      abstraction adopted           first
                                    real failure
Figure 1. The same total cost, differently distributed. The right-hand column is paid in a currency the left-hand column was not.

3. Diagnosing an easy button

The useful question is not “is this abstraction good” but “what did it decide on my behalf, and can I see the decision”. Three tests, in increasing order of how much they tell you.

3.1. The naming test. Can you name the thing it hides? If the answer is a vague category (“it handles the networking”) rather than a specific mechanism (“it retries idempotent requests three times with deterministic backoff and no budget”), you do not know what you bought. See 5.6 for what that particular blank cheque costs.

3.2. The escape hatch test. Is there a documented way to drop below the abstraction for one call, and is that path exercised in the library’s own tests? An escape hatch that exists in the documentation and not in the test suite is a plan, not a mechanism. This is the single strongest predictor I have found of whether an abstraction will be survivable in year three.

3.3. The incident test. Read one public postmortem from a team that hit this abstraction’s failure mode. If none exists, either the abstraction is new or its failures are being resolved by vendor support tickets, which means the diagnostic knowledge is not in the commons and you will be rebuilding it yourself.

Names what it hidescheap
Escape hatch, testeddecisive
Public failure recordrare

Figure 2. The bars rank how much each test tells you against how often it can be satisfied. Ranked, not measured.

4. The outcome this argues for

Not “avoid convenience”. The outcome is a disclosure practice, and it is small enough to adopt this week.

5. The strongest objection

This is a general argument against progress, and progress has mostly been right. Garbage collection, optimising compilers, managed relational databases and TLS libraries are all easy buttons, all hide enormous complexity, all relocate friction to incident time, and all were correct. If the argument cannot distinguish those from a badly designed convenience wrapper, it distinguishes nothing. My attempted distinction is that the good cases hide a mechanism that is genuinely universal and genuinely solved, so the hidden constraint is nearly never the thing that fails, while the expensive cases hide a mechanism that is domain-specific and still contested. I cannot yet state that cleanly enough to apply it in advance rather than in hindsight, and applying it in hindsight is worth very little. That gap is the whole 0.15, and it is why this paper is not at 0.95.

6. What this paper does not claim

The tax is usually worth paying, and nothing here argues for shallow abstractions or for building it yourself. The authors of convenience layers are not the target either. In the cases that cost the most, the author was unusually careful, which is exactly why the abstraction was adopted widely enough to cost anything. The claim is about disclosure, and about who receives the bill.

Retirement conditions

This paper MUST be retracted if any of the following is demonstrated.

§Condition
1A widely adopted abstraction that removed a class of friction and whose failure modes are demonstrably cheaper to diagnose than the friction it replaced, measured in operator time during incidents rather than in developer time during authoring.
2Evidence that the cost transfer described in Section 2 does not occur where the author and the operator are the same team, which would reduce this to an argument about organisational structure rather than about abstraction.
3A convenience layer shipping with an escape hatch that is exercised in its own test suite as a first-class path, adopted at scale, showing that the tax is a choice rather than a property.

Revision history

DateChange
2026-08-14Text written: the three transfers, the three diagnostic tests, the disclosure practice and the objection. Retirement conditions added. Confidence unchanged.
2026-04-20Listed in Section 5 with a title, a summary and a confidence value. No text.

Machine readable

Markdown source · JSON index · Atom

Imrandraft-imran-easy-button-tax-01conf 0.85