Keep a Value · v0.3.1 · 2026-06-11 · GitHub

The contract you write before you build.

A one-page VALUE.md at the root of any project. Three questions, a six-part gate, a stranger should be able to verify the third one without asking you.

Paste into a file called VALUE.md wherever your project lives — a repo root, a Google Doc, a Notion page, the top of your campaign brief.

Why this exists

When a builder ships work that doesn't land, the reflex is to build again, faster. The reflex misses the same way. Or: you ship work, the work lands, and somehow nobody on the recipient side notices it landed. Both shapes are the build trap — one is a clarity failure (you cannot say what was supposed to change), the other is a falsifier failure (you shipped without a way to prove a stranger could check the change happened).

Keep a Value puts three questions and a six-part gate in front of the reflex. It is modeled on Keep a Changelog: same shape (a file at the project root, a stable format, a small set of rules), different job. A changelog records what shipped. A VALUE.md records what was supposed to change for the recipient when it did.

The three questions

Q0 · Grounding precondition

What did you actually observe?

The most recent specific moment you watched your recipient doing the thing your project is meant to change. A date. A place. Behavior. Not a persona. Not a survey response.

Q1

Who it's for?

One specific person whose life this changes — not "users," not "the team."

Q2

What changes for them?

Their behavior or state, observable. Not what you ship.

Q3

How will you know?

What proof would tell you the change landed, and how a stranger could check it without you?

The six-part gate

Before you build, your VALUE.md must pass the Q0 grounding precondition AND all six checks below.

  1. No hedge-words.No "maybe," "kind of," "ish."
  2. A stranger gets it.Hand the three sentences to someone with no context; they can paraphrase them back.
  3. Reads aloud without footnotes.No silent caveats. The sentences stand alone.
  4. One recipient across all three sentences.No drift between who in Q1, Q2, Q3.
  5. Subject test.Every promise's subject is your behavior, not the recipient's or a third party's. You can only promise what you control.
  6. You named what you don't break.For your headline outcome, name one thing that could get worse if you optimize hard for it.

Any one fails — you're not ready to build. All six pass — go build.

One quick example for check 6 (what you don't break). If your project is an incident-triage tool whose headline outcome is "engineers find the cause faster," what gets worse if you optimize hard for that? Maybe: engineers stop reading the dashboard themselves and trust your ranking. The counter-metric is engineers' ability to debug WITHOUT the tool on the rare day it's wrong. You name it now, so the optimization doesn't quietly cost it later.

How this standard was built

The standard was not designed in one sitting and shipped. It was written, applied to twelve real projects in the author's workspace, then put under adversarial pressure — two retrospective field studies, ten rounds of cold-read LLM critique on the standard's own text, and five rounds of user-scenario stranger tests in which language models played specific stuck-builder roles and walked through the live site.

Each round produced findings; an editorial pass decided which to apply and which to skip with a reason that lasts. The recurring-skip ledger is itself part of the record, because the same rejected findings recur until the doctrine answers them once. Five iterations refined the opening paragraph (which used to leave a whole class of users feeling unseen), the gate's structure (which used to stutter mid-page), the recipient-grounding rule (which had a quiet hole platform teams could pass through), and the Stranger Check Card (which used to read as paperwork instead of an action).

The standard's own field-evidence summary, the case studies, the synthesis pages from every round, and the harness that ran them are all in the research/ folder on GitHub.

What the strangers said

Cold-read LLM strangers were placed in three explicit scenarios: a B2B SaaS founder at her kitchen table with two churn tickets that week, a staff engineer the Sunday after a six-month platform migration that nobody on the product side noticed, and a nonprofit director on a Tuesday morning with a fundraising speech in three weeks. After five iterations:

The founder · iter5 · using the live page at 10pm on a Wednesday

The six checks read like a trapdoor under my usual rationalizations. An immediate blocking move: paste Skeleton.md into our repo and try to write three sentences about the thing we were about to sprint on Monday. If I can't, we stop.

The staff engineer · iter5 · Sunday morning, second coffee

The Breaks if / Check / Status block is something I want to steal this week. Not the full VALUE.md — just those three fields, dropped into the project doc format we already use. The bilateral Value Statement I'll try out loud before my next planning meeting. If I can't say it as a clean sentence, I don't have a project, I have a hope.

Neither stranger declared the page perfect; both named specific friction that remained, and that friction was logged honestly. Both said they would use the standard this week with a specific named plan. The full responses, the iteration-by-iteration synthesis, and what we applied and skipped at each step are in user-scenarios-iter5/synthesis.md.

Start here

You're a builder. You want one of these things:

Not building software? The standard applies to fundraising speeches, program rollouts, grant proposals, and conference talks too. See the fundraising-speech and publication-submission worked examples first. Translate "ship" as "deliver," "build" as "make / write / plan," and "VALUE.md at the project root" as "a one-page contract at the top of the work."

Where this comes from

Keep a Value is a distillation, not an invention. The load-bearing borrows are Promise Theory (Burgess 2005) for the subject test, Donabedian's triad (1966) for the feelings-need-a-proxy rule, the pre-mortem (Klein 2007) for "what we don't break," and the self-explanation effect (Chi et al. 1989) for the Value Statement Test. Full lineage with primary-source citations in lineage.md.

Status of the standard itself Proposed

Pre-1.0. Applied to 12 real projects in the author's workspace; two retrospective field studies have been published (case study 01, case study 02). They confirm that adopters write to the standard's format. They do not confirm that VALUE.md builders outperform description-only builders on recipient-accepted outcomes — that requires the paired-run test, which has not yet been run.

Open gap. All twelve case studies are self-application by one builder. Whether the standard produces the same result for a builder who is not its author has not yet been tested. The cross-builder pilot is scaffolded in research/experiments/paired-runs; recruitment is open.

License

Triple license in a single LICENSE file:

  • Doctrine (Standard, Runbook, README, Changelog, Lineage) is locked under CC BY-ND 4.0. Share with attribution. Do not modify.
  • Working surface (Template, Skeleton) is open under CC BY 4.0. Fork, translate, adapt — with attribution.
  • Code (Makefile and any future tooling) is open under MIT.

"Keep a Value" and "Value Statement Test" are common-law trademarks of Natan Dahan. No CC license grants trademark rights.