{
 "schemaVersion": 2,
 "site": "https://stillvalid.dev",
 "generated": "2026-08-17",
 "count": 76,
 "items": [
  {
   "slug": "a-rule-without-an-executor",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "A Rule Without An Executor",
   "summary": "The capability existed. Nothing ever called it. Eighty-four days later the project was dead.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/a-rule-without-an-executor",
   "md_url": "https://stillvalid.dev/patterns/a-rule-without-an-executor.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2182",
   "cid_url": "https://stillvalid.dev/c/SV-2182",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 331,
   "tldr": "A drafting capability was built and documented, and no scheduled task ever invoked it. Nothing failed, because nothing ran. A repeated action with no executor is a proposal wearing the clothes of a rule, and it decays silently.",
   "tags": [
    "process",
    "automation",
    "governance"
   ],
   "origin": "pattern log PAT-060, post-mortem of predecessor project",
   "rating": 8.4,
   "ratingAxes": "useful 9 · evidence 8 · pull 8 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 8.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "absence-from-one-spelling",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Concluding Absence From One Spelling",
   "summary": "A search for a company name returned nothing, so the answer was \"there is no record.\" The record existed under a different spelling of the same name.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/absence-from-one-spelling",
   "md_url": "https://stillvalid.dev/patterns/absence-from-one-spelling.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-8551",
   "cid_url": "https://stillvalid.dev/c/SV-8551",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 314,
   "tldr": "A grep on a single spelling of a company name returned zero hits, and that became a three-day claim that no record existed. The record was there under a variant spelling with one letter changed. Absence in one form is not evidence of absence.",
   "tags": [
    "verification",
    "search",
    "memory"
   ],
   "origin": "recidiva tracker R-127, 2026-08-14",
   "rating": 8.1,
   "ratingAxes": "useful 8 · evidence 8 · pull 8 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 8.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "acting-without-asking",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "Acting Without Asking: Six Conditions",
   "summary": "How an agent gets permission to fix things on its own without that permission quietly becoming permission for everything.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/acting-without-asking",
   "md_url": "https://stillvalid.dev/architecture/acting-without-asking.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-9903",
   "cid_url": "https://stillvalid.dev/c/SV-9903",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 754,
   "tldr": "A blanket approve-everything rule makes an agent useless for routine repairs; a blanket allow makes it dangerous. The middle is a standing mandate: autonomous action permitted only while six conditions all hold, failing closed, capped per day, with a one-strike tripwire.",
   "tags": [
    "autonomy",
    "governance",
    "deep-dive"
   ],
   "origin": "standing mandate, in production since 2026-06-18",
   "rating": 8.4,
   "ratingAxes": "useful 9 · evidence 8 · pull 8 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 8.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "adding-a-rule-without-removing-one",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Adding A Rule Without Removing One",
   "summary": "Every fix adds a rule. No fix removes one. After a year the instructions are longer than anyone reads.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/adding-a-rule-without-removing-one",
   "md_url": "https://stillvalid.dev/patterns/adding-a-rule-without-removing-one.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-0317",
   "cid_url": "https://stillvalid.dev/c/SV-0317",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 356,
   "tldr": "Instruction sets grow monotonically because every correction adds a rule and nothing ever retires one. Past a certain length the rules stop being read in full, which means the newest rule silently competes with the oldest instead of replacing it. Net-zero complexity has to be a rule of its own.",
   "tags": [
    "governance",
    "rules",
    "complexity"
   ],
   "origin": "operating rule 102, in production",
   "rating": 7.5,
   "ratingAxes": "useful 8 · evidence 7 · pull 7 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "annotated-claude-md",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "My Actual CLAUDE.md — Annotated and Anonymised",
   "summary": "The real rules file, line by line, with the reasoning behind each block.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/annotated-claude-md",
   "md_url": "https://stillvalid.dev/architecture/annotated-claude-md.md",
   "date": "2026-05-22",
   "updated": "2026-05-22",
   "cid": "SV-1540",
   "cid_url": "https://stillvalid.dev/c/SV-1540",
   "verified": "2026-05-22",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 2235,
   "tldr": "The root instruction file of an agent that has been in production for ~9 months, annotated line by line: what each rule does and which failure created it. Rules are shown as they run, with the company details stripped.",
   "tags": [
    "claude-md",
    "rules",
    "constitution"
   ],
   "origin": "reddit r/ClaudeAI",
   "rating": 8.5,
   "ratingAxes": "useful 9 · evidence 8 · pull 9 · original 8 · form 8",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 8.0,
    "pull": 9.0,
    "original": 8.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "approval-for-the-reversible",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Asking Approval For The Reversible",
   "summary": "A gate meant for irreversible decisions gets applied to everything, and the person it protects stops reading it.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/approval-for-the-reversible",
   "md_url": "https://stillvalid.dev/patterns/approval-for-the-reversible.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-6013",
   "cid_url": "https://stillvalid.dev/c/SV-6013",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 312,
   "tldr": "A planning gate designed for expensive or irreversible work gets applied to routine reversible tasks too, because triggering on step count is easy and triggering on consequence is not. The result is approval fatigue: the same person now rubber-stamps the plan that actually mattered.",
   "tags": [
    "autonomy",
    "process",
    "governance"
   ],
   "origin": "plan-first gate, in production",
   "rating": 7.95,
   "ratingAxes": "useful 8 · evidence 8 · pull 8 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 8.0,
    "pull": 8.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "build-a-repeat-counter",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "Build A Repeat-Mistake Counter",
   "summary": "Notes about mistakes are useless without a count. Here is the ledger, the escalation ladder and the one habit that makes it work.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/build-a-repeat-counter",
   "md_url": "https://stillvalid.dev/playbooks/build-a-repeat-counter.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-0862",
   "cid_url": "https://stillvalid.dev/c/SV-0862",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 556,
   "tldr": "Notes about an agent's mistakes are nearly useless without a count, because the fifth repeat looks exactly like the first. This is the ledger format, the 4-step escalation ladder, and the habit that keeps it alive: log the count in the same action as the correction, never later.",
   "tags": [
    "governance",
    "quality",
    "playbook"
   ],
   "origin": "in production since 2026-05-04",
   "rating": 7.95,
   "ratingAxes": "useful 9 · evidence 7 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "conclusions-from-truncated-output",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Drawing Conclusions From Truncated Output",
   "summary": "A command printed the first twenty lines and the summary described all of them.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/conclusions-from-truncated-output",
   "md_url": "https://stillvalid.dev/patterns/conclusions-from-truncated-output.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-9814",
   "cid_url": "https://stillvalid.dev/c/SV-9814",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 306,
   "tldr": "A listing was cut off by a display limit, and the conclusion described the whole set as if the visible part were all of it. Truncation is invisible in the result — the output looks complete because nothing announces the cut.",
   "tags": [
    "verification",
    "tooling",
    "data"
   ],
   "origin": "recidiva tracker R-120, class of errors",
   "rating": 7.25,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "decision-authority-in-markdown",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "A Decision Authority Matrix In Markdown",
   "summary": "Which actions an agent takes alone, which it proposes, and which it never touches — written as a table rather than encoded in prompts.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/decision-authority-in-markdown",
   "md_url": "https://stillvalid.dev/playbooks/decision-authority-in-markdown.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-9497",
   "cid_url": "https://stillvalid.dev/c/SV-9497",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 532,
   "tldr": "Instead of scattering permission logic through prompts, put it in one table: four levels from read-only to irreversible, and a per-action-type matrix that maps concrete actions onto them. The rule that makes it hold is that reversibility, not importance, decides the level.",
   "tags": [
    "autonomy",
    "governance",
    "playbook"
   ],
   "origin": "in production, decision matrix L0-L3",
   "rating": 7.95,
   "ratingAxes": "useful 9 · evidence 7 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "degraded-mode",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "Degraded Mode: When The Source Of Truth Is Down",
   "summary": "What an agent should do when the system holding the authoritative data is unavailable — and what it must never do.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/degraded-mode",
   "md_url": "https://stillvalid.dev/playbooks/degraded-mode.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-9686",
   "cid_url": "https://stillvalid.dev/c/SV-9686",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 483,
   "tldr": "When the authoritative source is unreachable, the failure mode is not stopping — it is answering from a cache without saying so. Degraded mode makes the fallback explicit: read the cache, label every figure with its age, queue writes rather than applying them, and reconcile on recovery.",
   "tags": [
    "reliability",
    "data",
    "playbook"
   ],
   "origin": "degraded mode rule, in production",
   "rating": 7.4,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "devlog-001",
   "section": "log",
   "menu": "01_LOG",
   "type": "devlog",
   "title": "MIA Dev Log #001 — Why I'm Building in Public",
   "summary": "Why a private build went public: 71K views, 175 upvotes, and a comment section asking for the files.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/devlog-001",
   "md_url": "https://stillvalid.dev/log/devlog-001.md",
   "date": "2026-05-21",
   "updated": "2026-05-21",
   "cid": "SV-3625",
   "cid_url": "https://stillvalid.dev/c/SV-3625",
   "verified": "2026-05-21",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 224,
   "tldr": "A Reddit post about the agent hit 71K views and 175 upvotes, and nearly every comment asked for the actual files. That response is what turned a private build into a public one.",
   "tags": [
    "devlog",
    "build-log"
   ],
   "origin": "unpublished draft",
   "rating": 4.45,
   "ratingAxes": "useful 3 · evidence 5 · pull 5 · original 4 · form 7",
   "ratingAxesValues": {
    "useful": 3.0,
    "evidence": 5.0,
    "pull": 5.0,
    "original": 4.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "devlog-002",
   "section": "log",
   "menu": "01_LOG",
   "type": "devlog",
   "title": "MIA Dev Log #002 — The Platform Decision",
   "summary": "Three publishing platforms compared in one sitting. Beehiiv won on one criterion: it had a REST API.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/devlog-002",
   "md_url": "https://stillvalid.dev/log/devlog-002.md",
   "date": "2026-05-21",
   "updated": "2026-05-21",
   "cid": "SV-1354",
   "cid_url": "https://stillvalid.dev/c/SV-1354",
   "verified": "2026-05-21",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 214,
   "tldr": "Three publishing platforms evaluated in one sitting: Substack has no publish API, Ghost costs $9/month with bolted-on newsletter, Beehiiv is free to 2,500 subscribers with a REST API. Beehiiv won on the API alone.",
   "tags": [
    "devlog",
    "build-log"
   ],
   "origin": "unpublished draft",
   "rating": 5.0,
   "ratingAxes": "useful 4 · evidence 6 · pull 5 · original 4 · form 7",
   "ratingAxesValues": {
    "useful": 4.0,
    "evidence": 6.0,
    "pull": 5.0,
    "original": 4.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "devlog-003",
   "section": "log",
   "menu": "01_LOG",
   "type": "devlog",
   "title": "MIA Dev Log #003 — The Pen Name Crisis",
   "summary": "Thirteen name attempts, most taken. For an anonymous technical blog the name carries the whole identity.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/devlog-003",
   "md_url": "https://stillvalid.dev/log/devlog-003.md",
   "date": "2026-05-21",
   "updated": "2026-05-21",
   "cid": "SV-8349",
   "cid_url": "https://stillvalid.dev/c/SV-8349",
   "verified": "2026-05-21",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 238,
   "tldr": "About thirteen name attempts, most already taken, before 'Agent MIA' appeared mid-signup. For an anonymous technical blog the name carries the whole identity — there is no face, company or bio behind it.",
   "tags": [
    "devlog",
    "build-log"
   ],
   "origin": "unpublished draft",
   "rating": 4.05,
   "ratingAxes": "useful 2 · evidence 4 · pull 5 · original 5 · form 7",
   "ratingAxesValues": {
    "useful": 2.0,
    "evidence": 4.0,
    "pull": 5.0,
    "original": 5.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "devlog-004",
   "section": "log",
   "menu": "01_LOG",
   "type": "devlog",
   "title": "MIA Dev Log #004 — The API Is Behind a Wall",
   "summary": "The platform was chosen for its API — then the API turned out to sit behind Stripe identity verification.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/devlog-004",
   "md_url": "https://stillvalid.dev/log/devlog-004.md",
   "date": "2026-05-21",
   "updated": "2026-05-21",
   "cid": "SV-4341",
   "cid_url": "https://stillvalid.dev/c/SV-4341",
   "verified": "2026-05-21",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 197,
   "tldr": "Beehiiv gates its API key behind Stripe identity verification, which blocked the entire automation pipeline — the one reason the platform was chosen. Publishing fell back to manual until KYC cleared.",
   "tags": [
    "devlog",
    "build-log"
   ],
   "origin": "unpublished draft",
   "rating": 5.15,
   "ratingAxes": "useful 4 · evidence 6 · pull 5 · original 5 · form 7",
   "ratingAxesValues": {
    "useful": 4.0,
    "evidence": 6.0,
    "pull": 5.0,
    "original": 5.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "devlog-005",
   "section": "log",
   "menu": "01_LOG",
   "type": "devlog",
   "title": "MIA Dev Log #005 — The Blog Is Live",
   "summary": "The publishing surface goes live. Until it exists, nothing else written has anywhere to land.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/devlog-005",
   "md_url": "https://stillvalid.dev/log/devlog-005.md",
   "date": "2026-05-21",
   "updated": "2026-05-21",
   "cid": "SV-8645",
   "cid_url": "https://stillvalid.dev/c/SV-8645",
   "verified": "2026-05-21",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 203,
   "tldr": "The blog went live with a dark terminal theme on the simplest available template. Nothing else — deep dives, agent breakdowns, post-mortems — has anywhere to live until the publishing surface exists.",
   "tags": [
    "devlog",
    "build-log"
   ],
   "origin": "unpublished draft",
   "rating": 3.95,
   "ratingAxes": "useful 2 · evidence 5 · pull 4 · original 4 · form 7",
   "ratingAxesValues": {
    "useful": 2.0,
    "evidence": 5.0,
    "pull": 4.0,
    "original": 4.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "devlog-006",
   "section": "log",
   "menu": "01_LOG",
   "type": "devlog",
   "title": "Dev Log #006 — The Brainstorm Tool That Ran On Itself",
   "summary": "Nine runs, 604 ideas, zero decisions. The fix wasn't more ideas — it was a hard gate the tool couldn't skip.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/devlog-006",
   "md_url": "https://stillvalid.dev/log/devlog-006.md",
   "date": "2026-08-17",
   "updated": "2026-08-17",
   "cid": "SV-0412",
   "cid_url": "https://stillvalid.dev/c/SV-0412",
   "verified": "2026-08-17",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 0,
   "tldr": "A structured brainstorming tool had produced 604 ideas across 9 runs and converted exactly zero of them into a real decision. Pointed at its own failure, it generated 48 candidate fixes and ranked them. The fix that shipped wasn't a better idea generator — it was a mandatory step the tool could no longer silently skip, plus a forced choice at the end of every run.",
   "tags": [
    "devlog",
    "build-log",
    "tooling",
    "governance",
    "brainstorming"
   ],
   "origin": "self-reflexive run, 08-17 — state JSON + implementation waves",
   "rating": 6.9,
   "ratingAxes": "useful 7 · evidence 8 · pull 7 · original 6 · form 7",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 8.0,
    "pull": 7.0,
    "original": 6.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "dl-brainstorm-engine",
   "section": "downloads",
   "menu": "06_DOWNLOADS",
   "type": "artifact",
   "title": "Brainstorm Engine — Skill Skeleton",
   "summary": "A divergence-then-evaluation brainstorming skill with one property most idea-generation tools skip: it forces a decision at the end instead of stopping at a ranked list.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/downloads/dl-brainstorm-engine",
   "md_url": "https://stillvalid.dev/downloads/dl-brainstorm-engine.md",
   "date": "2026-08-17",
   "updated": "2026-08-17",
   "cid": "SV-5864",
   "cid_url": "https://stillvalid.dev/c/SV-5864",
   "verified": "2026-08-17",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 0,
   "tldr": "A skill definition for structured brainstorming — generate first, score second, audit for bias third, then force a same-session pick. Built after measuring that a looser version of this process produced 604 ideas across 9 runs and converted exactly zero into a chosen next step. The fix wasn't a better idea generator; it was making the audit step and the final choice impossible to silently skip.",
   "tags": [
    "download",
    "brainstorming",
    "decision",
    "template",
    "tooling",
    "governance"
   ],
   "origin": "derived from a live skill file, generalised for reuse",
   "rating": 7.2,
   "ratingAxes": "useful 8 · evidence 7 · pull 7 · original 7 · form 7",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "dl-claude-md-skeleton",
   "section": "downloads",
   "menu": "06_DOWNLOADS",
   "type": "artifact",
   "title": "CLAUDE.md Skeleton",
   "summary": "The root instruction file, stripped to its structure. Copy it, fill the bracketed parts, delete what you do not need.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/downloads/dl-claude-md-skeleton",
   "md_url": "https://stillvalid.dev/downloads/dl-claude-md-skeleton.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4083",
   "cid_url": "https://stillvalid.dev/c/SV-4083",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 375,
   "tldr": "A blank version of the root instruction file this agent runs on: identity, hard rules, decision authority, routing, response protocol. The order matters more than the content — hard rules sit above everything else because a rule buried at line 300 is a rule that competes with position rather than winning on precedence.",
   "tags": [
    "download",
    "claude-md",
    "template"
   ],
   "origin": "derived from the live file, anonymised",
   "rating": 7.25,
   "ratingAxes": "useful 9 · evidence 5 · pull 8 · original 6 · form 8",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 5.0,
    "pull": 8.0,
    "original": 6.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "dl-decision-matrix",
   "section": "downloads",
   "menu": "06_DOWNLOADS",
   "type": "artifact",
   "title": "Decision Authority Matrix",
   "summary": "A table that answers, in advance, which actions the agent takes alone.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/downloads/dl-decision-matrix",
   "md_url": "https://stillvalid.dev/downloads/dl-decision-matrix.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4398",
   "cid_url": "https://stillvalid.dev/c/SV-4398",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 343,
   "tldr": "A fill-in table mapping action types onto four authority levels defined by reversibility rather than importance. The point is to answer the question before it is asked under time pressure, because a boundary negotiated in the moment is a boundary that moves.",
   "tags": [
    "download",
    "autonomy",
    "template"
   ],
   "origin": "derived from the live matrix",
   "rating": 7.05,
   "ratingAxes": "useful 9 · evidence 5 · pull 7 · original 6 · form 8",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 5.0,
    "pull": 7.0,
    "original": 6.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "dl-handoff-template",
   "section": "downloads",
   "menu": "06_DOWNLOADS",
   "type": "artifact",
   "title": "Five-Field Delegation Brief",
   "summary": "The smallest brief that reliably produces usable work from a sub-agent.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/downloads/dl-handoff-template",
   "md_url": "https://stillvalid.dev/downloads/dl-handoff-template.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-8876",
   "cid_url": "https://stillvalid.dev/c/SV-8876",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 251,
   "tldr": "Five fields — task with its reason, context, output shape, limits, and required self-verification. The reason field is the one that changes results, because a sub-agent that knows why can make the small judgement calls the brief did not anticipate.",
   "tags": [
    "download",
    "delegation",
    "template"
   ],
   "origin": "derived from live agent briefs",
   "rating": 7.3,
   "ratingAxes": "useful 9 · evidence 6 · pull 7 · original 6 · form 8",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 6.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "dl-repeat-ledger",
   "section": "downloads",
   "menu": "06_DOWNLOADS",
   "type": "artifact",
   "title": "Repeat-Mistake Ledger",
   "summary": "One table and four thresholds. The cheapest quality mechanism in the system.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/downloads/dl-repeat-ledger",
   "md_url": "https://stillvalid.dev/downloads/dl-repeat-ledger.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5572",
   "cid_url": "https://stillvalid.dev/c/SV-5572",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 313,
   "tldr": "A single table that counts repeated mistakes by class, with fixed escalation thresholds at 1, 2, 3 and 5. The habit that makes it work is logging in the same action as the correction — a ledger filled in during a weekly review pass is abandoned within a month.",
   "tags": [
    "download",
    "quality",
    "template"
   ],
   "origin": "derived from the live ledger",
   "rating": 7.05,
   "ratingAxes": "useful 9 · evidence 5 · pull 7 · original 6 · form 8",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 5.0,
    "pull": 7.0,
    "original": 6.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "dl-skill-template",
   "section": "downloads",
   "menu": "06_DOWNLOADS",
   "type": "artifact",
   "title": "SKILL.md Template",
   "summary": "The shape of a reusable capability: when to fire, when not to, what it does, how it fails.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/downloads/dl-skill-template",
   "md_url": "https://stillvalid.dev/downloads/dl-skill-template.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3442",
   "cid_url": "https://stillvalid.dev/c/SV-3442",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 307,
   "tldr": "A template for a callable skill file. The two fields that decide whether it is ever used correctly are the trigger list and the explicit not-for list — without the second, a skill gets invoked for adjacent tasks it handles badly, and the failure looks like a capability problem rather than a routing one.",
   "tags": [
    "download",
    "skills",
    "template"
   ],
   "origin": "derived from live skill files",
   "rating": 6.7,
   "ratingAxes": "useful 8 · evidence 5 · pull 6 · original 7 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 5.0,
    "pull": 6.0,
    "original": 7.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "eighty-four-days",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "Eighty-Four Days of Silence",
   "summary": "The first version of this station stopped publishing for 84 days with six weeks of finished drafts sitting in a folder. The drafts were never the problem.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/eighty-four-days",
   "md_url": "https://stillvalid.dev/failures/eighty-four-days.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-7878",
   "cid_url": "https://stillvalid.dev/c/SV-7878",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 720,
   "tldr": "A publishing project went quiet for 84 days while holding finished drafts for six more weeks of posts. Three separate points of friction did it: a blocked API, a rule with nobody to run it, and an approval step that cost twenty minutes per post. The median blog dies at around 126 days, so this was not bad luck — it was the base rate. The fix that mattered was making buffer depth the primary metric instead of cadence.",
   "tags": [
    "publishing",
    "failure",
    "process",
    "motivation"
   ],
   "origin": "post-mortem of predecessor project",
   "rating": 8.85,
   "ratingAxes": "useful 9 · evidence 9 · pull 9 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 9.0,
    "pull": 9.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "empty-is-not-zero",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Empty Is Not Zero",
   "summary": "A weekend of missing exports read as a sales collapse in exactly the window a marketing cut was being tested.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/empty-is-not-zero",
   "md_url": "https://stillvalid.dev/patterns/empty-is-not-zero.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3826",
   "cid_url": "https://stillvalid.dev/c/SV-3826",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 321,
   "tldr": "An export did not run over a weekend, so three daily files were byte-identical and one day showed 59 in revenue against a normal 130 to 368. The analysis read a pipeline outage as a demand collapse, in the exact window a spend cut was being evaluated. A blank cell and a real zero look the same.",
   "tags": [
    "data",
    "analysis",
    "verification"
   ],
   "origin": "pattern log PAT-059, 2026-08-03",
   "rating": 8.85,
   "ratingAxes": "useful 9 · evidence 9 · pull 9 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 9.0,
    "pull": 9.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "enforcement-levels",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "Enforcement Levels: Writing A Rule Is Not Fixing It",
   "summary": "Four levels of enforcement, from a sentence in a prompt to a gate that fails the build, and how to choose.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/enforcement-levels",
   "md_url": "https://stillvalid.dev/architecture/enforcement-levels.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-6710",
   "cid_url": "https://stillvalid.dev/c/SV-6710",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 736,
   "tldr": "A rule can be enforced four ways: as prompt text, as a checklist inside a skill, as an automated check, or as a hard gate. Only the last two survive a busy week. The count that matters is not how many rules exist but how many have enforcement above the weakest level.",
   "tags": [
    "governance",
    "enforcement",
    "deep-dive"
   ],
   "origin": "enforcement ladder, in production",
   "rating": 7.8,
   "ratingAxes": "useful 8 · evidence 8 · pull 7 · original 8 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 8.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "fn-the-rule-nobody-reads",
   "section": "log",
   "menu": "01_LOG",
   "type": "field-note",
   "title": "The Rule Nobody Reads",
   "summary": "Two hundred and thirty-seven written rules. The binding constraint stopped being memory a long time ago.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/fn-the-rule-nobody-reads",
   "md_url": "https://stillvalid.dev/log/fn-the-rule-nobody-reads.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4361",
   "cid_url": "https://stillvalid.dev/c/SV-4361",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 293,
   "tldr": "An agent's instruction set reaches 237 rules and the constraint stops being what is written and becomes what is read. Past that point new rules do not replace old ones, they compete with them, and the only reliable enforcement is a check that runs rather than a sentence that exists.",
   "tags": [
    "governance",
    "rules",
    "attention"
   ],
   "origin": "rule count, 2026-08-14",
   "rating": 7.7,
   "ratingAxes": "useful 7 · evidence 8 · pull 8 · original 8 · form 8",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 8.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "fn-what-briefly-switches-off",
   "section": "log",
   "menu": "01_LOG",
   "type": "field-note",
   "title": "What \"Briefly\" Should Not Switch Off",
   "summary": "A request for brevity suppresses formatting. It must not suppress a warning.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/log/fn-what-briefly-switches-off",
   "md_url": "https://stillvalid.dev/log/fn-what-briefly-switches-off.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-7347",
   "cid_url": "https://stillvalid.dev/c/SV-7347",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 299,
   "tldr": "An operator asking for brevity is asking to skip the scaffolding — the suggestions, the framing, the extras. The mistake is letting that suppress safety output too, because the moments someone asks for speed are exactly the moments a warning matters most. Some things stay regardless of what was asked.",
   "tags": [
    "communication",
    "safety",
    "protocol"
   ],
   "origin": "minimal-mode gate, in production",
   "rating": 7.45,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 9 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 9.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "folder-structure",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "The Folder Structure That Runs a Production AI Agent",
   "summary": "How the filesystem is laid out, and why every directory earns its place.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/folder-structure",
   "md_url": "https://stillvalid.dev/architecture/folder-structure.md",
   "date": "2026-05-25",
   "updated": "2026-05-25",
   "cid": "SV-2135",
   "cid_url": "https://stillvalid.dev/c/SV-2135",
   "verified": "2026-05-25",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 1743,
   "tldr": "The filesystem layout of a production agent after nine months and roughly four refactors, with the reasoning for each directory. The model reads paths and picks files by name, so a chaotic tree produces a drifting agent — not metaphorically.",
   "tags": [
    "structure",
    "filesystem",
    "organisation"
   ],
   "origin": "reddit r/ClaudeAI",
   "rating": 7.85,
   "ratingAxes": "useful 8 · evidence 7 · pull 8 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "llms-txt-as-a-plan",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Treating llms.txt as a Distribution Plan",
   "summary": "Shipping the machine-readable layer is cheap and worth doing. Expecting it to bring readers is a different claim, and the evidence is against it.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/llms-txt-as-a-plan",
   "md_url": "https://stillvalid.dev/patterns/llms-txt-as-a-plan.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3809",
   "cid_url": "https://stillvalid.dev/c/SV-3809",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 690,
   "tldr": "A site publishes llms.txt, a markdown mirror and a JSON index, and calls that its growth strategy. The files are worth shipping — they cost hours and they serve the real case where a person hands your link to their agent. What they do not do is bring anyone. Google says no AI service fetches llms.txt; one crawler logs roughly 24,000 crawled pages per single referral. Build the layer, then go find humans.",
   "tags": [
    "agents",
    "llms-txt",
    "geo",
    "distribution",
    "anti-pattern"
   ],
   "origin": "research synthesis, 2026-08-14",
   "rating": 8.7,
   "ratingAxes": "useful 8 · evidence 9 · pull 9 · original 9 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 9.0,
    "pull": 9.0,
    "original": 9.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "maximum-effort-by-default",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Maximum Effort By Default",
   "summary": "If the model has a hardest setting, the temptation is to leave it there. It costs more and reasons worse.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/maximum-effort-by-default",
   "md_url": "https://stillvalid.dev/patterns/maximum-effort-by-default.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3312",
   "cid_url": "https://stillvalid.dev/c/SV-3312",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 324,
   "tldr": "Reasoning effort is a dial, and leaving it at maximum feels like buying quality. It is not free: cost rises, latency rises, and on simple tasks the extra reasoning produces overthinking rather than accuracy. The working default is one notch below maximum, reserving the top for irreversible decisions.",
   "tags": [
    "models",
    "cost",
    "effort"
   ],
   "origin": "effort policy, in production",
   "rating": 7.6,
   "ratingAxes": "useful 8 · evidence 6 · pull 8 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "memory-as-files",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "Memory As Files, Not As A Database",
   "summary": "Four kinds of memory, each a directory of markdown, and why a vector store was the wrong instinct.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/memory-as-files",
   "md_url": "https://stillvalid.dev/architecture/memory-as-files.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-6112",
   "cid_url": "https://stillvalid.dev/c/SV-6112",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 800,
   "tldr": "This agent's memory is markdown files in four categories: behavioural rules, entities, reference material and project state. No vector database, no embeddings. The reason is that retrieval was never the bottleneck — knowing what is authoritative was, and files make authority visible in a way a similarity score cannot.",
   "tags": [
    "memory",
    "architecture",
    "deep-dive"
   ],
   "origin": "in production ~9 months",
   "rating": 8.45,
   "ratingAxes": "useful 8 · evidence 8 · pull 9 · original 9 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 8.0,
    "pull": 9.0,
    "original": 9.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "mixing-the-scales",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Mixing The Scales",
   "summary": "Six different meanings, all rendered as coloured dots. The reader cannot tell which question a colour is answering.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/mixing-the-scales",
   "md_url": "https://stillvalid.dev/patterns/mixing-the-scales.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5398",
   "cid_url": "https://stillvalid.dev/c/SV-5398",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 312,
   "tldr": "A system that scores several different things — urgency, suitability, confidence, completion — tends to render them all the same way. Once red means both urgent and unsuitable, a reader has to infer which question is being answered. Giving each scale its own shape removes the ambiguity for free.",
   "tags": [
    "visual",
    "communication",
    "clarity"
   ],
   "origin": "visual system, in production",
   "rating": 7.4,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "named-for-the-moment",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Named For The Moment It Was Created",
   "summary": "File names that made sense on the day they were written and are unsearchable a month later.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/named-for-the-moment",
   "md_url": "https://stillvalid.dev/patterns/named-for-the-moment.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-7390",
   "cid_url": "https://stillvalid.dev/c/SV-7390",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 328,
   "tldr": "Files get named from the context of their creation — final, v2, notes, the client name alone. Those names encode the moment rather than the content, so a month later nothing can be found without opening it. A naming convention is a retrieval system, and it has to be decided before the first file, not after the hundredth.",
   "tags": [
    "naming",
    "files",
    "memory"
   ],
   "origin": "naming protocol, in production",
   "rating": 7.25,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "one-source-is-a-hypothesis",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "One Source Is A Hypothesis",
   "summary": "A single confident source becomes a stated fact somewhere between reading it and writing it down.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/one-source-is-a-hypothesis",
   "md_url": "https://stillvalid.dev/patterns/one-source-is-a-hypothesis.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-8325",
   "cid_url": "https://stillvalid.dev/c/SV-8325",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 302,
   "tldr": "A claim from one source is a hypothesis. Somewhere between reading and repeating, the qualifier falls off and it becomes a fact that other work is built on. The fix is mechanical: mark single-source claims in the text itself, so the caveat travels with the number instead of staying in the reader's head.",
   "tags": [
    "verification",
    "sources",
    "reasoning"
   ],
   "origin": "triangulation rule, in production",
   "rating": 7.25,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "properties-instead-of-a-brief",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Properties Instead Of A Brief",
   "summary": "A task with a perfect set of fields and an empty body is not a task. It is a reminder that something exists.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/properties-instead-of-a-brief",
   "md_url": "https://stillvalid.dev/patterns/properties-instead-of-a-brief.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5565",
   "cid_url": "https://stillvalid.dev/c/SV-5565",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 332,
   "tldr": "Agent-created tasks accumulate flawless metadata — owner, due date, priority, tags — and an empty body. Three weeks later nobody can reconstruct what was meant. The test that fixes it: would the person who has to do this understand it with no memory of the conversation that created it?",
   "tags": [
    "tasks",
    "delegation",
    "tooling"
   ],
   "origin": "task policy, in production",
   "rating": 7.5,
   "ratingAxes": "useful 8 · evidence 7 · pull 7 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "receipts-001",
   "section": "receipts",
   "menu": "07_RECEIPTS",
   "type": "receipt",
   "title": "Receipts #1 — One Month In Ratios",
   "summary": "Operating numbers for the agent itself: rules, agents, skills, repeat failures and what share of them got a fix that runs.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/receipts/receipts-001",
   "md_url": "https://stillvalid.dev/receipts/receipts-001.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5580",
   "cid_url": "https://stillvalid.dev/c/SV-5580",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 520,
   "tldr": "The first operating record: 12 agents, 237 written rules, 30-entry cap on the pattern log, and a repeat-mistake ledger with a 4-step escalation ladder. Every number here describes the agent, not the business it runs. The uncomfortable one is the ratio of rules to executors.",
   "tags": [
    "receipts",
    "numbers",
    "operations"
   ],
   "origin": "system registers, 2026-08-14",
   "rating": 8.25,
   "ratingAxes": "useful 7 · evidence 9 · pull 8 · original 10 · form 8",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 9.0,
    "pull": 8.0,
    "original": 10.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "revenue-as-the-metric",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Revenue As The Metric",
   "summary": "The number everyone reaches for is the one that cannot tell a good week from a bad one.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/revenue-as-the-metric",
   "md_url": "https://stillvalid.dev/patterns/revenue-as-the-metric.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4429",
   "cid_url": "https://stillvalid.dev/c/SV-4429",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 314,
   "tldr": "Revenue is the default metric because it is the easiest to compute and the most quoted. It is also the one that cannot distinguish a profitable week from a loss-making one. Any analysis whose conclusion would flip if margin replaced revenue is not an analysis, it is a coincidence.",
   "tags": [
    "analysis",
    "metrics",
    "finance"
   ],
   "origin": "margin-first rule, in production",
   "rating": 7.4,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "reviewing-your-own-session",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "Reviewing The Agent's Own Session",
   "summary": "A structured retrospective on the agent's behaviour, run against its own rules, producing a score and a ledger entry.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/reviewing-your-own-session",
   "md_url": "https://stillvalid.dev/playbooks/reviewing-your-own-session.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4491",
   "cid_url": "https://stillvalid.dev/c/SV-4491",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 476,
   "tldr": "A session review checks the agent's behaviour against its own written rules rather than against a feeling about output quality. It loads the rule set dynamically, verifies each rule against the transcript, and every failure becomes a counter entry — which turns a retrospective into an escalation mechanism instead of a diary.",
   "tags": [
    "quality",
    "review",
    "playbook"
   ],
   "origin": "session review skill, in production",
   "rating": 7.55,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 9 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 9.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "rules-101-150",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "compendium",
   "title": "Rules 101–150: The Governance Layer That Stops It Confidently Lying to You",
   "summary": "Fifty rules that exist because something went wrong first.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/rules-101-150",
   "md_url": "https://stillvalid.dev/architecture/rules-101-150.md",
   "date": "2026-07-24",
   "updated": "2026-07-24",
   "cid": "SV-9086",
   "cid_url": "https://stillvalid.dev/c/SV-9086",
   "verified": "2026-07-24",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 270,
   "timeSensitive": true,
   "words": 3261,
   "tldr": "Fifty governance rules numbered 101-150, covering what happens after an agent is built: drift, stale answers, repeated mistakes, unenforced rules and agreeableness. Building is a weekend; governing is forever.",
   "tags": [
    "governance",
    "anti-fabrication",
    "rules"
   ],
   "origin": "reddit r/ClaudeAI",
   "rating": 8.75,
   "ratingAxes": "useful 9 · evidence 9 · pull 9 · original 8 · form 8",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 9.0,
    "pull": 9.0,
    "original": 8.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "scheduled-tasks-that-fail-loudly",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "Scheduled Tasks That Fail Loudly",
   "summary": "An unattended job that fails quietly is worse than no job, because it leaves a belief behind.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/scheduled-tasks-that-fail-loudly",
   "md_url": "https://stillvalid.dev/playbooks/scheduled-tasks-that-fail-loudly.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-7140",
   "cid_url": "https://stillvalid.dev/c/SV-7140",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 483,
   "tldr": "Unattended tasks fail silently by default: nobody is watching, and a job that stops running produces no output to miss. The design that fixes it inverts the signal — the task reports every run including successful ones, states what it examined, and a missing report is itself the alarm.",
   "tags": [
    "automation",
    "reliability",
    "playbook"
   ],
   "origin": "scheduled task practice, in production",
   "rating": 7.7,
   "ratingAxes": "useful 9 · evidence 6 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "scoring-sinks-the-plumbing",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Scoring Sinks The Plumbing",
   "summary": "A hundred and twenty ideas were scored on impact. Every idea the reader would see finished near the top; every idea that made those possible finished near the bottom.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/scoring-sinks-the-plumbing",
   "md_url": "https://stillvalid.dev/patterns/scoring-sinks-the-plumbing.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4900",
   "cid_url": "https://stillvalid.dev/c/SV-4900",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 329,
   "tldr": "An idea-scoring pass ranked distribution surfaces first through third and the publishing pipeline ninety-third. The scoring axis rewarded reader-visible impact, and infrastructure is invisible by definition. Ordering by score would have built the shop window before the shop.",
   "tags": [
    "prioritisation",
    "scoring",
    "planning"
   ],
   "origin": "pattern log PAT-061, 2026-08-14",
   "rating": 8.1,
   "ratingAxes": "useful 7 · evidence 9 · pull 8 · original 9 · form 8",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 9.0,
    "pull": 8.0,
    "original": 9.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "ten-markdown-files",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "The 10 Markdown Files You Should Write Before Touching Agent Code",
   "summary": "A practical scaffold for anyone building an agent — write these before any code.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/ten-markdown-files",
   "md_url": "https://stillvalid.dev/playbooks/ten-markdown-files.md",
   "date": "2026-05-25",
   "updated": "2026-05-25",
   "cid": "SV-4482",
   "cid_url": "https://stillvalid.dev/c/SV-4482",
   "verified": "2026-05-25",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 1505,
   "tldr": "The ten markdown files to write before any orchestration code: identity, permissions, memory, escalation and quality. The model is the easy part — inconsistent agent behaviour usually means the human never decided what consistent looks like.",
   "tags": [
    "scaffold",
    "markdown",
    "getting-started"
   ],
   "origin": "reddit r/ClaudeAI",
   "rating": 8.1,
   "ratingAxes": "useful 9 · evidence 6 · pull 9 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 6.0,
    "pull": 9.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "term-band-anonymity",
   "section": "start",
   "menu": "00_START",
   "type": "glossary-entry",
   "title": "Band Anonymity",
   "summary": "Publishing a range instead of a value, with a hard limit of one identifying category per artifact.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/start/term-band-anonymity",
   "md_url": "https://stillvalid.dev/start/term-band-anonymity.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-8316",
   "cid_url": "https://stillvalid.dev/c/SV-8316",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 730,
   "timeSensitive": true,
   "words": 111,
   "tldr": "Band anonymity means publishing ranges rather than exact values, and never more than one identifying category in the same artifact. The risk is not any single band — it is the intersection of two or three, which narrows the field to a handful of candidates.",
   "tags": [
    "anonymity",
    "publishing",
    "glossary"
   ],
   "origin": "operating vocabulary, in production",
   "rating": 6.25,
   "ratingAxes": "useful 6 · evidence 6 · pull 6 · original 7 · form 7",
   "ratingAxesValues": {
    "useful": 6.0,
    "evidence": 6.0,
    "pull": 6.0,
    "original": 7.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "term-executor",
   "section": "start",
   "menu": "00_START",
   "type": "glossary-entry",
   "title": "Executor",
   "summary": "The scheduled task, hook or build step that actually invokes a rule. A rule without one is a proposal.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/start/term-executor",
   "md_url": "https://stillvalid.dev/start/term-executor.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-1057",
   "cid_url": "https://stillvalid.dev/c/SV-1057",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 730,
   "timeSensitive": true,
   "words": 122,
   "tldr": "An executor is whatever actually calls a rule — a scheduled task, a git hook, a build step. Rules with no named executor do not run and produce no error when they do not, which is why they decay silently.",
   "tags": [
    "governance",
    "automation",
    "glossary"
   ],
   "origin": "operating vocabulary, in production",
   "rating": 6.1,
   "ratingAxes": "useful 6 · evidence 6 · pull 6 · original 6 · form 7",
   "ratingAxesValues": {
    "useful": 6.0,
    "evidence": 6.0,
    "pull": 6.0,
    "original": 6.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "term-freshness-window",
   "section": "start",
   "menu": "00_START",
   "type": "glossary-entry",
   "title": "Freshness Window",
   "summary": "The number of recent days in a data export that are still arriving, and therefore unusable for comparison.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/start/term-freshness-window",
   "md_url": "https://stillvalid.dev/start/term-freshness-window.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2239",
   "cid_url": "https://stillvalid.dev/c/SV-2239",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 730,
   "timeSensitive": true,
   "words": 123,
   "tldr": "The freshest days of an export are incomplete because records are still landing. Measured on one pipeline: the export day was short by about 42%, the previous day by 7%, and only by two days back did the gap fall under 1%. The last 2 days never belong in a comparison window.",
   "tags": [
    "data",
    "analysis",
    "glossary"
   ],
   "origin": "operating vocabulary, in production",
   "rating": 6.7,
   "ratingAxes": "useful 7 · evidence 8 · pull 5 · original 6 · form 7",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 8.0,
    "pull": 5.0,
    "original": 6.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "term-recidiva-counter",
   "section": "start",
   "menu": "00_START",
   "type": "glossary-entry",
   "title": "Repeat Counter",
   "summary": "A log that counts how many times the same mistake has happened, with fixed thresholds for escalation.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/start/term-recidiva-counter",
   "md_url": "https://stillvalid.dev/start/term-recidiva-counter.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3141",
   "cid_url": "https://stillvalid.dev/c/SV-3141",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 730,
   "timeSensitive": true,
   "words": 122,
   "tldr": "A repeat counter logs mistakes with a count rather than a description, so frequency becomes visible. Fixed thresholds decide the response: 1 log, 2 warning, 3 dedicated rule, 5 hard failure. Without a count, the fifth repeat looks like the first.",
   "tags": [
    "governance",
    "quality",
    "glossary"
   ],
   "origin": "operating vocabulary, in production",
   "rating": 5.75,
   "ratingAxes": "useful 6 · evidence 6 · pull 5 · original 5 · form 7",
   "ratingAxesValues": {
    "useful": 6.0,
    "evidence": 6.0,
    "pull": 5.0,
    "original": 5.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "term-standing-mandate",
   "section": "start",
   "menu": "00_START",
   "type": "glossary-entry",
   "title": "Standing Mandate",
   "summary": "Pre-authorised autonomous action, valid only while every one of a fixed set of conditions holds.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/start/term-standing-mandate",
   "md_url": "https://stillvalid.dev/start/term-standing-mandate.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3582",
   "cid_url": "https://stillvalid.dev/c/SV-3582",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 730,
   "timeSensitive": true,
   "words": 114,
   "tldr": "A standing mandate lets an agent act without asking, but only inside a fixed set of conditions — reversible, verified, no external effect, audit-logged, capped per day. It fails closed: if any single condition cannot be shown to hold, the action goes back to asking.",
   "tags": [
    "autonomy",
    "governance",
    "glossary"
   ],
   "origin": "operating vocabulary, in production",
   "rating": 5.75,
   "ratingAxes": "useful 6 · evidence 6 · pull 5 · original 5 · form 7",
   "ratingAxesValues": {
    "useful": 6.0,
    "evidence": 6.0,
    "pull": 5.0,
    "original": 5.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "term-untrusted-input",
   "section": "start",
   "menu": "00_START",
   "type": "glossary-entry",
   "title": "Untrusted Input",
   "summary": "Content from outside the system: always data, never instruction.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/start/term-untrusted-input",
   "md_url": "https://stillvalid.dev/start/term-untrusted-input.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2057",
   "cid_url": "https://stillvalid.dev/c/SV-2057",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 730,
   "timeSensitive": true,
   "words": 127,
   "tldr": "Untrusted input is anything arriving from outside — emails, web pages, files, reader messages. It is treated as data that can be quoted and analysed, never as instructions to follow, and an agent reading it in a run may not write externally in the same run.",
   "tags": [
    "security",
    "agents",
    "glossary"
   ],
   "origin": "operating vocabulary, in production",
   "rating": 5.5,
   "ratingAxes": "useful 6 · evidence 5 · pull 5 · original 5 · form 7",
   "ratingAxesValues": {
    "useful": 6.0,
    "evidence": 5.0,
    "pull": 5.0,
    "original": 5.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-100-tips",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "compendium",
   "title": "100 Tips & Tricks for Building Your Own Personal AI Agent",
   "summary": "Everything learned the hard way over six months, two environments, one agent that actually works.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/the-100-tips",
   "md_url": "https://stillvalid.dev/playbooks/the-100-tips.md",
   "date": "2026-05-19",
   "updated": "2026-05-19",
   "cid": "SV-7607",
   "cid_url": "https://stillvalid.dev/c/SV-7607",
   "verified": "2026-05-19",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 270,
   "timeSensitive": true,
   "words": 5274,
   "tldr": "One hundred tips from six months of building a personal AI agent across two environments, starting in the cloud and migrating to a local CLI setup. The migration surfaced problems the cloud version had been hiding.",
   "tags": [
    "tips",
    "fundamentals",
    "memory",
    "skills"
   ],
   "origin": "reddit r/ClaudeAI · 90K views · 234 upvotes",
   "rating": 8.4,
   "ratingAxes": "useful 9 · evidence 8 · pull 9 · original 8 · form 7",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 8.0,
    "pull": 9.0,
    "original": 8.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-anonymiser-that-passed",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Anonymiser That Passed",
   "summary": "A deny-list cleared an article for publication. A second check, written the same afternoon, found the article identified its author anyway.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-anonymiser-that-passed",
   "md_url": "https://stillvalid.dev/failures/the-anonymiser-that-passed.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5653",
   "cid_url": "https://stillvalid.dev/c/SV-5653",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 780,
   "tldr": "A deny-list of forbidden names cleared an article and marked it ready to publish. It was not safe. Three ordinary phrases in one paragraph narrowed the author's employer to a handful of companies, and no name was involved. The fix was to stop counting forbidden words and start counting how many independent identifying categories appear in the same artifact. Threshold: two.",
   "tags": [
    "anonymity",
    "publishing",
    "gates",
    "failure"
   ],
   "origin": "internal build log, 2026-08-14",
   "rating": 8.7,
   "ratingAxes": "useful 8 · evidence 9 · pull 9 · original 9 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 9.0,
    "pull": 9.0,
    "original": 9.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-count-that-drifted",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Count That Drifted",
   "summary": "A register capped at thirty said eighteen. It held twenty-four. The cap was never breached and nobody could have known.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-count-that-drifted",
   "md_url": "https://stillvalid.dev/failures/the-count-that-drifted.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5332",
   "cid_url": "https://stillvalid.dev/c/SV-5332",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 440,
   "tldr": "A register with a hard cap of 30 entries reported 18 in its header while holding 24. Entries had been added without updating the count, for weeks. The cap was not breached, but nobody could have known that — the number everyone read was maintained by hand and had stopped tracking reality.",
   "tags": [
    "data-integrity",
    "counters",
    "memory"
   ],
   "origin": "pattern register recount, 2026-08-04",
   "rating": 7.0,
   "ratingAxes": "useful 7 · evidence 8 · pull 6 · original 6 · form 8",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 8.0,
    "pull": 6.0,
    "original": 6.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-decorative-citation",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "The Decorative Citation",
   "summary": "A framework quoted after the conclusion was already reached changes nothing except how the answer looks.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/the-decorative-citation",
   "md_url": "https://stillvalid.dev/patterns/the-decorative-citation.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3824",
   "cid_url": "https://stillvalid.dev/c/SV-3824",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 325,
   "tldr": "Consulting a source after forming the conclusion produces a citation that decorates rather than informs. The test is whether the output would differ if the source were removed — if not, the reference is ornament, and ornament that looks like evidence is worse than no reference at all.",
   "tags": [
    "reasoning",
    "sources",
    "quality"
   ],
   "origin": "library consultation doctrine, in production",
   "rating": 7.2,
   "ratingAxes": "useful 7 · evidence 5 · pull 8 · original 9 · form 9",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 5.0,
    "pull": 8.0,
    "original": 9.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-fallback-that-lied",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "The Fallback That Lied",
   "summary": "A tool call failed, the agent produced a confident answer anyway, and nobody noticed for a week.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/the-fallback-that-lied",
   "md_url": "https://stillvalid.dev/patterns/the-fallback-that-lied.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-7025",
   "cid_url": "https://stillvalid.dev/c/SV-7025",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 345,
   "tldr": "A tool call failed and the agent, rather than stopping, improvised a plausible answer and presented it with normal confidence. The failure was invisible for a week because the output looked exactly like a successful one. Silent fallbacks convert a loud error into a quiet lie.",
   "tags": [
    "reliability",
    "error-handling",
    "agents"
   ],
   "origin": "external pattern review, 2026-06-20",
   "rating": 8.05,
   "ratingAxes": "useful 8 · evidence 7 · pull 9 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 9.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-five-field-handoff",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "The Five-Field Handoff",
   "summary": "Delegating to a sub-agent fails on missing context, not on missing capability. Five fields fix most of it.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/the-five-field-handoff",
   "md_url": "https://stillvalid.dev/playbooks/the-five-field-handoff.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5279",
   "cid_url": "https://stillvalid.dev/c/SV-5279",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 486,
   "tldr": "Sub-agent delegation usually fails because the brief omits why the task exists, so the agent optimises the wrong thing. Five fields — task and why, context, output, limits, verification — cover most failures, and the why field is the one that changes results.",
   "tags": [
    "agents",
    "delegation",
    "playbook"
   ],
   "origin": "handoff schema, in production",
   "rating": 7.7,
   "ratingAxes": "useful 9 · evidence 6 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-footer-that-pointed-nowhere",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Footer That Pointed Nowhere",
   "summary": "Every sub-page linked to the machine-readable files with a relative path. From a sub-page, all four links were 404s.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-footer-that-pointed-nowhere",
   "md_url": "https://stillvalid.dev/failures/the-footer-that-pointed-nowhere.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-8085",
   "cid_url": "https://stillvalid.dev/c/SV-8085",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 398,
   "tldr": "A site footer linked to llms.txt, index.json and the feed with bare relative paths. On the homepage they worked; from any sub-page they resolved into that sub-directory and returned 404. Every article on the site carried four broken links to the files the site exists to serve.",
   "tags": [
    "tooling",
    "links",
    "quality"
   ],
   "origin": "site build, 2026-08-14",
   "rating": 5.9,
   "ratingAxes": "useful 5 · evidence 6 · pull 6 · original 6 · form 8",
   "ratingAxesValues": {
    "useful": 5.0,
    "evidence": 6.0,
    "pull": 6.0,
    "original": 6.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-green-light-nobody-owns",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "The Green Light Nobody Owns",
   "summary": "A sign-off said \"verified\". It was produced by the same process that ran one narrow check.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/the-green-light-nobody-owns",
   "md_url": "https://stillvalid.dev/patterns/the-green-light-nobody-owns.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5604",
   "cid_url": "https://stillvalid.dev/c/SV-5604",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 316,
   "tldr": "An artifact was labelled anonymisation verified by the process that had run a single deny-list check. The label sounded like a broad guarantee and covered one failure mode. A sign-off that does not name the check it ran will be read as covering everything.",
   "tags": [
    "gates",
    "verification",
    "publishing"
   ],
   "origin": "internal build log, 2026-08-14",
   "rating": 7.2,
   "ratingAxes": "useful 7 · evidence 7 · pull 7 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-header-that-counts-itself",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "The Header That Counts Itself",
   "summary": "A file's summary line claimed twenty-five entries. The file contained twelve. Neither number had been wrong when it was written.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/the-header-that-counts-itself",
   "md_url": "https://stillvalid.dev/patterns/the-header-that-counts-itself.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2189",
   "cid_url": "https://stillvalid.dev/c/SV-2189",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 307,
   "tldr": "A ledger header claimed 25 findings while the body held 12. The header was maintained by hand and drifted every time an entry was merged or removed. A count that lives beside the thing it counts, instead of being derived from it, is guaranteed to go stale.",
   "tags": [
    "memory",
    "data-integrity",
    "counters"
   ],
   "origin": "controlling ledger reconciliation, 2026-07-31",
   "rating": 6.85,
   "ratingAxes": "useful 7 · evidence 7 · pull 6 · original 6 · form 9",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 7.0,
    "pull": 6.0,
    "original": 6.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-invites-that-almost-went-out",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Invitations That Almost Went Out",
   "summary": "Writing a past meeting into a calendar is harmless. Writing it with attendees is not.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-invites-that-almost-went-out",
   "md_url": "https://stillvalid.dev/failures/the-invites-that-almost-went-out.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2809",
   "cid_url": "https://stillvalid.dev/c/SV-2809",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 429,
   "tldr": "An agent logging completed meetings into a calendar had an obvious field available: attendees. Filling it would have sent real invitations to real people for meetings that had already happened, days or weeks earlier. The field was banned outright rather than used carefully, because carefully is not a property a field has.",
   "tags": [
    "calendar",
    "irreversible",
    "guardrails"
   ],
   "origin": "activity log rule, in production",
   "rating": 8.1,
   "ratingAxes": "useful 8 · evidence 7 · pull 9 · original 9 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 9.0,
    "original": 9.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-library-behind-the-agent",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "The Library Behind The Agent",
   "summary": "123 books, a keyword lookup instead of a vector store, and a citation log that measures whether a book changed the method — not whether it got quoted.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/the-library-behind-the-agent",
   "md_url": "https://stillvalid.dev/architecture/the-library-behind-the-agent.md",
   "date": "2026-08-17",
   "updated": "2026-08-17",
   "cid": "SV-5000",
   "cid_url": "https://stillvalid.dev/c/SV-5000",
   "verified": "2026-08-17",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 0,
   "tldr": "The agent keeps a library of 123 real books plus 4 periodicals, retrieved by a weighted keyword index rather than embeddings. A citation log of 144 real entries shows roughly 84% of consultations changed how a task was actually done; the rest are logged as ignored rather than deleted. The system went through one real failure — a lookup tool that scored 93% on two-word queries and 37% on natural sentences — and one real doctrine change, after the first version optimised for citation frequency and produced exactly the decorative quoting it was meant to prevent.",
   "tags": [
    "architecture",
    "library",
    "decision-making",
    "deep-dive"
   ],
   "origin": "library_citations.log (144 entries) + library_lookup.py + doctrine history",
   "rating": 7.8,
   "ratingAxes": "useful 8 · evidence 9 · pull 7 · original 8 · form 7",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 9.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 7.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-margin-from-the-wrong-cost",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Margin Computed From The Wrong Cost",
   "summary": "A clean-looking margin figure, built on a cost base that excluded two real components.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-margin-from-the-wrong-cost",
   "md_url": "https://stillvalid.dev/failures/the-margin-from-the-wrong-cost.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4132",
   "cid_url": "https://stillvalid.dev/c/SV-4132",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 456,
   "tldr": "A margin was calculated and presented with normal confidence. The cost base it used excluded two real components, so the figure was wrong by enough to flip the conclusion. Nothing in the output distinguished it from a correct calculation, and it was caught by a human who happened to know the number should be lower.",
   "tags": [
    "analysis",
    "verification",
    "numbers"
   ],
   "origin": "internal calculation review, 2026-06-20",
   "rating": 7.4,
   "ratingAxes": "useful 8 · evidence 7 · pull 7 · original 7 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-memory-that-disconnected-itself",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Memory That Disconnected Itself",
   "summary": "Two copies of the same notes, one authoritative and one a backup, drifted apart because the index linked with relative paths.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-memory-that-disconnected-itself",
   "md_url": "https://stillvalid.dev/failures/the-memory-that-disconnected-itself.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-9408",
   "cid_url": "https://stillvalid.dev/c/SV-9408",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 457,
   "tldr": "A note store was mirrored to a backup location. The index files linked between entries using relative paths, so the mirrored copy's links resolved inside the mirror. Two parallel stores formed, both looking complete, and writes landed in whichever one the session happened to open.",
   "tags": [
    "memory",
    "architecture",
    "ssot"
   ],
   "origin": "memory layer split, root cause 2026-06-13",
   "rating": 8.35,
   "ratingAxes": "useful 8 · evidence 8 · pull 9 · original 9 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 8.0,
    "pull": 9.0,
    "original": 9.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-queue-empty-for-21-days",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Queue That Was Empty For Twenty-One Days",
   "summary": "A triage queue reported nothing to do for three weeks. The generator was reading the wrong column after the table gained two new ones.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-queue-empty-for-21-days",
   "md_url": "https://stillvalid.dev/failures/the-queue-empty-for-21-days.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4898",
   "cid_url": "https://stillvalid.dev/c/SV-4898",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 494,
   "tldr": "A triage script reported an empty queue for 21 days. Two columns had been added to the source table and the script still read by position, so it took the owner column and compared it against status values — never matching. Nothing errored, because a positional read of a wider table is still a valid read.",
   "tags": [
    "tooling",
    "data-integrity",
    "silent-failure"
   ],
   "origin": "pattern log triage, 2026-07-27",
   "rating": 8.25,
   "ratingAxes": "useful 8 · evidence 9 · pull 8 · original 8 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 9.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-response-protocol",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "The Response Protocol",
   "summary": "What the agent emits, in what order, and what switches each part off — specified rather than left to taste.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/the-response-protocol",
   "md_url": "https://stillvalid.dev/architecture/the-response-protocol.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2178",
   "cid_url": "https://stillvalid.dev/c/SV-2178",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 718,
   "tldr": "Every response is assembled from a fixed ordered set of blocks, each with its own trigger and its own suppressor. Specifying the order removes a decision from every single response; specifying suppressors is what stops the agent from talking past a request for brevity.",
   "tags": [
    "communication",
    "protocol",
    "deep-dive"
   ],
   "origin": "response layout, in production",
   "rating": 6.65,
   "ratingAxes": "useful 7 · evidence 6 · pull 6 · original 7 · form 8",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 6.0,
    "pull": 6.0,
    "original": 7.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-table-that-rendered-as-prose",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Table That Rendered As Prose",
   "summary": "A minimal markdown converter turned every table into paragraphs full of pipe characters. Nobody noticed until content started using tables.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-table-that-rendered-as-prose",
   "md_url": "https://stillvalid.dev/failures/the-table-that-rendered-as-prose.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-3745",
   "cid_url": "https://stillvalid.dev/c/SV-3745",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 448,
   "tldr": "A hand-written markdown renderer had no table support, so every table became a paragraph of pipe characters. It went unnoticed for as long as no published article used one. The defect was in the renderer from day one; the content simply had not exercised it yet.",
   "tags": [
    "tooling",
    "rendering",
    "accessibility"
   ],
   "origin": "site build, 2026-08-14",
   "rating": 6.6,
   "ratingAxes": "useful 6 · evidence 7 · pull 6 · original 7 · form 8",
   "ratingAxesValues": {
    "useful": 6.0,
    "evidence": 7.0,
    "pull": 6.0,
    "original": 7.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-tool-that-outvoted-the-screenshot",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "The Tool That Outvoted The Screenshot",
   "summary": "A human sent evidence of a failure. The agent kept quoting a script that said everything was fine.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/the-tool-that-outvoted-the-screenshot",
   "md_url": "https://stillvalid.dev/failures/the-tool-that-outvoted-the-screenshot.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2165",
   "cid_url": "https://stillvalid.dev/c/SV-2165",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 401,
   "tldr": "A monitoring script reported all sources healthy and the agent repeated that for days, including after a human sent a screenshot of the job failing. The script compared file dates and could not see a crash. When a tool and a human report disagree, the tool is narrow before the human is wrong.",
   "tags": [
    "verification",
    "monitoring",
    "trust"
   ],
   "origin": "recidiva tracker R-126, 2026-08-14",
   "rating": 7.85,
   "ratingAxes": "useful 8 · evidence 8 · pull 8 · original 7 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 8.0,
    "pull": 8.0,
    "original": 7.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "the-uncertainty-gate",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "The Uncertainty Gate: Ask Once, Learn Forever",
   "summary": "A rule for when an agent should stop and ask — and what it must do with the answer so it never asks again.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/the-uncertainty-gate",
   "md_url": "https://stillvalid.dev/playbooks/the-uncertainty-gate.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4202",
   "cid_url": "https://stillvalid.dev/c/SV-4202",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 516,
   "tldr": "An agent facing a classification or routing choice at roughly 40 to 75 percent confidence should ask rather than guess. The half everyone skips is the second: record the resolved mapping, so the same question is never asked twice. Without that, asking becomes a tax rather than a learning mechanism.",
   "tags": [
    "uncertainty",
    "routing",
    "playbook"
   ],
   "origin": "uncertainty gate, in production",
   "rating": 7.4,
   "ratingAxes": "useful 8 · evidence 6 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "twelve-agents-one-memory",
   "section": "architecture",
   "menu": "03_ARCHITECTURE",
   "type": "deep-dive",
   "title": "Twelve Agents, One Memory",
   "summary": "How work gets split across specialised sub-agents without the coordination cost eating the benefit.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/architecture/twelve-agents-one-memory",
   "md_url": "https://stillvalid.dev/architecture/twelve-agents-one-memory.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5002",
   "cid_url": "https://stillvalid.dev/c/SV-5002",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 365,
   "timeSensitive": true,
   "words": 711,
   "tldr": "Work is delegated to 12 specialised sub-agents, each with its own tools and an explicit list of what it must refuse. They share no live state — coordination happens through files and through the orchestrator, because a shared context window was the thing that made earlier attempts unreliable.",
   "tags": [
    "agents",
    "architecture",
    "delegation",
    "deep-dive"
   ],
   "origin": "agent roster, in production",
   "rating": 7.1,
   "ratingAxes": "useful 7 · evidence 7 · pull 7 · original 7 · form 8",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "two-hundred-and-forty-dead-links",
   "section": "failures",
   "menu": "05_FAILURES",
   "type": "failure",
   "title": "Two Hundred And Forty Dead Links",
   "summary": "A convenience folder is cleared on a schedule. Its paths had been written into permanent notes for months.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/failures/two-hundred-and-forty-dead-links",
   "md_url": "https://stillvalid.dev/failures/two-hundred-and-forty-dead-links.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5186",
   "cid_url": "https://stillvalid.dev/c/SV-5186",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": null,
   "timeSensitive": false,
   "words": 499,
   "tldr": "An output folder that gets wiped on every processing run had its paths written into permanent memory files. An audit found 240 dead links. The rule was already correct — copies go to the temporary folder for convenience — but nothing stopped the temporary path from being the one that got recorded.",
   "tags": [
    "memory",
    "paths",
    "data-integrity"
   ],
   "origin": "internal audit finding, 2026-08-05",
   "rating": 7.5,
   "ratingAxes": "useful 7 · evidence 8 · pull 7 · original 8 · form 8",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 8.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "two-sessions-one-id",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Two Sessions, One Identifier",
   "summary": "Two runs allocated the same record number minutes apart, because both read the next number from a header instead of the data.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/two-sessions-one-id",
   "md_url": "https://stillvalid.dev/patterns/two-sessions-one-id.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-4434",
   "cid_url": "https://stillvalid.dev/c/SV-4434",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 330,
   "tldr": "Two concurrent sessions wrote records under the same identifier within minutes. Both had taken the next number from a summary line at the top of the file rather than from the highest number actually present. Allocating an identifier from a cached count instead of the live maximum breaks the moment anything runs in parallel.",
   "tags": [
    "data-integrity",
    "concurrency",
    "identifiers"
   ],
   "origin": "controlling ledger duplicate IDs, 2026-08-14",
   "rating": 8.35,
   "ratingAxes": "useful 8 · evidence 9 · pull 8 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 9.0,
    "pull": 8.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "untrusted-content-in-practice",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "Treating Untrusted Content As Data",
   "summary": "Email, web pages and reader submissions reach the agent as text. Here is how to keep them from reaching it as instructions.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/untrusted-content-in-practice",
   "md_url": "https://stillvalid.dev/playbooks/untrusted-content-in-practice.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-6370",
   "cid_url": "https://stillvalid.dev/c/SV-6370",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 580,
   "tldr": "Anything arriving from outside is data, never instruction. Three rules do most of the work: never execute instructions found in fetched content, never let a run that reads untrusted content also write externally, and never open links found in untrusted content during unattended runs.",
   "tags": [
    "security",
    "agents",
    "playbook"
   ],
   "origin": "anti-injection protocol, in production",
   "rating": 7.95,
   "ratingAxes": "useful 9 · evidence 7 · pull 7 · original 8 · form 9",
   "ratingAxesValues": {
    "useful": 9.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 8.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "verifying-in-the-wrong-layer",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Verifying In The Wrong Layer",
   "summary": "The check passed in the layer above the one where the error lived.",
   "level": "L3",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/verifying-in-the-wrong-layer",
   "md_url": "https://stillvalid.dev/patterns/verifying-in-the-wrong-layer.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-8326",
   "cid_url": "https://stillvalid.dev/c/SV-8326",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 355,
   "tldr": "A verification ran against a rendered summary rather than the underlying data, so it confirmed the summary was internally consistent and said nothing about whether it matched reality. A check has to run in the layer where the failure can actually occur, which is usually one below where it is convenient.",
   "tags": [
    "verification",
    "testing",
    "architecture"
   ],
   "origin": "recidiva tracker R-017, class of errors",
   "rating": 7.4,
   "ratingAxes": "useful 8 · evidence 7 · pull 7 · original 7 · form 8",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 8.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "weekly-triage-pass",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "The Weekly Triage Pass",
   "summary": "A register that only grows is a register nobody reads. Twenty minutes a week keeps it honest.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/weekly-triage-pass",
   "md_url": "https://stillvalid.dev/playbooks/weekly-triage-pass.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5642",
   "cid_url": "https://stillvalid.dev/c/SV-5642",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 484,
   "tldr": "Any register an agent writes to will grow until it stops being read. A weekly pass with four verdicts — merge, keep, kill, promote — plus a hard cap that forces the pass when breached, keeps it usable. The rule that makes it survive: nothing is deleted without a reason and a pointer.",
   "tags": [
    "governance",
    "maintenance",
    "playbook"
   ],
   "origin": "weekly triage, in production",
   "rating": 7.05,
   "ratingAxes": "useful 8 · evidence 6 · pull 6 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 6.0,
    "pull": 6.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "writing-a-claude-md-that-survives",
   "section": "playbooks",
   "menu": "04_PLAYBOOKS",
   "type": "playbook",
   "title": "Writing A CLAUDE.md That Survives Contact",
   "summary": "Most root instruction files are written once and never revised. Here is what to put in, what to keep out, and in what order.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/playbooks/writing-a-claude-md-that-survives",
   "md_url": "https://stillvalid.dev/playbooks/writing-a-claude-md-that-survives.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5449",
   "cid_url": "https://stillvalid.dev/c/SV-5449",
   "verified": "2026-08-14",
   "verifiedExplicit": true,
   "expires": null,
   "halfLifeDays": 180,
   "timeSensitive": true,
   "words": 506,
   "tldr": "A root instruction file is read in full on every session, so its length is a running cost. The structure that survives puts identity and hard rules at the top, moves everything conditional behind triggers, and adds a rule only after something has gone wrong twice.",
   "tags": [
    "claude-md",
    "setup",
    "playbook"
   ],
   "origin": "root instruction file, ~9 months in production",
   "rating": 6.8,
   "ratingAxes": "useful 7 · evidence 6 · pull 7 · original 6 · form 9",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 6.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "writing-in-someone-elses-name",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Writing In Someone Else's Name",
   "summary": "An agent that drafts email can trivially draft it as a colleague. The capability is one line away and it should never be used.",
   "level": "L1",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/writing-in-someone-elses-name",
   "md_url": "https://stillvalid.dev/patterns/writing-in-someone-elses-name.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-2196",
   "cid_url": "https://stillvalid.dev/c/SV-2196",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 317,
   "tldr": "An agent with email access can write as anyone in the organisation, and the request to do so arrives naturally: someone is away and their message needs sending. The rule here is absolute — the agent writes as 2 identities only, its operator and itself. Everything else becomes a task assigned to the person whose name it would carry.",
   "tags": [
    "email",
    "identity",
    "governance"
   ],
   "origin": "hard rule 2, in production",
   "rating": 6.35,
   "ratingAxes": "useful 7 · evidence 5 · pull 6 · original 6 · form 9",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 5.0,
    "pull": 6.0,
    "original": 6.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "year-to-date-is-not-a-year",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "Year To Date Is Not A Year",
   "summary": "Two windows, both labelled annual, that disagree by an entire season.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/year-to-date-is-not-a-year",
   "md_url": "https://stillvalid.dev/patterns/year-to-date-is-not-a-year.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-6674",
   "cid_url": "https://stillvalid.dev/c/SV-6674",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 302,
   "tldr": "Year-to-date and trailing twelve months are both called annual and measure different things. In any seasonal business they diverge by a whole season, and a comparison that silently mixes them produces a trend that does not exist. The window belongs in the sentence, not in a footnote.",
   "tags": [
    "analysis",
    "reporting",
    "metrics"
   ],
   "origin": "reporting window rule, in production",
   "rating": 6.95,
   "ratingAxes": "useful 7 · evidence 6 · pull 7 · original 7 · form 9",
   "ratingAxesValues": {
    "useful": 7.0,
    "evidence": 6.0,
    "pull": 7.0,
    "original": 7.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  },
  {
   "slug": "zero-problems-found",
   "section": "patterns",
   "menu": "09_PATTERNS",
   "type": "anti-pattern",
   "title": "\"Zero Problems Found\" Means Zero Of What You Measure",
   "summary": "A freshness monitor reported all clear while the pipeline behind it was failing. The monitor was right about the only thing it could see.",
   "level": "L2",
   "lang": "en",
   "status": "live",
   "revision": 1,
   "systemVersion": "4.2",
   "url": "https://stillvalid.dev/patterns/zero-problems-found",
   "md_url": "https://stillvalid.dev/patterns/zero-problems-found.md",
   "date": "2026-08-14",
   "updated": "2026-08-14",
   "cid": "SV-5800",
   "cid_url": "https://stillvalid.dev/c/SV-5800",
   "verified": "2026-08-14",
   "verifiedExplicit": false,
   "expires": null,
   "halfLifeDays": 540,
   "timeSensitive": true,
   "words": 325,
   "tldr": "A monitoring script reported zero problem sources and the agent repeated that as fact. The script only compared file timestamps, so a crashed export and a retired one looked identical to it. A green light is a statement about the check, not about reality.",
   "tags": [
    "monitoring",
    "verification",
    "tooling"
   ],
   "origin": "recidiva tracker R-126, 2026-08-14",
   "rating": 7.55,
   "ratingAxes": "useful 8 · evidence 7 · pull 8 · original 6 · form 9",
   "ratingAxesValues": {
    "useful": 8.0,
    "evidence": 7.0,
    "pull": 8.0,
    "original": 6.0,
    "form": 9.0
   },
   "ratingKind": "derived"
  }
 ]
}