Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Repository files navigation

Proof of Done: The Agentic Software Development Manifesto

Proof of Done. The standard for building software with AI agents.

The standard for building software with AI agents.

checks live release licence

When agents write the code, done is not the last message of the run. Done is a state of the system that can be proven.

Read it: podmanifesto.org · Full text: manifesto.md


The reference implementation

The process this document argues for is packaged as installable skills and Claude Code plugins — sshlg-skills:

npx sshlg-skills install

The implementation is evidence that this process can run. It is not the authority for the manifesto: the four-field protocol, the three graphs and the seam walk survive every tool and package name in that repository changing.


The smallest version of it

DONE
  What became true.

PROOF
  What was executed or observed, and where the result lives.

SCOPE
  The commit, environment, requirements, and surfaces covered.

NOT VERIFIED
  What was not checked, could not be checked, or remains uncertain.

NOT VERIFIED: none within the stated scope is a valid answer. Silence is not.


This repository

Path What it is
manifesto.md The canonical text. Everything else renders it; nothing else restates it.
index.html The published document at podmanifesto.org.
assets/fonts/ Geist for the prose and JetBrains Mono for the display and telemetry, self-hosted under the SIL OFL.
assets/figures/ The five diagrams, generated by tools/build-figures.py.
assets/logo-512.png The turnstile as a raster, for the surfaces that will not take an SVG — the icon fallback and the iOS home screen. favicon.svg is the same mark and the only one with a dark-surface variant.
assets/style.css The stylesheet, opening with this page's own token block — the one place a colour or a radius may be written. assets/main.js is the small progressive-enhancement script. No frameworks; the only off-origin request the page makes is the analytics beacon.
llms.txt The document indexed for language models and crawling agents.
404.html The missing-address page, written as a four-field report against itself.
tools/ The checks below and the figure build. contrast-sweep.js measures composited colour, so it needs a real browser — check-render.py gives it one in CI, which is not the same as needing a person.
CHANGELOG.md What changed in the canonical text, and the rule that it does not change without a version.
CONTRIBUTING.md How to argue with the document, and how to submit a translation.
GOVERNANCE.md Who decides canonical changes, versions and releases.
SECURITY.md / SUPPORT.md Private vulnerability reporting and the route for every other question.
CITATION.cff Machine-readable citation metadata for the current version.
docs/DOCMAP.md The authoritative home and propagation rule for each repository fact.
CNAME The custom domain served by GitHub Pages.

The checks

"The site matches the text", "the references resolve" and "the page still looks like the pack" are commands with exit codes here, not sentences in a commit message. All of them run on every push (.github/workflows/checks.yml):

python3 tools/check-parity.py --verbose   # every canonical sentence of manifesto.md is on the page,
                                          # and the case count it states is computed, not restated
python3 tools/check-html.py               # the page closes every element it opens
python3 tools/stamp-assets.py --check     # every asset URL carries the hash of its current contents
python3 tools/check-links.py              # every reference resolves, and every cited line range exists
python3 tools/stamp-dates.py --check      # every published date — sitemap lastmod, JSON-LD
                                          # dateModified, the masthead, llms.txt — is the date
                                          # git records for the files it describes
python3 tools/check-render.py             # the properties only a browser can see: the document
                                          # survives into print, and every text/background pair
                                          # clears the WCAG AA floor in both themes, measured on
                                          # composited colour rather than asserted from the tokens
python3 tools/check-live.py               # the PUBLISHED site matches this repository — the served
                                          # robots.txt, the deployed bytes, every asset, the 404.
                                          # `--self-test` runs its rules offline against planted cases
python3 tools/negatives.py                # 25 planted defects across the 12 gates that read this
                                          # tree, each required to refuse its own; a green nobody
                                          # watched fail is not evidence. `check-live.py` is the
                                          # thirteenth and is not in here — its subject is the live
                                          # site, which cannot be planted in a temp directory, so
                                          # its rules are decided offline by its own `--self-test`
python3 tools/check-currency.py           # every citation this document CHARACTERISES still says what
                                          # is claimed of it — a permalink resolves forever, so
                                          # resolution alone cannot detect a receipt gone stale.
                                          # `--self-test` runs the rules offline against planted cases
python3 tools/check-downloads.py          # the install count in the colophon, resummed from npm
                                          # over a window that must end on a day that is over;
                                          # `--self-test` decides its rules offline
python3 tools/check-version.py            # every place the document states its version agrees, and
                                          # equals the newest tag — so the citable address points at
                                          # the text that is on the page
python3 tools/check-pack.py               # no colour or radius literal outside the token block;
                                          # reduced motion has a path
python3 tools/build-figures.py --check    # every figure's geometry is asserted, not eyeballed
python3 tools/inline-figures.py --check   # the inlined figures match the generated ones
bash scripts/check-docs.sh --self-test    # the governance and UX documentation gate is shown
                                          # refusing a planted missing-file defect
bash scripts/check-docs.sh                # required documentation homes, structured metadata,
                                          # current version and CI wiring agree
python3 docs/ux/lint.py                    # public-reader scenarios obey the shared UX contract

Design

No style pack. The page is the first design it ever had, restored after three alternatives were built and read: a paper field with a faint grid, mono chrome over a grotesk body, one green accent, light and dark. The masthead is centred — the one change from the original, because a founding document is issued rather than marketed and its title does not sit in a corner. The colour tokens live in one block at the top of assets/style.css, which is what check-pack.py holds the rest of the stylesheet to.

The five diagrams are plates, not flowcharts: a station is a name set in the text face on a hairline, mono is kept for what a plate uses it for (lane labels, indices, relation names, state tags), and state is carried by a dot and a bracketed tag rather than by a box. tools/build-figures.py generates them and asserts the geometry; the real font metrics are verified in a browser.

Asset URLs carry a content hash (/assets/style.css?v=…). A deploy once shipped while browsers went on serving the previous stylesheet, so the URL now changes whenever the file does and no cache can answer with the old bytes.

The site is static and readable with JavaScript disabled. It makes exactly one third-party request — the cookieless Cloudflare Web Analytics beacon, written into the page because the edge's automatic injection was enabled and silently not happening. Nothing else is fetched from anywhere but this origin, and check-live.py fails if that stops being true. The text is addressed to two readers: a person, and the agent that will quote it.

Citing a version

The live page moves with the version; the tag does not. If a quotation has to stay reachable, cite the tag:

https://github.com/ssheleg/pod-manifesto/blob/v1.1/manifesto.md

The canonical text does not change without a new version and an entry in CHANGELOG.md. Corrections to the site, the tooling or the prose about the document are not versions and are not listed there.

Citation tools can read CITATION.cff. Human and machine citations should still use the versioned source address above so the quoted text cannot move.

Disagreeing with it

The licence says argue with it, and an invitation with no address is decoration: CONTRIBUTING.md says what a useful objection looks like, where to put it, and how to submit a translation. GOVERNANCE.md names the decision boundary; CODE_OF_CONDUCT.md and SUPPORT.md name the participation and routing boundaries.

Licence

Text: CC BY 4.0 — quote it, translate it, adopt it, argue with it; keep the attribution and the link. Site code: MIT.

Author

Sergey Sheleg (Siarhei Sheleh) — github.com/ssheleg

About

Proof of Done — The Agentic Software Development Manifesto. When agents write the code, done is a state of the system that can be proven.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages