PSMutant.psd1

#
# Module manifest for module 'PSMutant'
#
# Generated by: Fortigi
#
# Generated on: 08/21/2026
#

@{

# Script module or binary module file associated with this manifest.
RootModule = 'PSMutant.psm1'

# Version number of this module.
ModuleVersion = '0.3.1'

# Supported PSEditions
# CompatiblePSEditions = @()

# ID used to uniquely identify this module
GUID = '9c19f399-e58d-4087-829a-22e5a7ec3282'

# Author of this module
Author = 'Fortigi'

# Company or vendor of this module
CompanyName = 'Fortigi'

# Copyright statement for this module
Copyright = '(c) Fortigi. MIT licensed.'

# Description of the functionality provided by this module
Description = 'Mutation testing for PowerShell. Injects small faults (flip -eq to -ne, $true to $false, N to N+1, drop -not) into your scripts using the PowerShell AST and reports how many your Pester suite catches - the metric line coverage cannot give you. Runs mutants in a throwaway sandbox so your source is never modified. Requires Pester 5.0.0 or later AT RUN TIME, and deliberately does not declare it as a RequiredModule: PSMutant runs under whichever Pester >= 5 you have loaded rather than importing one for you. Install Pester yourself if you do not already have it.'

# Minimum version of the PowerShell engine required by this module
PowerShellVersion = '7.2'

# Name of the PowerShell host required by this module
# PowerShellHostName = ''

# Minimum version of the PowerShell host required by this module
# PowerShellHostVersion = ''

# Minimum version of Microsoft .NET Framework required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# DotNetFrameworkVersion = ''

# Minimum version of the common language runtime (CLR) required by this module. This prerequisite is valid for the PowerShell Desktop edition only.
# ClrVersion = ''

# Processor architecture (None, X86, Amd64) required by this module
# ProcessorArchitecture = ''

# Modules that must be imported into the global environment prior to importing this module
# RequiredModules = @()

# Assemblies that must be loaded prior to importing this module
# RequiredAssemblies = @()

# Script files (.ps1) that are run in the caller's environment prior to importing this module.
# ScriptsToProcess = @()

# Type files (.ps1xml) to be loaded when importing this module
# TypesToProcess = @()

# Format files (.ps1xml) to be loaded when importing this module
# FormatsToProcess = @()

# Modules to import as nested modules of the module specified in RootModule/ModuleToProcess
# NestedModules = @()

# Functions to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no functions to export.
FunctionsToExport = 'Invoke-PSMutation'

# Cmdlets to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no cmdlets to export.
CmdletsToExport = @()

# Variables to export from this module
# VariablesToExport = @()

# Aliases to export from this module, for best performance, do not use wildcards and do not delete the entry, use an empty array if there are no aliases to export.
AliasesToExport = @()

# DSC resources to export from this module
# DscResourcesToExport = @()

# List of all modules packaged with this module
# ModuleList = @()

# List of all files packaged with this module
# FileList = @()

# Private data to pass to the module specified in RootModule/ModuleToProcess. This may also contain a PSData hashtable with additional module metadata used by PowerShell.
PrivateData = @{

    PSData = @{

        # Tags applied to this module. These help with module discovery in online galleries.
        Tags = 'mutation-testing','testing','pester','ast','quality','test-quality','coverage'

        # A URL to the license for this module.
        LicenseUri = 'https://github.com/Fortigi/PSMutant/blob/main/LICENSE'

        # A URL to the main website for this project.
        ProjectUri = 'https://github.com/Fortigi/PSMutant'

        # A URL to an icon representing this module.
        # IconUri = ''

        # ReleaseNotes of this module
        ReleaseNotes = '**Breaking: the module now exports one function.** `Invoke-PSMutation` is the whole surface.
If you called `Get-PSMutationCandidate` or `Set-PSMutationText`, they are gone -- they were
never documented, and the object they returned was never a declared contract. What you should
depend on instead is the report JSON, which now has a published schema.

**Your config is checked more strictly, and mistakes are errors rather than silence.** A
misspelled key used to be ignored, which quietly weakened the run: `thresholds.brake` left the
break gate unable to fail at all, and a misspelled operator was dropped and then reported as
though it had run. A value of the wrong type did the same -- `"timeoutFactor": "four"` left the
per-mutant timeout empty, and an expired timeout counts as a kill, so the score was higher than
the tests earned. Both are refused now, and the message names the key and suggests the nearest
valid one.

If you have been running with a typo, this release will fail your config where it previously
ran. That is the point: the run it was giving you was not measuring what you thought.

**Both formats are published as JSON Schemas**, in `schemas/v1/`. Point your config at
`config.schema.json` with a `$schema` key and it can be checked before a run instead of minutes
into one. Validate a report against `report.schema.json` if you build anything on top of it --
a dashboard, a ratchet, a merge tool. Extra fields are allowed on purpose, so a validating
reader keeps working when a later release records more.

**Reports say how they were produced**: a schema version, the module version, a timestamp, and
how long the baseline, the whole run and the per-mutant timeout took.

**`-RecheckFrom` does less work.** It skips mutants your config already declared unkillable,
and a recheck report can now seed another recheck, so the loop narrows as you write assertions.

**`Get-Help Invoke-PSMutation` returns the real documentation** -- every parameter described,
with worked examples. It was previously serving an internal note by accident.

**Score colours are correct.** A config without colour bands used to print every score green,
including 0%.
'


        # Prerelease string of this module
        # Prerelease = ''

        # Flag to indicate whether the module requires explicit user acceptance for install/update/save
        # RequireLicenseAcceptance = $false

        # External dependent modules of this module
        # ExternalModuleDependencies = @()

    } # End of PSData hashtable

 } # End of PrivateData hashtable

# HelpInfo URI of this module
# HelpInfoURI = ''

# Default prefix for commands exported from this module. Override the default prefix using Import-Module -Prefix.
# DefaultCommandPrefix = ''

}