Development record
A re-render never discards hand-written text unasked
Context
itd-2611011151475128 renders every documentation surface (the README and the
docs/ pages) from the one home of each claim, and makes the brief-sourced
sections compulsory in abcd-managed repositories once the brief has an editing
surface. A rendered page is still a file anyone can open and edit, and
people will rewrite their README whatever the convention says. A render that
writes the surface whole would then destroy whatever was written by hand since
the last one, silently and in the owner's own repository.
Three standing records bear on it. itd-2610031348087517 never touches the
owner's own words and leaves a hand-edited part as it is; that is the
behaviour this decision would replace for repositories under the new rule
(the reversal waits on the product thinker's confirmation at the intents'
planning interview), so the replacement has to be at least as safe. itd-102
settled that re-rendering from the identity block is always a proposed diff
a person adopts, never an autonomous rewrite; whether the new rule renders in
place or holds each section to its home by a proposed diff is still open in
itd-2611011151475128, and this decision binds under either answer. And every-claim-has-one-home makes
the brief, not the surface, the place the owner's words belong, so the safe
behaviour cannot be to keep the hand edit in the surface for ever.
Decision
In a repository under the new rule, we will never let a render discard text written by hand into a rendered page unless the owner has chosen to, whether the render writes the section in place or proposes a diff for the person to adopt (a proposed diff that drops hand-written text is a discard too). Before a render replaces or proposes to replace a section, abcd compares the section with what it last rendered there. Text that differs, or prose added outside any rendered section, is hand-written: the render leaves it in place and reports it, and itd-2611011151512956's reverse path offers to move it into its source: the brief for a page rendered from the brief, the how (itd-2611011239589823) for a guide or tutorial rendered from the how. The section is rendered over only once the piece has been moved into its source, or the owner has explicitly chosen to drop it.
Alternatives Considered
- Render over, and rely on version control to recover the text. Rejected: the text is recoverable only by someone who knows it was lost, and a compulsory render in someone else's repository that deletes their writing is the trust failure the whole rule must avoid.
- Refuse to render while any hand edit exists. Rejected: one stray edit would freeze every section of the surface, and the brief's changes would stop reaching it; the hold belongs on the edited section only.
- Keep the hand edit in the surface permanently, as the setup parts do
today. Rejected for repositories under the new rule: it leaves a second
home for the claim, which is the drift
every-claim-has-one-homeexists to remove. - Leave it in place, report it and offer it back (chosen). The edit is never lost, the section it sits in waits only until the owner decides, and every other section keeps rendering.
Consequences
- abcd must keep what it last rendered into each section, or a digest of it,
so a hand edit can be told from a stale render. The setup parts' marker
already carries a checksum over its body (
internal/core/ahoy/readme_marker.go, which itd-2610031651058674's check reads). A section rendered in place reuses that marker rather than invent a second one; a section held to its home by a proposed diff needs the same record of what was last proposed, in a form the marker question settles. - A section can be held from rendering by an undecided piece of hand-written text; the reverse path has to surface that hold, or a section can go stale unnoticed behind it.
- A render stays the person's act and writes only the sections abcd renders
(
the-users-directory-is-theirs, adr-2610031751065746); committing what it wrote is the person's act too. - The brief-sourced sections can be compulsory without overwriting anyone: the rule that makes them safe is this one, so it ships before or with them.
- This needs a brief invariant beside the record rules, so a later change to rendering cannot quietly drop it.
Frontmatter
| id | adr-2611011153058085 |
|---|---|
| type | adr |
| status | proposed |
| date | 2026-11-01 |
.abcd/development/decisions/adrs/2611011153058085-a-re-render-never-discards-hand-written.md
open on GitHub ↗ · commit history ↗
References6
- adr-2610031751065746The worktree store lives under the renamed home, `~/.abcd.noindex/worktrees/<root-sha>/<name>/`, and the rest of its rule is unchangedrelated
- itd-102**Your repo says the same thing about itself everywhere — because abcd asked you once and holds every surface to it.** A project's positioning fragments silently: the README strapline, the package or plugin manifest description, and the agent conventions file are each edited at different moments, and soon three surfaces tell three stories about what the project is. When abcd prepares a repo it interviews the user for the project's identity — title, tagline, and a short elevator pitch — and records the answers in one canonical home in the development record. Every surface rendering derives from that home, and a deterministic positioning check compares the surfaces against it on every audit: a mismatch is highlighted with the exact drifted line, and the fix is either re-render from the record or a deliberate, recorded identity change — never a silent extra variant, and never a silent rewrite by abcd. "I changed my tagline once, in one place, and abcd chased it everywhere else," said Alice, a solo founder. "When a stray edit crept into the README, the next audit pointed at the exact line instead of letting the drift settle in."related
- itd-2610031348087517Setup asks whether abcd keeps parts of the README current, and whichrelated
- itd-2611011151475128Every documentation surface is rendered from its one homerelated
- itd-2611011151512956Hand-written text in a rendered page is caught and offered back to its sourcerelated
- itd-2611011239589823A project's how-to guides and learning material stay current with the productrelated
mentions2
- dcn-26110112485946472026-11-01 — ADOPTED (product thinker, 2026-11-01): abcd-managed repositories move to documentation that holds no prose of its own. What people write lives in the design record (the brief, what the product is and why, its users and roles, with its principles) or the how (how-to guides, and optionally tutorials, exercises and video), and everything else is generated from code and release facts. The rule binds a page section by section as abcd comes to render it; until then a repository's hand-written prose stays where it is. A hand edit to a rendered page is caught and offered back to its source rather than overwritten. Grounds: every-claim-has-one-home already rules a second copy out for the record, and abcd's own README drifted from the brief it restates; two state-of-the-art reviews (2026-11-01) supported explanation in the design record, generated reference, tested how-to and tutorial pages, and one site with separate owners. Recorded in itd-2611011151475128, itd-2611011151512956, itd-2611011239589823 and adr-2611011153058085 (proposed). Reverse by a later decision that names this one; the drafts carry the open questions (rendered or held, where the how lives) that planning settles.
- itd-2610031651058674abcd's check reports README parts that have gone stale, and writes nothing