Skip to content

pr#59

Closed
MichaelDieringer wants to merge 84 commits into
microsoft:mainfrom
Curabis:main
Closed

pr#59
MichaelDieringer wants to merge 84 commits into
microsoft:mainfrom
Curabis:main

Conversation

@MichaelDieringer

Copy link
Copy Markdown

No description provided.

MichaelDieringer and others added 30 commits June 13, 2026 13:46
- Invoke-CurabisEval.ps1: general compile + analyzers quality eval (hill-climbing score,
  reads each project's own al.codeAnalyzers + ruleset, logs .eval/history.jsonl).
- Invoke-CurabisEvidence.ps1: citation evidence validator that fails on hallucinated
  knowledge-file or CURABIS rule-code references (cite-or-flag enforcement).
- README documenting both.

Fetched by Setup-CurabisAppSource.ps1 into each project's scripts folder.

Co-Authored-By: Claude Opus 4.8 <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>
- 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>
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>
…uardian)

Francis observes BC-MCP session patterns and identifies where existing rules
are too superficial (Type A sharpening) or where no rule covers the pattern
(Type B gap). Type B gaps are handed to Immanuel for Categorical Imperative
validation before entering BCQuality.

Immanuel guards the knowledge base by running four tests (universalizability,
project-specificity, clarity, additive value) before any rule is approved.
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)
- 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>
MichaelDieringer and others added 27 commits June 25, 2026 18:32
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>
…timestamp

Knowledge cache + Florence timestamp-gate
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>
…timestamp

Mode B: valider og ret businesscentral-sti i .mcp.json
Hver agent faar nu et 'Who I Am'-afsnit med fuldt navn,
levedatoer og de vigtigste bedrifter fra det virkelige liv:

- Columbo: LAPD-detektiv, hver sag loesat, ingen efternavn
- Florence Nightingale: sygepleje, 42%->2% doedelighed, statistik
- Francis Bacon: empirisk metode, Novum Organum 1620
- Immanuel Kant: Kategorisk Imperativ, Critique of Pure Reason
- Abraham Lincoln: 16. prasident, Borgerkrig, afskaffelse af slaveriet
- Marcus Aurelius: Roms 16. kejser, Meditations, stoisk reduktion
- Charlie Munger: Berkshire Hathaway, mental models, inversion

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- BCQuality: Kaoru Ishikawa — kvalitetscirkler, fiskebensdiagram,
  'kvalitet er alles ansvar'
- BC-MCP: Grace Hopper — foerste compiler, COBOL, debugging-begrebet
- AL-Complexity: Eliyahu M. Goldratt — Theory of Constraints,
  The Goal, kritisk kaede
- The Court: Platons Akademi — grundlagt 387 f.Kr., 900 aars
  virke, metoden frem for svaret
- M365: Alexander Graham Bell — telefonen, AT&T, forbindelsen
  paa tvaers af afstand

AL-Triage (Larrey) og ALGo-Settings (Taylor) afventer bekraeftelse.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…de ambulance

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…praesentation

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>
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>
Tilfoej Weber — Developer AI Coach med Verstehen-protokol
…ring

- Fetch BC-kommentarer (sidste 7 dage)
- Klassificer og send coaching via bc_add_comment (privat til opgaven)
- Skriv aggregeret score til .eval/weber-history.jsonl (ingen navne)
- Print moede-klar rapport med trend og top-gaps

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Klar/Uklar/Blind and erstatter Specific/Partial/Vague.
Inspireret af CURABIS Kick-off 2026 LEGO-duck-oevelse.
Spoegsmaalet er altid: 'Vidste udvikleren hvilken and der
skulle bygges, inden han bad AI'en om at bygge den?'

Co-Authored-By: Claude Sonnet 4.6 <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>
…ad-rule

Tilføj Smiley session watchdog og bc-mcp preload-regel
…documented

[BCQuality] MCP tool documentation must include the invocation model
…at-session-start

[BCQuality] MCP server availability must be verified at session start
…lute-project-root

[BCQuality] AL build-output must not pollute project root
…code-refresh-mcp

[BCQuality] Skaerp new-file-requires-vscode-refresh med MCP cross-project
[BCQuality] CURABIS-MCP-003 MCP bridge JS-filer uden UTF-8 BOM
@github-actions

Copy link
Copy Markdown

👋 Heads up @MichaelDieringer — and cc maintainers — this PR introduces new top-level entries that aren't part of BCQuality's known repository structure:

  • 📁 .altestrunner/ (new top-level folder)

This isn't a block — just a flag. 🚩 New top-level folders and files are usually unintended (a stray export, a tool's scratch dir, or content that meant to land inside an existing layer like /community/knowledge/). BCQuality keeps a deliberately small root: .github/, community/, custom/, microsoft/, skills/, and tools/, plus a handful of root docs.

If this was intentional and the new entry genuinely belongs at the repo root, a maintainer can review and merge as normal — no action needed beyond a quick sanity check. If it wasn't, please move the content into the right existing layer (or drop it) and push an update. 🙏

A maintainer will take a look before merging.

@github-actions

Copy link
Copy Markdown

Hey @MichaelDieringer 👋

First off — thank you for jumping in and experimenting! It's awesome to see people pushing on the framework. 🎉

That said, let me gently redirect you, because I think there's a small but important misunderstanding about how the custom layer is meant to work:

The custom layer in this repo isn't a destination for PRs — it's the designated sandbox inside your own fork. Think of it as the "your timeline" branch of the multiverse 🌌: this repo is canon, your fork is where you get to remix the lore without needing anyone's approval. That's the whole point of the layer existing — so you don't have to upstream your team-specific or experimental work.

The intended workflow is:

  1. 🍴 Fork BCQuality to your own GitHub account
  2. Clone your fork locally
  3. Drop your custom agents and knowledge into the custom layer there
  4. Commit and push to your fork — no PR back to upstream needed for custom stuff

That way you get full control, your changes survive upstream updates cleanly, and you can pull in new core releases from this repo whenever you want. ✨

Now — here's the fun part: if while building out your fork you discover knowledge, patterns, or agents that you think would genuinely benefit everyone using BCQuality (not just your team), that's exactly what the /community layer is for! 🌟 PRs to /community here in the upstream repo are absolutely welcome and encouraged — it's how the collective hive mind 🧠 levels up. So please: tinker in your fork, and when you strike gold that's worth sharing, send it our way via /community.

Going to close this PR for now (since it's targeting custom rather than /community), but please don't read it as a "no" — it's a "yes, but let's route it correctly." 🙏 Happy to help if you hit any snags spinning up your fork, and genuinely looking forward to seeing what you contribute to /community down the line.

Files in this PR that triggered the auto-close
  • custom/agents/aurelius.agent.md
  • custom/agents/columbo.agent.md
  • custom/agents/court.agent.md
  • custom/agents/florence.agent.md
  • custom/agents/francis.agent.md
  • custom/agents/immanuel.agent.md
  • custom/agents/lincoln.agent.md
  • custom/agents/m365.agent.md
  • custom/agents/munger.agent.md
  • custom/agents/smiley.agent.md
  • custom/agents/weber.agent.md
  • custom/knowledge/architecture/al-build-output-must-not-pollute-project-root.md
  • custom/knowledge/architecture/al-identifiers-must-be-english.md
  • custom/knowledge/architecture/clarify-before-building.md
  • custom/knowledge/architecture/claude-md-must-reference-all-agents.md
  • custom/knowledge/architecture/commit-message-must-include-bc-task-id.md
  • custom/knowledge/architecture/exposed-objects-must-be-in-a-permission-set.md
  • custom/knowledge/architecture/namespace-must-be-verified-from-source.md
  • custom/knowledge/architecture/new-file-requires-vscode-refresh.md
  • custom/knowledge/architecture/pages-must-not-contain-business-logic.md
  • custom/knowledge/architecture/permission-sets-must-follow-least-privilege.md
  • custom/knowledge/architecture/shared-project-memory-must-be-in-repo.md
  • custom/knowledge/architecture/xliff-translation-workflow.md
  • custom/knowledge/mcp/agent-must-not-write-business-process-status.md
  • custom/knowledge/mcp/agent-must-resolve-developer-identity-from-bc.md
  • custom/knowledge/mcp/ai-eval-scores-must-be-posted-to-bc-table.md
  • custom/knowledge/mcp/api-page-flowfields-must-be-calcfields.md
  • custom/knowledge/mcp/api-page-key-fields-must-be-editable-on-insert.md
  • custom/knowledge/mcp/api-page-least-privilege-write-access.md
  • custom/knowledge/mcp/bc-mcp-find-active-task-for-branch.md
  • custom/knowledge/mcp/bc-mcp-scope-tasks-to-repository.md
  • custom/knowledge/mcp/bc-mcp-tools-must-be-preloaded.md
  • custom/knowledge/mcp/git-lifecycle-must-sync-bc-status.md
  • custom/knowledge/mcp/mcp-bridge-encoding.md
  • custom/knowledge/mcp/mcp-server-must-be-verified-at-session-start.md
  • custom/knowledge/mcp/mcp-tool-invocation-must-be-documented.md
  • custom/knowledge/mcp/stored-derived-fields-must-not-be-exposed-directly.md
  • custom/knowledge/testing/bcpt-scenarios-must-be-app-specific.md
  • custom/knowledge/testing/test-data-must-be-random-and-complete.md
  • custom/knowledge/testing/test-feature-scenario-tags.md
  • custom/knowledge/testing/test-one-when-per-test.md
  • custom/knowledge/testing/test-setup-must-use-library-codeunit.md
  • custom/knowledge/testing/tests-must-adapt-to-existing-code.md
  • custom/knowledge/testing/ui-test-codeunit-naming.md
  • custom/scripts/Invoke-CurabisEval.ps1
  • custom/scripts/Invoke-CurabisEvidence.ps1
  • custom/scripts/README.md
  • custom/setup/bc-mcp-bridge.js
  • custom/setup/curabis-standard.agent.md
  • custom/setup/machine/CLAUDE.md
  • custom/setup/machine/bc-mcp.config.template.json
  • custom/setup/templates/HEARTBEAT.md
  • custom/setup/templates/al-complexity.agent.md
  • custom/setup/templates/al-triage.agent.md
  • custom/setup/templates/algo-settings.agent.md
  • custom/setup/templates/bc-mcp.agent.md
  • custom/setup/templates/bcquality.agent.md
  • custom/setup/templates/cspell.json
  • custom/setup/templates/francis.agent.md
  • custom/setup/templates/immanuel.agent.md

May your merges be conflict-free. 🚀


🤖 This PR was closed automatically by the Guard custom layer workflow because it adds or changes content under /custom/. If you were only updating the template (custom/README.md or a .gitkeep), a maintainer can re-open it. If you think this was closed in error, just comment here.

@github-actions github-actions Bot closed this Jun 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant