Commit graph

110 commits

Author SHA1 Message Date
Michael Dieringer
f13c9962de Standard v3 - add docs/ structure, Columbo writes to docs/specs/ 2026-06-24 07:21:25 +02:00
Michael Dieringer
2ee35531df Columbo v2 - reads docs/specs/, writes summaries there 2026-06-24 07:19:34 +02:00
Michael Dieringer
79230edd24
Merge pull request #13 from Curabis/curabis-standard-agents
Standard v2 - Add Columbo, Florence, M365 to all new projects
2026-06-24 07:11:29 +02:00
Michael Dieringer
80e225e58d Add Columbo, Florence, M365 to standard setup (v2) 2026-06-24 07:10:46 +02:00
Michael Dieringer
4b50a7ccc4
Merge pull request #12 from Curabis/curabis-m365
Add Microsoft 365 MCP usage guide
2026-06-24 07:02:56 +02:00
Michael Dieringer
4e9a610f4b Add Microsoft 365 MCP usage guide 2026-06-24 07:02:31 +02:00
Michael Dieringer
a12aac2b59
Merge pull request #11 from Curabis/curabis-florence
Add Florence Nightingale - Heartbeat Agent
2026-06-24 01:17:18 +02:00
Michael Dieringer
3476d6a9ad Add Florence Nightingale - Heartbeat agent 2026-06-24 01:12:31 +02:00
Michael Dieringer
47e6bde4d9
Merge pull request #10 from Curabis/curabis-columbo
Add Columbo - Customer Requirement Clarifier
2026-06-24 01:04:04 +02:00
Michael Dieringer
8a1c589ef7 Add Columbo - Customer Requirement Clarifier agent 2026-06-24 01:02:41 +02:00
Michael Dieringer
33b48fc9bc
Merge pull request #9 from Curabis/curabis-mcp-008
CURABIS-MCP-008: AI eval scores must be posted to BC posting table
2026-06-24 00:07:35 +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
b7a5359b82
Merge pull request #8 from Curabis/rule/agent-must-resolve-developer-identity-from-bc
[BCQuality] Agent must resolve developer identity from BC
2026-06-23 22:22:25 +02:00
Michael Dieringer
cec927df81 Foreslaa regel: Agent must resolve developer identity from BC 2026-06-23 22:19:02 +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
220da9e5eb Tilfoej bc-mcp agent til templates 2026-06-23 20:32:54 +02:00
Michael Dieringer
3625596742 Tilfoej al-complexity agent til templates 2026-06-23 20:32:51 +02:00
Michael Dieringer
9bd27eab88 Tilfoej al-triage agent til templates 2026-06-23 20:32:49 +02:00
Michael Dieringer
8691ece99f Immanuel v3: PR-based approval workflow, GitHub-merge som kryptografisk verifikation 2026-06-23 20:27:47 +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
344bb41fbc Tilfoej Francis (BCQuality rule proposer) til templates 2026-06-23 20:25:16 +02:00
Michael Dieringer
47d891cee9 Opdater Immanuel: Type A/B pipeline + PR-based approval workflow 2026-06-23 20:24:55 +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
34d8f372f8 Add governance agents: Francis (BC-MCP observer) and Immanuel (rule guardian)
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.
2026-06-22 04:10:58 +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
4ef1c0ecc0
Merge pull request #6 from Curabis:AutoUpdate
AutoUpdate
2026-06-21 12:47:14 +02:00
Michael Dieringer
0b1054051f AutoUpdate 2026-06-21 12:46:46 +02:00
Michael Dieringer
e4038667f6
Merge pull request #5 from Curabis:startup-&-agents
Startup & agents
2026-06-21 12:34:01 +02:00
Michael Dieringer
985faf9e8d new global standard 2026-06-21 12:22:54 +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
c2aaf92748
Merge pull request #4 from Curabis:add-curabis-eval-scripts
Add curabis eval scripts
2026-06-20 11:35:50 +02:00
Michael Dieringer
09e4e59192 exposed 2026-06-20 11:35:01 +02:00
Michael Dieringer
6ccd603112 Add CURABIS shared eval + evidence scripts to custom/scripts
- 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>
2026-06-20 08:54:21 +02:00
Michael Dieringer
0287ddbedf
Merge pull request #3 from Curabis/code-refresh 2026-06-15 14:27:20 +02:00
Michael Dieringer
0f7021a5b6 code refresh 2026-06-15 14:26:40 +02:00
Michael Dieringer
52ac0d6436
Merge pull request #2 from Curabis:translateRules
TranslateRules
2026-06-14 15:57:45 +02:00
Michael Dieringer
f0b473e106 translate 2026-06-14 15:56:45 +02:00
Michael Dieringer
e68b833ea1
Merge pull request #1 from Curabis/newrules
newrules
2026-06-13 22:58:35 +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
822cae1b27
Own the knowledge-index generator + index-aware review skills (#25)
* Make domain-skill knowledge discovery index-aware

The 6 AL domain review skills and read.md now enumerate candidate articles
from the BCQuality knowledge index (knowledge-index.json) instead of opening
every file under the domain folder to read its frontmatter. The worklist
selection predicate is unchanged (keywords intersect diff tokens, or topic
matches a changed object type) - only the discovery source changes, so the
same articles are selected. Full article bodies are read only for worklisted
entries.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Reconcile §Source wording with the lean knowledge index

The BCQuality filter now emits a lean index whose per-article description is a
one-line hint rather than the full verbatim Description. Update the six domain
skills' §Source to say the index carries a one-line description hint (keywords,
title, and a one-line description) instead of the full description. The
worklist selection predicate is unchanged: keywords drive selection and the
agent opens worklisted articles in full for their rule bodies.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Own the knowledge-index generator in BCQuality

The knowledge index is an acceleration of the skills' Source step, and its
schema is part of that contract — so BCQuality should own the generator rather
than each consumer re-implementing it. Add tools/Build-KnowledgeIndex.ps1 (the
parser + lean-description shaping + emit, lifted verbatim from the
BCAppsBCQuality filter prototype) and document the index in agent-consumption.md.

Consumers prune their clone to policy, then call this script; the index stays
in lockstep with the Source contract and every orchestrator gets the same
faithful index for free. The worklist selection predicate is unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Own knowledge-index generation in BCQuality (runtime + CI), not the consumer

The index is now produced by BCQuality itself: Entry's preparation step
rebuilds knowledge-index.json over the live, already-pruned clone at the start
of every run, and a new CI workflow validates the generator's health
(determinism, full coverage, selection-input integrity). Consumers no longer
invoke or know about the index.

Rebuilding over the pruned clone (vs shipping a committed full-corpus index)
keeps the index exact for any consumer policy: it can never list a denied
article, so policy-excluded rules cannot leak into discovery. READ now states
the index is discovery-only -- a finding must cite an article opened in full,
and rows whose file is absent are discarded before ranking.

- skills/entry.md: new 'Preparation -- knowledge index' precondition
- skills/read.md: index ownership + discovery-only invariant
- microsoft/skills/review/*.md (6): 'BCQuality builds' (not 'the filter emits')
- agent-consumption.md 5a: runtime+CI ownership rationale
- .github/workflows/knowledge-index.yml + scripts/Test-KnowledgeIndex.ps1: generator guard
- .gitignore: never commit the runtime index

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Make runtime index build non-interactive and self-contained

entry.md now gives the exact build command (pwsh ./tools/Build-KnowledgeIndex.ps1)
so the agent's preparation step is unambiguous, and the generator's -BCQualityRoot
parameter is optional (defaults to the clone root) so it runs in non-interactive
-p mode without prompting.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Resolve knowledge-index root to absolute path (cross-platform fix)

Get-ChildItem.FullName is always absolute, so deriving the relative article
path via Substring(\.Length) requires an absolute root. A relative root
such as '.' (used by the CI guard's 'Test-KnowledgeIndex.ps1 -Root .') left the
full path almost intact on Linux, producing bogus 'home/runner/.../knowledge'
paths and failing the coverage check. Normalise both the generator's
-BCQualityRoot and the test's -Root with Resolve-Path before use.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Jesper Schulz-Wedde <jesper.schulzwedde@microsoft.com>
2026-06-04 15:02:12 +02:00
Jesper Schulz-Wedde
b19889ec46
Merge pull request #24 from microsoft/jesperschulz/tighten-agent-finding-precision
Tighten precision bar for agent findings and cap their severity
2026-06-03 16:43:37 +02:00
Jesper Schulz-Wedde
f07efa74a2 Tighten precision bar for agent findings and cap their severity
Agent findings (model-judgment findings not backed by a curated knowledge
file) were producing too many false positives. Raise their emission bar and
make them advisory:

- skills/do.md: add a canonical 'Precision bar' for agent findings (emit only
  concrete, material defects an expert would agree on; steelman first; an
  explicit never-emit list; 'when in doubt, omit') and cap agent-finding
  severity at minor (advisory, non-gating), with a promotion note for
  severe-but-uncovered concerns.
- al-code-review.md: decouple the mandatory self-review reasoning from output
  so emitting zero agent findings is a valid outcome; add the severity cap.
- Six leaf review skills: add the per-domain precision bar and severity cap
  (style leaf gets domain-appropriate wording).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-06-03 15:56:10 +02:00
Jesper Schulz-Wedde
07efef6bc7
Merge pull request #22 from microsoft/jesperschulz/require-suggested-code-for-mechanical-findings
Require suggested-code or omission reason for mechanical findings
2026-05-28 15:07:26 +02:00