Commit graph

44 commits

Author SHA1 Message Date
Michael Dieringer
9e5273443f Fix all 6 confirmed findings from today's gap audit
Implements every confirmed finding from the workflow-based audit of
CURABIS Standard's agent model (7 finders + adversarial verification,
8 confirmed / 5 refuted):

1. Roemer/Florence phantom wiring - roemer.agent.md claimed Florence's
   heartbeat "may summon me when a ward smells of drift" with nothing in
   florence.agent.md or HEARTBEAT.md implementing it. Fixed by adding an
   explicit "Kald Roemer" instruction to HEARTBEAT.md ward 6 (agent
   visibility, his actual domain), mirroring ward 8's existing "Kald
   Weber" pattern, and correcting roemer.agent.md's own claim to match.

2. m365.agent.md's "Florence's morning brief pattern" was a one-way
   orphaned reference - a full 4-step pattern with nothing in
   florence.agent.md implementing it. Added it to florence.agent.md as
   an explicit on-demand capability, separate from the timestamp-gated
   Round protocol.

3. An Ergasterion "PROCEED WITH CHANGES" ruling had no way to be checked
   against the eventual diff - al-review's checklists never referenced
   it. Added ERGASTERION_RULING to the [CURABIS-STATE] vocabulary,
   wired Ergasterion to write it, and added a BLOCKing checklist item to
   al-review's Titus checklist that verifies required changes were
   actually implemented.

4. curabis-task-state-check.yml was headered "Deterministic enforcement
   (not LLM diligence)" but only checks checkbox order, only blocks
   anything if a human separately enabled branch protection (never
   verified anywhere), and doesn't exist at all for the PTE track.
   Corrected the header's claims and added Roemer station 14 to verify
   branch protection is actually configured.

5. Mode C's only safeguard against a support user reaching
   Curabis/QualityHub was a single manual eyeball check with no re-check
   ever. Strengthened Step 2 to cover team-inherited and org-default
   access paths, added an append-only support-user registry, and added
   Roemer station 15 to periodically re-verify every registered user
   against it.

6. Columbo's persona was presented as genuine autobiography with no
   disclosure of its fictional TV origin (Levinson & Link, Peter Falk),
   unlike Smiley which discloses explicitly. Added a reader-facing
   editorial note - never something Columbo says aloud, since unlike
   Smiley he actually performs the persona to customers.
2026-08-03 14:12:05 +02:00
Michael Dieringer
c1132c4006 Add the Ergasterion: Hickey, Fowler, Parnas architecture workshop
Pre-implementation architecture inspection for one proposed design at a
time, distinct from the Court's rulebook-level governance (which already
carries its own "Academy" self-identity in court.agent.md) and from
al-review's post-hoc diff review. Wired into al-complexity's HIGH-tier
route as the actual human architecture sign-off.

- Hickey: what does this model, and what's complected?
- Fowler: does this pay for itself, or borrow against the next change?
- Parnas: is what's likely to change hidden behind a stable interface?
  (proactive counterpart to Titus Winters' Hyrum's Law check in al-review)
2026-08-03 11:41:30 +02:00
Michael Dieringer
bcbc4acced Fire haandhaevelseslag for [CURABIS-STATE]-tilstandssporet
Michael: "lad os bygge alle 4" - rangeret efter styrke fra sidste samtale.

1. Smiley v6: close-gaten laeser nu det faktiske [CURABIS-STATE]-spor
   tilbage FOER merge, i stedet for at stole paa sessionens egen hukommelse.
   Mangler et tidligere checkpoint, blokerer merge - selv hvis testen er
   groen og reviewet lige sagde APPROVE nu.
2. al-review v3: "state trail complete?" er nu et Titus-tjekpunkt der giver
   BLOCK, ikke bare en note - et ufuldstaendigt spor er i sig selv et
   vedligeholdelsesfund.
3. Ny .github/workflows/curabis-task-state-check.yml: reelt deterministisk
   haandhaevelse for AppSource (parser PR-body'ens tjekliste, fejler hvis en
   senere fase er tjekket mens en tidligere ikke er). Testet mod fire cases
   (gyldig raekkefolge, ugyldig, ingen sektion, tom sektion) - alle korrekte.
   Kraever et manuelt engangs-trin (branch protection required check) som
   filudrulningen ikke selv kan saette.
4. Roemer v6: ny station 13, retrospektiv - stikprover de sidste ~10
   afsluttede BC-opgaver/mergede PR'er for spor-fuldstaendighed, fanger
   drift ingen enkelt opgaves egen gate fangede. Kun opgaver lukket efter
   2026-08-03 flages - reglen fandtes ikke foer.

curabis-standard.agent.md: ny artefakt-raekke + Mode A step 4h (deploy
workflow-filen, mind om branch protection-trinet) + Mode B repo-tabel-raekke.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-03 10:16:54 +02:00
Michael Dieringer
9e66377fa6 Ret bc-mcp: config-skabelon matcher broen + fejl svaelges ikke laengere
Live incident i aften: businesscentral MCP fejlede med et generisk
30-sekunders "connection timed out", ingen brugbar fejl. To reelle, adskilte
fejl fundet ved at teste direkte mod BC's endpoint:

1. ~/.bc-mcp.config.json havde "company": "CURABIS ApS" (Vist navn), men BC's
   faktiske Navn-felt er "Curabis ApS". BC svarede korrekt og hurtigt (400,
   under 200ms) - problemet var aldrig BC.

2. bc-mcp-bridge.js svaelgede det svar stille: en fejl-krop formateret som
   almindelig JSON, men markeret content-type text/event-stream, blev sendt
   til parseSSE() som kun leder efter "data:"-linjer - fandt ingen, returnerede
   en tom liste. Broen skrev derfor INGENTING, hverken stdout eller stderr, og
   Claude Code ventede blot sin egen 30-sekunders timeout ud.

Rettet:
- forward() tjekker nu !r.ok FOER content-type-forgrening, ubetinget - en
  fejlrespons naar aldrig parseSSE, uanset hvad serveren paastaar om sin
  egen content-type. Testet direkte mod det reproducerede scenarie: fejlen
  vises nu med det samme (5s test-vindue, ikke 30s timeout), med det fulde
  BC-fejlsvar synligt i baade stdout (JSON-RPC error) og stderr.
- bc-mcp.config.template.json matchede slet ikke broens faktiske felter
  (tenantId/baseUrl vs. broens tenant/company/configurationName) - enhver ny
  udvikler der udfyldte skabelonen efter dens egne feltnavne ville faa en
  config der intet virkede med. Rettet til de rigtige feltnavne, plus en
  eksplicit advarsel om Navn vs. Vist navn i company-feltet.
- Mode A's opsaetningsbesked (Step 3b) opdateret til at naevne alle
  placeholder-felter, ikke kun secret'en.
- To nye BCQuality-videnfiler dokumenterer begge fejl til fremtidig
  fejlsoegning.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-01 00:18:37 +02:00
Michael Dieringer
9d0a1d2d47 Tilfoej al-review: uafhaengig per-aendring-reviewer (Torvalds + Winters)
Fjerde gate i Task Lifecycle - koert efter groent test, foer merge, adskilt
fra den der implementerede aendringen og fra Roemer/Immanuel/Court's
portefoelje-niveau-styring (de spoerger "er selve regelsaettet sundt", ikke
"er DENNE aendring god").

To linser, Michaels egen opdeling:
- Linus Torvalds: BC/AL-domaene-teknisk (respekterer standard-BC/events,
  bogfoerings-sideeffekter, opgraderings-holdbarhed, filtre/keys/SetLoadFields,
  locking/SQL-performance, permissions/dataklassifikation, forretningslogik
  paa forkert sted, testdaekning af forretningsforloeb, lokalt rigtig men
  arkitektonisk forkert)
- Titus Winters: generel software-engineering (korrekthed, forstaaelighed,
  arkitektonisk sammenhaeng, testbarhed, cyklomatisk/McCabe-kompleksitet -
  ingen anden i rosteret vurderer det tal - Hyrum's Law, kodebase-konsistens,
  boer det overhovedet bygges saadan)

Wired ind i Smileys Close gate (samme udfaldsbaserede disciplin som resten
af dagens rettelser) - ikke noget udvikleren skal huske at bede om. Verdict
er APPROVE / APPROVE WITH NOTES / BLOCK, aldrig en fjerde "det er kompliceret".

Roster-taeller opdateret alle steder: 22 agent-filer i alt (20 maskin-globale,
2 repo-lokale), 19 filer i ~/.claude/curabis-agents/. sync-bcquality-
knowledge.ps1 testet - al-review.agent.md bekraeftet leveret.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 23:20:50 +02:00
Michael Dieringer
85b2acc372 Tilfoej Microsoft Learn MCP til udviklere + goer add_repo konkret
To ting fra QualityHub-sporet:

1. Udviklere faar nu samme Microsoft Learn MCP som Mode C-supportbrugere
   allerede havde (https://learn.microsoft.com/api/mcp, HTTP, ingen auth) -
   registreret maskin-globalt via sync-bcquality-knowledge.ps1, samme
   moenster som al/businesscentral. Lukker hullet hvor udviklere kun havde
   den statiske microsoft/-videnfil-snapshot og ingen live dokumentationssoegning.

2. add_repo-mekanismen i curabis-app-sources-must-be-checked-first.md var
   kun naevnt, aldrig defineret - intet vaerktoej med det navn findes i
   Claude Code CLI. Erstattet med en konkret, testet mekanisme: en
   vedvarende, opdateret klon i ~/.claude/reference-repos/<org>/<repo>/,
   samme moenster som BCQualitys egen kanal-klon. Testet live mod det
   faktiske microsoft/BCApps-repo (shallow clone ~52s, ~36.000 .al-filer,
   git pull --depth 1 til opdatering).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-31 20:03:10 +02:00
Michael Dieringer
11b4e2ec99 v24: flyt roster-agenter, .mcp.json og find-altool.ps1 fra repo til maskine
19 af 21 agent-filer, de to standard MCP-servere (al, businesscentral) og
find-altool.ps1 var byte-identiske kopier duplikeret ind i hvert af de 14
CURABIS-repos. De flyttes til ~/.claude/ (én kopi pr. maskine i stedet for
pr. repo), gated paa den eksisterende .github/.agents/bcquality.agent.md-
markoer. Kun bcquality.agent.md og feynman.agent.md forbliver repo-lokale
(Mode C support-brugere har intet ~/.claude/ at laese globalt indhold fra),
og CLAUDE.md's machine-self-heal-blok forbliver repo-lokal (den installerer
selve den globale fil, kan ikke ligge i den).

find-altool.ps1 finder nu repo-roden ved cwd-walkup til en .AL-Go-markoer
i stedet for sin egen placering, og MCP-registrering sker idempotent via
`claude mcp add --scope user`. Mode B faar en engangs-migreringssektion for
de 14 eksisterende v23-repos; .mcp.json-oprydningen kraever eksplicit
bekraeftelse af at alle udviklere paa repoet har migreret foerst, da filen
er delt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-30 13:06:58 +02:00
Michael Dieringer
90048bb262 v23: Feynman support-rolle — agent i rosteret + Mode C support-profil
- custom/agents/feynman.agent.md: ny support-navigator for ikke-udviklere.
  Strengt læsende, svar med kildehenvisning (kildetrappen: docs/specs ->
  projectmemory -> decisions -> kode -> Microsoft via MCP), Feynman-testen
  på alle svar, struktureret eskalering via Feynman-notatet (Columbo/
  al-triage-klar). Aktiveres med trigger-frasen 'Feynman:'.
- curabis-standard.agent.md v23: Feynman i artefakt-tabel, Mode A 4c,
  Mode B-tabel og CLAUDE.md-templaten (support-sektion der slår self-heal,
  AL MCP og BC MCP fra i support-sessioner + on-demand-entry). Ny MODE C:
  'Onboard en supportbruger til CURABIS Standard' — browser-only (claude.ai/
  Claude Code på web, ingen VS Code), GitHub read-only, GitHub MCP +
  Microsoft Learn MCP, ingen secrets, ingen QualityHub-adgang.
- templates/feynman-onboarding.md: dansk onboarding-dokument til
  supportbrugeren ({SUPPORT_NAME}/{REPO_LIST}/{SETUP_DATE}-tokens).
- machine/CLAUDE.md: tredje trigger-kommando tilføjet.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 09:57:49 +02:00
Michael Dieringer
96b98acf73 v22: HEARTBEAT.md staleness check i Mode B (Curabis/BCQuality -> Curabis/QualityHub) 2026-07-23 15:46:28 +02:00
Michael Dieringer
9e70030ca7 Setup v21: CLAUDE.md-templaten refererer ALLE deployerede agenter
Roemers station 8 (agent-synlighed, reglen claude-md-must-reference-
all-agents) flagede korrekt lincoln/aurelius/munger/algo-settings paa
hvert repo - fordi den GENEREREDE CLAUDE.md manglede dem. Symptomet var
loyalt; kilden var templaten.

- De tre dommere tilfoejet som under-punkter til court-entryen (relation
  bevaret: de ER Rettens dommere, ikke loesrevne agenter)
- algo-settings tilfoejet som egen on-demand-linje

Dermed genererer Mode A en komplet CLAUDE.md, og Roemer stopper med at
stille det samme spoergsmaal paa hvert repo. Rod-aarsag lukket i stedet
for symptom-besvaret pr. repo.
2026-07-03 21:34:37 +02:00
Michael Dieringer
9235886816 Setup v20: self-heal fanger ogsaa FORAELDEDE maskiner, ikke kun manglende
Rasmus-casen: en maskine der sover gennem en konsumtionsmigrering
(ferie/orlov) vaagner op med en CLAUDE.md der peger paa doede kilder -
og onboarding-scriptet roerer bevidst aldrig en eksisterende CLAUDE.md,
saa den heler ikke sig selv.

Self-heal-triggeren i projekt-CLAUDE.md-templaten udvidet: udloeser nu
ogsaa naar maskinens CLAUDE.md baerer legacy-markoerer
(raw.githubusercontent / Curabis/BCQuality). I stale-tilfaeldet
refreshes maskinens CURABIS-sektioner fra templaten i kanal-klonen -
diff vises, Identity og personlige sektioner bevares, bekraeftelse
kraeves (det er udviklerens personlige fil).

Dermed reparerer Rasmus foerste session sig selv om halvanden uge -
og enhver fremtidig sovende maskine ved naeste modelskift.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 19:25:21 +02:00
Michael Dieringer
68a3f6dffa QualityHub: det nye private repo faar sit eget navn
Michaels beslutning: det private repo hedder Curabis/QualityHub.
Fordele: ingen omdoebnings-dans med den gamle fork (frisk repo, frisk
navn), og QualityHub er brandbart som CURABIS-produkt - det er ikke
laengere bare en BCQuality-fork, det er hjemstedet for hele
kvalitetsapparatet (regler + agenter + setup + governance).

Navneskel: repoet og kanal-klonen hedder QualityHub
(%USERPROFILE%\.claude\QualityHub); STANDARDEN indeni hedder fortsat
BCQuality (Microsofts tre-lags koncept, som 40+ regelfiler og alle
agenter refererer). Kun infrastruktur-referencer er skiftet:
git-URL'er og klon-stier i sync, onboarding, setup v19, maskin-
CLAUDE.md, CONSUMPTION, agent-fallbacks og Francis' felt-routing.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 17:59:33 +02:00
Michael Dieringer
3ce08fe91e v19: git-baseret konsumtion - forberedelse til privat repo
Beslutning: BCQuality skal vaere privat. En fork af et offentligt repo
kan ikke goeres privat, saa flyttet sker via detach/nyoprettelse - men
FOERST omlaegges al konsumtion fra tokenfri raw-URLs til git-baseret
adgang, shippet mens kanalen stadig er offentlig, saa flaaden aldrig
oplever et hul. GCM er token-haandteringen: udviklerne er allerede
autentificeret.

Kernen er KANAL-KLONEN: %USERPROFILE%\.claude\BCQuality, pinned til
stable. Alt kopieres derfra (filsystem-kopi = raa bytes; ingen
CDN-cache, ingen API-limits).

- sync-bcquality-knowledge.ps1 v2: git-baseret (klon/fetch/checkout
  stable, mirror bygges lokalt, skriver selv versionsmarkoeren)
- Install-CurabisMachine.ps1 v2: onboarding = git clone + script fra
  klonen; foerste GCM-login ER autentificeringen
- curabis-standard.agent.md v19: SRC/BASE-tokens peger paa klonen;
  fetch betyder copy; Mode B Step 0 freshener klonen; ny Mode B-
  sektion opdaterer maskin-CLAUDE.md ved konsumtionsmodel-skift
  (gated, Identity bevares); CLAUDE.md-templatens self-heals er
  git-baserede
- machine/CLAUDE.md v2: auto-update gater paa git fetch/rev-parse
  i stedet for GitHub API; setup laeses fra klonen
- Ishikawa + al-triage + Francis: fallbacks peger paa mirror/klon;
  al-triages hardcodede URL-liste fjernet (samme sygdom som Ishikawa
  havde). Aerlig konsekvens: Copilot mister live custom-fallback
- CONSUMPTION.md: Access model-sektion + to-linjers onboarding
- Invoke-CurabisEvidence: RawBase markeret legacy/doed

Nul raw.githubusercontent-referencer tilbage i forbrugerkritiske filer.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 17:44:19 +02:00
Michael Dieringer
e6c362e560 AL MCP cwd-agnostisk: walk-up + auto-projektopdagelse (setup v18)
Efter genstart var al stadig Failed. MCP-loggen gav beviskaeden:
cwd = .apps\PrebenZ (app-mappen - one-workspace-standarden binder
sessionen dertil), og CLAUDE_PROJECT_DIR er IKKE sat for MCP-launches,
saa ${CLAUDE_PROJECT_DIR:-.} faldt tilbage til app-mappen hvor .vscode
ikke findes. Workspace-standarden og .mcp.json-antagelsen var i
konflikt.

Fix - og en forbedring af standarden:
- find-altool.ps1 v3: cwd-agnostisk anker ($PSScriptRoot), og nyt
  auto-argument der selv opdager alle AL-projektmapper (app.json under
  .apps/Apps/apps) og substituerer dem i launchmcpserver-kaldet
- Setup v18, 4b: al-entryen er nu BYTE-IDENTISK paa tvaers af alle
  repos - -Command med walk-up fra cwd til .vscode\find-altool.ps1 +
  launchmcpserver auto. Ingen {APP_FOLDER}-substitution.
- Mode B check 4: aeldre former erstattes stille med den universelle

Live-testet fra praecis den cwd der fejlede (.apps\PrebenZ): serveren
overlever. PrebenZ + JP haandrettet paa Michaels maskine.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 17:08:36 +02:00
Michael Dieringer
8d2bc11d95 launchmcpserver kraever projektstier - setup v17 + Mode B-autoreparation
/mcp viste al som Failed paa to maskiner efter korrekt deployment af
find-altool.ps1. Aarsag fundet via altool --help: signaturen er
launchmcpserver <projects> - projektmapperne er PAAKRAEVEDE argumenter,
og uden dem doer serveren straks. Kun Wareco passede stierne med
(haandlavet), alle andre .mcp.json-entries og selve setup-templaten
kaldte uden. Roegtestet i Jernpladsen: med stier overlever serveren.

- Setup v17, 4b: .mcp.json-templaten inkluderer {APP_FOLDER}-stierne
  med eksplicit advarsel; een linje pr. app-projekt
- Mode B .mcp.json-validering, nyt check 4: manglende projektstier
  mellem launchmcpserver og --transport korrigeres stille (een sti pr.
  app-projekt) + genstartspaamindelse
- find-altool.ps1-templatens eksempel rettet tilsvarende

JP + PrebenZ .mcp.json er rettet direkte paa Michaels maskine;
Conzept faar rettelsen via Mode B efter promote.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 16:46:39 +02:00
Michael Dieringer
5fb29ee749 find-altool.ps1 er et CURABIS-artefakt - fantomkommandoen udryddet
Felttest paa fremmed maskine afsloerede at VS Code-kommandoen
AL: Configure MCP Server IKKE FINDES - den har staaet i setup-
dokumentationen siden v6 og er blevet gentaget ukritisk siden,
inkl. af Claude i dag. find-altool.ps1 var i virkeligheden
haandlavet i Jernpladsen/Wareco (funktionelt identiske kopier).

- custom/setup/templates/find-altool.ps1: kanonisk template med
  robust versionssortering ([version]-parse i stedet for leksikalsk)
  og klar fejlbesked ved manglende/for gammel AL-extension
- Setup v16: 4b deployer filen fra templaten (raa bytes) og skriver
  ALTID al-entryen i .mcp.json; det betingede spor og fantom-noten
  er fjernet. Mode B: ny raekke deployer filen hvis den mangler
- Install-CurabisMachine.ps1 + CONSUMPTION.md: pr.-repo-trinnet er nu
  bare Opdater CURABIS Standard - AL-extensionen fra Marketplace er
  eneste maskinforudsaetning
- Roemer v5, station 12: AL MCP-wiring paa runden med autoriseret
  stille korrektion. Evidens: en session skrev AL-kode den ikke
  kunne compile og flagede det foerst ved forespoergsel (Conzept)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:49:05 +02:00
Michael Dieringer
8e1c392181 Auto-onboarding: kloning af et CURABIS-repo onboarder maskinen selv
Setup v15: projekt-CLAUDE.md-templatens self-heal udvidet fra kun
mirror til hele maskinen - mangler ~/.claude/CLAUDE.md eller bridgen,
koerer sessionen Install-CurabisMachine.ps1 fra stable selv
(idempotent, identitet fra git config), rapporterer de manuelle
rest-trin (personlig secret, AL: Configure MCP Server) og beder om
Claude Code-genstart. Mirror-only-staleness beholder det lette
self-heal.

CONSUMPTION.md: Auto-trigger-afsnit - een-linjes-kommandoen er
fallback, ikke procedure; foerste session i et klonet repo goer
arbejdet.

Torsten-scenariet (frisk maskine, manuel onboarding-viden paakraevet)
forsvinder dermed for alle fremtidige udviklere.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:39:24 +02:00
Michael Dieringer
9bda3afb85 Eet workspace pr. repo - alle andre slettes som stoej
Michaels praecisering af workspace-standarden: der findes praecis EET
workspace pr. repo - i apps-mappen, efter referencelayoutet (app-
projekter + .AL-Go + ../docs). Alle oevrige *.code-workspace-filer,
inkl. rodens al.code-workspace, slettes - de er forkerte indgange, og
den forkerte bliver brugt. Apps-mappens navnevariant (.apps/Apps/apps)
er kosmetik; .apps er referencen.

- Regel al-development-must-use-apps-workspace skaerpet: uniqueness-
  krav; rod-workspacet overlever ikke laengere til plumbing-formaal
  (aabn repo-mappen direkte til det); AL-Go template-opdateringer der
  gen-scaffolder rod-workspacet fjernes igen af runden
- roemer.agent.md v4: station 9 tjekker begge retninger og har
  sletnings-autorisation (rapporteres bagefter)
- curabis-standard.agent.md v14: Mode B opretter/kompletterer apps-
  workspacet og sletter alle oevrige

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 09:30:18 +02:00
Michael Dieringer
05a6fb0720 Strukturflag: BCQuality-implementering rejser flagene selv
Michaels krav: AI skal rejse flagene, naar BCQuality implementeres paa
et repo - ikke naar nogen tilfaeldigvis spoerger. Portefoeje-inventar
2026-07-02 (29 repos): 3 flade repos blokeret for testcases, 11 uden
test-app (een CreateTestApp-koersel hver, ikke migration).

- Ny regel al-go-template-layout-with-test-app-required: template-
  layout + test-app-companion er paakraevet; strukturfund er report-
  only (migration er aldrig stille korrektion); setup maa fortsaette
  paa non-compliant repo, men aldrig tavst
- roemer.agent.md v3: station 10 (AL-Go template-layout) og 11
  (test-app pr. main app)
- curabis-standard.agent.md v13: Mode A Step 1b koerer Roemers
  strukturstationer FOER konfiguration og kraever at udvikleren
  anerkender flagene inden Step 2

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 09:14:22 +02:00
Michael Dieringer
7565a769c6 Workspace-standard: udvikling sker i apps-workspacet, med docs inkluderet
Michaels observation: teamet arbejder i rod-workspacet og mister dermed
udviklingskonteksten - .apps-workspacet er det, der scoper til app-
projekterne + .AL-Go, baerer projektindstillingerne og (per denne regel)
inkluderer docs/, saa Columbo-specs, decisions og cleanup-checklister er
synlige, dér hvor udviklingen sker. Jernpladsen og Wareco er allerede
compliant - reglen kodificerer den eksisterende praksis.

- Ny regel al-development-must-use-apps-workspace (referencelayout:
  app-projekter + .AL-Go + ../docs; rod-workspacet er til repo-plumbing)
- roemer.agent.md v2: station 9 - apps-workspace-check; manglende
  docs-entry er autoriseret stille korrektion
- curabis-standard.agent.md v12: Mode B validerer docs-entry i
  .apps/*.code-workspace

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 08:19:02 +02:00
Michael Dieringer
aa41237e5b Roemer: standards-inspektoeren - alle ensartetheds-checks under een kappe
Fogeden var fem loese procedurer spredt i Mode B, hver isaer reel, ingen
af dem ejet. Ole Roemer (standardiserede danske maal og vaegt 1683,
Koebenhavns foerste politimester) ejer nu den samlede inspektionsrunde:

1. Agent-roster manglende  2. Agent-roster ekstra (RegelSanity)
3. CLAUDE.md-generation    4. Repo-mirror-rester
5. .mcp.json-stier         6. Versionsmarkoerer
7. Mirror-friskhed         8. Agent-synlighed

Maaler mod den skrevne standard, citerer hvilken, doemmer aldrig -
divergens gaar til Ferencz. Ren runde = een linje. Han aendrer aldrig
selve standarden (CURABIS-ROEMER-001..005).

Kaeden komplet: Roemer maaler -> Ferencz anklager -> Retten doemmer ->
Michael beslutter.

- custom/agents/roemer.agent.md (ny)
- curabis-standard.agent.md: roemer i alle fire lister; Mode B-checks
  markeret som Roemers runde
- ferencz.agent.md: pipeline opdateret (Inspection -> Roemers runde)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 07:24:18 +02:00
Michael Dieringer
e7932e969e Ferencz: Rettens anklager - dokumentation foer drama
Retten fik jurisdiktion (RegelSanity) og en foged (Mode B v11), men
ingen byggede sagen. Benjamin Ferencz besaetter anklagersaedet: han
hvilede Einsatzgruppen-anklagen paa gerningsmaendenes egne rapporter -
beviskaede frem for mavefornemmelse er ikke bare hans mandat, det var
hans metode.

- custom/agents/ferencz.agent.md: case builder for begge sagstyper
  (RegelSanity-divergens og effektivitet). Protokol: record -> standard
  -> beviskaede -> eksculperende evidens -> praecist spoergsmaal -> rest.
  CURABIS-FERENCZ-001..006: citation paa alle claims, moenstre ikke
  personer, ingen adjektiver, insufficient evidence er et gyldigt svar.
- curabis-standard.agent.md: ferencz i URL-tabel, 4c-fetchliste,
  Mode B-tabel og CLAUDE.md-templatens on-demand-liste
- court.agent.md: briefs samles af Ferencz; en brief uden hans
  beviskaede-disciplin returneres foer deliberation

Mandat (Michael): Dokumentation foer drama. Ansvar frem for
undskyldninger. Beviskaede frem for mavefornemmelse. Moral uden hysteri.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 07:14:53 +02:00
Michael Dieringer
6b33e10146 RegelSanity: Retten faar jurisdiktion og en foged
Michaels observation: udviklere tilfoejer agenter lokalt i enkelt-repos
(Edison opstod saadan) - og repoer maa ikke opfoere sig forskelligt.
Francis (Bacon) observerer og Immanuel (Kant) universaliserer, men ingen
haandhaevede ensartethed paa tvaers af portefoeljen. Tre byggesten:

- Ny regel repo-local-agents-must-be-universalized-or-removed: lokale
  agenter/kvalitetsregler har to fremtider - universaliseres via
  Francis/Immanuel/Michael eller fjernes. Aldrig tavs beholdelse.
  Domaeneviden hoerer i projectmemory/docs; kvalitetsstandarder i
  BCQuality eller ingen steder.
- Mode B v11: reconciliation kigger nu BEGGE veje - ekstra filer i
  .github/.agents (ikke i template-tabellen) flages med a/b-valg:
  universaliser eller fjern. Det var fogeden, der manglede: Edison
  laa uopdaget lokalt, fordi Mode B kun tjekkede manglende filer.
- court.agent.md v2: to sagstyper. Effektivitets-sager kraever Edison-
  scorecards som hidtil; RegelSanity-sager (lokal divergens) kraever
  kun filen, gabet den udfylder, og spoergsmaalet universel-eller-ud.
  Disposition: UNIVERSALIZE eller REMOVE.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 07:09:44 +02:00
Michael Dieringer
3ef2e95af6 Hardening: stable-branch som udrulningskanal - merge til main er ikke laengere deploy
Alle forbrugere laeser nu fra stable i stedet for main:
- curabis-standard.agent.md v10: BASE/AGENTS_BASE + self-heal-URL -> stable
- sync-bcquality-knowledge.ps1: $branch = stable
- machine/CLAUDE.md: auto-update gater paa stable-SHA og fetcher setup fra stable
- templates/bcquality.agent.md + al-triage.agent.md: knowledge-URLer -> stable
  (+ fix af doed reference: branch-merge-to-main-workflow.md var omdoebt til
  feature-branch-must-merge-to-track-branch.md - templaten shippede et 404)
- francis.agent.md + Invoke-CurabisEvidence.ps1: raw-base -> stable
- CONSUMPTION.md: Release channel-sektion med promote-procedure og rationale

Deploy sker herefter kun ved bevidst fast-forward af stable (kun Michael).
Kanal oprettet: stable @ 57b8292, tag v1.0.0.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 00:02:44 +02:00
Michael Dieringer
e7a2fac879 Dedup: carlin/francis/immanuel har nu een kanonisk placering - custom/agents/
Francis og Immanuel laa i baade custom/agents/ (v1, forladt siden
2026-06-22) og custom/setup/templates/ (v2/v3, aktivt vedligeholdt og
det setup faktisk hentede fra). Intern drift i selve regelrepoet -
samme sygdom som Mode B-reglerne bekaemper i projekterne.

- Nyeste indhold (templates-udgaverne) kopieret til custom/agents/,
  templates-dubletterne slettet
- carlin.agent.md flyttet med til custom/agents/ - han er en persona
  som de oevrige der (smiley, weber, columbo), ikke en projekt-template
- curabis-standard.agent.md v9: de tre henter nu fra AGENTS_BASE,
  inkl. Francis-fallback-linjen i CLAUDE.md-templaten
- custom/setup/templates/ indeholder herefter kun projekt-artefakter
  (al-*, algo-settings, bc-mcp, bcquality, cspell, HEARTBEAT)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:52:47 +02:00
Michael Dieringer
66e35855b7 Edison op i BCQuality + CONSUMPTION.md: dokumenter aktiv vs. sovende konsumtion
- custom/agents/edison.agent.md: Edison (BCQuality eval runner) fandtes
  kun lokalt i Jernpladsen, men court.agent.md kraever hans scorecards.
  Nu upstream, saa alle projekter faar ham.
- curabis-standard.agent.md v8: edison tilfoejet til Source URL-tabellen,
  Mode A 4c-fetchlisten, Mode B-tabellen og CLAUDE.md-templatens
  on-demand-liste.
- CONSUMPTION.md: den faktiske konsumtionsmodel. Sessionmodellen
  (maskin-mirror + .github/.agents) er den eneste aktive; Entry-flowet
  (entry.md, READ/DO/WRITE, layer skills, Build-KnowledgeIndex.ps1,
  bcquality.config.yaml) er sovende upstream-arv reserveret til fremtidig
  CI-integration - inkl. de tre deltas der skal lukkes foer aktivering
  (tom custom/skills/, to index-generatorer, ingen lag-praecedens i
  sessionmodellen).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:31:33 +02:00
Michael Dieringer
41c6187c4f Setup v7: BCQuality knowledge-mirror er maskin-lokal, ikke repo-lokal
- curabis-standard.agent.md v6 -> v7: mirror deployes til
  ~/.claude/bcquality-knowledge/ (delt af alle repoer paa maskinen)
  i stedet for .github/.agents/bcquality-knowledge/ i hvert repo
- CLAUDE.md-templaten peger paa maskin-mirroren via %USERPROFILE%
  (aldrig literal udviklersti) og faar self-heal-instruktion
- Mode B: v6-aera-oprydning (fjern committet repo-mirror, gitignore
  stien, foreslaa CLAUDE.md-migrering) + genkend hardcodede
  udviklerstier og raa-URL-lister som foraeldede CLAUDE.md-former
- sync-bcquality-knowledge.ps1: fast destination $env:USERPROFILE
  \.claude\bcquality-knowledge i stedet for $PSScriptRoot-relativ
  (det var dobbelttydigheden der skabte repo-mirrors)
- Ny regel: bcquality-knowledge-must-mirror-to-machine-not-repo
- Setup-artefakter skal fetches som raa bytes (Invoke-WebRequest
  -OutFile) - aldrig via strengindhold, som dobbelt-encoder UTF-8

Begrundelse: udviklere skifter repo mange gange dagligt; N repo-
mirrors er permanent ude af sync, een maskin-mirror kraever een
sync pr. upstream-aendring. CI/cloud-agenter henter selv reglerne
via .github/bcquality.config.yaml.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:08:50 +02:00
Michael Dieringer
080df3b3be Deploy bcquality-knowledge sync-mekanisme via CURABIS Standard setup 2026-07-01 14:39:32 +02:00
Michael Dieringer
905bc32a94 Fix: Mode B og Mode A template-liste var ufuldstaendig 2026-07-01 13:35:32 +02:00
Michael Dieringer
50e60a6513 Fix setup script to follow mcp-config-must-not-hardcode-developer-paths
Mode A generated .mcp.json with a literal C:\Users\<USERNAME>\... bridge
path and an absolute find-altool.ps1 path; Mode B validated against that
same hardcoded form, so it would have "corrected" a compliant env-var
path back to a broken one. Both now use ${USERPROFILE} and
${CLAUDE_PROJECT_DIR:-.} per the rule merged in #37.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-01 09:54:41 +02:00
Michael Dieringer
c6642306d6 [Agent] Merge main + add Carlin - always-active bullshit detector
Resolves merge conflicts between branch and main.
Carlin added to: source URLs, CLAUDE.md template (after Smiley), agent deploy list.
All agents from main preserved. Carlin is agent 14.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 23:01:48 +02:00
Michael Dieringer
6765df474d [Agent] Add George Carlin - always-active bullshit detector
Deploys carlin.agent.md to all CURABIS projects via curabis-standard.
Carlin surfaces with one dry observation when complexity, vague requirements,
or feature creep earns it. Named after the CURABIS Kick-off 2026 Lego duck
exercise.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-28 22:57:08 +02:00
Michael Dieringer
72a26ad638 Tilføj Smiley session watchdog og bc-mcp preload-regel
- custom/agents/smiley.agent.md: ny altid-aktiv session watchdog (George Smiley).
  Observerer hele sessionen, aktiverer Columbo/al-triage/Francis/bc-mcp/weber
  diskret uden at annoncere sig selv. Stop-gate forhindrer kode uden afklaret krav.

- custom/knowledge/mcp/bc-mcp-tools-must-be-preloaded.md: ny MCP-regel godkendt
  af Immanuel (alle 4 Categorical Imperative tests bestået). BC MCP tool-schemas
  skal pre-loades via ToolSearch ved agent-invokering for at undgå mid-task latency.

- custom/setup/curabis-standard.agent.md: Smiley tilføjet til artifacts-liste,
  Smiley-sektion tilføjet til CLAUDE.md-template, Mode B visibility-check opdateret
  med Smiley special-case (always-active, ikke on-demand).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-26 08:44:52 +02:00
Michael Dieringer
f63c7b9a5c Tilfoej Weber — Developer AI Coach med Verstehen-protokol
Max Weber (1864-1920): sociolog, Verstehen, ideal typer.
Coacher udviklere paa AI-prompt-kvalitet ved at forstaa
HVORFOR en prompt var vag foer han korrigerer den.

- weber.agent.md: 4-trins Verstehen-protokol, 3 prompt-klasser,
  5 rodaarsager, Florence Ward 8-integration
- HEARTBEAT.md: Ward 8 'Developer AI Interaction Quality'
- curabis-standard.agent.md: Mode B deployer weber.agent.md

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 19:27:25 +02:00
Michael Dieringer
49a454ee82 Tilfoej algo-settings.agent.md som BCQuality-template med Taylor-selvpraesentation
Mode B deployer nu algo-settings automatisk til alle nye projekter.
Frederick Winslow Taylor — videnskabelig arbejdsledelse, 'one best way'.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 19:18:07 +02:00
Michael Dieringer
e1e7c1a2a1 Mode B: valider og ret businesscentral-sti i .mcp.json
Den hyppigste setup-fejl i pre-CURABIS-Standard projekter:
.mcp.json peger paa en projektlokal bc-mcp-bridge.js der ikke
eksisterer i stedet for ~/.claude/bc-mcp-bridge.js.

Mode B tjekker nu businesscentral-stien og retter den stille
hvis den er forkert. Rapporterer aendringen til udvikleren.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 18:46:27 +02:00
Michael Dieringer
526b2a126d Knowledge cache + Florence timestamp-gate
florence.agent.md:
- Tilfoej Step 0: timestamp-gate
  Laes ~/.claude/.florence-timestamp — spring runden over
  hvis under 30 minutter gammel. Skriv timestamp efter runde.
  Forhindrer Florence i at kore ved hver session-aabning.

curabis-standard.agent.md:
- CLAUDE.md-template: erstat 24 URL-fetches med local cache-laesning
  fra ~/.claude/bcquality-knowledge/ (architecture/ testing/ mcp/)
  Session-start reduceres fra ~25 netvaerkskald til 0.

Global ~/.claude/CLAUDE.md opdateret separat:
- Auto-update downloader nu knowledge-filer til cache ved SHA-aendring
- Session-start laeder fra cache, ikke fra URLs
- Florence korer kun hvis >= 30 min siden sidst

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 18:32:20 +02:00
Michael Dieringer
f482a8f09e Fiks 4 gaps i Mode B og auto-update
Fix 1: Mode B laes agent frontmatter description og foreslaer
       praecis CLAUDE.md-tekst for manglende agenter
Fix 3: Mode B substituerer {PROJECT_NAME} og {SETUP_DATE} i
       HEARTBEAT.md fra CLAUDE.md-overskrift eller git remote

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 18:07:05 +02:00
Michael Dieringer
0be4b54de4 Add HEARTBEAT.md template og opdater curabis-standard setup
- custom/setup/templates/HEARTBEAT.md: Florence's vagtliste-template
  med 6 standard ward-checks (BCQuality PRs, CI/CD, BC-opgaver,
  forsinkede opgaver, gamle branches, agent-synlighed i CLAUDE.md)

- curabis-standard.agent.md:
  * Mode A: HEARTBEAT.md oprettelse som step 4f
  * Mode A: court/lincoln/aurelius/munger tilfoejt til agent-liste
  * Mode B: court-agenter og HEARTBEAT.md tilfoejt til opdateringstabel
  * Mode B: agent-synligheds-check efter opdatering
  * CLAUDE.md-template: court.agent.md og Francis-trigger tilfoejt

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 17:58:53 +02:00
Michael Dieringer
f13c9962de Standard v3 - add docs/ structure, Columbo writes to docs/specs/ 2026-06-24 07:21:25 +02:00
Michael Dieringer
80e225e58d Add Columbo, Florence, M365 to standard setup (v2) 2026-06-24 07:10:46 +02:00
Michael Dieringer
aad03770fa Tilfoej al-triage, al-complexity, bc-mcp til templates og curabis-standard 2026-06-23 20:33:48 +02:00
Michael Dieringer
0e785a7284 Tilfoej Francis til standard pipeline + PR-based approval i Mode A+B 2026-06-23 20:26:45 +02:00
Michael Dieringer
985faf9e8d new global standard 2026-06-21 12:22:54 +02:00