Commit graph

417 commits

Author SHA1 Message Date
Michael Dieringer
17e8856b35 Add 4 community knowledge articles: posting-routine pattern, email module, Word report layout, defensive/offensive blast radius
Contributed from Curabis's own BCQuality custom layer, rewritten to the
community contribution contract (no fenced code in the .md, AL samples as
sibling .good.al/.bad.al files, under 100 lines per article).
2026-08-27 18:11:04 +02:00
Michael Dieringer
19ec6b8c52
Merge pull request #81 from Curabis/rule/do-not-change-primary-key-field-list
[BCQuality] Never change a published table's primary/clustered key field list
2026-08-25 20:09:50 +02:00
Michael Dieringer
b04e37c807 Foreslå regel: Never change a published table's primary/clustered key field list 2026-08-25 20:09:12 +02:00
Michael Dieringer
b6aa3f3afe
Merge pull request #80 from Curabis/rule/xrec-unreliable-within-same-transaction-as-prior-insert-or-modify
[BCQuality] xRec unreliable within same transaction as prior Insert or Modify
2026-08-19 07:40:49 +02:00
Michael Dieringer
3358d51689 Foreslaa regel: xRec unreliable within same transaction as prior Insert or Modify 2026-08-19 07:37:50 +02:00
Michael Dieringer
43fd6f9ff5
Merge pull request #79 from Curabis/docs/bc-mcp-v4-customers-and-test-iterations
bc-mcp.agent.md v4: document customers + QA test-iteration tools
2026-08-17 11:48:05 +02:00
Michael Dieringer
169a25f379 bc-mcp.agent.md v4: document customers + QA test-iteration tools
Live tool audit found the businesscentral MCP server exposes 19 tools,
4 undocumented: List_Customers_PAG50045 and the
List/Create/Modify_TestIteration_PAG6102911 trio. Michael confirmed
both are wanted:

- customers (PAG50045): read-only, restricted in practice to `no` +
  `microsoftTenantId` even though the schema also exposes `name`/
  `tenantCompanyName` (CURABIS-BCMCP-010).
- testIterations (PAG6102911): activates the QA test-iteration flow
  designed 2026-08-09 (Ready for Test trigger, Robert/Linh manual
  testing on top of automated tests, defect dedup by shared root
  cause). Dedup grouping must come from a separate fresh-context
  agent, never the implementing agent grading its own defect count
  (CURABIS-BCMCP-009).

Also resolves the open question from the 2026-08-09 design: the older
CUR Sub Task informal bug-tracking fields (Error type / Error related
to task) are a dead pattern at CURABIS and are not being unified with
the new table. Corrected a stale tool-count claim (14 -> 19) along the
way.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-17 08:16:53 +02:00
Michael Dieringer
cda922b690
Merge pull request #78 from Curabis/rule/al-writetranslation-must-be-verified-against-real-translations-file
[BCQuality] al_writetranslation/al_searchtranslations must be verified against the real Translations file
2026-08-16 13:09:04 +02:00
Michael Dieringer
5de1999676 Foreslaa regel: al_writetranslation/al_searchtranslations maa ikke antages at ramme rette fil uden verifikation 2026-08-16 13:06:40 +02:00
Michael Dieringer
fa50fc98ae
Merge pull request #77 from Curabis/rule/mechanical-inspection-checks-must-be-scripted-not-agent-narrated
[BCQuality] Mechanical inspection checks must be scripted, not agent-narrated
2026-08-14 23:31:50 +02:00
Michael Dieringer
1c3b0aa081 Foreslå regel: Mechanical inspection checks must be scripted, not agent-narrated 2026-08-14 23:30:42 +02:00
Michael Dieringer
b02eb2d6aa
Merge pull request #72 from Curabis/rule/ambiguous-record-failure-edison-sharpen
[BCQuality] Sharpen ambiguous-record-failure rule per Edison eval (trace before flagging)
2026-08-13 22:33:29 +02:00
Michael Dieringer
7bb2474630
Merge pull request #74 from Curabis/rule/given-completeness-edison-sharpen-smoketest
[BCQuality] Sharpen GIVEN-completeness rule per Edison eval: smoke-test carve-out
2026-08-13 22:33:06 +02:00
Michael Dieringer
882b963b4c
Merge pull request #75 from Curabis/rule/edison-audit-4-sharpenings-bundled
[BCQuality] 4 Edison-driven sharpenings (bundled): API least-privilege, naming, test-exceptions, table-type edge case
2026-08-13 22:32:45 +02:00
Michael Dieringer
d2b7d834d0 Skaerp (Edison): erkend naar Setup-vs-Subsidiary ikke kan afgoeres fra kilden alene 2026-08-13 21:52:04 +02:00
Michael Dieringer
db3380711b Skaerp (Edison): ny defekt-saa-fix-regressionstest-undtagelse 2026-08-13 21:52:02 +02:00
Michael Dieringer
582c6f5f1a Skaerp (Edison): laes soeskende-deklarationer foer type+bogstav flagges 2026-08-13 21:52:00 +02:00
Michael Dieringer
87bd8f518c Skaerp (Edison): udvid scope forbi MCP, ny anti-pattern for aldrig-begraenset 2026-08-13 21:51:58 +02:00
Michael Dieringer
a4c68a4751 Skaerp (Edison-evidens): carve-out for dokumenterede smoke-tests 2026-08-13 14:10:10 +02:00
Michael Dieringer
5475a25834 Skaerp (Edison-evidens): trace-krav foer flagging + udvid til Evaluate/TryFunction 2026-08-13 12:46:08 +02:00
Michael Dieringer
2de05cc65a
Merge pull request #71 from Curabis/rule/defensive-vs-offensive-code-must-match-blast-radius
[BCQuality] Defensive vs. offensive code must match blast radius, not habit
2026-08-13 08:56:24 +02:00
Michael Dieringer
a91140077f
Merge pull request #70 from Curabis/rule/ambiguous-record-failure-vat-critical-sharpen
[BCQuality] Sharpen: VAT/financially-critical fields must never get a silent blank fallback
2026-08-13 08:55:50 +02:00
Michael Dieringer
898abee7d6 Forslag: defensiv vs. offensiv kode skal matche blast radius, ikke vane 2026-08-13 08:54:33 +02:00
Michael Dieringer
922503305f Skaerp: VAT/finansielt kritiske felter maa aldrig faa et stille blankt fallback 2026-08-13 08:31:16 +02:00
Michael Dieringer
37eac65805
Merge pull request #67 from Curabis/rule/upgrade-codeunit-subtype-full-six-triggers
[BCQuality] Fix: document all 6 upgrade triggers, not just 2
2026-08-13 08:14:06 +02:00
Michael Dieringer
f120ca7960
Merge pull request #68 from Curabis/rule/source-organized-by-feature-not-object-type
[BCQuality] AL source organized by feature, not object type
2026-08-13 08:13:42 +02:00
Michael Dieringer
eda9bc1e67
Merge pull request #69 from Curabis/rule/upgrade-tag-logic-must-not-nest-deeply
[BCQuality] Upgrade tag logic must not nest more than 2 levels deep
2026-08-13 08:13:19 +02:00
Michael Dieringer
06f417b37e
Merge pull request #66 from Curabis/rule/testcase-must-fail-before-implementation-sharpen-fgwt
[BCQuality] Sharpen TDD rule: 1-to-n FGWT scenarios + reject test-on-request alternative
2026-08-13 08:13:05 +02:00
Michael Dieringer
7e703b93d5 Forslag: upgrade-tag-logic-must-not-nest-deeply 2026-08-13 08:11:54 +02:00
Michael Dieringer
603176f593 Forslag: source-organized-by-feature-not-object-type 2026-08-13 08:11:53 +02:00
Michael Dieringer
b335164b49 Ret: dokumentér alle 6 upgrade-triggers, ikke kun 2 2026-08-13 08:10:20 +02:00
Michael Dieringer
90eeb1991c Skaerp: 1-til-n FGWT scenarier + explicit afvisning af 'test kun paa anmodning' 2026-08-13 08:08:30 +02:00
Michael Dieringer
0c148a16a6
Merge pull request #65 from Curabis/rule/setup-page-onopenpage-must-instantiate-singleton
[BCQuality] Sharpen: Setup-page OnOpenPage must instantiate the singleton record
2026-08-13 07:39:23 +02:00
Michael Dieringer
16f3cd0aee Sharpen: Setup-page OnOpenPage must instantiate the singleton record 2026-08-13 07:38:53 +02:00
Michael Dieringer
14ac4485c8
Merge pull request #64 from Curabis/rule/al-comments-must-not-restate-what-code-already-shows
Forslag: AL-kommentarer maa ikke bare genfortaelle koden
2026-08-13 07:19:09 +02:00
Michael Dieringer
3df1d630d4 Forslag: AL-kommentarer maa ikke bare genfortaelle koden 2026-08-13 07:18:15 +02:00
Michael Dieringer
46fcd29f3a
Merge pull request #63 from Curabis/rule/given-blocks-must-cover-full-precondition-chain
[BCQuality] GIVEN blocks must cover the full precondition chain for posting/report tests
2026-08-13 07:17:29 +02:00
Michael Dieringer
a74b8e35f3 Forslag: GIVEN-blokke skal daekke hele precondition-kaeden for posting/rapporter 2026-08-13 07:14:01 +02:00
Michael Dieringer
13c7d4e198
Merge pull request #61 from Curabis/rule/file-datatype-direct-io-is-onprem-only
[BCQuality] File data type's direct I/O methods are OnPrem-only
2026-08-13 07:02:24 +02:00
Michael Dieringer
31d1c6d10b
Merge pull request #62 from Curabis/rule/prefer-email-module-over-codeunit-mail-397
[BCQuality] New email-sending code should use the Email module, not Codeunit Mail (397)
2026-08-13 07:02:02 +02:00
Michael Dieringer
860f2db01b Forslag: prefer-email-module-over-codeunit-mail-397 2026-08-13 06:56:40 +02:00
Michael Dieringer
10af99bb22 Forslag: file-datatype-direct-io-is-onprem-only 2026-08-13 06:56:39 +02:00
Michael Dieringer
6874adb4e9
Merge pull request #60 from Curabis/rule/dimension-support-must-follow-dimensionmanagement-wiring-pattern
[BCQuality] Dimension support must follow the DimensionManagement wiring pattern
2026-08-13 06:32:48 +02:00
Michael Dieringer
0d578e9f3d Forslag: dimension-support skal foelge DimensionManagement-wiring-moensteret 2026-08-13 06:31:46 +02:00
Michael Dieringer
2f575ced25
Merge pull request #59 from Curabis/rule/posting-routines-must-follow-check-post-line-batch-pattern
[BCQuality] Posting routines must follow the Check Line/Post Line/Post Batch pattern
2026-08-13 06:27:55 +02:00
Michael Dieringer
7e70c4aa5d Forslag: posting-rutiner skal foelge Check Line/Post Line/Post Batch-moensteret 2026-08-13 06:25:20 +02:00
Michael Dieringer
4bb14fb821
Merge pull request #48 from Curabis/rule/table-design-must-match-bc-table-type-conventions
[BCQuality] BC table-type conventions (naming, primary key, pages)
2026-08-13 06:09:42 +02:00
Michael Dieringer
10ff2449f6
Merge pull request #49 from Curabis/rule/page-design-must-match-bc-page-type-conventions
[BCQuality] BC page-type conventions (naming, structure, links)
2026-08-13 06:09:26 +02:00
Michael Dieringer
fba0ff2a26
Merge pull request #50 from Curabis/rule/intrinsic-al-functions-must-use-modern-casing
[BCQuality] Intrinsic AL function calls use modern casing, not ALL-CAPS
2026-08-13 06:09:02 +02:00
Michael Dieringer
d7001e0e23
Merge pull request #51 from Curabis/rule/binary-choice-must-be-boolean
[BCQuality] Binary yes/no choices must be Boolean, not Option/Integer
2026-08-13 06:08:37 +02:00