{
  "schema": "org-writing@v1",
  "slug": "the-ratchet",
  "kg": {
    "id": "org:writing:the-ratchet",
    "type": "brick",
    "graph": "/kg.json"
  },
  "title": "The ratchet",
  "subtitle": "A list of known breaches that may only shrink turns a backlog into a floor",
  "abstract": "How a codebase enforces a standard it does not yet meet, without lying about its state and without cleaning up inside someone else's unfinished work. The canonical treatment of the shrink-only exception list.",
  "kind": "brick",
  "topics": [
    "Approval"
  ],
  "courseMemberships": [
    {
      "course": "org:courses:approval",
      "topic": "Approval",
      "wall": "org:walls:ethics",
      "position": 2,
      "total": 5
    }
  ],
  "publishedAt": "2026-08-03T00:00:00.000Z",
  "version": 1,
  "guidelinesVersion": 15,
  "brief": {
    "problem": {
      "text": "A standard a codebase does not yet meet has two usual fates. Enforce it and the build goes red on work nobody has time to finish, so the check is switched off within the week; write it down as an aspiration and it never binds anything.",
      "claims": [
        "states in that field that the list may only shrink"
      ]
    },
    "mechanism": {
      "text": "The exception is enumerated rather than general, so the check stays green on the exact breaches somebody has already looked at and red on every new one, which makes the standard binding from today without requiring the past to be paid off first.",
      "claims": [
        "treats the exception list as a ratchet"
      ]
    },
    "move": {
      "text": "List the known breaches with a reason attached to each, refuse blanket patterns outright, and write into the list itself that it may only ever get shorter.",
      "claims": []
    }
  },
  "sources": [
    {
      "repo": "mnstry-website",
      "path": "foundation.config.json"
    },
    {
      "repo": "mnstry-website",
      "path": "scripts/foundation/validators/checks.mjs"
    },
    {
      "repo": "mnstry-atelier",
      "path": "src/boundary/content-rules.mjs"
    }
  ],
  "canonicalPath": "/writing/the-ratchet/",
  "body": "Every standard worth having arrives after the work it governs. Somebody decides that type below a certain size is unreadable, or that credentials never enter a source repository, and by then a hundred files already disagree. The two ordinary responses are both losses. Turn the check on and the build goes red on other people's half-finished work, which means the check is disabled by Thursday and the standard is dead with its reputation attached. Write the standard down as an aspiration instead and it binds nothing, which is the same death with better manners.\n\nThere is a third arrangement, and it is one sentence long. List the known breaches, give each one a reason, and rule that the list may only ever get shorter.\n\nOur own type floor works this way. The site's foundation configuration carries an exceptions entry naming one file and four specific font sizes that fall below the minimum, and the entry's reason field is not a shrug. It records that these are pre-existing breaches from earlier illustration work, listed so the floor is enforced from here rather than cleaned up inside a design somebody else still has in flight, and it closes with the sentence that does the real work. This list may only shrink. The validator says the same thing in its own comment, treating the enumerated set as a ratchet, passing exactly those sizes and failing the build on any new one.\n\nThe mechanism is that the exception is enumerated rather than general, so the check stays green on the precise breaches a person has already examined and red on every new one, which makes the standard binding from today forward without requiring the past to be paid off first.\n\nWritten that way, an exception stops being a hole and becomes an inventory. Each entry names a file, a value, and a reason a reviewer can act on, which means the debt is visible, countable, and attached to somebody's reasoning rather than to a general permission. And the list has a direction. Adding to it is a change a reviewer sees and has to defend; removing from it is free. Nothing about that arrangement is clever. It simply arranges the friction so the easy path points at the standard.\n\nWhich is why the failure mode is the blanket. Our boundary rule engine handles this at the other end of the workspace, where a project may exempt certain paths from a content rule, and it rejects the wildcard patterns by name. An exception has to carry a rule, a repository, real paths, and a reason of more than a few characters, or it is refused. The comment above that code says why in a sentence we have not improved on. A blanket exception is not an exception, it is switching the rule off. The distinction is not pedantry, because the two look identical in a configuration file and only one of them can be audited.\n\nThe pattern has a name outside software, and the people who named it were solving a harder version of the same problem. Article 4.3 of the Paris Agreement, adopted in 2015, requires that each country's successive climate commitment represent a progression beyond its current one, which is precisely a list that may only shrink, negotiated among parties with every incentive to loosen it later. Practitioners call it the ratchet mechanism. Its designers understood that the binding force of a commitment made by people who will not be in the room in twenty years comes from the shape of the instrument, not the sincerity of the signatories, and that a floor which can be lowered was never a floor.\n\nThat is the part worth carrying into a codebase meant to outlast the people writing it now. A backlog is a statement about intentions, and intentions leave when their owners do. A ratchet is a statement about what the build will accept tomorrow, made in a file the build actually reads, and it keeps its promise long after everyone who made it has moved on to something else.",
  "apparatus": {
    "note": "The human-facing essay is deliberately practical; this apparatus carries the full references, evidence-graded claims, article-local concepts, and research context behind it. Canonical concept definitions come from the concept registry.",
    "references": [
      {
        "id": "org:references:the-ratchet:r01",
        "author": "MNSTRY (website repository)",
        "work": "The foundation configuration, type-floor exceptions",
        "year": 2026,
        "relevance": "The primary artifact. One file, four listed font sizes below the minimum, and a reason field that records why the breaches are recorded rather than fixed and closes with the sentence making the list a ratchet."
      },
      {
        "id": "org:references:the-ratchet:r02",
        "author": "MNSTRY (website repository)",
        "work": "The foundation validators, the type-role floor check",
        "year": 2026,
        "relevance": "The enforcing half. Its own comment names the arrangement a ratchet and states the invariant, that the known set can only shrink and anything new fails the build."
      },
      {
        "id": "org:references:the-ratchet:r03",
        "author": "MNSTRY Atelier",
        "work": "Boundary content rules, exception validation",
        "year": 2026,
        "relevance": "The failure mode handled at the other end of the workspace. Blanket patterns are rejected by name, and an exception requires a rule, a repository, real paths, and a reason above a minimum length."
      },
      {
        "id": "org:references:the-ratchet:r04",
        "author": "United Nations Framework Convention on Climate Change",
        "work": "The Paris Agreement, Article 4.3",
        "year": 2015,
        "relevance": "The external anchor and the source of the name. A commitment instrument whose successive contributions may only progress, designed to bind parties whose signatories will not be in the room later."
      },
      {
        "id": "org:references:the-ratchet:r05",
        "author": "MNSTRY (this corpus)",
        "work": "'Cathedral of the mind' (the parent essay)",
        "year": 2026,
        "relevance": "The frame. A structure meant to outlast its builders needs governance that survives its founders, and a ratchet is one mechanical form that governance takes in a file the build reads."
      }
    ],
    "claims": [
      {
        "id": "org:claims:the-ratchet:c01",
        "claim": "The website foundation configuration records its known type-floor breaches as a list of one file and four specific font sizes below the minimum, with a reason recorded on the entry, and states in that field that the list may only shrink.",
        "basis": "The configuration read directly on 2026-08-03; the closing sentence of the reason field carries the shrink-only wording verbatim.",
        "confidence": "verified",
        "sources": []
      },
      {
        "id": "org:claims:the-ratchet:c02",
        "claim": "The validator enforcing the type floor treats the exception list as a ratchet, passing the enumerated sizes and failing the build on any font size below the floor that is not listed.",
        "basis": "The validator source read directly on 2026-08-03, including its own comment naming the arrangement and the code path that consults the allowed set before failing.",
        "confidence": "verified",
        "sources": []
      },
      {
        "id": "org:claims:the-ratchet:c03",
        "claim": "The recorded exceptions are attributed in the configuration to earlier illustration work already in flight rather than to a decision to lower the standard.",
        "basis": "The reason field states the attribution and the motive, that the floor is enforced from here rather than cleaned up inside an unfinished design.",
        "confidence": "verified",
        "sources": []
      },
      {
        "id": "org:claims:the-ratchet:c04",
        "claim": "The Atelier boundary rule engine rejects blanket exception patterns by name and requires a rule, a repository, real paths, and a reason above a minimum length before an exception is accepted, on the stated ground that a blanket exception is not an exception but a way of switching the rule off.",
        "basis": "The content-rules source read directly on 2026-08-03; the blanket pattern set and the minimum reason length are constants, and the reasoning is the file's own comment.",
        "confidence": "verified",
        "sources": []
      },
      {
        "id": "org:claims:the-ratchet:c05",
        "claim": "Article 4.3 of the Paris Agreement, adopted in 2015, requires each party's successive nationally determined contribution to represent a progression beyond its then current one, the provision practitioners call the ratchet mechanism.",
        "basis": "The agreement text and the standard commentary on it. The progression language is verbatim; the ratchet name is practitioner usage rather than treaty vocabulary.",
        "confidence": "verified",
        "sources": []
      }
    ],
    "concepts": [
      {
        "id": "org:concepts:shrink-only-exception",
        "name": "The shrink-only exception",
        "definition": "A standard a system does not yet meet is made binding by enumerating the known breaches, attaching to each a reason a reviewer can act on, and ruling that the list may only get shorter. Two properties do the work. The enumeration keeps the check green on breaches somebody has already examined and red on every new one, so the floor binds from today without requiring the backlog to be paid off first. The direction makes adding an entry a change a reviewer has to defend and removing one free. A blanket exception is not an instance of this pattern, because a general permission cannot be counted, audited, or made to shrink.",
        "provenance": "canonical"
      }
    ],
    "researchContext": "Sourced from two of our own repositories, the website foundation layer and\nthe Atelier boundary engine, plus one external instrument. No client or\ntenant material is involved. One scrub was applied: the configuration's\nreason field names the commit that introduced the breaches, and that\nidentifier does not enter the prose, the claims, or the source list, per the\nstanding rule against internal SHAs. The lane the breaches belong to is\ndescribed generically as earlier illustration work.\n\nThe brick's contribution is naming the third option between enforcing a\nstandard against unfinished work and writing it down as an aspiration, and\ninsisting that the two properties which make it work are the enumeration and\nthe direction. The enumeration makes the debt countable; the direction makes\nthe easy path point at the standard. Both are needed, which is why the\nblanket exception is treated here as the failure mode of the pattern rather\nthan as an unrelated problem.\n\nGrading note: the Paris Agreement claim is graded verified for the\nprogression requirement, which is treaty text, and the apparatus records\nthat the word ratchet is practitioner usage rather than the agreement's own\nvocabulary. Do not let a future revision quietly attribute the term to the\ntreaty.\n\nBoundary with the parent essay: \"Cathedral of the mind\" argues that a\nstructure outliving its builders needs provenance, preserved dissent, and\ngovernance that survives its founders. This brick takes the third and shows\nwhat it looks like when the governance has to hold against the people who\nwrote it, including the ones who will want the list to grow."
  },
  "contract": "https://mnstry.org/contracts/org/org-writing.v1.schema.json",
  "releaseHash": "e72522c0b953dd329bff15f90bfbf4306355230a80ae5b220915c5954db38bf6",
  "versions": [
    {
      "version": 1,
      "cutAt": "2026-08-03",
      "note": "Initial publication, boundary wave",
      "visibility": "published",
      "path": "/writing/the-ratchet/",
      "contentHash": "sha256:c02abdb76cffde3a",
      "releaseHash": "e72522c0b953dd329bff15f90bfbf4306355230a80ae5b220915c5954db38bf6"
    }
  ]
}