R2.04.1Unrecorded workaround permanencedesign

Unrecorded temporaries become permanent

Aliases: undocumented temporary · workaround freeze · for now · unlabeled stopgap

What it is

A temporary and the intended design can look identical in pixels. The only difference is metadata: “this is a stopgap until something happens”. Unrecorded temporaries become permanent, because the next maintainer has no signal to treat the pixels as unstable. They copy them, extend them, and the stopgap becomes the product’s default look. Permanence is not a meeting that decided to keep it; it is the default fate of unlabeled pixels.

Recording is not a postmortem essay. It is making the stopgap findable outside the screen: a comment, a ticket, a mark on the design file — anywhere that tells the next person “do not copy this as the standard”.

Why it happens

People read the visible interface as intent. If a decision lives only in the mouths of those who were in the room, “use this empty state for now” and “empty is supposed to look like this” are the same picture to everyone else. Implementation compiles the picture into a component; the next page reuses the component; each reuse accelerates permanence. A label interrupts that compile: someone who sees it pauses to ask “until when”; someone who does not asks “how do I make this page match that one”.

Temporaries go unrecorded because they happen under a deadline, and recording looks like a tax. The unpaid tax is not visible that day. It becomes visible the next time someone uses the stopgap as a template. The original author may no longer remember it was a stopgap; reversing it now requires proving “it used to be otherwise” — and without a record there is no proof.

Where it stops holding

A same-day trial that never left the author’s machine and never entered a deliverable is not debt. A path behind an experiment flag, off by default, visible only to internal accounts, has permanence blocked by the flag; the record can be lighter, but the flag itself must say when it comes down. An interface already written into public help, used by people as a tutorial, has formed an external contract even if it began as a stopgap; an internal label alone cannot retract it. Unfinished polish — a shadow not chosen, an illustration not picked — that was never implemented has no pixels to copy, and is outside this mechanism.

Applying it

  • Any surface someone said “for now” about must leave a searchable mark the same day it leaves the discussion: a sticker on the design file, a code comment, or a ticket, at least one, naming the stopgap and what it was meant to become.
  • On taking a page, search “for now”, “temporary”, “hack”, “workaround”. Hits are stopgaps; only a miss may be copied as intended.
  • Before reusing a pattern, ask whether a mark says not to copy it; if there is a mark, copy the target it points at, not the current pixels.
  • How to check: ask someone who missed last week’s work to point at a stopgap you remember. If they cannot find a mark in file, code, or ticket, it has already gone permanent. Then scan shipped UI for “temporary” comments with no ticket; each is permanence in progress.

Related

  • Same group: R2.04.2 Design debt must be handled like engineering debt · R2.04.3 Repayment needs an explicit trigger
  • Adjacent: R2.11 Identifying and repaying design debt · R2.12 Design–engineering cadence
  • Search terms: workaround · undocumented temporary · design debt · permanence

Cards in the same group

Quick Actions

Share

Share this page

ios_share

https://hci.top/en/handbook/R2.04.1