mirror of
https://github.com/microsoft/BCQuality.git
synced 2026-08-08 02:16:52 +01:00
Define mandatory suggested-code classes
Follow-up to BCQuality#22. The previous contract made suggested-code expected for mechanical findings, but still left too much judgement to the model. In the synthetic benchmark, BCQ produced omission reasons for 11 mechanical-looking findings instead of suggestions. Add explicit must-suggest classes where omission is not allowed when location points to the affected line/range and the replacement can be expressed as one contiguous block: - missing OptionCaption - missing ToolTip - formatter-only casing/spacing defects - Count() existence/repeated-count fixes - unreachable/dead contiguous blocks - over-broad permission tokens with an obvious narrower token - obvious DataClassification additions - local Label moves when the target range includes both old and new declaration locations Update all AL leaf skills and al-code-review to reference these must-suggest classes. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
parent
07efef6bc7
commit
d0e4298518
8 changed files with 32 additions and 8 deletions
|
|
@ -104,7 +104,7 @@ Leaf-level agent findings (those with `references: []` inside a sub-skill's repo
|
|||
|
||||
### Suggested-code guidance
|
||||
|
||||
For both knowledge-backed findings rolled up from sub-skills and agent findings emitted in the self-review pass, populate `findings[].suggested-code` whenever a concrete code replacement is unambiguous from the diff context. This is a MUST for small, local, mechanical fixes. The payload MUST be a literal replacement for the source lines covered by `location` (typically a single line, or the line range in `location.range`) — no diff markers, fences, or commentary. Examples of good candidates: deleting dead code after `exit`, replacing `Count() > 0` with `not IsEmpty()`, moving an inline `Label` declaration to a codeunit-level `var` block, adding a missing property, replacing string-concatenated `Error`, changing an over-broad permission token, fixing whitespace or keyword casing. Skip `suggested-code` only when the fix requires choosing between multiple defensible alternatives, when the fix spans non-contiguous code, or when the surrounding context the agent cannot see could change the answer. If a mechanical-looking finding omits `suggested-code`, set `suggested-code-omission-reason`.
|
||||
For both knowledge-backed findings rolled up from sub-skills and agent findings emitted in the self-review pass, populate `findings[].suggested-code` whenever a concrete code replacement is unambiguous from the diff context. This is a MUST for small, local, mechanical fixes. The payload MUST be a literal replacement for the source lines covered by `location` (typically a single line, or the line range in `location.range`) — no diff markers, fences, or commentary. Examples of good candidates: deleting dead code after `exit`, replacing `Count() > 0` with `not IsEmpty()`, moving an inline `Label` declaration to a codeunit-level `var` block, adding a missing property, replacing string-concatenated `Error`, changing an over-broad permission token, fixing whitespace or keyword casing. The must-suggest classes from `skills/do.md` are mandatory here too: missing `OptionCaption`, missing `ToolTip`, formatter-only defects, simple `Count()`/`IsEmpty` replacements, unreachable contiguous blocks, obvious permission-token narrowing, obvious `DataClassification` additions, and local `Label` moves when the target range includes both the old and new declaration locations. Outside those must-suggest classes, skip `suggested-code` only when the fix requires choosing between multiple defensible alternatives, when the fix spans non-contiguous code, or when the surrounding context the agent cannot see could change the answer. If a mechanical-looking finding omits `suggested-code`, set `suggested-code-omission-reason`.
|
||||
|
||||
Sub-skills MAY also emit `suggested-code` when their knowledge file unambiguously implies the replacement (the `.good.al` and `.bad.al` companion examples are useful here). The super-skill copies the field through unchanged.
|
||||
|
||||
|
|
@ -314,3 +314,4 @@ The empty-corpus case — BCQuality's state until knowledge files land — rolls
|
|||
}
|
||||
```
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue