Files
PSProxmoxVE/DECISIONS.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

4.0 KiB

Architectural Decisions

This file has moved. Architectural decisions now live in docs/decisions/ as house-format ADRs, one decision per file. See ADR 0023 for why.

New decisions are generated from the repository root with ~/.claude/templates/new-adr.sh "Title in plain words", which stamps the next number, the filename and the section skeleton. Do not add entries to this file.

The convention checklist — the rules to follow when writing a cmdlet — is CLAUDE.md § "Key Conventions". The ADRs carry the rationale behind those rules.

D-number redirects

The old DNNN identifiers are retired. They appear in released CHANGELOG.md entries and in GitHub issues written before 2026-09-02, neither of which is rewritten. This table maps them.

Old ADR
D001 0001 — Task polling must use TaskService.WaitForTask
D002 0002 — Password parameters must use SecureString
D003 0003 — URL encoding required for all path parameters
D004 0004 — No bare catch blocks
D005 0005 — OutputType required on all cmdlets
D006 0006 — ConfirmImpact.High required for destructive operations
D007 0007 — All cmdlet classes must be sealed
D008 0008 — JSON serialisation is Newtonsoft.Json only
D009 0009 — Framework targeting
D010 0010 — VmId parameters are nullable int with ValidateRange
D011 0011 — Verb class constants required for cmdlet attributes
D012 0012 — Magic strings are extracted to named constants
D013 0013 — Cmdlets must emit only native or module-defined types
D014 0014 — New-PveCluster -Wait blocks until the cluster is quorate
D015 0015 — Lifecycle -Wait blocks until the guest config lock clears
D016 0016 — Restart-PveVm uses PVE's native reboot endpoint
D017 0017 — CI runs two lanes: a pinned gating lane and a report-only currency lane
D017 (amendment) 0022 — The gating lane pins its own test tooling by exact version
D018 0018 — The currency lane reboots after dist-upgrade, and proves it rebooted
D019 0019 — Local dev calls run-integration.sh directly
D020 0020 — The qemu-server flock is retried, never predicted
D021 0021 — Integration tests prove server semantics; payloads are proven offline