Development record
2026-07-28 — itd-102: surface comparison is normalised CONTAINMENT of each required block field (markup, dashes, wrapping, case folded; trailing sentence punctuation trimmed from the needle), not line equality. Equality would flag abcd's own three conforming surfaces, each of which carries the tagline in a different rendering (inside `<p>`, concatenated with the pitch in the manifest, bolded mid-sentence and line-wrapped in AGENTS.md); containment catches all three iss-143 variants while accepting all three current ones. Consequence: `identity render` fires only on drift, and its template render is a proposal to adopt by hand, not a byte-exact reproduction of conforming prose.
2026-07-28 — itd-102: surface comparison is normalised CONTAINMENT of each required block field (markup, dashes, wrapping, case folded; trailing sentence punctuation trimmed from the needle), not line equality. Equality would flag abcd's own three conforming surfaces, each of which carries the tagline in a different rendering (inside <p>, concatenated with the pitch in the manifest, bolded mid-sentence and line-wrapped in AGENTS.md); containment catches all three iss-143 variants while accepting all three current ones. Consequence: identity render fires only on drift, and its template render is a proposal to adopt by hand, not a byte-exact reproduction of conforming prose.
Frontmatter
| id | dcn-2607280000000007 |
|---|---|
| type | decision |
| date | 2026-07-28 |
.abcd/work/decisions/dcn-2607280000000007-itd-102-surface-comparison-is-normalised.md
open on GitHub ↗ · commit history ↗
mentions2
- iss-143tagline three-variant drift: the repo runs three different self-descriptions — README strapline (an opinionated, intent-driven development framework for product thinkers), plugin.json description (host-agnostic configuration layer for development ... usable as a plugin in compatible agent harnesses), and AGENTS.md (a host-agnostic configuration layer for development). The drift is itself the finding: one-canonical-primitive wants a single recorded tagline (a DECISIONS.md line, or the brief's product chapter as the home) with per-surface renderings derived from it. Adopting any new wording without that consolidation just mints a fourth variant. Surfaced by the 2026-07-27 tagline assessment. Detector: a positioning-currency check that the three surfaces render from one recorded home.
- 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."