No email sign-up. Most of my users don't have one — use phone numbers.
bash + gitno runtime dependenciesMIT
Your agent forgot
why you said no.
Fragment keeps your decisions, the paths you ruled out, and the next move inside the repo — where the next session can read them.
Illustrative example
Before I start — should sign-up use email, or a phone number?
You explained this on Monday. It is as if the conversation never happened.
Email sign-up was ruled out on Monday — most of your users don't have one. Phone numbers it is. Picking up where you stopped, on the checkout screen.
01 — What it actually is
Plain files your agent already knows how to read.
docs/STATE.md
# State
**Focus** — get checkout working end to end
**Active fragment** — 04 · checkout · BLOCKED
**Waiting on** — you: what should happen when a payment fails?
## Decisions
- Sign-up is by phone number.
Rejected: email, because most of our users don't have one.
Asked and answered on Monday. Do not ask again.
## Next
- Answer the failed-payment question, then checkout can finish.
No database, no daemon, no account. Markdown your agent reads at the start of a session, and updates at the end of one.
Because it lives in the repo, it travels the way code travels: through branches, pull requests, and whoever clones it next.
Every agent already runs inside a harness — the one built into the tool. It sits behind the product, you cannot read it, and it changes when they ship.
This one is yours. It does not run the model; it hands whoever arrives next the same story you had, in files you can read and take to the next tool.
02 — Why the repo isn't enough
History tells you what changed. Never what you'd already ruled out.
a41f0c2 fix sign-up again
9d7e1b8 wip
2c30ff5 try the other approach
Three commits. Not one of them says which approach lost, or why. So the next session reconstructs the story from scratch — and cheerfully proposes the plan you already rejected.
03 — Fragment v0.5.0 in production
One shared guard. Two different jobs.
In the 2026-10-08 snapshot, medulla and flimapp used the same byte-identical 588-line Fragment v0.5.0 guard. Each repo kept its own checks for the failures that matter in that system.
medulla · runtime integrity
A large memory corpus, kept in the repo
On the snapshot date, its docs held 96 decisions, 51 lessons and 89 plans. The six newest decisions and six newest plans had all been written in the previous 48 hours.
Its 23-line local guard checks for tracked state- or secret-shaped files, architecture-budget breaks and contract drift.
flimapp · release integrity
Checks shaped around the app's release risks
Its 80-line local guard compares the release ledger with the app manifest, store copy with the build number, and API changes with the API inventory.
Different local rules; the shared guard remained byte-identical and upgradeable.
Earlier evidence · the source repository
The guard caught three documentation failures from a routine rename. The rename happened 74 minutes after CI was wired in; all three failures were caught before merge.
What this doesn't prove. Both production repos are run by Fragment's author (n=2); the snapshot does not establish independent adoption. It shows maintained project context and repo-specific checks, not measured time or token savings, and not that application code is correct. The benchmark is still incomplete. CI passes in the adoption snapshot are attested by commit notes, not independently inspected workflow runs.
Read the full case study and its limits →Hand it to the agent
you're already using.
Paste this into the coding agent that's already open on your project. It won't overwrite your files, and anything it can't find becomes a blocker instead of a guess.
To install the agent skill first:
npx skills add hematenergi/fragment --skill fragment
Install Fragment on skills.sh → · View Fragment skill source · Other agent install paths · Filled example
Install Fragment v0.6.2 from https://github.com/hematenergi/fragment into this repository. Do not overwrite existing files. Fill its project state from decisions visible in the repository and this conversation, then run bash scripts/docs-check.sh. Do not invent missing decisions; record them as blockers for me.