Files
PSProxmoxVE/docs/decisions/0005-outputtype-required-on-all-cmdlets.md
T
goodolclint-claude[bot] b90791e2bf docs: migrate DECISIONS.md to house-format ADRs, and retire the review folder (#131)
D001-D021 become ADR 0001-0021 in docs/decisions/, one decision per file.
D017's PESTER_VERSION amendment was a second decision in one entry and becomes
ADR 0022. ADR 0023 records the migration and reverses the lane2-change-plan
ruling that deliberately kept DECISIONS.md until the CI lane work landed.

DECISIONS.md is reduced to a stub with a D-to-ADR redirect table, so the four
released CHANGELOG entries and older issue bodies that cite it degrade to a
redirect rather than a dead reference.

docs/review/ and docs/lane2-change-plan.md are deleted (ADR 0024). Of 91
findings, 83 were resolved and six of the seven still open were already GitHub
issues; F021 was the exception and is now #130.

CLAUDE.md's Key Conventions list gains the two rules it was missing and becomes
the checklist, with the ADRs carrying rationale.
2026-09-02 14:49:07 +00:00

1.1 KiB

ADR 0005 — OutputType required on all cmdlets

  • Status: Accepted
  • Date: 2026-03-22
  • Deciders: unrecorded; adopted during review scan 2026-03-22
  • Context source: docs/review/findings.json F037

Context

Around 54 of the module's 169 cmdlets had no [OutputType] attribute. PowerShell uses it for IntelliSense, for pipeline type inference, and to answer Get-Command -OutputType; without it, tooling cannot tell what a cmdlet emits until it runs.

Decision

Every cmdlet declares its return type with [OutputType(typeof(...))].

[Cmdlet(VerbsCommon.Get, "PveVm")]
[OutputType(typeof(VmInfo))]
public sealed class GetPveVmCmdlet : PveCmdletBase

Rejected alternatives

None recorded. This was adopted as a convention during review scan 2026-03-22 rather than chosen between competing options. All 169 cmdlets carry the attribute.

Consequences

The attribute is only as useful as the type it names, which is what ADR 0013 constrains: an [OutputType(typeof(JObject))] satisfies this rule and still gives the user nothing discoverable.