You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
docs: refresh stale counts across docs + add a doc-freshness test guard (#43)
Four releases of module additions (NPS, Always-On VPN, CIS Compliance, SIEM
Forwarder) left documentation counts stale. This corrects them everywhere and
adds an enforcement guard so they can't silently drift again.
Corrections (all to the live source-of-truth: 77 modules, 189 CLI actions):
* README: 181 -> 189 CLI actions (x3), the module-architecture table now
lists 70-76, a Security Operations feature bullet, directory tree + region
count to 77, and the test badge relabelled "structural tests" (distinct
from the Pester unit-test badge) at the current count.
* 34-Help.ps1: in-tool CLI-actions help 176 -> 189 + names the new actions.
* ROADMAP / CONTRIBUTING / docs/ASSURANCE_CASE: module/test counts refreshed.
* dist/ (chocolatey nuspec, scoop json, winget locale): action counts -> 189.
New guard (Tests/Run-Tests.ps1, Section 174 "Documentation Freshness"): for
README, CONTRIBUTING, ROADMAP, 34-Help, and the dist/ manifests, every quoted
"NNN CLI/available actions" must equal the live -Action count, and README's
module count must equal the live module count — derived from the codebase at
test time, so a stale doc fails the suite (and Validate-Release) before publish.
Docs + test-infra + a help string only — no behavioral change, no version bump.
Copy file name to clipboardExpand all lines: Modules/34-Help.ps1
+1-1Lines changed: 1 addition & 1 deletion
Original file line number
Diff line number
Diff line change
@@ -253,7 +253,7 @@ function Search-HelpTopics {
253
253
@{ Title="Performance"; Keywords=@("performance","cpu","memory","disk","io","bandwidth","dashboard","process"); Description="Live performance dashboard with CPU, memory, disk I/O, and network bandwidth monitoring" }
254
254
@{ Title="Licensing & NTP"; Keywords=@("license","activation","kms","avma","ntp","time","timezone","clock"); Description="Windows licensing status (KMS/AVMA/Retail), NTP configuration, time sync, and timezone setup" }
255
255
@{ Title="VM Management"; Keywords=@("checkpoint","snapshot","export","import","migration","vhd","iso"); Description="VM checkpoints, export/import, migration readiness, VHD health, and ISO inventory" }
256
-
@{ Title="CLI Actions"; Keywords=@("cli","action","headless","automation","fleet","json","audit","scan","score","dashboard","monitor","policy","sla","netmap","validate"); Description="176 CLI actions for headless automation. Run -ListActions to see all. JSON output via -OutputFormat JSON. Key: PolicyCheck, SLAReport, NetMap, Validate, ServerScore, HealthDashboard, FleetReport." }
256
+
@{ Title="CLI Actions"; Keywords=@("cli","action","headless","automation","fleet","json","audit","scan","score","dashboard","monitor","policy","sla","netmap","validate"); Description="189 CLI actions for headless automation. Run -ListActions to see all. JSON output via -OutputFormat JSON. Key: ServerScore, HealthDashboard, FleetReport, CISScan, NPSSetup, AlwaysOnVPNSetup, SIEMStatus." }
257
257
@{ Title="SelfTest Action"; Keywords=@("selftest","self-test","diagnose","diagnostic","verify","healthcheck","sanity"); Description="Internal diagnostic. -Action SelfTest checks PS version, elevation, module count, version consistency, defaults.json validity, temp path writability, FileServer reachability, and agent installer config. Exit 1 on any failure. Use -OutputFormat JSON for structured output." }
RackStack is a menu-driven PowerShell tool that automates everything between "Windows is installed" and "server is in production." Where sconfig gives you 15 options, RackStack gives you 181 CLI actions and 60+ interactive menus covering networking, Hyper-V, SAN/iSCSI, clustering, VM deployment, cloud onboarding, and batch automation, all with undo, transaction rollback, and audit logging.
40
+
RackStack is a menu-driven PowerShell tool that automates everything between "Windows is installed" and "server is in production." Where sconfig gives you 15 options, RackStack gives you 189 CLI actions and 60+ interactive menus covering networking, Hyper-V, SAN/iSCSI, clustering, VM deployment, cloud onboarding, and batch automation, all with undo, transaction rollback, and audit logging.
41
41
42
42
Built for MSPs, sysadmins, and infrastructure teams who build servers repeatedly and want it done right every time.
43
43
@@ -61,10 +61,12 @@ Built for MSPs, sysadmins, and infrastructure teams who build servers repeatedly
61
61
62
62
**Automation** -- JSON-driven batch mode (24 idempotent steps with transaction rollback), Quick Setup Wizard, configuration export/import, HTML reports, JSON audit logging with rotation
63
63
64
-
**Monitoring** -- 181 CLI actions with JSON output for fleet automation, `ServerScore` (unified 0-100 health grade), `HealthDashboard` (all-in-one monitoring endpoint), `ClusterHealthScore`, `StorageHealthScore`, System Center (SCCM/SCOM/WAC) + Azure AD/Intune integration
64
+
**Monitoring** -- 189 CLI actions with JSON output for fleet automation, `ServerScore` (unified 0-100 health grade), `HealthDashboard` (all-in-one monitoring endpoint), `ClusterHealthScore`, `StorageHealthScore`, System Center (SCCM/SCOM/WAC) + Azure AD/Intune integration
65
65
66
66
**Cloud & Security** -- Azure Arc server onboarding (install the Connected Machine Agent, connect the host to Azure's hybrid management plane via service-principal auth); Microsoft Defender for Endpoint onboarding (activate the built-in EDR sensor against your tenant, with a built-in detection test)
67
67
68
+
**Security Operations** -- Network Policy Server (RADIUS) for 802.1X / VPN authentication, Always-On VPN (RRAS gateway + device/user-tunnel ProfileXML generation), CIS Windows Server L1 compliance scanning (read-only, severity-weighted score + HTML/JSON report), and SIEM log forwarding (Windows Event Forwarding plus Splunk Universal Forwarder / Elastic Winlogbeat config); plus Group Policy backup/restore/drift and Just Enough Administration (JEA) constrained endpoints
69
+
68
70
**Monitoring & Diagnostics** -- Health dashboard (disk I/O latency, NIC errors, memory pressure, Hyper-V guest health, top CPU processes), performance snapshots with trend reports and "days until full" estimates, event log viewer, service manager, network diagnostics (ping, traceroute, port test, subnet sweep, DNS, ARP)
69
71
70
72
**Drift Detection** -- Save configuration baselines, compare snapshots over time, track setting changes across baselines, auto-baseline after batch mode
The sync script matches `#region`/`#endregion` markers between modules and the monolithic file. All 76 region pairs are flat (non-nested). Use `-DryRun` to preview.
545
+
The sync script matches `#region`/`#endregion` markers between modules and the monolithic file. All 77 region pairs are flat (non-nested). Use `-DryRun` to preview.
| Cross-platform port (Linux, macOS) | RackStack's entire purpose is Windows Server configuration. Hyper-V, BitLocker, Failover Clustering, MPIO, AD DS, iSCSI initiator — none of these have a meaningful Linux/macOS equivalent in the same workflow. A port would be a different project. |
51
-
| Switch from PowerShell to C# / Go / Rust | The existing 71 modules + 4,800+ regression tests would be lost. Rewrite cost-benefit is not justifiable. |
51
+
| Switch from PowerShell to C# / Go / Rust | The existing 77 modules + 4,990 regression tests would be lost. Rewrite cost-benefit is not justifiable. |
52
52
| GUI front-end | The 72-char box-drawing console UI is intentional; it works over RDP, SSH-tunneled PowerShell, and emergency console-only scenarios where a GUI cannot. |
53
53
| Web dashboard | Out of scope. Operators integrate via the `-OutputFormat JSON` CLI surface and route into their own dashboards. |
54
54
| External REST API | Same as above — `-OutputFormat JSON` is the integration surface. |
<summary>PowerShell automation toolkit for configuring Windows Server hosts</summary>
20
20
<description>
21
-
RackStack is a menu-driven PowerShell tool that automates everything between "Windows is installed" and "server is in production." 176 CLI actions and 60+ interactive menus covering networking, Hyper-V, SAN/iSCSI, clustering, VM deployment, and batch automation, all with undo, transaction rollback, and audit logging.
21
+
RackStack is a menu-driven PowerShell tool that automates everything between "Windows is installed" and "server is in production." 189 CLI actions and 60+ interactive menus covering networking, Hyper-V, SAN/iSCSI, clustering, VM deployment, and batch automation, all with undo, transaction rollback, and audit logging.
22
22
23
23
Built for MSPs, sysadmins, and infrastructure teams who build servers repeatedly and want it done right every time.
"description": "PowerShell automation toolkit for configuring Windows Server hosts — Hyper-V virtualization hosts, failover cluster nodes, iSCSI storage clients, Active Directory members, and standalone servers. Ships as a code-signed EXE plus a PowerShell Gallery wrapper module exposing 175+ structured CLI actions.",
4
+
"description": "PowerShell automation toolkit for configuring Windows Server hosts — Hyper-V virtualization hosts, failover cluster nodes, iSCSI storage clients, Active Directory members, and standalone servers. Ships as a code-signed EXE plus a PowerShell Gallery wrapper module exposing 189 structured CLI actions.",
Copy file name to clipboardExpand all lines: docs/ASSURANCE_CASE.md
+3-3Lines changed: 3 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -154,7 +154,7 @@ threat.
154
154
| Action-history file moved out of `C:\Temp` to ACL-locked `%ProgramData%\<Tool>\state\`| v1.98.55 fix; see `Get-RackStackSecureStateDir` helper. |
155
155
| Batch-undo state file ACL-verified on load |`Modules/50-EntryPoint.ps1``Invoke-BatchMode` — `Test-RackStackStateFileAcl` refuses to deserialize if any non-admin SID has write access. |
156
156
| File-server downloads use HTTPS only; no http:// scheme allowed |`Modules/39-FileServer.ps1` — `BaseURL` is operator-set and documented as HTTPS-only. |
157
-
| All `Start-Process -ArgumentList` use array form when arguments could come from any input that's not maintainer-controlled | Audited across all 65 modules in round 33. |
157
+
| All `Start-Process -ArgumentList` use array form when arguments could come from any input that's not maintainer-controlled | Audited across all 77 modules (rounds 33+ include the NPS, Always-On VPN, Compliance, and SIEM-Forwarder modules). |
158
158
159
159
**Counter-argument considered.** An attacker who's already an admin
160
160
could write to HKLM. **Response:** correct — but they already won.
@@ -240,13 +240,13 @@ following are acknowledged and tracked:
240
240
241
241
### CR-3: Pester coverage is measured on a subset of modules
242
242
- 96.18% coverage applies to 3 modules (03-InputValidation,
243
-
22-Password, 02-Logging). The other 62 modules are covered by the
243
+
22-Password, 02-Logging). The other 74 modules are covered by the
244
244
regex-pattern harness, which is structural rather than line-based.
245
245
- Mitigation: expanding measured coverage is a tracked roadmap item
246
246
(`ROADMAP.md` Next quarter).
247
247
- Honest scope statement: a Pester-measured 96% is not the same as a
248
248
whole-codebase 96%; readers should weight the regex harness's
249
-
4598-pattern coverage alongside.
249
+
4990-pattern coverage alongside.
250
250
251
251
### CR-4: ps2exe PE timestamp non-determinism
252
252
- The compiled EXE has a PE COFF timestamp field that's set by ps2exe
0 commit comments