Private/New-KadenStackReport.ps1

function New-KadenStackReport {
    <#
    .SYNOPSIS
        Build one in-memory stack outcome row.
    #>

    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Builds an in-memory report. It does not change files.')]
    param(
        [Parameter(Mandatory = $true)][string]$Name,
        [Parameter(Mandatory = $true)][string]$Disposition,
        [AllowNull()]$Model,
        [Parameter(Mandatory = $true)]
        [AllowEmptyString()]
        [string]$Reason
    )
    $source = $null
    if ($Disposition -eq 'tuned') {
        $source = 'operator-supplied'
    }
    return [pscustomobject]@{
        Name        = $Name
        Disposition = $Disposition
        Model       = $Model
        Source      = $source
        Reason      = $Reason
    }
}