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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user