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>
- 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>
- 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>
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>
- 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>
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)
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>
- 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>
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>