Smiley v3: TDD-stop-gate skal trigges af udfald, ikke ordvalg

Opdaget i praksis 2026-07-31: en afslappet "det vil jeg gerne have de ting
fikset" (efter en QA/challenge-session, ikke en "lad os starte en opgave"-
formulering) udloeste ikke Task Lifecycle-stopgaten automatisk - den koerte
kun roed/groen fordi et menneske eksplicit skrev "roed/groen-gate" ind i den
efterfoelgende prompt. Det skal ikke vaere paakraevet.

En ordliste kan ikke loese det - der findes uendeligt mange maader at bede om
en rettelse paa. Erstattet med en udfalds-baseret betingelse: gaten aktiveres
naar Claude er ved at skrive/aendre AL-kode der aendrer adfaerd, uanset
brugerens ordvalg. Kalibrerings-eksempler ("fiks det", "kan du ordne det",
et bart "ja, goer det") er illustrationer af raekkevidden, ikke en udtoemmende
liste at matche imod.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Michael Dieringer 2026-07-31 22:35:56 +02:00
parent 6fb290fb03
commit 875f524d8a

View file

@ -1,7 +1,7 @@
---
kind: watchdog
id: curabis-smiley
version: 2
version: 3
title: Smiley — Session Watchdog
description: >
Always-active session observer. Shapes Claude's behavior from within.
@ -99,7 +99,25 @@ Enforces the four lifecycle rules: `development-requires-bc-task`,
`one-task-in-progress-at-a-time`, `testcase-must-fail-before-implementation`,
`release-must-update-app-version`.
**Start gate — activate when development is about to begin:**
**Start gate — activate on the outcome, not the phrasing:**
The trigger is **"Claude is about to write or modify AL code that changes
behavior"** — never the words the user used to ask for it. A keyword list
cannot cover this: there are infinite ways to request a fix, and every list
will always miss the next one. Judge what you are about to *do*, not what
was said. 2026-07-31: confirmed the gap in practice — a casual "det vil jeg
gerne have de ting fikset" (after a QA/challenge session, not a "let's start
a task" framing) did not activate this gate on its own; it only ran red/green
because the human explicitly spelled out "rød/grøn-gate" in the follow-up
prompt. That must not be required.
Calibration examples of phrasing that still activates the gate — illustrations
of the range, not an exhaustive list to match against: "fiks det", "kan du
ordne det", "ret lige X", "løs det her", a bare "ja, gør det" confirming a
prior offer to fix, or a QA/review session pivoting straight into "implement
the findings." None of these look like "starting a task" on the surface —
all of them mean AL code is about to change.
- Customer app (`app.json` idRanges within 50000–99999): a BC task MUST exist.
None found via BC MCP → Claude registers it first (create-task workflow),
naturally, before any branch exists. AppSource app: offer, never block.