Commit graph

45 commits

Author SHA1 Message Date
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
4665e6f127 Fixup: test-one-when-per-test under 100 linjer (R11)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 08:05:06 +02:00
Michael Dieringer
11eab57723 Edison sharpening runde 1: to regler faar skarpe kanter (Type A)
Foerste eval-runde nogensinde (korpus: Jernpladsen @ b7656b1, 36 pages,
77 testprocedurer) fandt to regler med uskarpe graenser:

- pages-must-not-contain-business-logic: undtagelse 3 tilfoejet -
  singleton-init-idiomet paa Cue/Activities-pages (if not Get then
  Init+Insert i OnOpenPage) er praesentations-bootstrap, ikke
  forretningslogik. Basisappen bruger samme moenster paa alle cue-pages.
  Evidens: reglen flagede ScrapDealerActivities; adjudikeret FP.
  Precision som skrevet: 0,67 (2 TP / 1 FP) - de to TP'er staar ved magt.

- test-one-when-per-test: flow-test-graensen defineret. Multi-WHEN er
  tilladt naar navnet deklarerer flowet, hver WHEN er en runde af EET
  scenarie, og THEN asserter den akkumulerede sluttilstand. Unit-tests
  beholder streng een-WHEN. Evidens: 5 bevidst runde-maerkede
  procedurer i SVPartialFlowTests, som reglen ikke kunne doemme.

Scorecards i PR-beskrivelsen. Rute: Edison -> Francis (Type A) ->
Immanuel -> Michael, jf. edison.agent.md Step 6.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 08:04:22 +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
dd5637b1db Custom-laget bestaar nu begge CI-checks: 72 validator-fejl -> 0
Normalisering af alle 39 custom knowledge-filer til READ-kontraktens
skema (validate_frontmatter.py + Test-KnowledgeIndex.ps1 begge groenne):

- R01/R02: 28 filer manglede frontmatter eller brugte aeldre skemaer
  (title/category/severity/rule-id m.fl.) - alle har nu praecis de 6
  kraevede noegler; keywords haandskrevet pr. fil da de driver
  worklist-selektionen i INDEX/knowledge-index
- R09: manglende Description-sektion - regel-agtige foersteoverskrifter
  (Core Rule/Rule/Regel/Core Principle) omdoebt, eller sektion indsat
  efter titlen hvor intro-tekst fandtes
- R10: fenced code blocks konverteret til 4-space indrykkede blokke
  i alle filer (indhold uaendret)
- R11: 4 filer over 100 linjer fortaettet redaktionelt uden semantisk
  tab (ai-eval-scores 143->100, git-lifecycle 121->97,
  permission-sets 113->99, test-feature-scenario-tags 105->91)
- R05: AL0197->al0197, add_repo->add-repo; keyword-lister trimmet
  til maks 10

Ingen regler er fjernet eller aendret i betydning - kun form.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:47:31 +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
ed7dabf07d Foreslå regel: Unconsumed BCQuality layers must be declared 2026-07-01 13:58:07 +02:00
Michael Dieringer
fb7c93efe7 Foreslå regel: Mode B-reconciliation skal spores pr. repository, ikke globalt 2026-07-01 12:25:16 +02:00
Michael Dieringer
80d9a9063a Foreslå regel: Mode B update må reconcile den fulde template-liste 2026-07-01 12:07:53 +02:00
Michael Dieringer
36ee61f811 Foreslaa regel: Shared MCP configuration must not hardcode developer-specific paths 2026-07-01 09:36:12 +02:00
Michael Dieringer
0d41a1aa7e Foreslå regel: CURABIS-egne app-kilder skal tjekkes før symbol-inspection 2026-06-30 21:05:33 +02:00
Michael Dieringer
6a8065e080 Foreslå regel: Shebang-integritet ved deploy af script-filer 2026-06-29 15:56:39 +02:00
Michael Dieringer
be0eb23e7a
Merge pull request #32 from Curabis/rule/feature-branch-must-merge-to-track-branch
[BCQuality] Ny regel: Feature branches must merge to track branch
2026-06-28 13:56:35 +02:00
Michael Dieringer
618078b589
Merge pull request #33 from Curabis/rule/eval-task-boundaries
[BCQuality] Sharpening: Eval ved task-grænser (baseline + final)
2026-06-28 13:54:52 +02:00
Michael Dieringer
5cc6ac31be Sharpening: Eval skal køres ved task-grænser (baseline + final) 2026-06-28 13:50:41 +02:00
Michael Dieringer
66c7ef565d Ny regel: Feature branches must merge to declared track branch 2026-06-28 13:50:21 +02:00
Michael Dieringer
7fedcece6d Sharpening: Track branch concept + Claude-driven sync (CURABIS-BCMCP-008) 2026-06-28 13:50:04 +02:00
Michael Dieringer
9b4fb4ce45 Foresla regel: MCP bridge JS-filer uden UTF-8 BOM 2026-06-28 11:46:47 +02:00
Michael Dieringer
579d28b193
Merge pull request #29 from Curabis/rule/sharpen-new-file-requires-vscode-refresh-mcp
[BCQuality] Skaerp new-file-requires-vscode-refresh med MCP cross-project
2026-06-26 15:49:59 +02:00
Michael Dieringer
03e8071a07 Skaerp regel: new-file-requires-vscode-refresh — tilfoej MCP cross-project symbol resolution 2026-06-26 15:48:39 +02:00
Michael Dieringer
bbe2117aad Foreslag regel: AL build-output must not pollute project root 2026-06-26 15:47:48 +02:00
Michael Dieringer
46f8ded318
Merge pull request #27 from Curabis/rule/mcp-server-must-be-verified-at-session-start
[BCQuality] MCP server availability must be verified at session start
2026-06-26 13:38:02 +02:00
Michael Dieringer
a8525b01ac Foresla regel: MCP server availability must be verified at session start 2026-06-26 13:35:16 +02:00
Michael Dieringer
f8bdd32212 Foresla regel: MCP tool documentation must include the invocation model 2026-06-26 13:34:11 +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
659a6326a1 Foreslaa regel: claude-md-must-reference-all-agents
Observation fra session 2026-06-25: agenter installeret via Mode B forbliver
usynlige for Claude fordi CLAUDE.md ikke opdateres automatisk.

Foreslaaet af Francis. Valideret af Immanuel (alle 4 tests bestaaet).
Afventer Michaels godkendelse via merge.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-25 17:50:42 +02:00
Michael Dieringer
fb2f8f5b00 Add CURABIS-MCP-008: AI eval scores must be posted to BC posting table 2026-06-24 00:06:42 +02:00
Michael Dieringer
cec927df81 Foreslaa regel: Agent must resolve developer identity from BC 2026-06-23 22:19:02 +02:00
Michael Dieringer
4c1a0c8b78 Add CURABIS-BCMCP-008/009/010: git lifecycle must sync BC subtask dev status 2026-06-23 19:38:53 +02:00
Michael Dieringer
288f64df16 Add BCApps citations to Tier 1+2 knowledge files; add 2 new rules
- All 7 existing Tier 1/2 knowledge files now include a BCApps Reference
  section with concrete source links and observed patterns
- New: bcpt-scenarios-must-be-app-specific — PerformanceTest apps must
  include app-domain BCPT scenarios, not only Microsoft generic samples
- New: permission-sets-must-follow-least-privilege — View/Edit/Admin
  hierarchy with IncludedPermissionSets, mirroring BCApps BusFound pattern
- api-page-key-fields-must-be-editable-on-insert clarified: SystemId as
  ODataKeyField + Editable=false is valid (auto-generated); rule applies
  to consumer-provided key fields only

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-23 17:48:37 +02:00
Michael Dieringer
e11c1fd16c Add Gotcha warning: taskNo vs taskId confusion at commit time
Users refer to tasks by taskNo in conversation (e.g. 'opgave 51').
Commit messages must use taskId (e.g. 8738) — different field.
Added explicit Gotcha block and sharpened step 3 in How to find.

Approved by: mid (Michael Dieringer)
2026-06-22 14:24:39 +02:00
Michael Dieringer
6fe72d82a4
Add rule: scope task lists to current repository
When a developer asks for open tasks, only return tasks from the project(s)
linked to the current git repository. Flag it if no project is linked.

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-21 13:15:13 +02:00
Michael Dieringer
bdda44ef8a Add BC MCP task lookup recipe and commit message task ID rule 2026-06-21 11:00:06 +02:00
Michael Dieringer
42a02b9c0f Add architecture rule: shared project memory must be in repo 2026-06-21 09:32:24 +02:00
Michael Dieringer
f058095dec Add 3 testing knowledge files from book review
- test-one-when-per-test: one WHEN per test, split if multiple actions
- ui-test-codeunit-naming: _UT suffix for TestPage-based codeunits
- test-feature-scenario-tags: [FEATURE]/[SCENARIO] comment structure

Based on patterns from Automatiserede tests med Business Central (Dieringer).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 21:38:12 +02:00
Michael Dieringer
935d756f05 Add mcp knowledge category with 5 rules
Rules derived from BC MCP API page development experience:

- api-page-flowfields-must-be-calcfields: FlowFields return empty on API
  pages unless explicitly CalcFields'd in OnAfterGetRecord
- stored-derived-fields-must-not-be-exposed-directly: Stored fields updated
  only via OnValidate triggers can be stale; recalculate live in OnAfterGetRecord
- api-page-key-fields-must-be-editable-on-insert: ODataKeyFields with
  Editable=false are rejected as unknown properties on POST
- api-page-least-privilege-write-access: Create dedicated minimal pages per
  write concern rather than widening general-purpose pages
- agent-must-not-write-business-process-status: Agents must only write
  developer-tracking fields; business status fields affect invoicing/time registration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-20 13:48:06 +02:00
Michael Dieringer
09e4e59192 exposed 2026-06-20 11:35:01 +02:00
Michael Dieringer
0f7021a5b6 code refresh 2026-06-15 14:26:40 +02:00
Michael Dieringer
f0b473e106 translate 2026-06-14 15:56:45 +02:00
Michael Dieringer
a49823a542 newrules 2026-06-13 22:53:17 +02:00
Michael Dieringer
5c13823850 testdata 2026-06-13 14:10:43 +02:00
Michael Dieringer
c4a9f8e88e update 2026-06-13 13:46:40 +02:00
Jesper Schulz-Wedde
d444f5bd72 Add initial project structure with .gitignore, LICENSE, README, and CODEOWNERS 2026-04-17 05:56:10 +02:00