mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 14:46:55 +01:00
Merge latest main into performance guidance
Preserve the reviewed performance package while incorporating the strengthened deterministic review-fixture coverage contract. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
commit
b67e048070
177 changed files with 5475 additions and 54 deletions
|
|
@ -4,6 +4,15 @@ The evaluation is convention-driven. The harness discovers every `<layer>/skills
|
|||
|
||||
`review-fixtures.json` contains only global thresholds and optional exceptional overrides. An override may select a different `article`, add context when the generic convention cannot express a scenario, or use an `articles` array when one domain needs explicit regression coverage for several paired articles. Specify either `article` or `articles`, not both. The first selected article retains the stable `<domain>-bad` and `<domain>-good` manifest IDs; additional articles use slug-qualified IDs. Overrides should remain empty in the normal case.
|
||||
|
||||
CI also measures selected paired articles against every effective article that
|
||||
has both AL companions. A changed paired article must be selected by the
|
||||
domain convention or an override. When adding it would not provide a useful
|
||||
deterministic regression, add a narrow `coverageWaivers` entry with its exact
|
||||
article path and a non-empty reason. Waivers are reviewable exceptions, not a
|
||||
substitute for domain coverage. The generated coverage report includes totals
|
||||
and per-domain ratios; the ratio is informational, while changed-file coverage
|
||||
is mandatory.
|
||||
|
||||
Model-facing preparation hashes case IDs, neutralizes `Good`/`Bad` object-name tokens, and removes full-line sample comments so neither the article slug, domain, nor expected outcome reveals the answer.
|
||||
|
||||
The SCM `articles` override deliberately selects every rule in the initial
|
||||
|
|
@ -36,6 +45,13 @@ pwsh ./tools/Test-ReviewFixtures.ps1 -Root .
|
|||
|
||||
This credential-free check proves every selected leaf maps to a same-named knowledge domain with at least one complete AL sample pair and that all configured overrides are valid.
|
||||
|
||||
To reproduce the changed-file gate and emit the same measurable report as CI:
|
||||
|
||||
```powershell
|
||||
git diff --name-only origin/main...HEAD | Set-Content .changed-paths.txt
|
||||
pwsh ./tools/Test-ReviewFixtures.ps1 -Root . -ChangedPathsFile .changed-paths.txt -CoverageReportPath .coverage.json
|
||||
```
|
||||
|
||||
## Run a fast-model evaluation
|
||||
|
||||
1. Prepare neutral inputs:
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
"selection": "first-paired-al-article",
|
||||
"minimumExpectedRecall": 1.0,
|
||||
"minimumCleanRate": 1.0,
|
||||
"coverageWaivers": [],
|
||||
"overrides": {
|
||||
"agents": {
|
||||
"article": "wire-all-three-agent-interfaces"
|
||||
|
|
@ -41,11 +42,16 @@
|
|||
"store-scheduled-task-id-to-avoid-duplicate-tasks",
|
||||
"design-covering-keys-from-read-pattern",
|
||||
"review-overlapping-keys-before-adding-an-index",
|
||||
"setcurrentkey-sets-sort-order-not-index-hint",
|
||||
"preserve-buffered-inserts-by-separating-target-reads",
|
||||
"aggregate-before-persisting-intermediate-results",
|
||||
"cache-repeated-filtered-results-with-explicit-scope",
|
||||
"avoid-repeating-unchanged-validation",
|
||||
"avoid-get-inside-loop-on-large-table",
|
||||
"isempty-before-findset-is-extra-round-trip",
|
||||
"query-results-bypass-primary-key-cache",
|
||||
"calcsums-instead-of-calcfields-in-loop",
|
||||
"use-setautocalcfields-for-per-row-flowfields",
|
||||
"temporary-tables-have-no-database-cost",
|
||||
"use-setloadfields-for-partial-records",
|
||||
"prefer-modifyall-over-per-row-modify"
|
||||
|
|
@ -85,7 +91,14 @@
|
|||
"reconcile-warehouse-adjustments-with-the-item-ledger",
|
||||
"post-transfers-through-shipment-and-receipt-codeunits",
|
||||
"use-date-aware-availability-for-promising",
|
||||
"carry-out-requisition-actions-through-the-standard-workflow"
|
||||
"carry-out-requisition-actions-through-the-standard-workflow",
|
||||
"derive-base-quantities-through-the-line-unit-of-measure"
|
||||
]
|
||||
},
|
||||
"security": {
|
||||
"articles": [
|
||||
"al-has-no-built-in-htmlencode",
|
||||
"do-not-concatenate-external-text-into-setfilter"
|
||||
]
|
||||
},
|
||||
"style": {
|
||||
|
|
@ -98,14 +111,23 @@
|
|||
"article": "telemetry-event-id-stable-unique"
|
||||
},
|
||||
"testing": {
|
||||
"article": "ui-handlers-in-tests"
|
||||
"articles": [
|
||||
"ui-handlers-in-tests",
|
||||
"reset-per-test-state-before-the-isinitialized-guard"
|
||||
]
|
||||
},
|
||||
"upgrade": {
|
||||
"article": "initvalue-does-not-update-existing-rows",
|
||||
"context": "The extended table existed in the previous app version and already contains rows."
|
||||
},
|
||||
"web-services": {
|
||||
"article": "expose-systemid-as-the-api-key"
|
||||
"articles": [
|
||||
"expose-systemid-as-the-api-key",
|
||||
"handle-httpclient-platform-failure-before-response-access",
|
||||
"check-http-status-before-consuming-response-body",
|
||||
"check-json-null-before-converting-values",
|
||||
"format-exchanged-values-with-standard-format-9"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue