TSG/Storage: add testable metadata markers + live-validated enhancements (4 articles) - #343
Conversation
…ments Adds tsg-metadata/v1 markers to all four TSG/Storage articles and hardens each from live HaaS validation: AddPhysicalDisks (L3 reversible add and remove cycle), CanPoolFalse (title-case CannotPoolReason strings, UniqueId-safe manual add), StoragePoolCapacityThreshold (fixed vs thin thesis, forced power-off gate, verified on-box fault strings), and the Support Diagnostics reference (Include-token matrix). All four reach a perfect 13-persona panel at lint A. Markers are hidden HTML comments and do not change rendered content. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Adds testable metadata and validated storage guidance improvements across four Azure Local articles.
Changes:
- Adds
tsg-metadata/v1markers for pipeline discovery. - Expands safety, validation, evidence, and escalation guidance.
- Corrects disk-state terminology and diagnostic output details.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
HowTo-Storage-AddPhysicalDisksToS2DPool.md |
Strengthens safe disk-add and verification procedures. |
Troubleshoot-Storage-PhysicalDiskCanPoolFalse.md |
Expands reason-based diagnosis and evidence collection. |
Troubleshoot-Storage-StoragePoolCapacityThreshold.md |
Clarifies fixed/thin remediation and validation. |
Troubleshooting-Storage-With-Support-Diagnostics-Tool.md |
Adds a comprehensive diagnostic command reference. |
Suppressed comments (1)
TSG/Storage/Troubleshoot-Storage-PhysicalDiskCanPoolFalse.md:482
- What: the second transcript-copy block again filters only
.txt,.log,.etl, and.zip, while this cmdlet writes its transcript as CSV. Why: the physical-extent run's native evidence is never copied, and a later same-day run can overwrite it. How: select the newly modifiedTraceOutput_*.csvand save it with a distinct name.
# Copy the native tool transcript for this run into the evidence package as well.
Get-ChildItem -Path $diagWorkingDir -Recurse -File |
Where-Object { $_.LastWriteTime -ge $extentStart -and $_.Extension -in '.txt','.log','.etl','.zip' } |
ForEach-Object { Copy-Item -Path $_.FullName -Destination $evidenceRoot -Force }
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
1. The Support Diagnostics evidence copy now resolves the tool's own working directory via Get-AzsSupportWorkingDirectory (falling back to the current directory only if unavailable) instead of assuming the shell CWD, and both copy blocks include .csv so the native Start-AzsSupportStorageDiagnostic_TraceOutput_*.csv transcript is captured rather than silently omitted. 2. The "verification stuck" branch now links the companion guide by relative path (Troubleshoot-Storage-PhysicalDiskVerificationStuck.md) and adds an explicit Microsoft Support (CSS) fallback, so an operator has an actionable next step even before that companion article is published. The stale "PR 333 ownership" table-cell reference is replaced with the same CSS escalation.
The manual Add-PhysicalDisk step (Step 4) is state-changing (it changes storage pool membership) but carried no canonical risk label, while the sibling Troubleshoot-Storage-PhysicalDiskCanPoolFalse.md labels the identical manual pool add [MEDIUM RISK] and the contributor guidance requires labeling state-changing commands. Add the label to match. (The step already gates with a count-match throw, -WhatIf preview, and an explicit operator confirmation.)
|
I went through all four articles against the product source of truth and ran the deterministic lint over every code block. What checked out:
One note on the lint if you run it yourself: the PowerShell parse errors it reports are artifacts of the linter substituting angle-bracket placeholders that sit inside quoted strings (for example $serial = ''). The code itself parses fine. What I could not do: I was not able to re-run the live read-only steps on hardware in my environment, so I did not independently reproduce the live-validation results described here. The static and source-of-truth checks all held, but the live run is unconfirmed on my end rather than something I verified. No blocking issues in the content. |
T.J. Hambley (tihamble)
left a comment
There was a problem hiding this comment.
Checked all four articles against the product source of truth and the emitted health-fault catalog, and ran the lint over every code block. No defects. The live-validation results described in the PR were not independently reproduced on my end, so that part is taken on the author's word rather than verified.
Summary
Adds machine-readable test metadata (the
tsg-metadata/v1marker) to all four content articles underTSG/Storage, alongside targeted enhancements validated against live Storage Spaces Direct clusters in an internal HaaS lab. This lets the directory be discovered and automatically tested by the metadata-driven pipeline.Each article now carries a hidden
<!-- tsg-metadata ... -->marker declaring document type, detector, reproduction substrate, live-validation fidelity, and a backing spec reference. Content was hardened for reader usability across a 13-persona review (leadership skim, first-day technician, CSS engineer, partner SI, OEM, and others), and every article reached a perfect panel with no remaining required change.Articles
CanPoolboolean vsIn a Poolreason)CannotPoolReasonvalues corrected to the exact title-case strings the product emits (In a Pool,Insufficient Capacity, and others); scope banner; beginner off-ramp before the destructive reset-Includetoken matrix run read-only; glossary; corrected all-PASS escalation target; PhysicalExtentCheck edge output documentedValidation
Every article was live-exercised read-only where safe, and for AddPhysicalDisks with a fully reversible scratch-disk add-and-remove that restored the pool byte-identical to its pre-test baseline. No production or customer system was used. The exact commands, observed output shapes, and per-run evidence live in the backing test specs.
Notes for reviewers
tsg-metadata.schema.jsonthese markers validate against is added in the companion Templates PR (Forge and standardize public TSG templates #342); that one should merge first./cc Alex Burns (@AlBurns-MSFT) Adam Rudell (@arudell) Meghay (@mejayara) for review.