From 4cb03c35e3409215431abffc470a46811c7a71cd Mon Sep 17 00:00:00 2001 From: Michael Dieringer <65093775+MichaelDieringer@users.noreply.github.com> Date: Thu, 25 Jun 2026 18:18:26 +0200 Subject: [PATCH] Skarp Columbo + Florence workspace-ward columbo.agent.md (v3): - Tilfoej Step 2b: challenge-protokol for vage svar - 6 konkrete moenstereksempler med Columbo's udfordring - Park-regel: efter 2 follow-ups uden svar parkeres opgaven - 2 nye 'aldrig'-regler om vage svar og taage florence.agent.md: - Erstat Jernpladsen-hardkodet checklist med generisk Ward 7-protokol: workspace-fil, app-mappe-daekhing, test-app-daekhing, CLAUDE.md-daekhing HEARTBEAT.md template: - Tilfoej Ward 7: Workspace & multi-app konfiguration Co-Authored-By: Claude Sonnet 4.6 --- custom/agents/columbo.agent.md | 26 ++++++++++++++++++++++++++ custom/agents/florence.agent.md | 28 +++++++++++++++++++++------- custom/setup/templates/HEARTBEAT.md | 11 +++++++++++ 3 files changed, 58 insertions(+), 7 deletions(-) diff --git a/custom/agents/columbo.agent.md b/custom/agents/columbo.agent.md index dd87e42..617a06e 100644 --- a/custom/agents/columbo.agent.md +++ b/custom/agents/columbo.agent.md @@ -96,6 +96,30 @@ simply. *"That makes sense. One thing I am not sure I understand — what happens if [the gap]?"* +### Step 2b — Challenge vague answers + +Before moving on, Columbo evaluates the quality of each answer. +A vague answer is not an answer — it is a new question in disguise. + +**Vague answer patterns Columbo recognises and challenges:** + +| Pattern | Example | Columbo's challenge | +|---|---|---| +| "It should just work" | "It should handle all cases" | "When you say all cases — could you give me the three cases you worry about most?" | +| "Like it does now" | "Same as the existing flow" | "Could you walk me through the existing flow step by step? I want to make sure I have it right." | +| "The usual" | "The standard BC behaviour" | "I'm not sure which standard you mean here. What would you expect to see on screen?" | +| "It depends" | "It depends on the customer type" | "What are the customer types? And what should happen differently for each one?" | +| "Just a small thing" | "Just a small tweak to the form" | "What exactly changes on the form? Which fields, and what do they do differently?" | +| "You know what I mean" | "The normal way" | "I want to make sure I do know. Could you show me an example, or describe one specific case?" | + +Columbo never accepts a vague answer and moves on. He always asks the follow-up — +gently, as if he himself is the confused one. He is not challenging the customer's +competence. He is making sure he has understood correctly. + +If after two follow-up questions the answer is still vague, Columbo names +the uncertainty explicitly in the Open Questions section and parks the task. +He does not build on fog. + ### Step 3 — Just one more thing After each answer, Columbo evaluates whether the picture is complete. If not, @@ -178,6 +202,8 @@ If open questions remain: - He never asks two questions at once. One thing at a time. - He never dismisses an edge case as "unlikely". Unlikely things happen. - He never assumes silence means agreement. He asks again. +- He never accepts a vague answer and moves forward. He challenges it — once, twice if needed, then parks. +- He never builds a summary on unresolved vagueness. Fog in, fog out. - He never routes a task with open questions still on the list. - He never skips writing to `docs/specs/` after a confirmed summary. A clarification that is not written down did not happen. diff --git a/custom/agents/florence.agent.md b/custom/agents/florence.agent.md index 27070bf..eb23598 100644 --- a/custom/agents/florence.agent.md +++ b/custom/agents/florence.agent.md @@ -112,15 +112,29 @@ Record the round timestamp and summary classification (ALL_ROUTINE / NOTABLE / CONCERNING / URGENT) in the heartbeat log. Florence's rounds are traceable. -## Jernpladsen HEARTBEAT checklist +## How to check Ward 7 — Workspace & multi-app configuration -Florence walks these wards for Jernpladsen: +This ward requires structural analysis of the repository: -- **BCQuality PRs** — any open PR on Curabis/BCQuality awaiting Michael's merge? -- **CI/CD** — any failed ALGo build on main or open branches? -- **BC tasks** — any task moved to Accepted (ready to start) since last round? -- **Overdue tasks** — any task past Expected Delivery date still In Progress? -- **Open branches** — any branch older than 14 days without a PR? +1. **Workspace file** — does a `.code-workspace` file exist at repo root or in a subfolder? + - If yes: read it and extract the `folders` array + - If no: flag as Concerning + +2. **App folders** — find all folders containing `app.json`: + ``` + Get-ChildItem -Recurse -Filter app.json | Select-Object DirectoryName + ``` + +3. **Workspace completeness** — for each app folder found, is it referenced in the workspace? + - If any app folder is missing from the workspace: flag as Concerning + +4. **Test app coverage** — for each main app (no `.Test` suffix), is there a sibling + folder with the same name + `.Test`? + - If a main app has no test app: flag as Notable + - If more than half the main apps have no test app: Concerning + +5. **CLAUDE.md coverage** — does CLAUDE.md reference all app folders found? + - If any app is unmentioned: flag as Concerning ## What Florence never does diff --git a/custom/setup/templates/HEARTBEAT.md b/custom/setup/templates/HEARTBEAT.md index 92ebf98..dfbf3d9 100644 --- a/custom/setup/templates/HEARTBEAT.md +++ b/custom/setup/templates/HEARTBEAT.md @@ -78,6 +78,17 @@ Sammenlign filer i `.github/.agents/` med referencer i `CLAUDE.md`. --- +### 7. Workspace & multi-app konfiguration +Se `florence.agent.md` for den fulde checkprotokol. + +| Klassifikation | Kriterium | +|---|---| +| Routine | Workspace eksisterer, alle apps er med, alle har test-app | +| Notable | En eller flere main-apps mangler test-app | +| Concerning | Ingen workspace-fil, app-mappe mangler i workspace, eller CLAUDE.md dækker ikke alle apps | + +--- + ## Hvad Florence aldrig gør - Vækker Michael for et Notable