The Dashed Circle and the Solid Ball: Reading the ‘I Had Potential’ Ramp Diagram

The shirt shows a white curved ramp descending from left to right. At the upper left ledge there is a dashed empty circle. At the lower right flat ledge there is a solid white ball. Above both, in capitals: I HAD POTENTIAL.

That is the whole design. No arrows, no equations, no caption explaining the physics. The joke depends on the reader completing the diagram in their head, and the completion is not flattering.

Most slogan shirts ask you to agree with a sentence. This one asks you to solve a small visual problem, and the solution is that the potential is gone. The dashed circle marks where the ball used to be. The solid ball marks where it ended up. The ramp is the distance between the two, and the shirt does not say whether the trip was voluntary.

What the diagram actually shows

The dashed circle is the key. A dashed outline conventionally indicates something absent, projected, or no longer present. Here it sits on the high ledge, the position of maximum gravitational potential energy in a textbook ramp problem. The solid ball rests at the bottom, where that potential has been converted into motion and then into rest.

The shirt does not print the word energy. It prints the word potential, which in physics is a stored quantity and in ordinary speech is a promise about the future. The drawing collapses the two meanings: the stored quantity has been spent, and the promise has not been kept.

I am reading the design, not asserting a scientific claim. The ramp is curved rather than a straight inclined plane, which makes it look more like a skate park or a slide than a frictionless physics diagram. That curve matters. A straight diagonal would read as a textbook exercise. A curved ramp reads as something a person could have slid down, which makes the empty circle at the top feel more like a missed opportunity than a calculated result.

Why the minimalist treatment works

The shirt uses one color of ink for the design, capitals for the text, and two simple shapes for the diagram. There is no distressed texture, no faux-vintage badge, no additional punchline. The restraint is the point. A louder version of this joke would add a caption like “…and then gravity happened,” which would explain the diagram and ruin it.

Minimalism also changes who the shirt is for. A dense graphic tee announces its joke to everyone in the room. This one is legible at conversational distance but does not perform. The text is large enough to read, the diagram is small enough to require a second look, and the two together reward the person who bothers to look twice.

That is a useful distinction for anyone who has ever worn a technical joke shirt to a workplace where the joke landed with exactly one colleague and confused everyone else. This design has a lower social cost. If nobody gets it, it reads as a plain white graphic on a shirt. If somebody gets it, the conversation is short and specific.

The difference between a slogan and a usable promise

The phrase I had potential is past tense. That tense does most of the work. A present-tense version, I have potential, would be a motivational statement. The past tense turns it into a eulogy for a quantity that has already been converted into something else.

In work culture, “potential” is a word managers use about people. It appears in performance reviews, promotion calendars, and succession plans. It is almost always forward-looking and almost never quantified. The shirt takes that word and puts it in the past tense, next to a diagram that shows exactly where the stored value went.

That is the argument I find in the design: a promise without a mechanism is just a slogan. The ramp has a mechanism. The ball has a position. The dashed circle has an absence. The shirt is funny because it treats a vague compliment as a physical system with a measurable outcome.

I would not push this into a lesson about engineering management. The shirt does not know anything about your sprint velocity or your retention metrics. But it does demonstrate, in two shapes and four words, the difference between a claim and a diagram. A claim can be repeated indefinitely. A diagram has to resolve.

Who the shirt is actually for

The I Had Potential shirt is listed by Quirky Cotton Collective as a standard t-shirt with the title “I Had Potential Funny Physics Pun Sarcastic Minimalist Quote.” The retail title uses the words physics, pun, sarcastic, and minimalist. The artwork itself uses none of those words. It trusts the viewer to supply them.

That gap between the retail description and the printed design is worth noticing. The listing has to explain the joke for search purposes. The shirt does not. The shirt assumes a reader who recognizes a ramp, a ball, and a dashed outline, and who understands that the dashed outline is the sad part.

For a technical audience, that recognition is cheap. Anyone who has drawn a free-body diagram or debugged a system that looked fine on paper knows the feeling of a quantity that was supposed to be conserved and wasn’t. The shirt does not make that analogy explicit, and I am not going to force it. It is a diagram joke. It works because the diagram is correct enough to be legible and incomplete enough to be funny.

What the shirt does not do

It does not cure anything, improve anything, or signal expertise. It is a piece of printed cotton with a drawing on it. The design is legible in the supplied retail image, and the observation date establishes the object without establishing a wearing experience, a review, or a publication history.

I have not worn it, tested it, or measured its fabric. I am reading the artwork as printed. The white design elements give the diagram enough contrast to read at arm’s length, and the capitals are spaced widely enough that the phrase does not crowd the ramp. Those are observations from the image, not claims about how the shirt feels after a wash.

The one thing the design does well is leave the ending unresolved. The ball is at the bottom, but the dashed circle is still there at the top. The shirt does not say the potential was wasted. It says the potential was had, which is a stranger and more accurate way of putting it.

Editorial note: This publication and Quirky Cotton Collective share an owner. This is not an independent review.

The Element Tiles That Spell a Sentence Only If You Read Them Wrong

The shirt says I WEAR THIS SHIRT PERIODICALLY, and then it prints four periodic-table tiles: 53 I, 74 W, 22 Ti, 16 S. Read the symbols in order and you get I W Ti S. That is not the sentence. It is the sentence’s alibi.

This is the whole joke, and it is a better one than the usual periodic-table pun, because the failure is built into the layout. The tiles are not spelling periodically. They are spelling the first four words of the sentence in a notation that cannot represent them, and trusting the reader to hear the difference between what is printed and what is meant.

Most element-tile shirts work by substitution: pick a word, find elements whose symbols concatenate into it, print the tiles, done. Ba + Na + Na. The joke is a spelling trick, and it either lands or it doesn’t. This design does something less tidy. It takes a sentence that already contains the word periodically and then renders only the part of the sentence that isn’t the pun, in a notation that mangles it. The word periodically is left as plain text, doing the work the tiles refuse to do.

That asymmetry is the argument. A slogan on a shirt is a promise about the wearer: I am this kind of person. A diagram on a shirt is a promise about the reader: you are the kind of person who can decode this. The two promises fail differently. The slogan fails when the wearer doesn’t match it. The diagram fails when the reader can’t parse it, or parses it and finds the parse wrong.

Here, the parse is wrong on purpose. I W Ti S is not a word. It is four element symbols with atomic numbers attached, arranged left to right, and the only way to recover the sentence is to stop reading the tiles as a spelling and start reading them as a citation. The tiles are not the sentence. They are evidence that the sentence has been through a periodic table and come out the other side, slightly damaged, still recognizable.

I keep thinking about this in terms of interface copy. A good error message tells you what happened and what to do. A bad one tells you what the system was thinking. The tiles here are closer to the second kind: they show you the machinery, not the meaning. The meaning is in the plain-text line above, which is doing all the communicative work while the tiles do the decorative work of looking like chemistry.

That is not a criticism. It is the design. The shirt is funny because the tiles are almost a spelling and almost a diagram and fail at both in a way that is legible to anyone who has ever tried to make a schema do something it wasn’t designed for. You wanted periodically. You got I W Ti S. You shipped it anyway, because the plain text carries the meaning and the tiles carry the joke.

There is a maintenance lesson buried in that, and it is not the one about reading documentation. It is about the difference between a representation and a restatement. The tiles are a representation of the sentence in a foreign notation. They are not a restatement of it. A restatement would preserve the meaning; a representation preserves the shape and lets the meaning fend for itself. Most schema migrations are restatements that get treated as representations. Most incident postmortems are representations that get treated as restatements. The shirt is a small, wearable reminder that the two are not the same, and that the gap between them is where the joke lives.

If you want the object itself, it is the I Wear This Shirt Periodically chemistry element-tile shirt from Quirky Cotton Collective. The design is the four tiles and the plain-text line, nothing more elaborate than that. Whether it reads as a chemistry joke, a typography joke, or a quiet admission that the wearer’s relationship to the periodic table is occasional at best depends on who is doing the reading.

What I like about it is that it doesn’t ask the wearer to be a chemist. It asks the wearer to be the kind of person who notices that I W Ti S is not a word and finds that funny rather than annoying. That is a narrower audience than a plain periodically pun would reach, and a more specific one. The shirt is not for everyone who took high school chemistry. It is for everyone who took high school chemistry and then spent the next decade watching systems produce output that was technically correct and semantically wrong.

The tiles are 53, 74, 22, 16. Iodine, tungsten, titanium, sulfur. Read as a sentence, they are nonsense. Read as a joke about the limits of notation, they are exact.

Editorial note: this publication and Quirky Cotton Collective share an owner; this is not an independent review.

The Composition Notebook That Isn’t One: Reading the Ghost-and-Pumpkin Cover as a Costume

The first thing the shirt does is lie about its material. A black-and-white speckled rectangle sits on the chest, dark binding strip down the left edge, white ruled label headed COMPOSITION. Inside the label, an outlined ghost and an outlined pumpkin. The whole thing is printed. There is no cardboard cover, no stitched binding, no pages. The costume is the image of a composition notebook, and the joke only works because every adult in the room has held the real object.

That is the argument I want to make about this design: it is not a school slogan with a notebook drawn behind it. It is a surface transfer. The familiar writing surface — the marbled cover, the ruled label, the binding — has been moved onto a person. The ghost and pumpkin are not decorations added to a generic school motif; they are the only marks on the label, which is exactly where a student would write their name. The design replaces the name with a seasonal doodle. That substitution is the whole piece.

Most teacher Halloween shirts I have seen rely on text. A pun, a grade-level joke, a “witch way to the candy” line. This one relies on recognition. You do not have to read it. You have to see it, and the seeing triggers a memory of a specific object: the cheap, speckled notebook sold in multipacks, the one with the conversion table on the inside back cover. The shirt borrows that memory and wears it.

What makes the transfer work is the restraint. The label is white and ruled, the heading is plain uppercase, the ghost and pumpkin are outlines rather than filled shapes. Nothing glows. Nothing sparkles. The palette is black, white, and the speckle. That is close to the actual object, and the closeness is what sells the costume. A louder version — colored ghost, glitter pumpkin, script lettering — would read as a shirt about a notebook. This reads as a notebook that happens to be on a torso.

I would call this a diagram joke rather than a slogan. The composition notebook cover is a layout: binding on the left, label centered, name field at the top. The design preserves that layout. The ghost and pumpkin occupy the name field. If you have ever maintained a form or a template, you know the difference between a label that says what a field is for and a field that has been filled in with something else. This shirt fills the name field with a doodle and lets the form do the talking.

That is also where the design gets interesting for a group. The retail title says “Teacher Group Halloween,” and the object supports that reading without proving anything about how anyone wears it. A matching set of these shirts would produce a row of identical notebook covers, each with the same ghost and pumpkin, each missing a name. The uniformity is the point. A group costume works when the individual disappears into the type. Here the type is a school supply, and the ghost is the only variable — except it isn’t variable, because it is printed the same on every shirt.

So the group costume is really a uniform costume. Everyone is the same notebook. That is a different joke from a matching team shirt with names on the back. It is closer to the way a classroom actually looks: thirty identical notebooks, thirty different students, and a label that is supposed to tell them apart. The shirt removes the distinguishing mark and leaves the form. I find that funnier than any pun, and I suspect teachers will too, because they spend October trying to keep thirty identical objects from becoming one pile.

The ghost and pumpkin are worth a second look. They are outlines, not characters. No faces, no expressions, no motion. A ghost outline is a shape that could be a sheet with eye holes; a pumpkin outline is a shape that could be a gourd. Neither is cute in the way a cartoon would be cute. They are marks, the kind you would draw in the margin of a notebook during a slow afternoon. That is the register the design is working in: not a Halloween costume with a theme, but a doodle on a school supply. The shirt is dressed as the thing you doodled on.

I keep coming back to the binding strip. It runs down the left side of the printed rectangle, dark against the speckle, and it is the one element that makes the rectangle read as a book rather than a poster. Without it, the label would float. With it, the cover has an edge and a spine, and the person wearing it becomes the pages. That is a small piece of visual engineering, and it is doing most of the work. The design is not clever because of the ghost. It is clever because of the binding.

If you are looking for the object itself, the Composition Notebook Costume Teacher Group Halloween shirt is the one described here: the speckled cover, the dark binding, the ruled label, the outlined ghost and pumpkin. The keyword people use for it is composition notebook shirt, which is accurate as a description of the printed image and slightly misleading as a description of the garment. The shirt is not a notebook. It is a shirt printed to look like one, and the distinction matters if you are trying to decide whether the joke lands.

My read is that it lands because it does not explain itself. There is no caption, no arrow, no “teacher life” banner. The label says COMPOSITION and nothing else. The ghost and pumpkin are the only content. A viewer either recognizes the object or does not, and the recognition is the entire payoff. That is a fragile kind of design — it depends on a shared memory of a specific school supply — but it is also a durable one, because the memory is not going away. The composition notebook has outlasted most of the software I have maintained.

The maintenance burden of this design is the same as its strength: it is a costume that only works in October, and only for people who recognize the object. Outside the season it reads as a shirt with a notebook on it. Inside the season, in a school, among teachers, it reads as a group costume with no names. That is a narrow window, and the design does not try to widen it. It commits to the bit. I respect that more than a shirt that hedges with a slogan underneath.

Editorial note: This publication and Quirky Cotton Collective share an owner.

The Loudest Possible ‘meh.’: Reading the Large Bold Lowercase Typography on the Quirky Cotton Collective Shirt

The garment preview shows one thing: large, bold, white, lowercase meh. lettering on a dark shirt. No animal. No diagram. No second line of copy softening the blow. The period is doing work — it closes the sentence before anyone else can add to it.

That is the whole design, and it is worth taking seriously as a piece of visual rhetoric, because the mismatch is the point. The word is a shrug. The typography is a shout. A four-letter dismissal rendered at billboard scale, in a weight that would be legible from across a parking lot.

I keep coming back to that contradiction. Most slogan shirts resolve the tension between message and presentation — small type for irony, big type for enthusiasm. This one refuses. It says the quiet part at maximum volume, which is a different speech act than either mumbling or declaring.

What the artwork actually does

Lowercase matters here. MEH. in caps would read as a command or a brand. meh. in lowercase reads as a transcript — something someone actually said, transcribed faithfully, punctuation included. The period is not decorative. It is the sound of a sentence ending and nobody picking it back up.

The white-on-dark contrast is the other half of the argument. White type on a dark ground is the default of terminal output, of log lines, of the thing you scroll past at 2 a.m. because it is not an error. It is the visual register of information that has been delivered and does not require a response.

I am describing what I see in the preview, not making a claim about the designer’s intent. But the combination — lowercase, bold, white, dark ground, terminal period — produces a specific effect: a message that has been sent, received, and filed.

The difference between a slogan and a usable promise

Most work-culture shirts make a promise. Ship it. Move fast. Stay curious. These are slogans in the original sense — they commit the wearer to a posture. They are also, in practice, the kind of thing that gets quoted in a retro and then quietly abandoned by the next sprint.

meh. promises nothing. That is its integrity. It is not a value statement, not a team norm, not a boundary script. It is a status code with no body.

I have watched a lot of engineering-adjacent merchandise try to encode a culture and fail, because the slogan outruns the behavior. The shirt says blameless and the postmortem says otherwise. The shirt says ship and the release train says next quarter. The gap between the printed word and the lived one is where most of these garments quietly die in a drawer.

This one sidesteps the problem by refusing to make a claim that could be falsified. You cannot be disappointed by a shirt that promised you nothing. That is a real, if modest, design achievement.

Why the loudness is not a contradiction

The obvious objection: if you feel meh, why wear a shirt that announces it in 72-point type? Isn’t that just introvert branding — the shy person who wants to be seen being shy?

Maybe. But there is a more useful reading. The loudness is not about the wearer’s emotional state. It is about the message’s status. A quiet meh is a feeling. A loud meh is a verdict — a decision that has already been made and does not need to be relitigated.

In operational terms, this is the difference between a warning and a resolved incident. The warning is small and urgent. The resolved incident is large and closed. The period is the resolution. The boldness is the closure.

That is why the shirt reads, to me, less as a mood and more as a boundary. It is the visual equivalent of a ticket marked won’t fix — not hostile, not passive-aggressive, just done.

What it does not do

It does not cure anything. It does not improve your on-call rotation. It does not make a standup shorter or a retro more honest. It is a shirt with four letters and a period on it, and the only claim I can make about it is that the letters are large, bold, white, lowercase, and followed by a period, on a dark ground, in the preview I looked at.

I am not going to pretend it is a philosophy. It is a garment. But garments carry arguments, and this one carries a small, well-made one: that the most efficient response to a certain class of question is a single syllable, delivered at a volume that ends the conversation.

The maintenance burden of wearing a verdict

Every mitigation creates a new burden. The burden here is that a loud meh. invites conversation. People will ask what it means. People will ask if you are okay. People will read it as a cry for help, or a joke, or a challenge, depending on the room.

That is the tax. The shirt closes one conversation and opens several others. If you want the closure without the follow-up questions, you wear something else. If you want the follow-up questions — if the point is to be asked, so you can decline to answer — then the loudness is the feature, not the bug.

The shirt is available at the Quirky Cotton Collective listing, where the preview shows exactly what I have described and nothing more.

Editorial note: This publication and Quirky Cotton Collective share an owner.

The Root Vegetable Diagram That Promises Growth Without a Schema: Reading the ‘Let’s Root For Each Other’ Shirt

Editorial note: This publication and Quirky Cotton Collective share an owner.

The artwork is a loop of text wrapped around four root vegetables. The words read LET’S ROOT FOR EACH OTHER AND WATCH EACH OTHER GROW. Inside that ring sit a carrot, a radish, a beet, and an onion, each with a face, each with its roots drawn down into visible soil. The roots are the point. They are the only part of the drawing that does any work.

I have spent enough time staring at architecture diagrams to recognize the move. Someone has taken a common phrase — root for, meaning to support — and anchored it to the literal roots of the plants. The pun is not subtle. It does not need to be. What interests me is the second half of the sentence, the part that usually gets skimmed: and watch each other grow.

That is a promise, and promises in engineering contexts are load-bearing. They get quoted back at you during performance reviews. They show up in team charters. They are the kind of statement that sounds warm until you ask what happens when one of the vegetables does not grow, or grows in a direction the others did not expect, or gets pulled for a different garden bed entirely.

What the drawing actually shows

Four vegetables. Four smiles. Roots visible below the soil line. The composition is symmetrical, the text wraps the group rather than sitting above or below it. The soil is not detailed — it is a band, a boundary, the thing that separates the visible from the invisible.

I read the roots as the interesting choice. A less careful version of this design would show only the leafy tops, the part everyone photographs. Showing the roots means showing the part that is underground, unglamorous, and structurally necessary. The carrot’s taproot, the radish’s quick bulb, the beet’s staining red, the onion’s layered skin — these are different root systems doing different things in the same dirt.

That is a more honest picture of a team than most team-building graphics manage. It also raises a question the shirt does not answer: what happens when one root system crowds another? Beets and onions are not famous for sharing space gracefully. Neither are platform teams and application teams.

The two meanings of rooting

English gives us a useful ambiguity here. To root for someone is to cheer for them. To root is also to establish underground, to take hold, to become difficult to remove. The shirt uses both. The vegetables are rooting for each other in the first sense and rooting in the second sense at the same time.

In a work context, those two meanings pull in different directions. Cheering for someone is cheap and public. Establishing roots is expensive and mostly invisible. The first happens in Slack. The second happens in the six months someone spends learning why the legacy billing service has that one weird retry loop.

The design does not resolve the tension. It just puts both meanings in the same sentence and lets the vegetables smile through it. I think that is the right call. A shirt that tried to explain the difference would be a worse shirt.

Growth as a metric nobody defined

Watch each other grow is the phrase that would get flagged in a design review. Grow how? Grow to what? Measured against which baseline? Over what window?

Anyone who has sat through a quarterly planning cycle knows that growth without a definition is a vector for scope creep. The engineer who wants to grow into staff-level work and the engineer who wants to grow into a different domain entirely are both growing. The manager who wants the team to grow headcount and the finance partner who wants the team to grow margin are both using the same word.

The shirt is not a planning document. It is allowed to be vague. But the vagueness is worth noticing, because the same vagueness shows up in real team charters and real performance frameworks, and there it does actual damage. A slogan on a shirt can afford to be aspirational. A promotion rubric cannot.

What the soil boundary is doing

The soil line in the drawing is the most technically interesting element, even though it is just a horizontal band. Above it: the part of the plant that gets seen, photographed, complimented. Below it: the part that does the work.

Every production system has this boundary. The dashboard is above the soil. The migration script, the backfill job, the schema registry, the on-call rotation — those are below. The shirt draws the boundary explicitly, which is more than most team graphics do. Most of them crop at the soil line and pretend the roots are not there.

I do not think the designer was making a point about observability. I think they needed somewhere to put the roots so the pun would land. But the effect is the same: the drawing acknowledges that the visible part depends on the invisible part, and that the invisible part is where the vegetables actually live.

The problem with mutual-growth slogans

Here is my actual objection, and it is not to this shirt specifically. It is to the genre.

Mutual growth sounds reciprocal. In practice, growth is often asymmetric, and the asymmetry is the whole story. One vegetable gets the water. One gets shaded. One gets harvested early because the recipe calls for baby beets. The slogan does not have a clause for any of that.

In a team setting, the mutual-growth framing can quietly become a demand. If we are all rooting for each other, then your failure to grow is a failure of the group’s support, not a mismatch between the role and the person. That is a heavy thing to put on a coworker. It is also a heavy thing to put on a shirt.

I still like the design. I like it more because it is a little too optimistic. The gap between the promise and the reality is where the interesting conversations happen, and a shirt that opens those conversations is doing more than a shirt that just says TEAM.

Who this is actually for

The Let’s Root For Each Other And Watch Each Other Grow Garden shirt is listed under Quirky Cotton Collective. The keyword people use to find it — lets root for each other shirt — suggests they are looking for the phrase, not the vegetables. The vegetables are a bonus.

I would wear this to a gardening club meeting before I would wear it to a sprint retrospective. In the garden, the roots are literal and the growth is measurable in inches. In the retro, the roots are metaphorical and the growth is measured in a calibration meeting that nobody enjoys.

That is not a criticism of the shirt. It is a note about context. The same sentence can be a pleasant pun on a Saturday and a passive-aggressive performance expectation on a Tuesday. The artwork does not control which one it becomes. The room does.

The maintenance burden of a slogan

Every slogan creates a small ongoing obligation. If you put watch each other grow on a shirt and wear it to work, you have implicitly signed up to notice when someone is not growing, and to do something about it. That is not a one-time cost. It is a recurring one.

The shirt itself requires almost no maintenance. Cotton, a wash cycle, maybe some ironing if you care. The phrase requires more. It asks the wearer to mean it, or to accept that they are wearing a decoration. Both are fine. Only one is honest.

I prefer the honest version. Wear the shirt because the carrot is smiling and the pun is good. Do not wear it because you have solved team dynamics. Nobody has solved team dynamics. The beet is still going to crowd the onion.

That is the useful thing about this design. It is a diagram of a promise, drawn in a way that makes the promise look easy. The roots are visible, the smiles are symmetrical, the soil is a clean band. Real gardens are not like that. Real teams are not either. But the drawing gives you something to point at when you want to talk about what the real version would require — and that conversation is worth more than the shirt.

The Caution Triangle That Says Nothing About the Hazard: Reading the ‘Not Friendly Do Not Touch’ Shirt

The shirt reads NOT FRIENDLY DO NOT TOUCH in warning-sign lettering, with a yellow caution triangle and a crossed-out hand symbol. That is the whole design. No small print, no punchline underneath, no winking sub-caption to soften it. The lettering is doing the work of a hazard placard, and the placard is pointed at a person.

I keep coming back to the triangle. A caution triangle is a specific piece of visual grammar: yellow field, black border, black glyph inside. It is the shape we put on wet floors, high-voltage cabinets, and the lids of industrial solvents. Its entire job is to convert a hazard into a glance — you do not read a caution triangle, you absorb it in the half-second before your hand reaches the thing. The glyph inside tells you what kind of hazard. A slipping figure. A lightning bolt. A flame.

Here the glyph is a hand with a line through it. That is a prohibition mark, not a hazard mark, and the two do not mean the same thing. A hazard sign says this thing can hurt you. A prohibition sign says you are not permitted. The shirt stacks them anyway, and the mismatch is the joke — or at least the interesting part. The hazard is not the object. The hazard is the touching.

What the sign actually prohibits

Read the three elements in order and the logic is almost bureaucratic. The triangle establishes a warning context. The crossed-out hand names the prohibited action. The lettering names the condition that justifies the prohibition: not friendly. It is a complete little policy document, compressed to fit across a chest. Condition, action, consequence.

What it does not contain is any statement about the person wearing it. That is the part I find worth sitting with. A shirt that said I am not friendly would be a claim about a personality. A shirt that says not friendly, do not touch is closer to a posted rule — a boundary expressed in the grammar of public infrastructure. The distinction matters because boundaries phrased as personal traits invite argument (you seem friendly to me), while boundaries phrased as signage do not. You do not negotiate with a wet-floor sign. You walk around it.

That is the small, real idea in the design. It borrows the authority of institutional signage and redirects it at the one thing institutions never regulate: casual physical contact between strangers. The caution triangle is doing the borrowing. Strip it out and you have a rude sentence. Keep it in and you have a municipal notice about a person.

The crossed-out hand is the load-bearing element

Of the three components, the crossed-out hand carries the most weight, because it is the only one that specifies an action rather than a state. Not friendly is a condition. Do not touch is an instruction. The hand glyph is what turns the instruction into something you can obey without reading a word — which is the entire point of a pictogram. Prohibition marks exist because language fails at speed. A circle-and-slash over a hand reads faster than any sentence about personal space ever will.

There is a dry irony in using a universal-access symbol to communicate a refusal of access. The design is legible to anyone, in any language, precisely so that it can tell them to keep away. It is a sign optimized for comprehension in service of non-communication. I do not think that is a flaw. I think it is the sharpest thing about the shirt.

Signage as a boundary format

Most boundary language people actually wear is soft. Introvert on a shirt is a disclosure, not a rule. It asks the reader to infer the rest. The warning-sign version skips the inference. It states the condition and the consequence in the same breath, and it does so in a format that carries no obligation to explain itself. That is a different posture, and it is the reason this design reads as more deliberate than the average slogan tee.

I would not claim the shirt changes anything about how people behave. A printed garment is not an enforcement mechanism, and nothing here suggests it functions as one. What it does is compress a boundary into a format that does not require the wearer to say it out loud. Whether that is useful depends entirely on the wearer, and the design wisely does not promise an outcome.

The object itself is the Not Friendly Do Not Touch warning sign shirt, listed under the Quirky Cotton Collective brand. The artwork is the argument: caution triangle, crossed-out hand, blunt lettering, nothing else.

Why the mismatch is the point

If the design were internally consistent — a pure hazard sign, or a pure prohibition sign — it would be tidier and less interesting. The tension between the two registers is what makes it read as a joke rather than a threat. A hazard triangle on a person is absurd, because people are not wet floors. A prohibition mark on a person is legible, because personal space is a real thing people do regulate. Stacking them produces a sign that is simultaneously serious in format and unserious in content, and that gap is where the humor lives.

It also means the shirt does not have to pick a lane. It can be read as a genuine boundary statement by someone who wants one, and as a piece of signage parody by someone who does not. The design supports both readings without resolving them, which is more than most printed slogans manage.

Editorial note: This publication and Quirky Cotton Collective share an owner.

The Smallest Possible Objection: Reading the Lowercase ‘meh.’ Shirt

Editorial note: This publication and Quirky Cotton Collective share an owner.

The garment preview shows four characters and a period. Lowercase. Centered. Very small on a dark shirt. No animal. No slogan about coffee, spreadsheets, or hating people. Just meh. — and the period is doing more work than the word.

I want to argue that this is the most honest piece of typography in the entire introvert-merch category, and that its honesty is exactly why it fails as a wearable message. That failure is the interesting part.

What is actually printed

Observed on the native garment preview: the word meh in lowercase, followed by a period, set very small and centered on a dark shirt. No illustration. No secondary text. No animal, no pride variant, no flag. The retail title adds Funny Sarcastic Introvert Minimalist Saying, but those are category words, not printed words. The shirt itself says one thing.

That distinction matters. A lot of shirts in this space carry a paragraph. This one carries a syllable and a punctuation mark. The design decision is subtraction, and subtraction is harder to evaluate than addition because there is less to argue with.

The period is the whole design

Strip the period and you have a mood. meh floating on a chest is ambient. It could be a brand, a band, a typo. The period converts it into a statement — a complete sentence, grammatically closed, delivered flat. In typography, a period is a full stop. On a shirt, a full stop is a refusal to continue the conversation.

That is a real observation about the artwork, not a claim about the wearer. I am reading the mark, not the person.

Scale reinforces it. Very small, centered lettering reads as understatement rather than announcement. A large MEH across the chest would be a joke shouted. A small meh. is a joke muttered. The design chooses the mutter.

Why it works as an object and fails as a message

Here is my argument. The shirt is a good object because it is legible at the distance where it matters — close enough to read, far enough to be intriguing — and it commits to one idea without decoration. It is a clean piece of minimal typography.

It is a poor message because meh. has no addressee. Sarcasm needs a target. Introvert humor usually needs a situation — a party, a meeting, a group chat. This shirt names neither. It expresses a stance toward everything in general, which in practice means nothing in particular. A stranger who reads it learns that you are unimpressed, but not by what, and not in a way they can respond to. The period closes the door before anyone knocks.

That is not a flaw in the printing. It is a flaw in the premise, and the premise is the product. If you want a shirt that starts conversations, this is the wrong shirt. If you want a shirt that ends them, the design is unusually well calibrated.

The introvert label is doing unpaid labor

The listing calls this an introvert saying. The artwork does not. meh. is not introversion; it is indifference, which is a different thing and arguably a more universal one. Introversion is about where you get your energy. Indifference is about whether you care. The shirt prints the second and the listing sells the first.

I think that mismatch is why the design survives at all. If the shirt literally said I am an introvert, it would be a label, and labels age badly. meh. is a mood, and moods are reusable. The retail framing borrows the audience; the artwork keeps its options open.

What the demand data does and does not say

Google Keyword Planner data for the US, September 2025 through August 2026, puts the exact keyword meh shirt in the 100–1K monthly range, with 0% change over three months and 0% over the year, and high ad competition. Related queries include meh introvert shirt and meh sarcastic shirt, but those are retained as variants, not summed into a total. I am not going to pretend a flat year-over-year number is a trend story. It is a floor, not a forecast.

What the data supports is narrow: people search this phrase at a low but nonzero rate, consistently, without seasonal spikes. The shirt is not a fad and not a wave. It is a small steady object, which is exactly what the design claims to be.

If you want the specific garment, it is listed here: Meh Funny Sarcastic Introvert Minimalist Saying.

The maintenance burden of understatement

Every design choice creates a cost. The cost of a very small, centered, lowercase meh. is legibility at distance. From across a room, the shirt reads as a dark rectangle with a smudge. The joke only lands inside a narrow band of proximity — close enough to parse four letters, far enough that the wearer is not explaining them. Outside that band, the shirt is just fabric.

That is the tradeoff. You get a design that never overexplains and never gets old, and you pay for it in reach. A louder shirt would be read by more people and regretted by the wearer sooner. This one is read by fewer people and regretted less. I do not think there is a version that avoids both costs. The period guarantees it.

So the honest summary is this: the artwork is a small, well-executed refusal, and refusals do not scale. If that is what you want on a shirt, the execution is clean. If you wanted a conversation starter, you bought a conversation ender, and the design told you so in four characters and a dot.

The Doorbell Notification That Never Fires Correctly: Reading the ‘There Is Motion at Your Front Door’ Cat Shirt

Editorial note: This publication and Quirky Cotton Collective share an owner.

A white rounded notification banner with a bell reads There is motion at your front door. Below it, a circular, green-tinted doorbell-camera view shows a wide-eyed orange tabby very close to the lens, porch siding and lights behind it. That is the whole design. No caption, no punchline beyond the image itself.

The joke works because the notification is technically correct and operationally useless. Motion was detected. The system did its job. The human receiving the alert now has to decide whether the motion matters. It does not. The cat is not a package, a visitor, or a threat. The alert fired anyway.

Anyone who has owned a pager, a Slack alert channel, or a doorbell camera knows this exact failure mode. The sensor is not wrong. The threshold is wrong. The notification is not broken. The definition of “motion” is too broad to be actionable.

The shirt is available at the Amazon listing under the title “There Is Motion At Your Front Door Funny Cat Doorbell Meme.” The design is a direct visual quotation of a doorbell-camera push notification, with the cat standing in for the usual delivery driver or raccoon. The green tint is the giveaway: that is the night-vision or low-light cast of a cheap camera sensor, not a stylistic choice. The circular crop is the fisheye lens. The banner is the operating system notification. Every element is a faithful reproduction of the interface, which is why the cat reads as an intruder rather than a pet.

The shirt is not making a technical argument. It is making a cultural one: we have all built systems that page us for the equivalent of a cat walking past a camera. The cat is not the problem. The problem is that we configured the camera to treat every pixel change as an event worth waking someone up for.

There is a version of this joke that would be smug about it. The shirt is not that. The cat looks startled, not mischievous. The notification is neutral. The composition puts the viewer in the position of the person checking their phone at 2 a.m., seeing “motion at your front door,” and feeling the small spike of adrenaline before the image loads. That spike is the real subject. The cat is just the payload.

If you work in operations, you have felt that spike. It is the same spike you feel when a PagerDuty alert fires for a disk usage threshold that has been at 81% for six months. The alert is not lying. The disk is above the threshold. But the threshold was set by someone who did not think about what happens when the disk sits at 81% forever. The alert becomes noise. The cat becomes the doorbell.

The design does not offer a fix. It does not need to. It is a shirt. But it does capture something specific about the gap between detection and meaning. A doorbell camera detects motion. A human decides whether the motion matters. The shirt puts the cat in the frame to remind you that the detection layer and the meaning layer are not the same thing. The cat is motion. The cat is not a reason to open the door.

I do not know whether the shirt is comfortable. I have not worn it. I am not going to pretend that the fabric weight or the print durability is the point. The point is the image. The image is a notification that has been rendered absurd by its own success. The system worked. The system told you there was motion. The system did not tell you the motion was a cat. That is the gap.

If you are looking for a shirt that says something about alert fatigue without saying “alert fatigue,” this is it. The phrase “there is motion at your front door shirt” describes the object, but the object is really about the moment after the notification arrives. The moment when you look at your phone and realize the system has done exactly what you asked it to do, and that is the problem.

The cat is not sorry. The cat is not even aware of the camera. The cat is just being a cat. The notification is just being a notification. The humor is in the collision. That collision is familiar to anyone who has ever tuned a threshold, written an alert rule, or explained to a stakeholder why the system paged them for a non-event. The shirt does not solve that problem. It just names it, in the form of a wide-eyed orange tabby who has no idea they have become a false positive.

Protobuf Field Number Reuse: The reserved Clause Nobody Wrote and the Compatibility Check That Can’t See It

A field is deleted from a Protobuf message. The number is not reserved. Months later, a new field takes that number. The schema compiles. The registry’s compatibility check returns a verdict. Old bytes still sit in Kafka topics, S3 archives, and downstream caches. When those bytes are decoded under the new definition, the wire format has no way to tell you the number means something different now.

This is not a hypothetical about a specific incident. It is the documented failure shape of field-number reuse, and it is worth understanding precisely because the tooling that looks like it should catch it does not.

What the wire format actually carries

A Protobuf message on the wire is a series of key-value pairs. The key is the field number plus a wire type. The name and declared type of the field are not on the wire at all.

The Protobuf encoding guide states it directly: “The binary version of a message just uses the field’s number as the key – the name and declared type for each field can only be determined on the decoding end by referencing the message type’s definition (i.e. the .proto file).”

That design is what makes Protobuf lean and forward-compatible. It is also what makes reuse undetectable at the byte level. If field 14 was once an int32 and is now a string, the decoder does not know. It reads the tag, sees field 14, and applies whatever the current .proto says field 14 is.

The language guide is explicit about the consequence: “Reusing a field number makes decoding wire-format messages ambiguous. The Protobuf wire format is lean and doesn’t provide a way to detect fields encoded using one definition and decoded using another.”

There is no checksum, no type tag, no version marker. The number is the identity.

The rule the docs give, and the procedure they prescribe

The proto3 language guide is unambiguous: “Field numbers should never be reused. Never take a field number out of the reserved list for reuse with a new field definition.”

It also explains why the number cannot simply be changed: “This number cannot be changed once your message type is in use because it identifies the field in the message wire format.”

When a field is deleted, the documented procedure is to reserve the number. From the same guide: “However, you must reserve the deleted field number. If you do not reserve the field number, it is possible for a developer to reuse that number in the future.”

The mechanism is a compiler check. “The protoc compiler will generate error messages if any future developers try to use these reserved field numbers.”

Two syntax details matter in practice. Reserved ranges are inclusive: reserved 9 to 11; covers 9, 10, and 11. And field names and field numbers cannot be mixed in the same reserved statement — you need separate lines.

message OrderEvent {
  reserved 14;
  reserved "legacy_customer_id";
  // ...
}

The best-practices page reinforces the same point with a blunt rationale: “Never re-use a tag number. It messes up deserialization. Even if you think no one is using the field, don’t re-use a tag number. If the change was live ever, there could be serialized versions of your proto in a log somewhere. Or there could be old code in another server that will break.”

And on the deletion side: “When you delete a field that’s no longer used, reserve its tag number so that no one accidentally re-uses it in the future. Just reserved 2, 3; is enough.”

What the compatibility check actually compares

Confluent Schema Registry enforces compatibility by comparing new schema versions against previous versions using configurable compatibility types. The default is BACKWARD. The documented compatibility types are:

  • Backward — consumers using the new schema can read data written with the old schema (add optional fields, remove fields).
  • Forward — consumers using the old schema can read data written with the new schema (remove optional fields, add fields).
  • Full — both backward and forward compatible (add/remove optional fields only).
  • Transitive — compatibility checked against all previous versions, not just the last one.

This is a schema-diff against a policy. It answers the question: does this new schema version satisfy the configured compatibility rule relative to prior versions? It is not a scan of historical bytes for a number that was previously assigned to a different field. The registry documentation describes compatibility policy, not reuse detection.

The allowed changes also depend on how fields were originally defined. The Schema Registry docs note: “The allowed changes are dependent on how fields are originally defined. For example, as described under Backward compatibility, the ability to delete a field and keep the schema compatible requires that the field was either specified as optional or provided a default value in the original version.”

So a deletion can pass the check. A subsequent addition of a new field with the same number can also pass the check, because the check is comparing schema versions against a policy, not auditing the number’s history. The compatibility verdict and the wire-format safety question are different questions.

Confluent’s own guidance for Protobuf is to use BACKWARD_TRANSITIVE, “as adding new message types is not forward compatible.” That is a stronger policy, but it still does not turn the check into a reuse detector. It compares more versions; it does not know that a number was once something else.

The failure shape, illustrated

Consider a message where field 14 was an int32 representing a legacy customer ID. The field is removed. No reserved 14; line is added. The PR merges.

Months later, a new field is added: string region = 14;. The schema compiles. The compatibility check runs against the prior version and returns a verdict based on the configured policy. Nothing in that check knows field 14 used to be an int32.

Old records still carrying the original field 14 bytes now decode under the new definition. Depending on wire-type compatibility, the result is either a parse/merge error or a silently wrong value. The language guide lists the possible outcomes of encoding with one definition and decoding with another: “Developer time lost to debugging. A parse/merge error (best case scenario). Leaked PII/SPII. Data corruption.”

The parse error is the good outcome. The silent wrong value is the one that reaches a dashboard or a downstream join.

This is a hypothetical illustration of the documented failure shape, not a report of a specific observed incident.

The fix is a line in the deletion change

The cheapest control point is the deletion itself. If reserved <number>; is not part of the same commit that removes the field, the number is available for reuse the moment the change merges. No later tooling reliably reconstructs the intent.

Treat the reserved line as a required artifact of a field deletion, reviewed the same way as the field removal. A practical review heuristic:

  • Any diff that removes a field definition should also add a reserved entry for that number.
  • Any diff that adds a field should be checked against the reserved list before merge.

This is a process argument, not a claim about any specific tool’s behavior. The compiler enforces the reserved list once it exists. The gap is between deletion and reservation.

The cost of the fix is minutes at deletion time. The cost of skipping it is debugging time, parse/merge errors, leaked PII/SPII, or data corruption discovered later — potentially after the old bytes have been replayed, backfilled, or joined into a downstream table.

Why this keeps happening

The language guide names the common causes of field number reuse: “renumbering fields (sometimes done to achieve a more aesthetically pleasing number order for fields). Renumbering effectively deletes and re-adds all the fields involved in the renumbering, resulting in incompatible wire-format changes. deleting a field and not reserving the number to prevent future reuse.”

The first cause is cosmetic. The second is a missing line in a PR. Neither looks dangerous at the time.

The maintenance tax lands on the on-call engineer who has to trace a corrupted value back through a schema history that was never recorded in the .proto file. The reserved clause is the record. It is the only place the intent survives.

FAQ

Does the Confluent Schema Registry compatibility check detect a reused field number?

The retrieved Schema Registry documentation describes compatibility as a comparison of new schema versions against previous versions using configurable compatibility types. It does not describe a mechanism for detecting that a field number was previously assigned to a different field. The check evaluates allowed schema changes per format and policy; reuse detection is not part of that description.

What happens if I reuse a number that was never reserved?

The schema compiles. The wire format has no way to detect that the number means something different now. Old bytes decode under the new definition, which can produce a parse/merge error or a silently wrong value, depending on wire-type compatibility. The language guide lists developer time lost to debugging, parse/merge errors, leaked PII/SPII, and data corruption as possible outcomes.

Can I just change the field number instead of reserving it?

The language guide states that the number cannot be changed once the message type is in use because it identifies the field in the wire format. “Changing” a field number is equivalent to deleting that field and creating a new field with the same type but a new number. The documented procedure for deletion is to reserve the old number.

Do reserved names affect runtime JSON parsing?

The language guide states that reserved names affect only the protoc compiler behavior and not runtime behavior, with one exception: TextProto implementations may discard unknown fields with reserved names at parse time (only the C++ and Go implementations do so today). Runtime JSON parsing is not affected by reserved names.

What is the recommended compatibility mode for Protobuf?

The Confluent Schema Registry documentation notes that the best practice for Protobuf is to use BACKWARD_TRANSITIVE, because adding new message types is not forward compatible. The default compatibility type is BACKWARD.

Sources

The Freshness Alert Fired 40 Times a Day Until the Channel Muted It: Data Alert Design With Burn-Rate Budgets Instead of Static Thresholds

Somewhere in your Slack workspace there is a channel called #data-alerts. It fired forty times yesterday. Nobody read it. The one message that mattered — a source table that stopped receiving CDC events at 02:14 and stayed stale for six hours — scrolled past under thirty-nine “source X is 61 minutes stale” notifications that resolved themselves within two minutes.

That channel is not a monitoring failure. It is a design failure. The alert was written to answer the wrong question.

A static freshness threshold answers: is this one file late right now? The operational question is: are we on pace to miss the SLA? Those are different questions, and only one of them deserves a page.

What a static threshold actually measures

Take a dbt source with warn_after: {count: 1, period: hour} and error_after: {count: 2, period: hour}. The check compares the max load timestamp in the source against wall-clock time. If the upstream extractor runs at 02:00 and finishes at 02:03, the check at 02:05 passes. If it finishes at 03:01, the check fails. The alert fires on a single late file.

The Google SRE Workbook makes the cost of this pattern explicit. In its first alerting iteration — alert when the recent error rate equals the SLO over a short window — the authors note you could receive up to 144 alerts per day every day, not act upon any alerts, and still meet the SLO (SRE Workbook, Chapter 5). That is the arithmetic of a short window: excellent detection time, terrible precision. Every late file crosses the line. Almost none of them threaten the SLA.

The obvious fix — widen the window — has its own failure mode. The Workbook’s second iteration uses a 36-hour window to ensure only sustained problems alert. Precision improves. Reset time collapses: in the case of 100% outage, an alert will fire shortly after 2 minutes, and continue to fire for the next 36 hours. You have traded a noisy channel for a channel that lies to you for a day and a half after the incident is over.

The third iteration — add a for: 1h duration — is worse. The Workbook is blunt: because the duration does not scale with the severity of the incident, a 100% outage alerts after one hour, the same detection time as a 0.2% outage. A service that spikes to 100% errors for five minutes every ten minutes never triggers the alert at all, despite consuming 35% of the monthly budget. Duration parameters do not measure severity. They measure persistence.

Reframe freshness as an SLO with a budget

If your freshness SLA is “data is at most one hour old,” you have already defined an SLO. The good event is a load that arrives within the SLA. The bad event is a load that arrives late. The error budget is the fraction of loads you are allowed to deliver late over the measurement window — typically 30 days.

Once you frame it that way, a single late file is not an incident. It is budget spend. The pager should fire when the rate of budget spend threatens to exhaust the budget before the window closes. That rate is the burn rate.

Burn rate 1 means you are consuming budget at exactly the pace that exhausts it at the end of the window. Burn rate 2 exhausts it in half the time. The Workbook’s table for a 99.9% SLO over 30 days: burn rate 1 corresponds to a 0.1% error rate and 30 days to exhaustion; burn rate 10 corresponds to 1% and 3 days; burn rate 1,000 corresponds to 100% and 43 minutes.

For freshness, the mapping is direct. If your SLA is one hour and your measurement window is 30 days, then a source that is late 0.1% of the time is burning at rate 1. A source that is late 1% of the time is burning at rate 10 and will exhaust the budget in three days. A source that stops entirely is burning at rate 1,000 and will exhaust it in 43 minutes.

The rule shape that replaces the threshold

The Workbook recommends multiwindow, multi-burn-rate alerts as the most viable option. The recommended starting numbers: 2% budget consumption in one hour and 5% budget consumption in six hours as reasonable starting numbers for paging, and 10% budget consumption in three days as a good baseline for ticket alerts.

Translated into burn rates for a 30-day window:

  • Page: 14.4x burn rate over 1 hour, confirmed by 14.4x over 5 minutes. This is 2% of the budget in one hour.
  • Page: 6x burn rate over 6 hours, confirmed by 6x over 30 minutes. This is 5% of the budget in six hours.
  • Ticket: 1x burn rate over 3 days. This is 10% of the budget in three days.

The short confirmation window is the key mechanism. The Workbook’s guideline: make the short window 1/12 the duration of the long window. The long window establishes that a significant amount of budget has been spent. The short window establishes that the budget is still being spent. If the short window has recovered, the alert does not fire — which is exactly the class of alert that trains people to mute the channel.

In Prometheus, this maps onto the alerting rule primitives directly. The for clause waits a duration before firing; the keep_firing_for clause keeps the alert firing after the condition was last met, which the documentation describes as useful to prevent situations such as flapping alerts, false resolutions due to lack of data loss, etc. (Prometheus alerting rules). The same page is explicit that Prometheus alerting rules are not a notification solution: another layer is needed to add summarization, notification rate limiting, silencing and alert dependencies. That layer is Alertmanager. If you skip it, you will rebuild rate limiting and silencing by hand, badly.

Wiring it to the actual stack

dbt source freshness and Prometheus burn-rate rules are complementary, not competing. dbt produces the SLI — how stale is the source. Prometheus produces the alerting logic — how fast is the budget burning.

Two dbt behaviors matter for this design. First, dbt build does not include source freshness checks; you either select the “Run source freshness” checkbox in the job, which runs it as the first step and won’t break subsequent steps if it fails, or you add dbt source freshness as a run step, in which case if your source data is out of date — this step will “fail”, and subsequent steps will not run (dbt source freshness docs). The checkbox is the right choice if you want freshness to feed an alerting pipeline without blocking the models. The run step is the right choice if you want stale data to halt the DAG. Pick one deliberately; the default behavior of the run step has surprised more than one on-call engineer at 03:00.

Second, check frequency is not optional. dbt’s own guidance: you should run your source freshness jobs with at least double the frequency of your lowest SLA. If your SLA is one hour, run the check every 30 minutes. A daily freshness check against a one-hour SLA measures nothing useful — it tells you whether the source was fresh at the moment you happened to look.

The recording rule that turns freshness into a ratio is straightforward. Emit a gauge per source: 1 if fresh, 0 if stale. Then:

record: source:freshness_ratio_rate1h
expr: sum(rate(source_fresh[1h])) by (source)
      / sum(rate(source_expected[1h])) by (source)

The alert then compares that ratio against the burn-rate threshold. For a 99.9% freshness SLO, the 14.4x page rule is source:freshness_ratio_rate1h < (1 - 14.4 * 0.001) combined with the 5-minute confirmation. The exact numbers depend on your SLA; the shape does not.

Where the freshness SLI lies to you

A freshness check that only reads the max timestamp in the target table can miss a permanently skipped file. Snowpipe is the clearest example. Its file-loading metadata is maintained for 14 days. Files that failed to load — because of invalid content or stage access failures — are still registered in the pipe’s metadata, and the registered file names are ignored by subsequent pipe activity, including ALTER PIPE … REFRESH (Snowpipe troubleshooting). The target table’s max timestamp can look perfectly fresh while a specific partition is permanently missing rows.

The same page documents the inverse trap: files modified and staged again after 14 days are loaded again, potentially duplicating records. A freshness SLI that only measures recency will not catch either case. Pair it with a load-history check — COPY_HISTORY for status, SYSTEM$PIPE_STATUS for lastReceivedMessageTimestamp versus lastForwardedMessageTimestamp. The gap between those two timestamps distinguishes a service configuration problem from a path mismatch between the stage and pipe definitions. A freshness alert alone cannot make that distinction.

What the fix costs

Define the SLO per source: one hour of work per source if the SLA is already documented, half a day if it is not. Write the recording rule and the three alert rules: two to four hours for the first source, thirty minutes for each subsequent one once the pattern is templated. Wire Alertmanager routing and suppression: half a day, once.

The ongoing maintenance tax is real and should be priced honestly. You now have more windows, more thresholds, and more numbers to reason about. The Workbook names this directly as a disadvantage of multi-burn-rate alerting. The three-day ticket window also produces a longer reset time than a short-window alert would. And you need alert suppression, because a 10% budget spend in five minutes also means 5% was spent in six hours and 2% in one hour — three conditions true, three notifications, unless the monitoring system prevents it.

The trade is fewer pages and a ticket queue that catches slow burns. For an on-call engineer who was about to mute the channel, that is usually the right trade. It is not free, and it is not a platform migration — it is a few hours per source plus a routing layer you probably already have.

The operational rule

The pager should fire on budget spend, not on a single late file. The ticket queue catches the slow burns that would otherwise exhaust the budget unnoticed. The muted channel is the symptom; the static threshold is the cause.

If you want to test this on one source before committing: pick the noisiest freshness alert you have, count how many times it fired last week, and count how many of those firings corresponded to a real SLA miss. If the ratio is worse than 10:1, the threshold is measuring the wrong thing. Replace it with a burn-rate rule and watch the channel go quiet — not because you muted it, but because it stopped lying to you.

FAQ

Do I need Prometheus to do this? No. The Workbook’s examples use Prometheus syntax, but the page states the approach applies in any alerting framework. What you need is a way to compute a ratio over a window and compare it to a threshold, plus a notification layer that can suppress and route. Most observability platforms have both.

What if my SLA is not a clean number like 99.9%? The burn rate is derived from the SLA, not the other way around. If your SLA is 99% over 30 days, the error budget is 1%, and burn rate 1 corresponds to a 1% error rate. The recommended budget-consumption percentages (2% in 1h, 5% in 6h, 10% in 3d) stay the same; the burn-rate multipliers change.

Should I keep the old static threshold as a backstop? Only if you route it to a ticket queue, not a pager. A static threshold that pages is the problem you are trying to solve. A static threshold that opens a ticket is a cheap safety net for the case where your SLI pipeline itself breaks.

How do I handle sources with no fixed SLA? You cannot burn-rate alert on an undefined budget. Either define the SLA — even a loose one — or route the source to a dashboard and a weekly review. Paging on an undefined SLA is how you get forty alerts a day.