Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

v1 Hands-Off Rerun Acceptance

Operator date: 2026-08-30

Status: Accepted — the exact release-candidate implementation passed the complete LabZ1 workflow twice without installation or ConfigMgr object change; the first run refreshed only stale authenticated evidence and the immediate second run was zero-action.

This record closes the live gate for the first setup-cm release. It records only sanitized identities, hashes, test counts, and state results. It contains no credentials, tokens, private URLs, generated configuration, raw policies, or log bodies.

Accepted scope

RoleAccepted identity
MECM server, provider, MP, and DPLABZ1-CM01.test.gell.one (VM 107)
Site and databaseLAB / CM_LAB
Only accepted clientRING0IVY24-01.test.gell.one (VM 135)
Required applicationSetup-CM Phase 1 Marker
Controllerautopilot-docker (CT 500)

The marker remains a required deployment to one direct member only. No other device or collection is an accepted v1 target. Production, additional clients, distributed MECM, co-management, Patch My PC, reporting expansion, tenant integrations, VM rebuilds, and client-wide security-policy changes remain outside this release.

Exact execution source

EvidenceAccepted value
Pull request#5
Branchcodex/hands-off-rerun-v1
Live-tested commit33535c6a0e47bb0bb0f838eb990b0e9e9cb2ac95
Live-tested treeb0d1329b1fb7fa8479b0b0754cbe168f60fa702b
Git archive size1,075,200 bytes
Git archive SHA-25685c4efb0c36a3575227a078164e35a87e71f777e6bf913e560181779a7b65062
Embedded archive commit33535c6a0e47bb0bb0f838eb990b0e9e9cb2ac95
Extracted 96-file manifest SHA-2565DCC6E72371F3797F2DF34E6CFAA978F70DBC46E8B80FC2B12D2C9B84354E8DD
Read-only acquisition evidence SHA-25610078B52E8002429CB6BAB35D5F4C6B2649A1606F0BE0F7E23CE11CE03A787C8
Ordered pre-run boundary SHA-2565149AFDC75348A4EE28A98F8EB242993BAA0FC62891B7750B1A7C1E06B378727

The archive was generated with git archive, transferred through a temporary lab-only listener, checked by SHA-256 on both Windows targets, and checked on CM01 with git get-tar-commit-id before extraction. The listener was stopped after staging.

The acceptance-record commit is documentation-only relative to the live-tested implementation. Before tagging, all non-documentation release paths must remain identical to this commit. Any executable, configuration, workflow, or test-tree difference requires renewed acceptance rather than a documentation exception.

Quality gates

GateResult
Portable Pester suite391 passed, 0 failed, 0 skipped
PowerShell parse45 files, 0 errors
PSScriptAnalyzer error severity0 findings
Markdown links47 files and 97 local links passed
mdBook and workflow lintpassed
Final focused CodeRabbit review0 findings
CM01 native Windows integration12 passed, 0 failed, 5 client-only skips
RING0IVY24-01 native Windows integration10 passed, 0 failed, 0 skipped
ConfigMgr provider post-migration integration1 passed, 0 failed, no mutation
PR Pester CIpassed at the final PR head before merge
PR mdBook buildpassed at the final PR head before merge
PR CodeRabbit statuspassed at the final PR head before merge

The native evidence-channel tests include a real Windows proof that a newly created file inherits target-computer Modify rights. This test caught and closed the earlier directory-only inheritance defect before formal acceptance.

Bounded repair lineage

The lab entered the final acceptance window with all installation and fixed ConfigMgr object state valid. The authenticated receipt is deliberately fresh for only 30 minutes, so the pre-run boundary reported exactly Client/ClientEvidencePending; SQL, MECM, acquisition, marker objects, content, distribution, targeting, and server compliance were already compliant.

The first run therefore permitted only RequestClientPolicy and WaitForConvergence. It requested the supported paired client evaluation and waited for a new target-owned receipt. No acquisition, installer, SQL/MECM repair, application/content/distribution, collection, membership, assignment, or detector mutation was permitted or observed.

An earlier candidate closed the stage-output contract defect. Final review then found that the signed bootstrapper architecture exception was broader than its known x86-PE/x64-product case and that Health used an empty repair path before failing. Commit 33535c6a0e47bb0bb0f838eb990b0e9e9cb2ac95 narrows that exception and makes Health a single check-only evaluation with named failed checks. Both changes have failing-before and passing-after regression proof.

Exact marker and target identity

ObjectAccepted identity
Application CI / revision16777532 / 5
Deployment type CI / revision16777533 / 4
PackageLAB00008
CollectionLAB00016
Sole member resource16777219 (RING0IVY24-01)
Assignment / policy revision16777217 / 5
Marker length78 bytes
Marker SHA-2563F44AA70B40C9E9095E69F1C57E98F6ACC06900788A2054E251BCC58179B6254
Authenticated receipt length254 bytes
Authenticated receipt SHA-256B21E6A787FBA6004D28C69094941F44FC123A835554F24971C565BA1615F1AB7
Receipt ownerTEST\RING0IVY24-01$

Final inspection found exactly one item in the bounded evidence directory: the accepted marker-evidence.json. The application, deployment type, package, distribution, collection, direct membership, and assignment identities did not change across either formal run.

Formal run one

EvidenceAccepted value
Run ID20260830-203712-76f13d67
Summary SHA-25615D7C91447D18CA4A63D7A1F56774C8889DE9A211E192F1BAE164FBE6FBE7085
Artifact count11
Health SHA-2562BA005D6D36572C1F864694B0227635F938C8AD7A27FB0EC4E8C2D50B9404593
Stage statesAcquire, SQL, MECM, Health: Skipped; Marker: Succeeded
Allowed actionsRequestClientPolicy, WaitForConvergence
Object or installer mutations0
Installer processes0

All six Health values were true: SQL, MECM, Management Point, Distribution Point, client reachability, and active non-obsolete client registration.

Formal run two

EvidenceAccepted value
Run ID20260830-204052-d3c589a6
Summary SHA-2562938B54FAE5ED15B0AC720873F41AA48E434C05F2BD12AD64329DD59A332E66A
Artifact count11
Health SHA-2562BA005D6D36572C1F864694B0227635F938C8AD7A27FB0EC4E8C2D50B9404593
Stage statesAcquire, SQL, MECM, Marker, Health: Skipped
Mutation actions0
Installer processes0

The second run used the same command and exact source revision. Mutation mocks would have failed the run if acquisition, SQL repair, MECM repair, marker repair, content distribution, collection membership, deployment, policy, or installer paths had been invoked.

Independent before/after snapshots

SnapshotSHA-256
Server baselineC606C8DC3CF3B5C39F9B4C21DF0AA17BBA68CE01F2826F3257C1CD7DAA54860C
Server after run oneA7AC8CA3A172ED5D9B13CA4AD320F61EB1EDB147D087A4B1826D12DA5F740AC7
Server after run twoB8B7A291384EE813340FEE9E21FF005956E8D1CE1073B941DCDA0DA38D337D40
Client baseline4B0D5C1782377A8D3DE48CC2EA1F640191E718EEF0184A92CCD17FAC32DC6591
Client after run one9E277628CDDF43EEF4B6A9450C40298753AD702C4FDABF21C7EEEC17491B360E
Client after run two955D56BC279AA6E5B9EE8B61F4FAB2C314D4D6062BE2C283CA2E066DAE061317

Snapshot hashes differ because each file includes its observation time. The comparison gate separately normalized and compared the owned values. Server application, deployment-type, distribution, collection, rule, membership, and assignment properties were identical. Client marker, Agent, firewall, execution-policy, trust-store, scheduled-task, and scoped service hashes were identical.

The formal snapshots hash all Windows service definitions except OS-managed BITS and record BITS separately. The stable 296-service scoped SHA-256 was 682863423E9B331756C8025FDE4592A4E140F9480AA9587483FF105C975BEDB0; BITS was Manual/Stopped at baseline and Auto/Running after the bounded policy-refresh window and second run. No setup-cm-owned service value, service definition in the scoped hash, or other client configuration changed.

Independent infrastructure and controller proof

  • Proxmox node pve2 reported the two-node cluster quorate.
  • VMs 107, 111, 115, and 135 plus CT 500 were all running.
  • Controller /healthz returned {"ok":true}.
  • Controller release 2026.08.48 reported source 8ba1c80.
  • Accepted Agents agent-labz1-cm01 / VM 107 and agent-ring0ivy24-01 / VM 135 checked in currently at version 2026.8.48.0 and were not revoked.
  • A stale historical osd-fullos controller identity also names CM01. It is not the accepted Agent and was left untouched because historical-object deletion is explicitly outside v1.

Evidence hygiene and cleanup

  • Both accepted run directories parsed as JSON and produced zero sensitive keys, credentials, bearer values, private URLs, or raw policy patterns.
  • A stalled direct SFTP attempt created only two exact zero-byte staging placeholders. The two transfer-only SFTP processes were stopped and those empty placeholders were removed before the proven temporary lab-only listener was used; no source had been extracted from them.
  • The temporary listener was stopped immediately after both archive hashes matched. The two verified staging archives and two generated testResults.xml files were removed after acceptance; both extracted source roots then matched the exact 96-file manifest again.
  • Earlier acceptance work removed two exact target-owned failed-attempt .tmp receipts, one rejected source-stager helper, three superseded client helpers, and hash-only BITS diagnostic state only after identity checks. All were temporary and regenerable. No user document, ConfigMgr object, source media, accepted evidence, or unrelated lab file was deleted.

Safe restart

Routine validation should stay read-only. From the accepted source root on CM01, run:

$commit = '33535c6a0e47bb0bb0f838eb990b0e9e9cb2ac95'
pwsh "C:\ProgramData\SetupCm\source\$commit\scripts\Invoke-SetupCm.ps1" `
  -ConfigPath 'C:\ProgramData\SetupCm\config\lab.local.yaml' `
  -Mode Unattended -Stage Health -SourceCommit $commit

Use the complete five-stage command only from an exact reviewed source when a full no-op confirmation or a proven owned-component repair is required. Do not replay bootstrap installers merely for newer timestamps, broaden the marker collection, weaken client policy, or delete historical objects as recovery.

Once published, the v1.0.0 tag and GitHub release will be the authoritative publication identity for this accepted implementation. The release notes must retain this topology, evidence boundary, test counts, limitations, and safe restart rule.