mirror of
https://github.com/GoodOlClint/PSProxmoxVE.git
synced 2026-09-04 11:15:34 +00:00
b90791e2bf
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.
27 lines
1016 B
Markdown
27 lines
1016 B
Markdown
# ADR 0007 — All cmdlet classes must be sealed
|
|
|
|
- **Status:** Accepted
|
|
- **Date:** 2026-03-22
|
|
- **Deciders:** unrecorded; adopted during review scan 2026-03-22
|
|
- **Context source:** `docs/review/findings.json` F041
|
|
|
|
## Context
|
|
|
|
Around 95 of the module's 169 cmdlet classes were not `sealed`. Cmdlets in this module are leaves — they derive from `PveCmdletBase` and nothing derives from them — but the code did not say so.
|
|
|
|
## Decision
|
|
|
|
Every cmdlet class is declared `sealed`.
|
|
|
|
```csharp
|
|
public sealed class GetPveVmCmdlet : PveCmdletBase
|
|
```
|
|
|
|
## Rejected alternatives
|
|
|
|
None recorded. Adopted as a convention during review scan 2026-03-22. Beyond making the design intent explicit, sealing enables potential JIT devirtualisation. All 169 cmdlets are now sealed.
|
|
|
|
## Consequences
|
|
|
|
Applies to cmdlets only. `PveCmdletBase` is the shared base and is deliberately not sealed; a rule stated as "all cmdlet classes" has to exclude it, and a mechanical check that does not will produce a false positive on every run.
|