---
id: change/bcquality/196
type: change
title: "#196 Strengthen review contracts and add AL reliability guidance"
summary: "Adds seven AL reliability rules with good and bad samples: two on outbound HttpClient failure and status handling, and five on base quantities, SetFilter placeholders, test isolation, JSON null checks and format 9. The review framework also gets deterministic layered skill precedence and a findings-report validator."
tier: official
language: en
tags:
  - feature
  - main
system: development
review:
  state: reviewed
  by: opus
  at: "2026-10-08T02:03:57.446Z"
  flags: []
generated:
  at: "2026-10-08T01:26:53.141Z"
  pipeline: 0.2.0
  prompts:
    extract-change: 1
  input_hash: 4287233f80678fd4fb02aca6455d9cf046ca9262
evidence:
  - kind: code
    url: https://github.com/microsoft/BCQuality/pull/196
    title: "microsoft/BCQuality#196: Strengthen review contracts and add AL reliability guidance"
    date: "2026-09-29"
    commit: 4287233f80678fd4fb02aca6455d9cf046ca9262
    t: null
    quote: Adds five source-backed rules, each with focused good/bad AL samples, routing keywords/checks, and deterministic evaluation coverage
links:
  learn: []
  objects: []
  features: []
  topics: []
  localizations: []
  videos: []
  posts: []
  guidelines: []
  changes: []
number: 196
repo: microsoft/BCQuality
source_id: bcquality-prs
url: https://github.com/microsoft/BCQuality/pull/196
kind: pr
base_branch: main
major: null
merged_at: "2026-09-29T11:03:40Z"
author: demiliani
author_type: User
community_contribution: false
labels: []
change_class: code
change_kind: feature
behavior_change: false
breaking: false
files:
  count: 41
  additions: 1974
  deletions: 38
  al: 28
apps: []
objects_touched: []
objects_unjoined:
  - path: microsoft/knowledge/scm/derive-base-quantities-through-the-line-unit-of-measure.bad.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/scm/derive-base-quantities-through-the-line-unit-of-measure.good.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/scm/derive-base-quantities-through-the-line-unit-of-measure.md
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/security/do-not-concatenate-external-text-into-setfilter.bad.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/security/do-not-concatenate-external-text-into-setfilter.good.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/security/do-not-concatenate-external-text-into-setfilter.md
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/testing/reset-per-test-state-before-the-isinitialized-guard.bad.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/testing/reset-per-test-state-before-the-isinitialized-guard.good.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/testing/reset-per-test-state-before-the-isinitialized-guard.md
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/check-http-status-before-consuming-response-body.bad.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/check-http-status-before-consuming-response-body.good.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/check-http-status-before-consuming-response-body.md
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/check-json-null-before-converting-values.bad.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/check-json-null-before-converting-values.good.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/check-json-null-before-converting-values.md
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/format-exchanged-values-with-standard-format-9.bad.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/format-exchanged-values-with-standard-format-9.good.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/format-exchanged-values-with-standard-format-9.md
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/handle-httpclient-platform-failure-before-response-access.bad.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/handle-httpclient-platform-failure-before-response-access.good.al
    status: added
    reason: not-in-snapshot
  - path: microsoft/knowledge/web-services/handle-httpclient-platform-failure-before-response-access.md
    status: added
    reason: not-in-snapshot
  - path: microsoft/skills/review/al-code-review.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/skills/review/al-error-handling-review.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/skills/review/al-scm-review.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/skills/review/al-security-review.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/skills/review/al-testing-review.md
    status: modified
    reason: not-in-snapshot
  - path: microsoft/skills/review/al-web-services-review.md
    status: modified
    reason: not-in-snapshot
  - path: skills/do.md
    status: modified
    reason: not-in-snapshot
obsoletions: []
backports: []
fixes_issues: []
work_items: []
systems:
  - development
  - platform
quote: Adds five source-backed rules, each with focused good/bad AL samples, routing keywords/checks, and deterministic evaluation coverage
joined_against:
  major: null
  commit: null
---

# #196 Strengthen review contracts and add AL reliability guidance

> Adds seven AL reliability rules with good and bad samples: two on outbound HttpClient failure and status handling, and five on base quantities, SetFilter placeholders, test isolation, JSON null checks and format 9. The review framework also gets deterministic layered skill precedence and a findings-report validator.

[Pull request](https://github.com/microsoft/BCQuality/pull/196) · merged into `main` on 2026-09-29 by demiliani · 41 files (+1974 -38), 28 AL · feature · tier official · reviewed (checked by Opus)

## What changed

- Two HttpClient rules: separate transport failure from HTTP responses, and check the status before using the response body
- Five more rules: base quantity derivation, SetFilter filter placeholders, per-test state reset before IsInitialized, JSON null checks, standard format 9
- Layered action-skill overrides follow custom > community > microsoft precedence with deterministic resolution and fallback (Resolve-SkillWorklist.ps1)
- Validate-FindingsReport.ps1 enforces the findings-report schema and semantic acceptance rules
- Evaluation coverage is measurable, and changed paired articles must be selected or explicitly waived

## AL objects touched

- `microsoft/knowledge/scm/derive-base-quantities-through-the-line-unit-of-measure.bad.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/scm/derive-base-quantities-through-the-line-unit-of-measure.good.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/scm/derive-base-quantities-through-the-line-unit-of-measure.md`: added, not in the BC? snapshot yet
- `microsoft/knowledge/security/do-not-concatenate-external-text-into-setfilter.bad.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/security/do-not-concatenate-external-text-into-setfilter.good.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/security/do-not-concatenate-external-text-into-setfilter.md`: added, not in the BC? snapshot yet
- `microsoft/knowledge/testing/reset-per-test-state-before-the-isinitialized-guard.bad.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/testing/reset-per-test-state-before-the-isinitialized-guard.good.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/testing/reset-per-test-state-before-the-isinitialized-guard.md`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/check-http-status-before-consuming-response-body.bad.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/check-http-status-before-consuming-response-body.good.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/check-http-status-before-consuming-response-body.md`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/check-json-null-before-converting-values.bad.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/check-json-null-before-converting-values.good.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/check-json-null-before-converting-values.md`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/format-exchanged-values-with-standard-format-9.bad.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/format-exchanged-values-with-standard-format-9.good.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/format-exchanged-values-with-standard-format-9.md`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/handle-httpclient-platform-failure-before-response-access.bad.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/handle-httpclient-platform-failure-before-response-access.good.al`: added, not in the BC? snapshot yet
- `microsoft/knowledge/web-services/handle-httpclient-platform-failure-before-response-access.md`: added, not in the BC? snapshot yet
- `microsoft/skills/review/al-code-review.md`: modified, not in the BC? snapshot
- `microsoft/skills/review/al-error-handling-review.md`: modified, not in the BC? snapshot
- `microsoft/skills/review/al-scm-review.md`: modified, not in the BC? snapshot
- `microsoft/skills/review/al-security-review.md`: modified, not in the BC? snapshot
- `microsoft/skills/review/al-testing-review.md`: modified, not in the BC? snapshot
- `microsoft/skills/review/al-web-services-review.md`: modified, not in the BC? snapshot
- `skills/do.md`: modified, not in the BC? snapshot

## Context

- Systems: development, platform
- From the description: "Adds five source-backed rules, each with focused good/bad AL samples, routing keywords/checks, and deterministic evaluation coverage"

Source: metadata of a merged pull request in microsoft/BCQuality (bcquality): title, labels, changed paths and counts, with a summary in our words. No source text and no description beyond one short quote (D10, D61).
