Skip to content

FOCUS 1.4 phase 1: extend Build-FocusConformance for multi-version + hubs report #2122

@flanakin

Description

@flanakin

Parent: #2120

Goal

Make src/scripts/Build-FocusConformance.ps1 capable of generating conformance reports for multiple FOCUS versions and for the FinOps hubs output (not just Cost Management exports).

Background

Today the script defaults to -Branch v1.2 and produces a single conformance report against the Cost Management FOCUS export. Two gaps:

  1. Multi-version: We now need 1.2, 1.3, and 1.4 reports concurrently for the docs.
  2. Hubs vs Cost Management: The current report measures Microsoft's export against the FOCUS spec. There is no equivalent measuring the FinOps hubs enriched output (FOCUS columns + 184 x_ columns + ContractCommitment) against the spec — a gap surfaced during scoping (FOCUS 1.3 and 1.4 support across the toolkit #2120, step 3).

Scope

Multi-version support

  • Accept -Versions array parameter (e.g., @('v1.2', 'v1.3', 'working_draft')).
  • Generate one conformance report per version.
  • Output filename pattern: conformance-full-report-1.3.md, conformance-summary-1.3.md. (Or keep single files if the doc structure stays version-pivoted.)

Hubs conformance report

  • Add -Target parameter: CostManagement (default, current behavior) or Hubs.
  • For Hubs target, the script reads from the hub schema (e.g., HubSetup_v1_2.kql column projections) instead of Cost Management export schemas, then measures against the FOCUS spec.
  • Output: conformance-full-report-hubs-1.3.md etc.

Open questions to resolve in PR

  • Where should the hubs schema be sourced? Parsing KQL is fragile; we may need a lightweight intermediate (e.g., a JSON manifest of columns per version) that both KQL generation and conformance reporting share. Propose your approach in the PR.
  • Do we delete the old single-version report files, or version-suffix everything for clarity? Lean toward version-suffixing.

Branch

flanakin/focus14-phase1-conformance-tooling off flanakin/focus14. PR target: flanakin/focus14.

Done when

  • Script can produce 1.2, 1.3, 1.4 reports for both targets.
  • Generated reports for 1.2 (Cost Management target) match the existing report byte-for-byte (regression check).
  • Pester unit test covering the new multi-version path.
  • PR opened against flanakin/focus14.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions