process: user-facing WhatsNew.md changelog + done-state notify protocol

Done-state notifications now produce two synchronised outputs sharing
one text: an entry appended to docs/WhatsNew.md and the same string
sent via notify.sh. The text is written in German for the user-as-
reader who did not watch the session — no technical internals, no
iteration codes, lead with the change-in-the-project.

WhatsNew.md is the only file in the repo intentionally not in English;
the exception is documented in CLAUDE.md (Roles of docs/...) so a
future reader does not "correct" it back. Bounce-back notifications
stay Notify-only.
This commit is contained in:
2026-05-11 09:01:04 +02:00
parent 78ccbcee9c
commit 6d94fa5826
2 changed files with 62 additions and 1 deletions
+47 -1
View File
@@ -181,6 +181,43 @@ and likely respond by returning to the session.
By default, you act autonomous. The notification is the
exception, not the rule.
### Done-state notifications: WhatsNew.md
When the trigger is **done-state** (autonomous work has wrapped
up, nothing left to do for the user to react to), the procedure
is two-step and the two outputs share one text:
1. Append a new entry to `docs/WhatsNew.md` (newest at the bottom,
append-only — same chronological convention as `JOURNAL.md`).
2. Send the same text via `~/.claude/notify.sh`.
The text must be written for the **user-as-reader who did not
watch me work**:
- **Language: German.** This is a deliberate exception to the
English-only project rule, because WhatsNew is user-facing
communication, the same role German plays in our live chat.
- **No technical internals.** Don't name crates, function
identifiers, type names, agent names, or iteration codes
(`ct.1.7`, `18a`, etc.). Describe the *change in the project*
— what is now possible, fixed, or visible — not the mechanics.
- **No assumption of context.** The user is on his phone and has
not seen this session. Lead with the result; the *why* is fine
if it fits in one short clause.
- **Length: Telegram-pragmatic.** No hard cap, but a few sentences,
not an essay. If the work covered multiple unrelated things,
bullet them.
- **Tone: factual, not performative.** No celebration, no "I have
successfully…". Just "X geht jetzt, Y ist behoben, Z ist neu".
**Bounce-backs** (asking the user for a design judgement or
checkpoint) are *not* done-state and do **not** produce a
WhatsNew entry — they stay as Notify-only.
Format of a WhatsNew entry: a `## YYYY-MM-DD — <kurze Überschrift>`
heading followed by the message body. The body must match the
Notify text verbatim.
## Bug fixes — TDD, always
Bug fixes are RED-first, autonomous, no orchestrator gate. See
@@ -232,6 +269,15 @@ Existing entries are not retroactively renamed.
bite-sized executable plan produced by `skills/plan`, consumed
by `skills/implement`.
- **`docs/WhatsNew.md`** (since 2026-05-11): the user-facing
changelog, written in German for the user-as-reader who does
not watch the implementation. Entries are appended at done-state
notifications and mirror the Notify text verbatim. See the
"Done-state notifications" subsection above for the editorial
rules. This is the only file in the repo that is intentionally
not in English.
Together these answer three questions: "what is the language right
now?" (DESIGN), "how did we get here?" (JOURNAL, specs, plans),
and "what's next?" (roadmap).
and "what's next?" (roadmap). `WhatsNew.md` is the user-facing
mirror of the JOURNAL — the same history, told without internals.