| v1.9.0 |
Provisioning-aware 70% headroom presentation — amber/warning on the 70% KPI tile, waterfall planning-line row, and headroom table fires only when thin-provisioned volumes are present. All-fixed clusters render 70% as advisory/neutral. Get-S2DExpansionHeadroom gains HasThinVolumes boolean. "Size to enter (New-Volume / WAC)" column — each headroom row shows the exact value to type ({TiB-floor2}TB); PowerShell/WAC read suffixes as binary. JSON snapshot gains SizeToEnterTiB per threshold. WAF correction: N+1/N+2 re-framed as compute advisory — v1.8.0 incorrectly treated this as a storage check; corrected to informational context only (Status='Info', no storage verdict, Check 12 always Status='Pass' at Severity='Info'). Reports re-labelled as compute advisory. |
| v1.8.0 |
Maintenance reserve (N+1) assessment — reports whether the scanned cluster has enough free capacity (beyond the rebuild reserve) to drain a node for updates, per Microsoft Well-Architected guidance. New MaintenanceReserveN1 health check and report indicator (Meets / Does not meet, with required vs available headroom in TB and TiB); configurable target via -MaintenanceReserveTarget None\|N+1\|N+2 (default N+1). Assessment only — does not change any measured capacity number. Mirrors Surveyor's optional N+1/N+2 deduction. |
| v1.7.1 |
Expansion Headroom report section (HTML, Word, PDF, JSON) — at 70% / 80% / 90% / 100% pool-fill targets, shows remaining pool footprint and new usable data (footprint ÷ resiliency copies) in TB and TiB, with a Chart.js chart; 70% row styled as the recommended planning line. Math identical to Surveyor's so the two tools reconcile. Fixed per-volume capacity efficiency to derive from the measured FootprintOnPool ÷ Size ratio — a two-copy mirror now correctly reports 50% (was mislabeled 25% on two-node clusters). |
| v1.7.0 |
Wave 3 — Validation & report correctness. Cross-tool reconciliation keystone: golden-cluster Pester suite (24 cases, 4 clusters) asserts Cartographer engine output reconciles with Surveyor within ±2% (AB#4633). Concurrent collection guard prevents overlapping runs from corrupting shared state (AB#279). Empty-data safeguards added to Get-S2DCapacityWaterfall, Get-S2DHealthStatus, and Get-S2DStoragePoolInfo (AB#279). PDF waterfall bar now uses exact byte-derived TB values (AB#263 / #53). PDF pool allocation reserve boundary and pool health bar x-axis fixed (AB#264 / #54). Word executive summary table given explicit column widths and cell padding (AB#265 / #55). Word overall document layout — margins, fixed-layout tables, hand-tuned column widths (AB#266 / #56). |
| v1.6.0 |
Wave 2 — Legibility. Every capacity figure now carries both TB and TiB labels plus a space badge (FOOTPRINT, DATA (usable), INFORMATIONAL) in the waterfall and HTML report (AB#4645). 70% planning line added — 70% of available-for-volumes vs. consumed volume footprint, matching Surveyor's definition exactly; surfaced as a KPI tile and dashed chart line (AB#4644). |
| v1.5.0 |
Wave 1 — Capacity accuracy. Resiliency factor always derived from each volume's actual NumberOfDataCopies; fallback changed from 3.0 to 2.0 (two-way mirror) with explicit labeling when assumed (AB#4642). Reserve calculation confirmed canonical — one capacity drive per server, up to 4 drives, raw-byte basis (AB#4643). |
| v1.4.2 |
Fix RebuildCapacity false Critical when NodeName grouping is unreliable after pool-member disk deduplication. |
| v1.4.1 |
Fix pool-member disk duplication on multi-node clusters — Get-PhysicalDisk on any S2D node returns all pool members globally; deduplicate by UniqueId to prevent 4× inflation of Stage 1 raw capacity. Adds top-level NodeCount to JSON snapshot. |
| v1.4.0 |
7-stage waterfall (Stage 8 removed), stage health isolation (all stages always OK, reserve health on ReserveStatus only), reserve formula corrected, infra volume detection extended (UserStorage_N, HCI_UserStorage_N, SBEAgent), HTML delta column, Word report waterfall table, Invoke-S2DCapacityWhatIf delta loop fix. Closes #46–#52. |
| v1.3.1 |
Sample output reports in docs. |
| v1.3.0 |
What-if capacity modeling (Invoke-S2DCapacityWhatIf), thin provisioning risk detection (Check 6 tiered thresholds + new Check 11 ThinReserveRisk), ThinGrowthHeadroom / MaxPotentialFootprint volume properties, Thin Provision Risk KPI in HTML report, Invoke-S2DWaterfallCalculation pure function. Closes #27, #44. |
| v1.2.1 |
Capacity model correctness — pool-member-only Stage 1, purely theoretical Stages 7/8, resiliency factor from pool settings. Closes #43. |
| v1.2.0 |
JSON snapshot export (SchemaVersion 1.0), opt-in CSV per-collector tables, pool-member disk filter (IsPoolMember) across reports and health checks, Surveyor cross-link in docs, -IncludeNonPoolDisks switch. Closes #35, #40, #41, #42. |
| v1.1.1 |
Fix parameter-set splat in Invoke-S2DCartographer that broke -KeyVaultName and explicit -Authentication; added -Username parameter for Key Vault secrets without a ContentType tag. Closes #39. |
| v1.1.0 |
Default -Format changed to All; ImportExcel bundled as a RequiredModules dependency; per-run output folder structure <OutputDir>\<ClusterName>\<yyyyMMdd-HHmm>\; session log file; thicker pool allocation breakdown bar; full authentication / remoting / node fan-out docs with flowchart diagram. Closes #34, #36, #37, #38. |
| v1.0.8 |
Fix Get-S2DHealthStatus crash on live clusters — replaced Generic.List[S2DHealthCheck] with a plain array to work around PowerShell class type resolution on dot-sourced classes. |
| v1.0.7 |
Storage Pool Health bar (WAC-style), Pool Allocation Breakdown bar, Capacity Model stage descriptions, Critical Reserve Status KPI. |
| v1.0.2 – v1.0.6 |
Workgroup / non-domain-joined connectivity fixes — WinRM authentication inheritance, TrustedHosts short-name resolution, per-node CIM fan-out FQDN resolution, pre-flight credential validation. |
| v1.0.0 |
Full pipeline: all 6 collectors, HTML/Word/PDF/Excel reports, 6 SVG diagram types, Invoke-S2DCartographer orchestrator, 119 Pester tests, MkDocs documentation site. |
| v0.1.0-preview2 |
Bug fix: non-domain-joined connectivity (Connect-S2DCluster). |
| v0.1.0-preview1 |
Foundation: S2DCapacity class, ConvertTo-S2DCapacity, Connect-S2DCluster, Get-S2DPhysicalDiskInventory. |