Skip to content

Refresh FOCUS conformance docs for FOCUS 1.4#2208

Draft
flanakin wants to merge 2 commits into
flanakin/focus14from
flanakin/focus14-conformance
Draft

Refresh FOCUS conformance docs for FOCUS 1.4#2208
flanakin wants to merge 2 commits into
flanakin/focus14from
flanakin/focus14-conformance

Conversation

@flanakin

@flanakin flanakin commented Jul 15, 2026

Copy link
Copy Markdown
Collaborator

🛠️ Description

Refreshes the FOCUS conformance documentation from spec v1.2 to v1.4 (plan item W7 / D8).

What was regenerated

  • docs-mslearn/focus/conformance-full-report.md — regenerated by Build-FocusConformance.ps1 against the FOCUS v1.4 tag: 1,298 documented requirements (up from 506 in 1.2) across 15 attributes, 4 datasets, and 123 dataset-scoped columns. The report now has a new Datasets section (dataset-level requirements from datasets/*/dataset.md) and dataset-qualified column headings/IDs (e.g., "Billed cost (Cost and usage)", CU-BC1.1). Reflects the 1.4 attribute restructuring: FocusColumnHandling, CustomColumnHandling, DeliveryHandling, DatasetCompleteness, CorrectionHandling, etc. are present; ColumnHandling, DiscountHandling, and InvoiceHandling are gone (DiscountHandling moved to the non-normative appendix). ProviderName/PublisherName columns removed; ContractCommitment (30 columns), BillingPeriod (6), and InvoiceDetail (22) datasets added.
  • docs-mslearn/focus/conformance-summary.md — light-touch update: score/intro wording and a note that the gap tables were assessed against FOCUS 1.2 and will be remapped during the 1.4 evaluation. The curated gap analysis itself is intentionally untouched.
  • metadata.md/convert.md were not touched — the script does not generate them and their 1.2 references describe the Cost Management dataset version, which is still 1.2-preview.

Script changes (src/scripts/Build-FocusConformance.ps1)

  • Default $Branch bumped to v1.4.
  • Handles the FOCUS 1.3+ layout: columns under specification/datasets/<dataset>/columns/, dataset-level requirements in dataset.md, Attribute Name/Dataset ID headers, and <!--SkipTOC--> comments. Legacy pre-1.3 layout still works (globs simply match nothing).
  • Preserves curated statuses: the script previously overwrote every Status/Notes cell with a placeholder, which would have destroyed all curation. It now parses the existing report's tables and carries statuses over when section, dataset, rule type, and criteria text match exactly. Verified idempotent (re-running produces a byte-identical file).
  • Bug fixes: $specDir resolving to an array, sentence-casing names that start with an acronym ("FOCUS FOCUS handling"), null description crash, trailing-newline growth on every run.

Decisions

No compliance claims were invented. Statuses curated for FOCUS 1.2 carry over only where the requirement text is unchanged, and only to attributes and Cost and Usage columns. Everything added or revised in FOCUS 1.3/1.4 — including all ContractCommitment, BillingPeriod, and InvoiceDetail requirements — is marked Not Evaluated (1,021 of 1,298). The hubs v1_4 schema implements these datasets as tables/functions, but Cost Management does not yet produce the data, so a formal evaluation pass is follow-up work. Resulting counts: 187 Supports, 12 Partially Supports, 2 Does Not Support, 76 Not Applicable, 1,021 Not Evaluated; the 96% score covers evaluated requirements only.

Verification

  • Regenerated twice from the committed doc: identical output (idempotent).
  • Table integrity: every requirement row has exactly 5 cells; no empty sections.
  • No Pester tests or CI reference these docs or the script (verified by grep).
  • ms.date set to 07/15/2026 on both modified docs.

📋 Checklist

🔬 How did you test this change?

  • 🤏 Lint tests
  • 🤞 PS -WhatIf / az validate
  • 👍 Manually deployed + verified
  • 💪 Unit tests
  • 🙌 Integration tests

📦 Deploy to test?

  • Hubs + ADX (managed)
  • Hubs + Fabric (manual) — URI:
  • Hubs (manual)
  • Hubs (no data)
  • Workbooks
  • Alerts

🙋‍♀️ Do any of the following that apply?

  • 🚨 This is a breaking change.
  • 🤏 The change is less than 20 lines of code.

🤖 Generated with Claude Code

flanakin and others added 2 commits July 15, 2026 14:15
- Default $Branch to v1.4
- Scan datasets/*/columns/*.md and datasets/*/dataset.md (columns moved
  under per-dataset folders in FOCUS 1.3) in addition to the legacy layout
- Recognize "Attribute Name" and "Dataset ID" headers and <!--SkipTOC-->
  comments introduced in the 1.3+ spec source
- Add a Datasets section and dataset-qualified column headings/IDs
- Preserve curated Status/Notes from the existing report by matching
  section, dataset, rule type, and criteria text; unmatched (new or
  revised) requirements default to "Not Evaluated"
- Fix sentence casing when the name starts with an acronym (FOCUS, JSON)
- Fix $specDir resolving to an array when multiple candidates exist
- Write the doc without an extra trailing newline so re-runs are idempotent

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Regenerated from the FOCUS 1.4 specification (1,298 documented
requirements, up from 506 in 1.2). Statuses curated for FOCUS 1.2 carry
over where the requirement text is unchanged; requirements added or
revised in FOCUS 1.3/1.4 (including the ContractCommitment,
BillingPeriod, and InvoiceDetail datasets) are marked "Not Evaluated"
pending formal assessment. Updated summary counts and conformance score
to cover evaluated requirements only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Needs: Review 👀 PR that is ready to be reviewed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants