Commit graph

12 commits

Author SHA1 Message Date
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
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
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
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
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
1c875787f0 Maskin-onboarding: Install-CurabisMachine.ps1 - een kommando pr. ny udvikler
Torsten er den foerste friske udvikler paa kaeden, og maskinlaget
self-healer ikke: global CLAUDE.md, bridge og personlig BC-secret
skulle haandopsaettes uden procedure. Nu:

- custom/setup/machine/Install-CurabisMachine.ps1: idempotent
  onboarding - global CLAUDE.md fra template (identitet fra git
  config), bridge, config-template (personlig secret manuel),
  sync-script + mirror, versionsmarkoer. Roerer ALDRIG eksisterende
  CLAUDE.md eller config. Alt hentes som raa bytes fra stable.
- CONSUMPTION.md: Machine onboarding-sektion med een-linjes-kommandoen
  og de to manuelle efterfoelgende trin (client secret + AL: Configure
  MCP Server pr. repo).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 15:22:56 +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
0b1054051f AutoUpdate 2026-06-21 12:46:46 +02:00
Michael Dieringer
985faf9e8d new global standard 2026-06-21 12:22:54 +02:00