mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-10-05 22:56:55 +01:00
Retain shared knowledge enrichment and review guidance; defer standalone implementation and source-ingestion tracking. Add runner-owned baseline evidence, contract regressions, and explicit consumer/pilot boundaries. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
175 lines
8.4 KiB
JSON
175 lines
8.4 KiB
JSON
{
|
|
"version": 1,
|
|
"skill": "microsoft/skills/development/al-development-plan.md",
|
|
"minimumKnowledgeRecall": 1.0,
|
|
"minimumKnowledgePrecision": 0.67,
|
|
"cases": [
|
|
{
|
|
"id": "synthetic-normal-initial-plan",
|
|
"title": "Anonymized normal initial-plan consumer boundary",
|
|
"evidenceType": "integration-shaped-synthetic",
|
|
"boundary": "A synthetic consumer produces metadata plus a markdown plan body, serializes the full document, and passes that document as the generic existing development-plan. This is not an external real pilot and contains no consumer workflow-state schema.",
|
|
"expectedKind": "bug",
|
|
"expectedOutcome": "completed",
|
|
"expectedUnknown": [],
|
|
"requiresUnresolved": false,
|
|
"requiresMaterialUnresolved": false,
|
|
"development-plan": "{\"metadata\":{\"kind\":\"bug\",\"request\":\"Update every entry in the supplied filtered record set while preserving the caller's selection.\",\"origin\":\"anonymized synthetic initial plan\"},\"body\":\"## Root cause and design\\nThe routine reads and updates only the first record rather than iterating the supplied filtered set. Preserve the supplied filters and update each selected row.\\n\\n## Proposed fix\\nUse an update-safe FindSet/Next loop with an explicit update on each selected entry.\\n\\n## Affected files\\n- src/Batch/UpdateSelectedEntries.Codeunit.al\\n- test/Batch/UpdateSelectedEntriesTests.Codeunit.al\\n\\n## Test strategy\\nUse existing AL test library codeunits to arrange three selected rows and an excluded row. Assert all selected rows are updated and the excluded row is unchanged. This is a proposed test, not a reported result.\\n\\n## Acceptance criteria\\n- Every selected entry is updated exactly once.\\n- The supplied filters remain effective.\\n- No excluded entry changes.\\n- Empty selections cause no changes.\\n\"}",
|
|
"context": {
|
|
"bc-version": "28",
|
|
"technologies": [
|
|
"al"
|
|
],
|
|
"countries": [
|
|
"w1"
|
|
],
|
|
"application-area": [
|
|
"all"
|
|
],
|
|
"unknown": []
|
|
},
|
|
"requiredKnowledge": [
|
|
"microsoft/knowledge/performance/pair-findset-with-next-loop.md",
|
|
"microsoft/knowledge/performance/findset-true-applies-updlock-on-read.md",
|
|
"microsoft/knowledge/testing/use-library-codeunits-for-test-fixtures.md"
|
|
],
|
|
"optionalKnowledge": [
|
|
"microsoft/knowledge/performance/pass-var-record-to-preserve-partial-load-enumerator.md"
|
|
]
|
|
},
|
|
{
|
|
"id": "versioned-upgrade-plan-guidance",
|
|
"title": "Select guidance for a versioned data upgrade",
|
|
"expectedKind": "upgrade",
|
|
"expectedOutcome": "completed",
|
|
"expectedUnknown": [],
|
|
"requiresUnresolved": false,
|
|
"requiresMaterialUnresolved": false,
|
|
"development-plan": {
|
|
"kind": "upgrade",
|
|
"request": "Migrate existing customer tier text values to a new enum field in an app upgrade.",
|
|
"root-cause": "The new schema needs an explicit, rerunnable migration for existing tenant data.",
|
|
"affected-files": [
|
|
"src/Upgrade/CustomerTierUpgrade.Codeunit.al",
|
|
"test/Upgrade/CustomerTierUpgradeTests.Codeunit.al"
|
|
],
|
|
"proposed-changes": [
|
|
"Add a tagged upgrade step that copies existing values without validation triggers.",
|
|
"Add upgrade tests from multiple historical data versions."
|
|
],
|
|
"test-strategy": "Run upgrade tests from two prior data versions and verify a second invocation makes no further changes.",
|
|
"acceptance-criteria": [
|
|
"Existing values are preserved.",
|
|
"The migration is rerunnable.",
|
|
"Fresh installation does not execute upgrade migration."
|
|
]
|
|
},
|
|
"context": {
|
|
"bc-version": "28",
|
|
"technologies": [
|
|
"al"
|
|
],
|
|
"countries": [
|
|
"w1"
|
|
],
|
|
"application-area": [
|
|
"all"
|
|
],
|
|
"unknown": []
|
|
},
|
|
"requiredKnowledge": [
|
|
"microsoft/knowledge/upgrade/use-upgrade-tags-not-version-checks.md",
|
|
"microsoft/knowledge/upgrade/check-only-triggers-do-not-migrate-data.md",
|
|
"microsoft/knowledge/upgrade/install-code-does-not-run-on-version-upgrade.md"
|
|
],
|
|
"optionalKnowledge": [
|
|
"microsoft/knowledge/upgrade/datatransfer-skips-triggers-and-subscribers.md",
|
|
"microsoft/knowledge/upgrade/appversion-meaning-depends-on-execution-context.md"
|
|
]
|
|
},
|
|
{
|
|
"id": "no-additional-knowledge",
|
|
"title": "Honest empty enrichment does not prohibit ordinary work",
|
|
"expectedKind": "maintenance",
|
|
"expectedOutcome": "no-knowledge",
|
|
"expectedUnknown": [],
|
|
"requiresUnresolved": false,
|
|
"requiresMaterialUnresolved": false,
|
|
"development-plan": {
|
|
"kind": "maintenance",
|
|
"request": "Correct a spelling error in an existing internal explanatory comment in an AL procedure. Do not change the explanation, executable code, UI captions, schema, diagnostic text, configuration or behavior.",
|
|
"affected-files": ["src/Batch/EntryProcessor.Codeunit.al"],
|
|
"proposed-changes": ["Replace the misspelled word in the existing comment; add no new advice."],
|
|
"test-strategy": "Inspect the diff to confirm that only the comment spelling changes.",
|
|
"acceptance-criteria": ["Only the intended comment spelling changes; executable AL remains identical."]
|
|
},
|
|
"context": {
|
|
"bc-version": "28",
|
|
"technologies": ["al"],
|
|
"countries": ["w1"],
|
|
"application-area": ["all"],
|
|
"unknown": []
|
|
},
|
|
"requiredKnowledge": [],
|
|
"optionalKnowledge": []
|
|
},
|
|
{
|
|
"id": "unknown-material-version",
|
|
"title": "Materially unresolved version-sensitive guidance stays partial",
|
|
"expectedKind": "feature",
|
|
"expectedOutcome": "partial",
|
|
"expectedUnknown": ["bc-version"],
|
|
"requiresUnresolved": true,
|
|
"requiresMaterialUnresolved": true,
|
|
"development-plan": {
|
|
"kind": "feature",
|
|
"request": "Add an expensive Sum FlowField as the source of a usually-hidden page control. The proposed design relies on visibility suppressing calculation.",
|
|
"affected-files": ["src/Pages/EntryOverview.Page.al"],
|
|
"proposed-changes": ["Bind the page control directly to the FlowField and set Visible to a conditional expression."],
|
|
"test-strategy": "Verify aggregate queries are not executed while the control is hidden.",
|
|
"acceptance-criteria": ["Hidden controls do not cause expensive aggregate queries."],
|
|
"unknown": ["The deployment BC version and visible-only calculation feature state cannot be established from this fixture. Do not invent either."]
|
|
},
|
|
"context": {
|
|
"bc-version": "unknown",
|
|
"technologies": ["al"],
|
|
"countries": ["w1"],
|
|
"application-area": ["all"],
|
|
"unknown": ["bc-version"]
|
|
},
|
|
"requiredKnowledge": [
|
|
"microsoft/knowledge/performance/hidden-flowfields-still-calculate-before-bc26-opt-in.md"
|
|
],
|
|
"optionalKnowledge": []
|
|
},
|
|
{
|
|
"id": "partial-plan-decision",
|
|
"title": "Known platform context does not resolve an incomplete plan decision",
|
|
"expectedKind": "refactor",
|
|
"expectedOutcome": "partial",
|
|
"expectedUnknown": [],
|
|
"requiresUnresolved": true,
|
|
"requiresMaterialUnresolved": true,
|
|
"development-plan": {
|
|
"kind": "refactor",
|
|
"request": "Refactor a record read helper currently using FindFirst followed by Next. The caller contract does not establish whether to return one row or enumerate the entire filtered set.",
|
|
"affected-files": ["src/Queries/EntryReader.Codeunit.al"],
|
|
"proposed-changes": ["Choose the read method consistent with the intended cardinality after that decision is clarified."],
|
|
"test-strategy": "Add cardinality assertions after the caller contract is decided.",
|
|
"acceptance-criteria": ["The method and enumeration agree with the clarified caller contract."],
|
|
"unknown": ["Single-record versus multi-record caller intent remains materially unresolved."]
|
|
},
|
|
"context": {
|
|
"bc-version": "28",
|
|
"technologies": ["al"],
|
|
"countries": ["w1"],
|
|
"application-area": ["all"],
|
|
"unknown": []
|
|
},
|
|
"requiredKnowledge": [
|
|
"microsoft/knowledge/performance/pair-findset-with-next-loop.md"
|
|
],
|
|
"optionalKnowledge": []
|
|
}
|
|
]
|
|
}
|