{
  "projects/app01-storage-expansion": {
    "title": "APP01 Hyper-V Storage Expansion",
    "description": "A scoped virtual-disk change with checkpoint handling, guest storage inspection, and final NTFS validation.",
    "body": "<div class=\"page-heading\"><p class=\"eyebrow\">Project 07 / Virtualization</p><h1>APP01 Hyper-V Storage Expansion</h1><p class=\"lead\">A scoped virtual-disk change with checkpoint handling, guest storage inspection, and final NTFS validation.</p><div class=\"tags\"><span class=\"status\">COMPLETE</span><span class=\"tag\">Validated lab work</span></div><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/tree/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub documentation <span aria-hidden=\"true\">↗</span></a><a href=\"https://jeremyfontenot.online/app01-storage-expansion.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original portfolio <span aria-hidden=\"true\">↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Evidence library</a></div></div><div class=\"case-layout\"><aside class=\"case-toc\"><p class=\"eyebrow\">Inside this case study</p><a href=\"#overview\" data-anchor=\"overview\">Overview</a><a href=\"#scenario\" data-anchor=\"scenario\">Operational scenario & objectives</a><a href=\"#environment\" data-anchor=\"environment\">Environment & technologies</a><a href=\"#architecture\" data-anchor=\"architecture\">Architecture</a><a href=\"#implementation\" data-anchor=\"implementation\">Implementation & administration</a><a href=\"#troubleshooting\" data-anchor=\"troubleshooting\">Troubleshooting</a><a href=\"#validation\" data-anchor=\"validation\">Validation & results</a><a href=\"#evidence\" data-anchor=\"evidence\">Evidence</a><a href=\"#skills\" data-anchor=\"skills\">Skills demonstrated</a><a href=\"#limitations\" data-anchor=\"limitations\">Limitations & claim boundaries</a><a href=\"#next\" data-anchor=\"next\">Next milestones</a></aside><article><section class=\"content-block\" id=\"overview\"><h2>Overview</h2><p>A scoped virtual-disk change with checkpoint handling, guest storage inspection, and final NTFS validation.</p><p><strong>Classification:</strong> Validated lab work.</p></section><section class=\"content-block\" id=\"scenario\"><h2>Operational scenario & objectives</h2><p>Expand the intended virtual disk safely, account for checkpoint relationships, and validate the resulting guest storage layout.</p></section><section class=\"content-block\" id=\"environment\"><h2>Environment & technologies</h2><p>APP01 on nested Hyper-V, with host-side virtual disk state and guest-side partition/filesystem validation.</p><div class=\"tags\"><span class=\"tag\">Hyper-V</span><span class=\"tag\">VHDX</span><span class=\"tag\">NTFS</span></div></section><section class=\"content-block\" id=\"architecture\"><h2>Architecture</h2><p>APP01 on nested Hyper-V, with host-side virtual disk state and guest-side partition/filesystem validation.</p><div class=\"doc-grid\"></div><a href=\"#architecture\" data-route=\"architecture\" class=\"\">Explore infrastructure architecture →</a></section><section class=\"content-block\" id=\"implementation\"><h2>Implementation & administration</h2><div class=\"imported\"><section class=\"page-hero\"><div class=\"wrap\"><p class=\"eyebrow\">Project 07 · COMPLETE</p><h2>APP01 Hyper-V Storage Expansion</h2><p class=\"lead\">A documented Hyper-V storage expansion showing change control, guest validation, and before/after state.</p><div class=\"actions\"><a class=\"button primary\" data-route=\"projects\" href=\"#projects\">Back to projects</a><a class=\"button\" data-route=\"evidence\" href=\"#evidence\">Review proof index</a></div></div></section><section class=\"section\"><div class=\"wrap\"><div class=\"metric-strip\"><div class=\"metric\"><strong>APP01</strong><span>Target VM</span></div><div class=\"metric\"><strong>Hyper-V</strong><span>Platform</span></div><div class=\"metric\"><strong>VHDX</strong><span>Virtual disk</span></div><div class=\"metric\"><strong>Validated</strong><span>Guest volume</span></div></div></div></section><section class=\"section\"><div class=\"wrap case-layout\"><article><section class=\"content-block\" id=\"source-249b2767-change\"><p class=\"eyebrow\">Change</p><h2>Virtual disk and filesystem expansion</h2><p>APP01 storage was expanded through the virtualization layer and then validated inside Windows. The project documents capacity before and after the change and confirms the filesystem recognized the additional space.</p></section><section class=\"content-block\" id=\"source-249b2767-method\"><p class=\"eyebrow\">Method</p><h2>Smallest necessary change</h2><p>The task was handled as a scoped infrastructure change: inspect state, expand the correct virtual disk, rescan/extend the guest volume, then capture post-change validation.</p></section><section class=\"content-block\" id=\"source-249b2767-validation\"><p class=\"eyebrow\">Validation</p><h2>Before/after state preserved</h2><p>The documented workflow records storage state before expansion, the virtualization-side change, guest detection, volume extension, and final free-space validation. No separate public evidence artifact is currently linked from this rebuilt page.</p></section></article><aside class=\"case-nav panel\"><p class=\"eyebrow\">Case study</p><a data-route=\"projects/app01-storage-expansion\" href=\"#projects/app01-storage-expansion\">Virtual disk and filesystem expansion</a><a data-route=\"projects/app01-storage-expansion\" href=\"#projects/app01-storage-expansion\">Smallest necessary change</a><a data-route=\"projects/app01-storage-expansion\" href=\"#projects/app01-storage-expansion\">Before/after state preserved</a></aside></div></section></div><p>The original case-study narrative and linked evidence provide the detailed record for this project.</p></section><section class=\"content-block\" id=\"troubleshooting\"><h2>Troubleshooting</h2><p>The documented workflow accounts for checkpoints and the active VHDX before modifying storage. Final host and guest observations are retained as separate evidence.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"validation\"><h2>Validation & results</h2><p>Before/after host and guest evidence supports the scoped virtual-disk and NTFS storage administration work.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"evidence\"><h2>Evidence</h2><p>STRONG — checkpoint/VHDX relationship handling, expansion, guest partition review, NTFS provisioning, and before/after validation are represented.</p><div class=\"doc-grid\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/01-hyper-v-manager-no-checkpoints.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">01-hyper-v-manager-no-checkpoints.png<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/06-host-get-vhd-validation.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">06-host-get-vhd-validation.png<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/03-disk-management-final-layout.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">03-disk-management-final-layout.png<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/04-file-explorer-data-volume.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">04-file-explorer-data-volume.png<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/05-guest-powershell-storage-validation.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">05-guest-powershell-storage-validation.png<small>Used scripts for inventory, connectivity checks, evidence capture, sanitization, structured exports, hash checks, and repository validation.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/02-app01-vm-settings-vhdx.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">02-app01-vm-settings-vhdx.png<small>Reviewed node, VM, storage, bridge, VLAN, guest-agent, snapshot, backup, and lifecycle state.</small> <span aria-hidden=\"true\">↗</span></a></div><div class=\"source-links\"><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Browse and filter the complete evidence library</a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/tree/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/app01-storage-expansion/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub project source <span aria-hidden=\"true\">↗</span></a></div></section><section class=\"content-block\" id=\"skills\"><h2>Skills demonstrated</h2><div class=\"tags\"><span class=\"tag\">Hyper-V</span><span class=\"tag\">VHDX</span><span class=\"tag\">NTFS</span></div><a href=\"#skills\" data-route=\"skills\" class=\"\">View the complete capability map →</a></section><section class=\"content-block\" id=\"limitations\"><h2>Limitations & claim boundaries</h2><div class=\"note\">Personal nested Hyper-V lab storage administration. Claims are limited to the documented VM/disk/guest changes and validation.</div></section><section class=\"content-block\" id=\"next\"><h2>Next milestones</h2><p>No active implementation milestone; revalidate if APP01 storage layout changes.</p></section></article></div><section class=\"section\"><p class=\"eyebrow\">Continue exploring</p><h2>Related projects</h2><div class=\"grid grid-2\"><article class=\"project-card\" data-project data-category=\"Virtualization\" data-search=\"scvmm 2022 hyper-v management a managed nested hyper-v host, vmm logical networking, and validated app01 lifecycle operations. scvmm 2022 hyper-v logical networking\"><div class=\"card-head\"><span class=\"project-number\">PROJECT 05</span><span class=\"status\">COMPLETE</span></div><h3><a href=\"#projects/scvmm-2022\" data-route=\"projects/scvmm-2022\" class=\"\">SCVMM 2022 Hyper-V Management</a></h3><p>A managed nested Hyper-V host, VMM logical networking, and validated APP01 lifecycle operations.</p><div class=\"tags\"><span class=\"tag\">SCVMM 2022</span><span class=\"tag\">Hyper-V</span><span class=\"tag\">Logical networking</span></div><div class=\"card-footer\"><a href=\"#projects/scvmm-2022\" data-route=\"projects/scvmm-2022\" class=\"\">Read case study <span class=arrow>↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"text-link\">Evidence</a></div></article></div></section>",
    "active": "Projects"
  },
  "projects/cross-platform-administration": {
    "title": "Cross-Platform Administration & Support Method",
    "description": "A repeatable support method across Windows, Linux, macOS, identity, and infrastructure.",
    "body": "<div class=\"page-heading\"><p class=\"eyebrow\">Project 08 / Infrastructure</p><h1>Cross-Platform Administration &amp; Support Method</h1><p class=\"lead\">A repeatable support method across Windows, Linux, macOS, identity, and infrastructure.</p><div class=\"tags\"><span class=\"status\">COMPLETE</span><span class=\"tag\">Validated lab work</span></div><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/home-lab-operations-proof.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub documentation <span aria-hidden=\"true\">↗</span></a><a href=\"https://jeremyfontenot.online/home-lab-operations-proof.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original portfolio <span aria-hidden=\"true\">↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Evidence library</a></div></div><div class=\"case-layout\"><aside class=\"case-toc\"><p class=\"eyebrow\">Inside this case study</p><a href=\"#overview\" data-anchor=\"overview\">Overview</a><a href=\"#scenario\" data-anchor=\"scenario\">Operational scenario & objectives</a><a href=\"#environment\" data-anchor=\"environment\">Environment & technologies</a><a href=\"#architecture\" data-anchor=\"architecture\">Architecture</a><a href=\"#implementation\" data-anchor=\"implementation\">Implementation & administration</a><a href=\"#troubleshooting\" data-anchor=\"troubleshooting\">Troubleshooting</a><a href=\"#validation\" data-anchor=\"validation\">Validation & results</a><a href=\"#evidence\" data-anchor=\"evidence\">Evidence</a><a href=\"#skills\" data-anchor=\"skills\">Skills demonstrated</a><a href=\"#limitations\" data-anchor=\"limitations\">Limitations & claim boundaries</a><a href=\"#next\" data-anchor=\"next\">Next milestones</a></aside><article><section class=\"content-block\" id=\"overview\"><h2>Overview</h2><p>A repeatable support method across Windows, Linux, macOS, identity, and infrastructure.</p><p><strong>Classification:</strong> Validated lab work.</p></section><section class=\"content-block\" id=\"scenario\"><h2>Operational scenario & objectives</h2><p>Apply a consistent diagnostic method: inspect dependencies, test the failing layer, make a scoped change, and retain validation.</p></section><section class=\"content-block\" id=\"environment\"><h2>Environment & technologies</h2><p>Windows Server and Windows endpoints, Linux01 using SSSD/Kerberos, and a separate macOS lab VM. Individual claims follow the underlying records.</p><div class=\"tags\"><span class=\"tag\">Windows</span><span class=\"tag\">Linux</span><span class=\"tag\">macOS</span><span class=\"tag\">Networking</span></div></section><section class=\"content-block\" id=\"architecture\"><h2>Architecture</h2><p>Windows Server and Windows endpoints, Linux01 using SSSD/Kerberos, and a separate macOS lab VM. Individual claims follow the underlying records.</p><div class=\"doc-grid\"></div><a href=\"#architecture\" data-route=\"architecture\" class=\"\">Explore infrastructure architecture →</a></section><section class=\"content-block\" id=\"implementation\"><h2>Implementation & administration</h2><div class=\"imported\"><section class=\"page-hero\"><div class=\"wrap\"><p class=\"eyebrow\">Project 08 · COMPLETE · operations method</p><h2>Cross-platform administration with a Microsoft center of gravity.</h2><p class=\"lead\">Windows remains the primary administration track; Linux, macOS, pfSense, and Proxmox support broader troubleshooting and infrastructure understanding.</p></div></section><section class=\"section\"><div class=\"wrap grid grid-3\" id=\"source-de206be3-inventory\"><article class=\"panel\" id=\"source-de206be3-validation\"><span class=\"tile-code\">WINDOWS</span><h3>Server and endpoint operations</h3><p>PowerShell, WinRM, WMI, Event Viewer, Group Policy, AD tools, Windows Admin Center, Hyper-V, and SCVMM.</p><div class=\"proof-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/README.html\" rel=\"noopener noreferrer\" target=\"_blank\">View Home Lab evidence</a></div></article><article class=\"panel\" id=\"source-de206be3-sssd\"><span class=\"tile-code\">LINUX</span><h3>Domain integration</h3><p>Linux01 was joined to the AD domain with SSSD/Kerberos and validated AD user authentication and group-based access.</p><div class=\"proof-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/linux01-system-network-domain-validation.html\" rel=\"noopener noreferrer\" target=\"_blank\">View Linux validation</a></div></article><article class=\"panel\" id=\"source-de206be3-boundaries\"><span class=\"tile-code\">macOS</span><h3>Cross-platform endpoint practice</h3><p>macOS lab work is documented as supporting capability and is not presented as production Mac fleet administration.</p></article></div></section></div><details><summary>Current Validated State <small> / README.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/README.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/85e602a93ca1\" data-route=\"documentation/85e602a93ca1\" class=\"\">Open document page</a></div><h2>Current Validated State</h2>\n<p>This public evidence folder summarizes reviewer-safe records from the private home-lab operations repository without exposing private repository links. Public claims use stable classifications instead of date-based proof labels. The <code>direct-evidence/</code> folder contains sanitized direct artifacts for the current infrastructure claims.</p>\n<h2>Document</h2>\n<ul>\n<li>Title: Jeremy Fontenot’s On-Premises Home Lab Documentation</li>\n<li>Filename: <code>Jeremy-Fontenot-On-Premises-Home-Lab-Documentation.docx</code></li>\n<li>Download description: Download the Professional Home Lab Documentation (.docx)</li>\n<li>SHA-256: <code>D7E81A06DCFBD2E91EB8F52A02BDC795AC5B7084A70F343233F1104CCD297BDB</code></li>\n</ul>\n<h2>Source Commits</h2>\n<ul>\n<li>Website source commit at generation: <code>effdbeb0ed8d632a0b0c93328cd593cf85c3eb46</code></li>\n<li>Home-lab source commit for direct evidence: <code>fb6c286873285778d88d6d5cfde0b9bd00b96f36</code></li>\n</ul>\n<h2>Supported Public Claims</h2>\n<ul>\n<li>Personal nonproduction lab hosted on Dell PowerEdge R710 with Proxmox VE 9.2.3.</li>\n<li>pfSense, DC01, WS01, and Linux01 are the primary lab VMs described by current records.</li>\n<li>Linux01 current supported placement is VLAN 30 at <code>10.10.30.20/24</code>; older <code>10.10.20.x</code> Linux01 evidence is historical.</li>\n<li>DC01 direct evidence supports Windows Server 2022, AD DS, DNS, DHCP, Group Policy Management, Global Catalog status, FSMO ownership, and DC01 IP.</li>\n<li>WS01 direct evidence supports Windows 10 Pro, domain membership, secure channel, and current network state.</li>\n<li>Linux01 direct evidence supports Ubuntu 26.04 LTS, kernel, VLAN 30, current IP/gateway/DNS, current-versus-historical address boundary, and directly proven domain integration indicators.</li>\n<li>Linux01 SSSD remediation is documented as remediated and validated for Linux01 only.</li>\n<li>Backup job configuration and retained backup counts are supported; all-recent-backups-succeeded, recurring disaster-recovery assurance, RTO, and RPO are not claimed.</li>\n<li>One isolated Linux01 restore drill is supported; it does not prove recurring restore assurance.</li>\n</ul>\n<h2>Direct Evidence Links</h2>\n<ul>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-platform-inventory.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct Proxmox inventory</a></li>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-backup-configuration.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct backup configuration</a></li>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-backup-inventory.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct backup inventory</a></li>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-restore-validation.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct restore validation</a></li>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/dc01-system-and-role-validation.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct DC01 validation</a></li>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/ws01-system-and-domain-validation.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct WS01 validation</a></li>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/linux01-system-network-domain-validation.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct Linux01 validation</a></li>\n<li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/linux01-sssd-remediation-validation.md\" rel=\"noopener noreferrer\" target=\"_blank\">Open direct SSSD remediation validation</a></li>\n</ul>\n<h2>Limitations</h2>\n<p>Personal lab evidence does not represent employer production administration, client infrastructure ownership, enterprise scale, guaranteed uptime, full firewall assurance, or full security assurance. Timeout observations remain timeout observations. The restore evidence is one isolated Linux01 restore drill only and does not establish recurring restore assurance, RTO, RPO, SLA, or disaster-recovery readiness.</p></div></details><details><summary>DC01 System and Role Validation <small> / dc01-system-and-role-validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/dc01-system-and-role-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/313d07c59108\" data-route=\"documentation/313d07c59108\" class=\"\">Open document page</a></div><h2>DC01 System and Role Validation</h2>\n<h2>Claim supported</h2>\n<p>Direct DC01 inventory supports Windows Server, installed role, domain, Global Catalog, FSMO, and DC01 IP claims for the personal nonproduction lab.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Operating system: Microsoft Windows Server 2022 Standard Evaluation.</li>\n<li>Version: 10.0.20348.</li>\n<li>Build number: 20348.</li>\n<li>Active Directory Domain Services installed: AD-Domain-Services, InstallState 1.</li>\n<li>DNS Server installed: DNS, InstallState 1.</li>\n<li>DHCP Server installed: DHCP, InstallState 1.</li>\n<li>Group Policy Management installed: GPMC, InstallState 1.</li>\n<li>Domain DNS root: ad.jeremyfontenot.online.</li>\n<li>NetBIOS domain: JFAD.</li>\n<li>Domain controller host: DC01.ad.jeremyfontenot.online.</li>\n<li>DC01 IPv4 address: 10.10.20.10.</li>\n<li>Global Catalog: true.</li>\n<li>FSMO roles on DC01: PDC Emulator, RID Master, Infrastructure Master, Schema Master, and Domain Naming Master.</li>\n</ul>\n<h2>Source command or source object</h2>\n<p>Authenticated DC01 target-local inventory result objects: OperatingSystem, InstalledRolesFeatures, Domain, Forest, and DomainControllers.</p>\n<h2>Source repository</h2>\n<p>fontenotjeremy71-hub/jeremy-homelab-ops</p>\n<h2>Source commit</h2>\n<p>fb6c286873285778d88d6d5cfde0b9bd00b96f36</p>\n<h2>Source path</h2>\n<p><code>inventories/dc01-inventory-20260626-022543.json</code></p>\n<h2>Source file SHA-256</h2>\n<p><code>inventories/dc01-inventory-20260626-022543.json</code>: F60A6DD8C9EE42E90B02B210B1B1A775F89E5C3DED26618B593DEE1362C6DE42</p>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed executing account, privileged group details, SIDs, object GUIDs, GPO GUIDs, unrelated installed features, event details, raw time values not needed for the claim, and unrelated command output. Retained DC01 IP because it is already part of the current public home-lab evidence boundary.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Captured-state evidence only.</li>\n<li>This artifact validates collected DC01 inventory values only.</li>\n<li>It does not prove ongoing Active Directory health, production readiness, security assurance, employer-system administration, or service availability beyond the captured inventory.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Validated</p></div></details><details><summary>Linux01 SSSD Remediation Validation <small> / linux01-sssd-remediation-validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/linux01-sssd-remediation-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/bb9fe57b6085\" data-route=\"documentation/bb9fe57b6085\" class=\"\">Open document page</a></div><h2>Linux01 SSSD Remediation Validation</h2>\n<h2>Claim supported</h2>\n<p>Direct Linux01 remediation evidence supports a narrow Linux01-only SSSD responder/socket conflict remediation and post-remediation validation.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Initial condition: SSSD NSS, PAM, and PAC sockets were enabled and failed.</li>\n<li>Initial condition: SSSD was configured for direct responder activation through <code>services = nss, pam</code>.</li>\n<li>Initial condition: <code>config_file_version = 2</code> was rejected by SSSD 2.12 config validation.</li>\n<li>Remediation action: removed only the rejected <code>config_file_version = 2</code> directive.</li>\n<li>Remediation action: disabled conflicting NSS, PAM, and PAC sockets.</li>\n<li>Remediation action: restarted sssd.service.</li>\n<li>Remediation action: cleared failed-unit state.</li>\n<li>Post-remediation service state: sssd.service enabled and active/running.</li>\n<li>Post-remediation failed-unit state: zero failed units.</li>\n<li>SSSD configuration validation: passed.</li>\n<li>AD identity lookup: passed.</li>\n<li>New AD-authenticated SSH session: passed.</li>\n<li>Initial diagnostic SHA-256: 3CAD0FB73202D777D41DEE40D6F4D19D4019B9AD30552B37970B55A5CA5AB3BB.</li>\n<li>Original/backup configuration SHA-256: 23ACE1BECA5FF6F7D58200EFE054EA8E5A938E02F37FCE25B1CA1B5D2F05BD14.</li>\n<li>Post-remediation diagnostic SHA-256: FD55604BFB94487B86FBF631703FA995B9726471689385CCB2D277492AA7CBEE.</li>\n</ul>\n<h2>Source command or source object</h2>\n<p>Linux01 SSSD remediation evidence record.</p>\n<h2>Source repository</h2>\n<p>fontenotjeremy71-hub/jeremy-homelab-ops</p>\n<h2>Source commit</h2>\n<p>fb6c286873285778d88d6d5cfde0b9bd00b96f36</p>\n<h2>Source path</h2>\n<p><code>evidence/linux01-sssd-remediation-20260626-110159.md</code></p>\n<h2>Source file SHA-256</h2>\n<p><code>evidence/linux01-sssd-remediation-20260626-110159.md</code>: 04773570FBE305353F5EB370B8F9629AC335E35A7BEF7151A2CBB98D7371CC49</p>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed diagnostic artifact paths, backup filesystem path, account context, raw command history, and implementation details not needed to support the remediation claim. Retained hashes because they are part of the validation evidence.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Captured-state evidence only.</li>\n<li>Linux01 only.</li>\n<li>This does not claim that all Linux domain-authentication paths were tested.</li>\n<li>This does not prove production readiness, employer-system administration, or recurring assurance.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Validated</p></div></details><details><summary>Linux01 System, Network, and Domain Validation <small> / linux01-system-network-domain-validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/linux01-system-network-domain-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/f442266b3082\" data-route=\"documentation/f442266b3082\" class=\"\">Open document page</a></div><h2>Linux01 System, Network, and Domain Validation</h2>\n<h2>Claim supported</h2>\n<p>Direct Linux01 inventory, Proxmox inventory, and source reconciliation evidence support Linux01 VM association, Ubuntu version, kernel, VLAN, IP addressing, DNS, gateway, current-versus-historical address boundary, and directly proven domain integration state.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Proxmox VM association: VM 400 name linux01, running.</li>\n<li>Operating system: Ubuntu 26.04 LTS.</li>\n<li>Kernel: Linux 7.0.0-22-generic.</li>\n<li>Architecture: x86_64.</li>\n<li>VLAN: 30, from current source reconciliation.</li>\n<li>Interface state: ens18 UP.</li>\n<li>Current IPv4 address: 10.10.30.20/24.</li>\n<li>Default gateway: 10.10.30.1.</li>\n<li>DNS server: 10.10.20.10.</li>\n<li>DNS domain: ad.jeremyfontenot.online.</li>\n<li>Current-versus-historical boundary: current Linux01 address is 10.10.30.20/24; older Linux01 10.10.20.x evidence is historical.</li>\n<li>Domain integration state: realmd reports ad.jeremyfontenot.online configured as a Kerberos member, server software active-directory, client software SSSD, and domain identity resolution returned <code>resolved</code>.</li>\n<li>Kerberos configuration: present.</li>\n</ul>\n<h2>Source command or source object</h2>\n<ul>\n<li>Authenticated Linux01 target-local inventory result objects: Distribution, Kernel, IP addresses, Routes, DNS, realmd, Domain identity resolution, and Kerberos config.</li>\n<li>Proxmox read-only inventory object: <code>virtualMachines[]</code> entry for VM 400.</li>\n<li>Source reconciliation table for Linux01 VLAN and current-versus-historical address boundary.</li>\n</ul>\n<h2>Source repository</h2>\n<p>fontenotjeremy71-hub/jeremy-homelab-ops</p>\n<h2>Source commit</h2>\n<p>fb6c286873285778d88d6d5cfde0b9bd00b96f36</p>\n<h2>Source path</h2>\n<ul>\n<li><code>inventories/linux01-inventory-20260626-084312.json</code></li>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code></li>\n<li><code>evidence/home-lab-source-reconciliation-20260626-012606.md</code></li>\n</ul>\n<h2>Source file SHA-256</h2>\n<ul>\n<li><code>inventories/linux01-inventory-20260626-084312.json</code>: 75F82AF4882FA9C869C78C1AC127C5D4F37C5CB62F4E8894361A352695EFC40D</li>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code>: D652D1EF753E14242C07F84F19FBF09F642F07C3B09CFE2E98AA7F2B176ADE3D</li>\n<li><code>evidence/home-lab-source-reconciliation-20260626-012606.md</code>: 2D377A7A6703F8C3C5FBB77AA093569806DDB7939CFA88FD6A0ECF801484C3EE</li>\n</ul>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed executing account, machine identifiers, link-local IPv6 address, raw boot/session identifiers, unrelated package/service details, unnecessary filesystem paths, and distro metadata not needed for the public claim.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Captured-state evidence only.</li>\n<li>Domain integration is limited to the directly observed realmd, SSSD client, Kerberos config, and identity-resolution indicators.</li>\n<li>This artifact does not claim that all Linux domain-authentication paths were tested.</li>\n<li>Timeout or listener observations are not complete firewall validation.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Validated</p></div></details><details><summary>Proxmox Backup Configuration <small> / proxmox-backup-configuration.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-backup-configuration.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/fa0beca36156\" data-route=\"documentation/fa0beca36156\" class=\"\">Open document page</a></div><h2>Proxmox Backup Configuration</h2>\n<h2>Claim supported</h2>\n<p>Direct Proxmox backup configuration evidence supports the configured weekly snapshot job for primary lab VMs.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Backup job ID: backup-critical-lab-vms.</li>\n<li>Enabled state: enabled.</li>\n<li>Schedule: Sunday 02:00 (<code>sun 02:00</code>).</li>\n<li>Mode: snapshot.</li>\n<li>Compression: zstd.</li>\n<li>Retention: keep-last=4.</li>\n<li>Storage target: backup-hdd.</li>\n<li>Target VMs: 100, 200, 300, and 400.</li>\n</ul>\n<h2>Source command or source object</h2>\n<ul>\n<li>Proxmox read-only inventory object: <code>backupJobs[]</code>.</li>\n<li>Backup and restore validation text: backup job block with prune/retention details.</li>\n</ul>\n<h2>Source repository</h2>\n<p>fontenotjeremy71-hub/jeremy-homelab-ops</p>\n<h2>Source commit</h2>\n<p>fb6c286873285778d88d6d5cfde0b9bd00b96f36</p>\n<h2>Source path</h2>\n<ul>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code></li>\n<li><code>evidence/home-lab-backup-restore-validation-20260629.txt</code></li>\n</ul>\n<h2>Source file SHA-256</h2>\n<ul>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code>: D652D1EF753E14242C07F84F19FBF09F642F07C3B09CFE2E98AA7F2B176ADE3D</li>\n<li><code>evidence/home-lab-backup-restore-validation-20260629.txt</code>: 4637E848C9B318B8C74BB9C6E4569B3CC03E6686CE64FA367CF6DEC05FA52E13</li>\n</ul>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed scheduling metadata not needed for the claim, command context, host details, and any unrelated storage, VM, or task information.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Configuration presence does not prove that every recent backup task succeeded.</li>\n<li>This artifact does not claim successful recent backups for VMs 200 or 300 because no direct recent OK task output is published here.</li>\n<li>This artifact does not prove restore integrity, RTO, RPO, recurring restore assurance, or disaster-recovery readiness.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Configured</p></div></details><details><summary>Proxmox Backup Inventory <small> / proxmox-backup-inventory.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-backup-inventory.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/39f7bbaf9ecb\" data-route=\"documentation/39f7bbaf9ecb\" class=\"\">Open document page</a></div><h2>Proxmox Backup Inventory</h2>\n<h2>Claim supported</h2>\n<p>Direct backup inventory evidence supports active backup-hdd storage, retained archive presence by VM count, and the boundary that archive presence is not the same as recurring restore assurance.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Storage: backup-hdd.</li>\n<li>Storage path retained as claim-relevant evidence: <code>/mnt/pve/backup-hdd</code>.</li>\n<li>Storage status from current inventory: type <code>dir</code>, content <code>backup</code>, total 982,809,350,144 bytes, used 172,812,951,552 bytes, available 759,996,993,536 bytes.</li>\n<li>Backup validation storage view: 916 GB size, 127 GB used, 743 GB available, 15 percent used.</li>\n<li>Retained backup counts: VM 100 count 4, VM 200 count 4, VM 300 count 4, VM 400 count 4.</li>\n<li>No successful recent per-VM vzdump task status is claimed from this artifact.</li>\n<li>Operational limitation retained: Proxmox thin-pool risk is visible. The retained storage source directly shows a 428 GB thin pool and provisioned VM/snapshot thin volumes that exceed that physical thin-pool size. The requested auto-extension warning is retained as a limitation boundary; the retained source set inspected for this publication does not include a separate thin-pool auto-extension configuration dump.</li>\n</ul>\n<h2>Source command or source object</h2>\n<ul>\n<li>Proxmox read-only inventory object: <code>storage[]</code>.</li>\n<li>Backup and restore validation text: backup counts and storage block.</li>\n<li>Retained public storage evidence: Proxmox storage status, logical volume, and thin-pool usage sections.</li>\n</ul>\n<h2>Source repository</h2>\n<ul>\n<li>fontenotjeremy71-hub/jeremy-homelab-ops</li>\n<li>fontenotjeremy71-hub/jeremyfontenot, for the retained older public storage limitation artifact</li>\n</ul>\n<h2>Source commit</h2>\n<ul>\n<li>Operations source: fb6c286873285778d88d6d5cfde0b9bd00b96f36</li>\n<li>Website retained public evidence source: 5813445f3cc828e2146773299c47967292da7fd5</li>\n</ul>\n<h2>Source path</h2>\n<ul>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code></li>\n<li><code>evidence/home-lab-backup-restore-validation-20260629.txt</code></li>\n<li><code>evidence-library/projects/on-prem-home-lab/validated-2026-06-21/text/proxmox-storage-validation.txt</code></li>\n</ul>\n<h2>Source file SHA-256</h2>\n<ul>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code>: D652D1EF753E14242C07F84F19FBF09F642F07C3B09CFE2E98AA7F2B176ADE3D</li>\n<li><code>evidence/home-lab-backup-restore-validation-20260629.txt</code>: 4637E848C9B318B8C74BB9C6E4569B3CC03E6686CE64FA367CF6DEC05FA52E13</li>\n<li><code>evidence-library/projects/on-prem-home-lab/validated-2026-06-21/text/proxmox-storage-validation.txt</code>: 7F069AA31390D90D99F0000D6F6236A2B60F5D28F061668C0BBD5054FA93741F</li>\n</ul>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed PIDs, unrelated filesystems, device identifiers not needed for the claim, snapshot parent names, raw command history, and backup archive filenames. Retained the backup storage path because it is the public claim being validated.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Captured-state evidence only.</li>\n<li>Backup archive count does not prove backup integrity.</li>\n<li>No claim is made that all recent backup tasks succeeded.</li>\n<li>The thin-pool warning is an operational limitation and is not framed as a failed backup or failed restore.</li>\n<li>No RTO, RPO, production disaster-recovery readiness, or recurring restore assurance is claimed.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Documented / Limitation</p></div></details><details><summary>Proxmox Platform Inventory <small> / proxmox-platform-inventory.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-platform-inventory.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/05a0e7fbeefa\" data-route=\"documentation/05a0e7fbeefa\" class=\"\">Open document page</a></div><h2>Proxmox Platform Inventory</h2>\n<h2>Claim supported</h2>\n<p>Direct Proxmox inventory supports the personal nonproduction lab platform claim for Proxmox VE, primary VM IDs, VM names, running state, allocated vCPU, memory, disk, bridge placement, guest-agent state, and Linux01 VLAN tag where captured.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Proxmox VE version: 9.2.3.</li>\n<li>Proxmox kernel: Linux 7.0.12-1-pve.</li>\n<li>VM 100: pfsense-fw, running, 2 vCPU, 4 GB memory, 32 GB disk, bridges vmbr0 and vmbr1, guest agent not configured and not responding.</li>\n<li>VM 200: dc01, running, 2 vCPU, 4 GB memory, 80 GB disk, bridge vmbr1, guest agent not configured and not responding.</li>\n<li>VM 300: ws01, running, 2 vCPU, 4 GB memory, 80 GB disk, bridge vmbr1, guest agent not configured and not responding.</li>\n<li>VM 400: linux01, running, 2 vCPU, 2 GB memory, 40 GB disk, bridge vmbr1, guest agent configured and responding.</li>\n<li>Linux01 VLAN tag: 30, from the retained source reconciliation record.</li>\n</ul>\n<h2>Source command or source object</h2>\n<ul>\n<li>Proxmox read-only inventory object: <code>version</code>, <code>node.kernel</code>, <code>virtualMachines[]</code>, and <code>storage[]</code>.</li>\n<li>Source reconciliation object: current command/API evidence row for Linux01 Proxmox VM tag.</li>\n</ul>\n<h2>Source repository</h2>\n<p>fontenotjeremy71-hub/jeremy-homelab-ops</p>\n<h2>Source commit</h2>\n<p>fb6c286873285778d88d6d5cfde0b9bd00b96f36</p>\n<h2>Source path</h2>\n<ul>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code></li>\n<li><code>evidence/home-lab-source-reconciliation-20260626-012606.md</code></li>\n</ul>\n<h2>Source file SHA-256</h2>\n<ul>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code>: D652D1EF753E14242C07F84F19FBF09F642F07C3B09CFE2E98AA7F2B176ADE3D</li>\n<li><code>evidence/home-lab-source-reconciliation-20260626-012606.md</code>: 2D377A7A6703F8C3C5FBB77AA093569806DDB7939CFA88FD6A0ECF801484C3EE</li>\n</ul>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed node uptime, repository ID, host resource details not needed for the public claim, snapshot parent names, raw paths unrelated to the platform claim, and any fields not required to prove the listed inventory values.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Captured-state evidence only; this does not prove ongoing availability.</li>\n<li>Proxmox inventory does not prove guest operating-system health, pfSense firewall policy, Active Directory health, backup restore integrity, or Windows service state.</li>\n<li>Linux01 VLAN tag is supported by the reconciliation source, not by the VM list object alone.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Validated</p></div></details><details><summary>Proxmox Restore Validation <small> / proxmox-restore-validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-restore-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/9f8e98caeacd\" data-route=\"documentation/9f8e98caeacd\" class=\"\">Open document page</a></div><h2>Proxmox Restore Validation</h2>\n<h2>Claim supported</h2>\n<p>Direct restore validation evidence supports one isolated Linux01 restore drill from source VM 400 to temporary VM 401.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Source VM: 400.</li>\n<li>Temporary restore VM: 401.</li>\n<li>Restored disk size boundary: VM 400 boot disk shown as 40 GB in the retained restore validation source.</li>\n<li>Temporary VM network isolation: temporary VM network isolated before boot.</li>\n<li>Guest validation: Ubuntu 26.04 LTS boot and QEMU Guest Agent response were validated in the retained restore evidence.</li>\n<li>Cleanup: temporary VM 401 was shut down and purged successfully.</li>\n<li>The source set inspected for this publication does not include a retained per-command restore transcript with archive filename, progress percentage, or literal final <code>TASK OK</code> line; those details are therefore not claimed here.</li>\n<li>Operational limitation retained: Proxmox thin-pool risk remains visible and is not framed as a failed restore.</li>\n</ul>\n<h2>Source command or source object</h2>\n<p>Backup and restore validation text: VM state and restore drill sections.</p>\n<h2>Source repository</h2>\n<p>fontenotjeremy71-hub/jeremy-homelab-ops</p>\n<h2>Source commit</h2>\n<p>fb6c286873285778d88d6d5cfde0b9bd00b96f36</p>\n<h2>Source path</h2>\n<p><code>evidence/home-lab-backup-restore-validation-20260629.txt</code></p>\n<h2>Source file SHA-256</h2>\n<p><code>evidence/home-lab-backup-restore-validation-20260629.txt</code>: 4637E848C9B318B8C74BB9C6E4569B3CC03E6686CE64FA367CF6DEC05FA52E13</p>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed PIDs and retained only the VM IDs, restore scope, network isolation, guest identity, guest-agent response, and cleanup outcome needed to support the public claim.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Captured-state evidence only.</li>\n<li>One isolated Linux01 restore drill only.</li>\n<li>No recurring restore assurance.</li>\n<li>No RTO or RPO claim.</li>\n<li>No disaster-recovery readiness, SLA, production, or employer-system claim.</li>\n<li>Thin-pool warnings are operational limitations and are not evidence of a failed restore.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Tested</p></div></details><details><summary>WS01 System and Domain Validation <small> / ws01-system-and-domain-validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/ws01-system-and-domain-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/34b581f1eabe\" data-route=\"documentation/34b581f1eabe\" class=\"\">Open document page</a></div><h2>WS01 System and Domain Validation</h2>\n<h2>Claim supported</h2>\n<p>Direct WS01 inventory and Proxmox inventory support the WS01 system, VM association, domain membership, and network-state claims for the personal nonproduction lab.</p>\n<h2>Directly observed values</h2>\n<ul>\n<li>Proxmox VM association: VM 300 name ws01, running.</li>\n<li>Windows edition: Microsoft Windows 10 Pro.</li>\n<li>Windows version: 10.0.19045.</li>\n<li>Windows build: 19045.</li>\n<li>Domain membership: WS01 is part of domain ad.jeremyfontenot.online.</li>\n<li>Secure channel result: true.</li>\n<li>Network interface: Ethernet.</li>\n<li>IPv4 address: 10.10.20.100.</li>\n<li>Default gateway: 10.10.20.1.</li>\n<li>DNS server: 10.10.20.10.</li>\n<li>DHCP enabled: true.</li>\n<li>DHCP server: 10.10.20.10.</li>\n<li>Current supported OS reconciliation: Windows 10 Pro 10.0.19045 is the supported current value in the retained WS01 inventory.</li>\n</ul>\n<h2>Source command or source object</h2>\n<ul>\n<li>Authenticated WS01 target-local inventory result objects: OperatingSystem, NetworkConfiguration, DomainMembership, and SecureChannel.</li>\n<li>Proxmox read-only inventory object: <code>virtualMachines[]</code> entry for VM 300.</li>\n</ul>\n<h2>Source repository</h2>\n<p>fontenotjeremy71-hub/jeremy-homelab-ops</p>\n<h2>Source commit</h2>\n<p>fb6c286873285778d88d6d5cfde0b9bd00b96f36</p>\n<h2>Source path</h2>\n<ul>\n<li><code>inventories/ws01-inventory-20260626-012952.json</code></li>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code></li>\n</ul>\n<h2>Source file SHA-256</h2>\n<ul>\n<li><code>inventories/ws01-inventory-20260626-012952.json</code>: 1438FA0F72F241E2613C5D35B797492FFC754B0E818A74154DE38DD74082A6B1</li>\n<li><code>inventories/proxmox-inventory-20260626-010601.json</code>: D652D1EF753E14242C07F84F19FBF09F642F07C3B09CFE2E98AA7F2B176ADE3D</li>\n</ul>\n<h2>Public artifact SHA-256</h2>\n<p>Recorded in <code>evidence-library/integrity/evidence-hashes.json</code> for this artifact path. The self-hash is recorded outside this file so the digest does not invalidate itself.</p>\n<h2>Sanitization performed</h2>\n<p>Removed executing account, local administrator membership, SIDs, GUIDs, group policy raw details, software inventory, unrelated services, event data, and local profile or path information.</p>\n<h2>Limitations</h2>\n<ul>\n<li>Personal nonproduction home lab only.</li>\n<li>Captured-state evidence only.</li>\n<li>This artifact validates WS01 inventory values and domain membership state only.</li>\n<li>It does not claim production support, employer-system administration, complete endpoint hardening, or complete application/service validation.</li>\n</ul>\n<h2>Validation date</h2>\n<p>2026-06-30</p>\n<h2>Classification</h2>\n<p>Validated</p></div></details><details><summary>Redaction Log <small> / redaction-log.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/redaction-log.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/78e82a05f0f8\" data-route=\"documentation/78e82a05f0f8\" class=\"\">Open document page</a></div><h2>Redaction Log</h2>\n<p>No credentials, private keys, tokens, cookies, or secrets were copied. Public summaries avoid private repository links and retain only reviewer-safe claim context.</p>\n<p>For the direct evidence artifacts, usernames, executing accounts, MAC addresses, UUIDs, VM generation IDs, UPIDs, PIDs, SIDs, internal object GUIDs, absolute local Windows user paths, unnecessary root paths, unrelated installed features, unrelated command history, unnecessary timestamps, and snapshot parent names were removed or omitted where they were not required to support the stated public claim.</p>\n<p>The Proxmox thin-pool warning is retained as an operational limitation. It is not framed as a failed restore or infrastructure failure.</p></div></details><details><summary>Backup and Restore Validation <small> / backup-and-restore-validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/backup-and-restore-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/5b8e4cc34ba2\" data-route=\"documentation/5b8e4cc34ba2\" class=\"\">Open document page</a></div><h2>Backup and Restore Validation</h2>\n<h2>Status</h2>\n<p>Partially validated by retained June 24 documentation. No restore test was repeated during the 2026-06-26 read-only operations run.</p>\n<h2>Current Evidence</h2>\n<p>Read-only Proxmox inventory observed an enabled scheduled backup job:</p>\n<ul>\n<li>Job ID: <code>backup-critical-lab-vms</code></li>\n<li>VMs: <code>100,200,300,400</code></li>\n<li>Storage: <code>backup-hdd</code></li>\n<li>Schedule: <code>sun 02:00</code></li>\n<li>Mode: <code>snapshot</code></li>\n<li>Compression: <code>zstd</code></li>\n</ul>\n<p>Storage inventory observed backup storage named <code>backup-hdd</code> at <code>/mnt/pve/backup-hdd</code>.</p>\n<p>The June 24 IP-address-documented portfolio documentation records isolated startup restore checks for:</p>\n<ul>\n<li>WS01 restored temporarily as VM 500, with the NIC link down before startup.</li>\n<li>Linux01 restored temporarily as VM 600, with the NIC link down before startup.</li>\n</ul>\n<p>The current Proxmox inventory no longer shows VM 500 or VM 600, which is consistent with the documentation stating both temporary restore VMs were removed after validation.</p>\n<h2>Required Future Validation</h2>\n<p>Before claiming recurring restore assurance, perform an approved fresh restore validation that documents:</p>\n<ul>\n<li>Exact VM or test restore target</li>\n<li>Backup file selected</li>\n<li>Restore command or UI action</li>\n<li>Network isolation approach</li>\n<li>Validation checks</li>\n<li>Cleanup steps</li>\n<li>Rollback procedure</li>\n<li>Evidence proving successful boot or file-level recovery</li>\n</ul>\n<h2>Claim Boundary</h2>\n<p>The current operations repository validates backup job configuration visibility and retains documentation of June 24 isolated startup restore checks. It does not validate current backup archive integrity, recurring restore success, RTO, RPO, or disaster-recovery readiness.</p></div></details><details><summary>Centralized Logging Expansion Change Plan <small> / centralized-logging-expansion.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/centralized-logging-expansion.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/f9d38f44ed30\" data-route=\"documentation/f9d38f44ed30\" class=\"\">Open document page</a></div><h2>Centralized Logging Expansion Change Plan</h2>\n<h2>Status</h2>\n<p>Planned. Approval required before implementation.</p>\n<h2>Current State</h2>\n<p>June 24 documentation records pfSense forwarding selected system, firewall, authentication, VPN, and gateway events to Linux01 at <code>10.10.30.20:514</code>, with Linux01 rsyslog listeners and alert-match logging. Current Proxmox metadata validates Linux01 is running on VLAN 30 and QEMU guest agent is responding.</p>\n<p>The June 26 authenticated Linux01 target-local inventory validates rsyslog runtime state from inside the guest. Linux01 reports rsyslog active, TCP and UDP 514 listening on <code>10.10.30.20</code>, remote collector configuration under <code>/etc/rsyslog.d/10-remote-collector.conf</code>, pfSense alert file configuration under <code>/etc/rsyslog.d/05-pfsense-alerts.conf</code>, and rsyslog logrotate configuration under <code>/etc/logrotate.d/rsyslog</code>.</p>\n<h2>Evidence</h2>\n<ul>\n<li>Proxmox current API: Linux01 VM 400 running, <code>tag=30</code>, guest agent responding.</li>\n<li>DNS current command: <code>linux01.ad.jeremyfontenot.online</code> resolves to <code>10.10.30.20</code>.</li>\n<li>June 24 IP-address-documented documentation: pfSense-to-Linux01 rsyslog forwarding and alert logging documented.</li>\n<li>Current reachability check: TCP 514 from the current client path timed out and is not treated as rsyslog service failure.</li>\n<li><code>inventories/linux01-inventory-20260626-020257.json</code>: SSH from the management execution path timed out; guest-side rsyslog state was <code>NOT TESTED</code>.</li>\n<li><code>inventories/linux01-inventory-20260626-084312.json</code>: authenticated target-local Linux01 inventory validates rsyslog service/listener state, route/DNS state, AD integration indicators, disk capacity, and logrotate summary.</li>\n<li><code>evidence/linux01-local-inventory-validation-20260626-035220.md</code>: sanitized evidence for Linux01 target-local inventory import and validation.</li>\n</ul>\n<h2>Target State</h2>\n<p>Expand centralized logging beyond pfSense by adding documented, least-privilege log forwarding or collection for Windows and Proxmox sources without weakening existing firewall policy.</p>\n<p>Candidate target design, pending implementation approval:</p>\n<ul>\n<li>Keep Linux01 as the primary syslog receiver because target-local evidence now confirms available root filesystem capacity, active rsyslog listeners on <code>10.10.30.20:514</code> for TCP and UDP, and rsyslog log rotation. UFW source restrictions still require a clearer privileged summary before any new source is added.</li>\n<li>Evaluate Windows Event Forwarding for DC01 and WS01 with DC01 as the likely Windows Event Collector only if existing domain policy and firewall posture support it safely. Do not make DC01 a collector until a separate change plan covers subscription type, source computers, event channels, retention, and rollback.</li>\n<li>Evaluate Proxmox remote syslog forwarding to Linux01 or another approved receiver only after documenting source IP, destination IP, protocol, port, and retention.</li>\n<li>Keep Linux local logs on Linux01 in local journald/rsyslog paths unless an approved monitoring platform is introduced.</li>\n</ul>\n<h2>Exact Systems</h2>\n<ul>\n<li>Linux01 VM 400</li>\n<li>DC01 VM 200</li>\n<li>WS01 VM 300</li>\n<li>Proxmox host <code>192.168.0.242</code></li>\n<li>pfSense VM 100</li>\n</ul>\n<h2>Exact Commands</h2>\n<p>Discovery and planning only until approved:</p>\n<pre><code class=\"language-powershell\">pwsh -NoProfile -File .\\scripts\\linux\\Get-LinuxReadOnlyInventory.ps1\npwsh -NoProfile -File .\\scripts\\active-directory\\Invoke-DC01LocalReadOnlyCollection.ps1\npwsh -NoProfile -File .\\scripts\\windows-server\\Invoke-WS01LocalReadOnlyCollection.ps1\n</code></pre>\n<p>Implementation commands are intentionally not authorized in this change plan. Linux01 rsyslog state has been validated, but Windows Event Forwarding, Proxmox logging state, pfSense sender configuration, and any firewall or GPO requirements still need a dedicated approved implementation plan.</p>\n<p>Target-local validation commands prepared for the next inventory pass:</p>\n<pre><code class=\"language-bash\">run_id=\"$(date -u +%Y%m%d-%H%M%S)\"\nbash ./Invoke-Linux01LocalReadOnlyCollection.sh \"/tmp/linux01-inventory-${run_id}.json\"\n</code></pre>\n<h2>Required Privileges</h2>\n<ul>\n<li>Read-only collection: existing approved sessions.</li>\n<li>Any logging configuration change: administrative privileges on the target system and explicit approval.</li>\n</ul>\n<h2>Network Requirements</h2>\n<p>No firewall openings are approved by this plan. Any proposed log path must identify source, destination, protocol, port, and existing firewall state before implementation.</p>\n<p>Expected network review before implementation:</p>\n<ul>\n<li>pfSense to Linux01 syslog path: verify existing source restriction, protocol, and port from configuration evidence before changing anything.</li>\n<li>DC01 and WS01 to collector: identify whether Windows Event Forwarding uses existing domain/Kerberos paths or requires new firewall scope. Any firewall or GPO change requires a dedicated approved plan.</li>\n<li>Proxmox to Linux01 syslog: document management-network source, Linux VLAN destination, routing path, and firewall requirements before implementation.</li>\n</ul>\n<h2>Security Impact</h2>\n<p>Positive if implemented carefully: stronger audit trail and troubleshooting visibility. Risk if overbroad: excessive log exposure, sensitive log retention, or unnecessary inter-network access.</p>\n<p>Security controls required in the implementation plan:</p>\n<ul>\n<li>Exclude credentials, private keys, Kerberos tickets, certificate private material, and sensitive raw log excerpts from repository evidence.</li>\n<li>Prefer source-restricted firewall rules over broad subnet acceptance if any new rules are approved.</li>\n<li>Document whether logs are unauthenticated syslog, authenticated Windows Event Forwarding, or locally collected files.</li>\n<li>Define integrity expectations honestly; plain syslog improves visibility but does not provide strong transport integrity by itself.</li>\n</ul>\n<h2>Service-Impact Risk</h2>\n<p>Low for discovery. Medium for configuration changes because logging service reloads or firewall changes could disrupt visibility or access if done incorrectly.</p>\n<p>Implementation must avoid service restarts unless the approved plan explicitly requires them. Prefer configuration validation and reload-only workflows where technically appropriate.</p>\n<h2>Retention, Rotation, and Capacity</h2>\n<p>Linux01 authenticated inventory currently supports:</p>\n<ul>\n<li>Root filesystem capacity: 19 GiB total, 13 GiB available, 29 percent used.</li>\n<li>Current rsyslog listener state: TCP and UDP 514 listening on <code>10.10.30.20</code>.</li>\n<li>Current rsyslog destination templates/configuration: <code>/var/log/remote/%FROMHOST-IP%/messages.log</code> and <code>/var/log/remote/pfsense-alerts.log</code> are configured.</li>\n<li>Current logrotate policy for rsyslog-managed files: weekly rotation, four rotations, compression, missing files tolerated, empty files skipped.</li>\n<li>Disk-use alert threshold. Initial planning threshold: warning at 80 percent used, critical at 90 percent used, pending Jeremy approval.</li>\n<li>Failure behavior if Linux01 is unavailable: sources should continue local logging and must not block authentication, DNS, DHCP, routing, or VM operation.</li>\n</ul>\n<h2>Alerting</h2>\n<p>Alerting remains planned. Candidate non-invasive alerts after receiver validation:</p>\n<ul>\n<li>Linux01 log filesystem above threshold.</li>\n<li>rsyslog service inactive.</li>\n<li>No pfSense log receipt within an expected interval.</li>\n<li>Proxmox backup job failure or missing latest backup.</li>\n<li>Windows Event Forwarding subscription source inactive, if WEF is later approved.</li>\n</ul>\n<h2>Validation</h2>\n<ul>\n<li>Confirm log sender service state.</li>\n<li>Confirm listener state on Linux01.</li>\n<li>Send one controlled non-sensitive test event.</li>\n<li>Confirm event arrives in the expected file or index.</li>\n<li>Confirm no credentials or private data are written to repository evidence.</li>\n</ul>\n<h2>Rollback</h2>\n<ul>\n<li>Revert only the logging configuration added by the approved implementation.</li>\n<li>Restore any exported pre-change configuration where applicable.</li>\n<li>Restart/reload only affected logging services if required and approved.</li>\n</ul>\n<h2>Evidence Capture</h2>\n<ul>\n<li>Timestamped pre-change inventory.</li>\n<li>Sanitized configuration diff or export.</li>\n<li>Exact command transcript with secrets omitted.</li>\n<li>Controlled test-event result.</li>\n<li>Rollback verification.</li>\n</ul>\n<h2>Approval Requirement</h2>\n<p>Explicit Jeremy approval is required before any logging configuration, firewall, service, package, or scheduled-task change.</p>\n<h2>Claim Boundary</h2>\n<p>This plan is implementation-ready documentation only. It does not implement centralized logging expansion, change firewall policy, install software, restart services, or modify any infrastructure system. Linux01 rsyslog receiver state is now validated by target-local inventory; additional sources and alerting remain planned until separately approved and implemented.</p></div></details><details><summary>Home Lab Inventory and Validation Evidence <small> / home-lab-inventory-validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/home-lab-inventory-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/509dde796a34\" data-route=\"documentation/509dde796a34\" class=\"\">Open document page</a></div><h2>Home Lab Inventory and Validation Evidence</h2>\n<ul>\n<li>Timestamp: <code>2026-06-26T01:06:01.2273166-05:00</code></li>\n<li>Source workstation: <code>DESKTOP-MR3F9A1</code></li>\n<li>Repository: <code>C:\\Users\\jeremy\\Documents\\projects\\jeremy-homelab-ops</code></li>\n<li>Execution mode: read-only discovery, inventory, and validation</li>\n<li>Infrastructure configuration changes: <code>0</code></li>\n</ul>\n<h2>Commands and Access Paths</h2>\n<ul>\n<li>Proxmox inventory: <code>mcp__home_lab</code> read-only Proxmox tools.</li>\n<li>Repository validation: <code>pwsh -NoProfile -File .\\tests\\Test-RepositoryStructure.ps1 -WriteEvidence</code></li>\n<li>Connectivity validation: <code>pwsh -NoProfile -File .\\scripts\\monitoring\\Test-HomeLabConnectivity.ps1 -TimeoutMilliseconds 1000</code></li>\n<li>DNS validation: <code>Resolve-DnsName ad.jeremyfontenot.online -Server 10.10.20.10</code></li>\n<li>Route validation: <code>route.exe print -4</code></li>\n<li>Domain discovery: <code>nltest /dsgetdc:ad.jeremyfontenot.online</code>, <code>nltest /dclist:ad.jeremyfontenot.online</code>, <code>nltest /sc_query:JFAD</code></li>\n<li>Module availability: <code>Get-Command Get-ADDomain</code>, <code>Get-Command Get-GPO</code>, <code>Get-Command Get-DhcpServerv4Scope</code>, <code>Get-Command Get-DnsServerZone</code></li>\n</ul>\n<h2>Validated Results</h2>\n<div class=\"table-scroll\"><table>\n<thead>\n<tr>\n<th>Check</th>\n<th>Status</th>\n<th>Observed result</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Proxmox API inventory</td>\n<td>PASS</td>\n<td>Version <code>9.2.3</code>, node <code>proxmox</code> online, VMs <code>100</code>, <code>200</code>, <code>300</code>, and <code>400</code> running.</td>\n</tr>\n<tr>\n<td>Proxmox storage inventory</td>\n<td>PASS</td>\n<td><code>local-lvm</code>, <code>backup-hdd</code>, and <code>local</code> reported capacity and usage.</td>\n</tr>\n<tr>\n<td>Proxmox backup job inventory</td>\n<td>PASS</td>\n<td>Job <code>backup-critical-lab-vms</code> enabled for VMs <code>100,200,300,400</code>, storage <code>backup-hdd</code>, schedule <code>sun 02:00</code>.</td>\n</tr>\n<tr>\n<td>Proxmox management TCP</td>\n<td>PASS</td>\n<td><code>192.168.0.242:8006</code> connected in <code>67 ms</code>.</td>\n</tr>\n<tr>\n<td>DC01 DNS TCP</td>\n<td>PASS</td>\n<td><code>10.10.20.10:53</code> connected in <code>6 ms</code>.</td>\n</tr>\n<tr>\n<td>Domain DNS resolution</td>\n<td>PASS</td>\n<td><code>ad.jeremyfontenot.online</code> resolved to <code>10.10.20.10</code> using server <code>10.10.20.10</code>.</td>\n</tr>\n<tr>\n<td>VPN route</td>\n<td>PASS</td>\n<td>Route table includes <code>10.10.20.0/24</code> via <code>10.10.40.1</code> from <code>10.10.40.2</code>.</td>\n</tr>\n<tr>\n<td>Repository validation</td>\n<td>PASS</td>\n<td>Repository validation completed with no failing checks.</td>\n</tr>\n</tbody>\n</table></div>\n<h2>Warnings and Inconclusive Results</h2>\n<div class=\"table-scroll\"><table>\n<thead>\n<tr>\n<th>Check</th>\n<th>Status</th>\n<th>Observed result</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>pfSense LAN HTTPS TCP</td>\n<td>WARNING</td>\n<td><code>10.10.20.1:443</code> timed out after <code>1000 ms</code>.</td>\n</tr>\n<tr>\n<td>DC01 Kerberos TCP</td>\n<td>WARNING</td>\n<td><code>10.10.20.10:88</code> timed out after <code>1000 ms</code>.</td>\n</tr>\n<tr>\n<td>DC01 LDAP TCP</td>\n<td>WARNING</td>\n<td><code>10.10.20.10:389</code> timed out after <code>1000 ms</code>.</td>\n</tr>\n<tr>\n<td>DC01 SMB TCP</td>\n<td>WARNING</td>\n<td><code>10.10.20.10:445</code> timed out after <code>1000 ms</code>.</td>\n</tr>\n<tr>\n<td>DC01 WinRM TCP</td>\n<td>WARNING</td>\n<td><code>10.10.20.10:5985</code> timed out after <code>1000 ms</code>.</td>\n</tr>\n<tr>\n<td>Domain controller discovery</td>\n<td>INCONCLUSIVE</td>\n<td><code>nltest /dsgetdc:ad.jeremyfontenot.online</code> returned <code>ERROR_NO_SUCH_DOMAIN</code> from the current workstation context.</td>\n</tr>\n<tr>\n<td>Secure channel query</td>\n<td>INCONCLUSIVE</td>\n<td><code>nltest /sc_query:JFAD</code> returned <code>RPC_S_SERVER_UNAVAILABLE</code> from the current workstation context.</td>\n</tr>\n<tr>\n<td>DNS Server module inventory</td>\n<td>NOT TESTED</td>\n<td><code>Get-DnsServerZone</code> is not installed on the management workstation.</td>\n</tr>\n<tr>\n<td>DHCP Server module inventory</td>\n<td>NOT TESTED</td>\n<td><code>Get-DhcpServerv4Scope</code> is not installed on the management workstation.</td>\n</tr>\n<tr>\n<td>Group Policy inventory</td>\n<td>NOT TESTED</td>\n<td><code>Get-GPO</code> is not installed on the management workstation.</td>\n</tr>\n<tr>\n<td>WS01 guest inventory</td>\n<td>NOT TESTED</td>\n<td>No verified WS01 management IP or guest-agent response was available in this run.</td>\n</tr>\n</tbody>\n</table></div>\n<h2>Claim Boundary</h2>\n<p>This evidence records read-only repository validation, Proxmox connector inventory, local route inspection, DNS resolution, and bounded TCP reachability checks. It does not validate pfSense configuration, firewall policy, NAT policy, VPN configuration correctness, Active Directory health, DNS zone health, DHCP scope health, Group Policy processing, WS01 domain relationship, backup restore integrity, or administrative access to Windows guests.</p>\n<p>Timeouts, module absence, and <code>nltest</code> failures are recorded observations only. They are not proof that the corresponding infrastructure components are offline, misconfigured, or unavailable.</p></div></details><details><summary>Home Lab Source of Truth <small> / home-lab-source-of-truth.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/home-lab-source-of-truth.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/d4b3c3e6c035\" data-route=\"documentation/d4b3c3e6c035\" class=\"\">Open document page</a></div><h2>Home Lab Source of Truth</h2>\n<h2>Status</h2>\n<p>Current as of the 2026-06-26 read-only reconciliation run.</p>\n<h2>Source Precedence</h2>\n<ol>\n<li>Current command output, API output, guest-agent output, or authenticated system query.</li>\n<li>New timestamped evidence collected during this run.</li>\n<li>Current <code>jeremy-homelab-ops</code> inventories and evidence.</li>\n<li>Current <code>main</code> branch of <code>fontenotjeremy71-hub/jeremyfontenot</code>.</li>\n<li>June 24, 2026 IP-address-documented portfolio documentation.</li>\n<li>June 21, 2026 curated historical evidence.</li>\n<li>Currently deployed website content.</li>\n<li>Old prompts, summaries, assumptions, or undocumented memory.</li>\n</ol>\n<h2>Current Supported Architecture</h2>\n<div class=\"table-scroll\"><table>\n<thead>\n<tr>\n<th>Component</th>\n<th>Current supported value</th>\n<th>Classification</th>\n<th>Evidence</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Physical host</td>\n<td>Dell PowerEdge R710</td>\n<td>Current documentation</td>\n<td>Portfolio and operations docs</td>\n</tr>\n<tr>\n<td>Hypervisor</td>\n<td>Proxmox VE <code>9.2.3</code></td>\n<td>Current</td>\n<td>Proxmox API</td>\n</tr>\n<tr>\n<td>Proxmox management</td>\n<td><code>192.168.0.242/24</code>, gateway <code>192.168.0.1</code></td>\n<td>Current</td>\n<td>Proxmox API and TCP validation</td>\n</tr>\n<tr>\n<td>pfSense</td>\n<td>VM 100 <code>pfsense-fw</code></td>\n<td>Current</td>\n<td>Proxmox API</td>\n</tr>\n<tr>\n<td>pfSense WAN</td>\n<td><code>192.168.0.205/24</code></td>\n<td>Current documentation, not re-queried from pfSense</td>\n<td>June 24 DOCX</td>\n</tr>\n<tr>\n<td>pfSense LAN</td>\n<td><code>10.10.20.1/24</code></td>\n<td>Current documentation</td>\n<td>June 24 DOCX and topology</td>\n</tr>\n<tr>\n<td>Linux VLAN gateway</td>\n<td><code>10.10.30.1/24</code></td>\n<td>Current documentation</td>\n<td>June 24 DOCX</td>\n</tr>\n<tr>\n<td>OpenVPN network</td>\n<td><code>10.10.40.0/24</code></td>\n<td>Current documentation plus route evidence</td>\n<td>June 24 DOCX and local route</td>\n</tr>\n<tr>\n<td>DC01</td>\n<td>VM 200, <code>10.10.20.10/24</code>, Windows Server 2022 domain controller</td>\n<td>Current authenticated guest inventory</td>\n<td>Proxmox API, DNS/RDP validation, <code>inventories/dc01-inventory-20260626-022543.json</code></td>\n</tr>\n<tr>\n<td>WS01</td>\n<td>VM 300, <code>10.10.20.100/24</code>, Windows domain workstation</td>\n<td>Current authenticated guest inventory</td>\n<td>Proxmox API, <code>inventories/ws01-inventory-20260626-012952.json</code></td>\n</tr>\n<tr>\n<td>Linux01</td>\n<td>VM 400, <code>10.10.30.20/24</code>, VLAN 30, Ubuntu 26.04 LTS domain member</td>\n<td>Current authenticated guest inventory</td>\n<td>Proxmox API, DNS validation, <code>inventories/linux01-inventory-20260626-084312.json</code></td>\n</tr>\n<tr>\n<td>AD domain</td>\n<td><code>ad.jeremyfontenot.online</code></td>\n<td>Current authenticated guest inventory</td>\n<td>DC01 target-local inventory, 2026-06-26</td>\n</tr>\n<tr>\n<td>NetBIOS domain</td>\n<td><code>JFAD</code></td>\n<td>Current authenticated guest inventory</td>\n<td>DC01 target-local inventory, 2026-06-26</td>\n</tr>\n<tr>\n<td>Backup storage</td>\n<td><code>backup-hdd</code> at <code>/mnt/pve/backup-hdd</code></td>\n<td>Current</td>\n<td>Proxmox API</td>\n</tr>\n<tr>\n<td>Backup job</td>\n<td><code>backup-critical-lab-vms</code>, Sunday 02:00, snapshot, zstd, VMs 100/200/300/400</td>\n<td>Current</td>\n<td>Proxmox API</td>\n</tr>\n</tbody>\n</table></div>\n<h2>Historical or Stale Values</h2>\n<div class=\"table-scroll\"><table>\n<thead>\n<tr>\n<th>Value</th>\n<th>Classification</th>\n<th>Current handling</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Linux01 <code>10.10.20.20/24</code></td>\n<td>Historical</td>\n<td>Retained as pre-VLAN 30 address only</td>\n</tr>\n<tr>\n<td>Linux01 DHCP <code>10.10.20.101</code></td>\n<td>Historical</td>\n<td>Retained as initial setup address only</td>\n</tr>\n<tr>\n<td><code>backup-nvme</code> or <code>/mnt/pve/backup-nvme</code></td>\n<td>Stale or inconclusive</td>\n<td>Not current unless future evidence proves rename/replacement</td>\n</tr>\n<tr>\n<td>Direct WAN-side RDP forwarding</td>\n<td>Historical</td>\n<td>Current design uses OpenVPN-only RDP path</td>\n</tr>\n<tr>\n<td>June 21 restore outstanding limitation</td>\n<td>Historical</td>\n<td>Superseded by June 24 isolated restore documentation, not re-run during this ops pass</td>\n</tr>\n</tbody>\n</table></div>\n<h2>Claim Boundary</h2>\n<p>This file corrects explanatory documentation using current evidence. It does not modify historical evidence and does not claim live guest OS internals unless current command output or explicitly cited retained evidence supports the claim.</p>\n<p>The June 26 target-local workflow imported authenticated DC01 evidence in <code>inventories/dc01-inventory-20260626-022543.json</code> and <code>evidence/dc01-local-inventory-validation-20260626-022811.md</code>. It imported authenticated WS01 evidence in <code>inventories/ws01-inventory-20260626-012952.json</code> and <code>evidence/ws01-local-inventory-validation-20260626-033405.md</code>. It also imported authenticated Linux01 evidence in <code>inventories/linux01-inventory-20260626-084312.json</code> and <code>evidence/linux01-local-inventory-validation-20260626-035220.md</code>.</p></div></details><details><summary>Home Lab Source Reconciliation Evidence <small> / home-lab-source-reconciliation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/home-lab-source-reconciliation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/759c75076daf\" data-route=\"documentation/759c75076daf\" class=\"\">Open document page</a></div><h2>Home Lab Source Reconciliation Evidence</h2>\n<ul>\n<li>Timestamp: <code>2026-06-26T01:26:06.6980689-05:00</code></li>\n<li>Source workstation: <code>DESKTOP-MR3F9A1</code></li>\n<li>Operations repository: <code>C:\\Users\\jeremy\\Documents\\projects\\jeremy-homelab-ops</code></li>\n<li>Portfolio repository: <code>C:\\Users\\jeremy\\Documents\\projects\\jeremyfontenot</code></li>\n<li>Deployed page inspected: <code>https://jeremyfontenot.online/on-prem-home-lab.html</code></li>\n<li>Infrastructure changes made: <code>0</code></li>\n</ul>\n<h2>Current Command/API Evidence</h2>\n<div class=\"table-scroll\"><table>\n<thead>\n<tr>\n<th>Component</th>\n<th>Result</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Proxmox version</td>\n<td><code>9.2.3</code></td>\n</tr>\n<tr>\n<td>VM 100</td>\n<td><code>pfsense-fw</code>, running, vmbr0 and vmbr1</td>\n</tr>\n<tr>\n<td>VM 200</td>\n<td><code>dc01</code>, running, vmbr1</td>\n</tr>\n<tr>\n<td>VM 300</td>\n<td><code>ws01</code>, running, vmbr1, guest agent disabled</td>\n</tr>\n<tr>\n<td>VM 400</td>\n<td><code>linux01</code>, running, vmbr1, <code>tag=30</code>, QEMU guest agent responding</td>\n</tr>\n<tr>\n<td>Backup storage</td>\n<td><code>backup-hdd</code>, path <code>/mnt/pve/backup-hdd</code>, active</td>\n</tr>\n<tr>\n<td>Backup job</td>\n<td><code>backup-critical-lab-vms</code>, enabled, <code>sun 02:00</code>, snapshot, zstd, VMs <code>100,200,300,400</code></td>\n</tr>\n<tr>\n<td>Linux01 DNS</td>\n<td><code>linux01.ad.jeremyfontenot.online</code> resolves to <code>10.10.30.20</code></td>\n</tr>\n<tr>\n<td>Linux01 PTR</td>\n<td><code>10.10.30.20</code> resolves to <code>linux01.ad.jeremyfontenot.online</code></td>\n</tr>\n<tr>\n<td>VPN path</td>\n<td>DC01 DNS TCP 53 and RDP TCP 3389 reachable</td>\n</tr>\n<tr>\n<td>Expected block</td>\n<td>DC01 SMB TCP 445 and pfSense WAN direct RDP TCP 3389 timed out</td>\n</tr>\n</tbody>\n</table></div>\n<h2>Conflicts</h2>\n<div class=\"table-scroll\"><table>\n<thead>\n<tr>\n<th>Component</th>\n<th>Higher-precedence current value</th>\n<th>Lower-precedence conflicting value</th>\n<th>Classification</th>\n<th>Action</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Linux01 IP</td>\n<td><code>10.10.30.20/24</code></td>\n<td>Deployed website and June 21 evidence show <code>10.10.20.20/24</code></td>\n<td>Stale deployed/historical value</td>\n<td>Operations docs now treat <code>10.10.20.20</code> as historical</td>\n</tr>\n<tr>\n<td>Linux01 VLAN</td>\n<td>Proxmox config has <code>tag=30</code></td>\n<td>Deployed website omits VLAN 30 current state</td>\n<td>Stale deployed value</td>\n<td>Operations docs use current Proxmox metadata</td>\n</tr>\n<tr>\n<td>Restore status</td>\n<td>June 24 DOCX records isolated restore checks for VM 500 and 600</td>\n<td>June 21 redaction log says restore outstanding</td>\n<td>Historical difference</td>\n<td>Recovery docs distinguish June 21 historical limitation from June 24 documentation</td>\n</tr>\n<tr>\n<td>Backup storage</td>\n<td>Proxmox API shows <code>backup-hdd</code> at <code>/mnt/pve/backup-hdd</code></td>\n<td>Older prompt/doc values mention <code>backup-nvme</code></td>\n<td>Stale or inconclusive historical value</td>\n<td>Operations docs use <code>backup-hdd</code> and flag <code>backup-nvme</code> as stale unless rename evidence is found</td>\n</tr>\n</tbody>\n</table></div>\n<h2>Claim Boundary</h2>\n<p>Current Proxmox API output and current DNS/RDP checks are treated as current observed state. Portfolio and DOCX records are retained as documentation evidence where live command output cannot validate guest internals from this client path. Historical evidence is not rewritten.</p></div></details><details><summary>Linux01 SSSD Remediation <small> / linux01-sssd-remediation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/linux01-sssd-remediation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/8f2473febe02\" data-route=\"documentation/8f2473febe02\" class=\"\">Open document page</a></div><h2>Linux01 SSSD Remediation</h2>\n<h2>Summary</h2>\n<ul>\n<li>Target: Linux01</li>\n<li>Date: June 26, 2026</li>\n<li>Domain: ad.jeremyfontenot.online</li>\n<li>Classification: SSSD responder activation conflict</li>\n<li>Result: Remediated and validated</li>\n</ul>\n<h2>Initial Condition</h2>\n<ul>\n<li>sssd-nss.socket, sssd-pam.socket, and sssd-pac.socket were enabled and failed.</li>\n<li>/etc/sssd/sssd.conf used direct responder activation with services = nss, pam.</li>\n<li>config_file_version = 2 was rejected by SSSD 2.12 configuration validation.</li>\n<li>Initial diagnostic: artifacts/target-local-collection/Linux01/linux01-sssd-diagnostic-20260626-094322.json</li>\n<li>Initial SHA-256: 3CAD0FB73202D777D41DEE40D6F4D19D4019B9AD30552B37970B55A5CA5AB3BB</li>\n</ul>\n<h2>Backup</h2>\n<ul>\n<li>Backup: /root/sssd.conf.pre-remediation-20260626-095429.bak</li>\n<li>Original and backup SHA-256: 23ace1beca5ff6f7d58200efe054ea8e5a938e02f37fce25b1ca1b5d2f05bd14</li>\n</ul>\n<h2>Remediation</h2>\n<ol>\n<li>Removed the rejected config_file_version directive.</li>\n<li>Confirmed sssctl config-check completed with zero issues.</li>\n<li>Disabled the NSS, PAM, and PAC SSSD socket units.</li>\n<li>Restarted sssd.service.</li>\n<li>Cleared the historical failed-unit state.</li>\n</ol>\n<h2>Validation</h2>\n<ul>\n<li>sssd.service is enabled, active, and running.</li>\n<li>No failed systemd units remain.</li>\n<li>All three responder sockets report disabled.</li>\n<li>AD identity lookup succeeded.</li>\n<li>A new AD-authenticated SSH session succeeded.</li>\n<li>Post-remediation diagnostic: artifacts/target-local-collection/Linux01/linux01-sssd-diagnostic-20260626-110159.json</li>\n<li>Post-remediation SHA-256: FD55604BFB94487B86FBF631703FA995B9726471689385CCB2D277492AA7CBEE</li>\n</ul>\n<h2>Final Status</h2>\n<p>Linux01 is operating normally using direct SSSD responder activation.</p></div></details></section><section class=\"content-block\" id=\"troubleshooting\"><h2>Troubleshooting</h2><p>Linux01 domain integration and SSSD remediation are documented separately from macOS AD binding and reachability. A test passing on one platform is not generalized to the entire environment.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"validation\"><h2>Validation & results</h2><p>Windows, Linux, and macOS administration evidence supports a cross-platform method with platform-specific limitations.</p><div class=\"doc-grid\"><a href=\"#documentation/313d07c59108\" data-route=\"documentation/313d07c59108\" class=\"\">DC01 System and Role Validation<small>evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/dc01-system-and-role-validation.md</small></a><a href=\"#documentation/bb9fe57b6085\" data-route=\"documentation/bb9fe57b6085\" class=\"\">Linux01 SSSD Remediation Validation<small>evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/linux01-sssd-remediation-validation.md</small></a><a href=\"#documentation/f442266b3082\" data-route=\"documentation/f442266b3082\" class=\"\">Linux01 System, Network, and Domain Validation<small>evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/linux01-system-network-domain-validation.md</small></a><a href=\"#documentation/9f8e98caeacd\" data-route=\"documentation/9f8e98caeacd\" class=\"\">Proxmox Restore Validation<small>evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-restore-validation.md</small></a><a href=\"#documentation/34b581f1eabe\" data-route=\"documentation/34b581f1eabe\" class=\"\">WS01 System and Domain Validation<small>evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/ws01-system-and-domain-validation.md</small></a><a href=\"#documentation/5b8e4cc34ba2\" data-route=\"documentation/5b8e4cc34ba2\" class=\"\">Backup and Restore Validation<small>evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/backup-and-restore-validation.md</small></a><a href=\"#documentation/509dde796a34\" data-route=\"documentation/509dde796a34\" class=\"\">Home Lab Inventory and Validation Evidence<small>evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/home-lab-inventory-validation.md</small></a></div></section><section class=\"content-block\" id=\"evidence\"><h2>Evidence</h2><p>STRONG as a supporting project; cross-platform Windows, Linux, macOS, networking, identity, and troubleshooting evidence is distributed across the home-lab case studies.</p><div class=\"doc-grid\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-backup-configuration.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">proxmox-backup-configuration.md<small>Reviewed backup coverage, archive state, network isolation, temporary restore VMs, validation checkpoints, cleanup, and result boundaries.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/direct-evidence/proxmox-platform-inventory.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">proxmox-platform-inventory.md<small>Reviewed node, VM, storage, bridge, VLAN, guest-agent, snapshot, backup, and lifecycle state.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/home-lab-source-reconciliation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">home-lab-source-reconciliation.md<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/home-lab-source-of-truth.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">home-lab-source-of-truth.md<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/linux01-sssd-remediation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">linux01-sssd-remediation.md<small>Reviewed Ubuntu networking, SSH, time synchronization, logging, updates, security controls, guest integration, Kerberos, realmd, and SSSD.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/provenance.json\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">provenance.json<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/source-summaries/backup-and-restore-validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">backup-and-restore-validation.md<small>Reviewed backup coverage, archive state, network isolation, temporary restore VMs, validation checkpoints, cleanup, and result boundaries.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/provenance.csv\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">provenance.csv<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/manifest.json\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">manifest.json<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/on-prem-home-lab/current-validated-state/claim-map.csv\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">claim-map.csv<small>Maintained a documented nonproduction environment spanning virtualization, firewalling, Windows, Linux, networking, and backup services.</small> <span aria-hidden=\"true\">↗</span></a></div><div class=\"source-links\"><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Browse and filter the complete evidence library</a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/home-lab-operations-proof.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub project source <span aria-hidden=\"true\">↗</span></a></div></section><section class=\"content-block\" id=\"skills\"><h2>Skills demonstrated</h2><div class=\"tags\"><span class=\"tag\">Windows</span><span class=\"tag\">Linux</span><span class=\"tag\">macOS</span><span class=\"tag\">Networking</span></div><a href=\"#skills\" data-route=\"skills\" class=\"\">View the complete capability map →</a></section><section class=\"content-block\" id=\"limitations\"><h2>Limitations & claim boundaries</h2><div class=\"note\">Supporting portfolio project, not a claim of enterprise fleet ownership. Individual platform claims remain bounded by their underlying evidence.</div></section><section class=\"content-block\" id=\"next\"><h2>Next milestones</h2><p>Keep this as a supporting method/project unless a new cross-platform scenario adds distinct recruiter value.</p></section></article></div><section class=\"section\"><p class=\"eyebrow\">Continue exploring</p><h2>Related projects</h2><div class=\"grid grid-2\"><article class=\"project-card\" data-project data-category=\"Infrastructure\" data-search=\"on-premises microsoft home lab a microsoft-centered infrastructure lab with documented directory services, virtualization, networking, and bounded recovery tests. proxmox windows server pfsense linux\"><div class=\"card-head\"><span class=\"project-number\">PROJECT 03</span><span class=\"status\">COMPLETE</span></div><h3><a href=\"#projects/on-prem-home-lab\" data-route=\"projects/on-prem-home-lab\" class=\"\">On-Premises Microsoft Home Lab</a></h3><p>A Microsoft-centered infrastructure lab with documented directory services, virtualization, networking, and bounded recovery tests.</p><div class=\"tags\"><span class=\"tag\">Proxmox</span><span class=\"tag\">Windows Server</span><span class=\"tag\">pfSense</span><span class=\"tag\">Linux</span></div><div class=\"card-footer\"><a href=\"#projects/on-prem-home-lab\" data-route=\"projects/on-prem-home-lab\" class=\"\">Read case study <span class=arrow>↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"text-link\">Evidence</a></div></article><article class=\"project-card\" data-project data-category=\"Infrastructure\" data-search=\"windows admin center lab management centralized windows administration backed by connectivity, authentication, and remote-management validation. windows admin center winrm powershell\"><div class=\"card-head\"><span class=\"project-number\">PROJECT 04</span><span class=\"status\">COMPLETE</span></div><h3><a href=\"#projects/windows-admin-center-lab\" data-route=\"projects/windows-admin-center-lab\" class=\"\">Windows Admin Center Lab Management</a></h3><p>Centralized Windows administration backed by connectivity, authentication, and remote-management validation.</p><div class=\"tags\"><span class=\"tag\">Windows Admin Center</span><span class=\"tag\">WinRM</span><span class=\"tag\">PowerShell</span></div><div class=\"card-footer\"><a href=\"#projects/windows-admin-center-lab\" data-route=\"projects/windows-admin-center-lab\" class=\"\">Read case study <span class=arrow>↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"text-link\">Evidence</a></div></article></div></section>",
    "active": "Projects"
  },
  "projects/servicenow-request-fulfillment": {
    "title": "ServiceNow Request Fulfillment & Procurement Workflow",
    "description": "An approved catalog request progressing through Procurement and Field Services to automatic lifecycle completion.",
    "body": "<div class=\"page-heading\"><p class=\"eyebrow\">Project 09 / ITSM</p><h1>ServiceNow Request Fulfillment &amp; Procurement Workflow</h1><p class=\"lead\">An approved catalog request progressing through Procurement and Field Services to automatic lifecycle completion.</p><div class=\"tags\"><span class=\"status\">COMPLETE</span><span class=\"tag\">Developer environment</span></div><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/tree/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/projects/servicenow-request-fulfillment/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub documentation <span aria-hidden=\"true\">↗</span></a><a href=\"https://jeremyfontenot.online/servicenow-request-fulfillment.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original portfolio <span aria-hidden=\"true\">↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Evidence library</a></div></div><div class=\"case-layout\"><aside class=\"case-toc\"><p class=\"eyebrow\">Inside this case study</p><a href=\"#overview\" data-anchor=\"overview\">Overview</a><a href=\"#scenario\" data-anchor=\"scenario\">Operational scenario & objectives</a><a href=\"#environment\" data-anchor=\"environment\">Environment & technologies</a><a href=\"#architecture\" data-anchor=\"architecture\">Architecture</a><a href=\"#implementation\" data-anchor=\"implementation\">Implementation & administration</a><a href=\"#troubleshooting\" data-anchor=\"troubleshooting\">Troubleshooting</a><a href=\"#validation\" data-anchor=\"validation\">Validation & results</a><a href=\"#evidence\" data-anchor=\"evidence\">Evidence</a><a href=\"#skills\" data-anchor=\"skills\">Skills demonstrated</a><a href=\"#limitations\" data-anchor=\"limitations\">Limitations & claim boundaries</a><a href=\"#next\" data-anchor=\"next\">Next milestones</a></aside><article><section class=\"content-block\" id=\"overview\"><h2>Overview</h2><p>An approved catalog request progressing through Procurement and Field Services to automatic lifecycle completion.</p><p><strong>Classification:</strong> Developer environment.</p></section><section class=\"content-block\" id=\"scenario\"><h2>Operational scenario & objectives</h2><p>Validate REQ/RITM/SCTASK relationships, approval, fulfillment ownership, and automatic closure without inventing physical asset fulfillment.</p></section><section class=\"content-block\" id=\"environment\"><h2>Environment & technologies</h2><p>Personal ServiceNow Developer Instance with separate Procurement and Field Services lab identities and role-qualified task assignment.</p><div class=\"tags\"><span class=\"tag\">ServiceNow</span><span class=\"tag\">Service Catalog</span><span class=\"tag\">ITIL</span><span class=\"tag\">Workflow</span></div></section><section class=\"content-block\" id=\"architecture\"><h2>Architecture</h2><p>Personal ServiceNow Developer Instance with separate Procurement and Field Services lab identities and role-qualified task assignment.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"implementation\"><h2>Implementation & administration</h2><div class=\"imported\"><div id=\"source-398afa80-main\">\n<section class=\"page-hero\"><div class=\"wrap\"><p class=\"eyebrow\">Project 09 · COMPLETE · Personal lab · ServiceNow</p><h2>ServiceNow Request Fulfillment &amp; Procurement Workflow</h2><p class=\"lead\">A completed ServiceNow Personal Developer Instance workflow validating catalog request, approval, procurement, deployment, and automatic request completion.</p><div class=\"actions\"><a class=\"button primary\" data-route=\"projects\" href=\"#projects\">Back to projects</a><a class=\"button\" data-route=\"evidence\" href=\"#evidence\">Review proof summary</a></div></div></section>\n<section class=\"section\"><div class=\"wrap grid grid-2\">\n<article class=\"panel\"><p class=\"eyebrow\">Skill</p><h2>Service Catalog fulfillment</h2><p>Worked across Request (REQ), Requested Item (RITM), approval, and Catalog Task (SCTASK) records while preserving requester, approver, Procurement, and Field Services responsibilities.</p></article>\n<article class=\"panel\"><p class=\"eyebrow\">Observed result</p><h2>Workflow completed automatically</h2><p>After the final Field Services task was closed complete, ServiceNow automatically completed the RITM and then closed the parent request because all line items were complete.</p></article>\n</div></section>\n<section class=\"section\"><div class=\"wrap\"><p class=\"eyebrow\">Workflow</p><h2>Request → approval → procurement → deployment → completion</h2><div class=\"grid grid-2\">\n<article class=\"panel\"><h3>Request and approval</h3><p>A Standard Laptop request generated <strong>REQ0010001</strong> and <strong>RITM0010001</strong>. David Loo approved the requested item, after which ServiceNow automatically created Procurement task <strong>SCTASK0010001</strong>.</p></article>\n<article class=\"panel\"><h3>Assignment troubleshooting</h3><p>A dedicated <strong>procurement.agent</strong> lab identity was added to Procurement but initially could not be selected in Assigned to. Inspection of the Task assigned-to reference configuration identified an <strong>itil</strong> role requirement. Granting the required role resolved the invalid-reference condition without weakening the platform qualifier.</p></article>\n<article class=\"panel\"><h3>Procurement fulfillment</h3><p>The Procurement Agent experience was validated through impersonation. Because no stock asset was established, the request used a vendor-order lab scenario. Backorder status, estimated delivery, internal work notes, and a customer-visible fulfillment update were recorded.</p></article>\n<article class=\"panel\"><h3>Deployment and closure</h3><p>Closing Procurement advanced the RITM to Deployment and created <strong>SCTASK0010002</strong> for Field Services. A separate <strong>field.services.agent</strong> identity completed the simulated deployment. The Configuration item remained blank because no legitimate CI or physical asset was created.</p></article>\n</div></div></section>\n<section class=\"section\"><div class=\"wrap grid grid-2\">\n<article class=\"panel\"><p class=\"eyebrow\">Validation</p><h2>Automatic lifecycle behavior</h2><ul><li>Procurement task automatically followed approval.</li><li>Deployment task automatically followed Procurement completion.</li><li>RITM automatically changed to Closed Complete / Completed.</li><li>Parent REQ automatically changed from Open to Closed Complete.</li><li>The RITM and REQ were not manually forced closed.</li></ul></article>\n<article class=\"panel\"><p class=\"eyebrow\">Claim boundary</p><h2>What this proves</h2><p>This project demonstrates hands-on ServiceNow workflow understanding, request fulfillment, assignment-group administration, role-qualified assignee troubleshooting, impersonation, documentation, and lifecycle validation in a Personal Developer Instance.</p><p>Physical laptop procurement, vendor delivery, software installation, and user handoff were <strong>lab simulations</strong>. This does not claim production ServiceNow administration or employer-owned configuration.</p></article>\n</div></section>\n<section class=\"section\"><div class=\"wrap\"><article class=\"panel\"><p class=\"eyebrow\">Repository documentation</p><h2>Detailed project record</h2><p>The repository preserves the implementation narrative and claim boundary for review.</p><div class=\"proof-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/main/projects/servicenow-request-fulfillment/README.md\" rel=\"noopener noreferrer\" target=\"_blank\">Review project documentation on GitHub</a></div></article></div></section>\n</div></div><details><summary>ServiceNow Request Fulfillment &amp; Procurement Workflow <small> / README.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/projects/servicenow-request-fulfillment/README.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/13026d5bdb49\" data-route=\"documentation/13026d5bdb49\" class=\"\">Open document page</a></div><h2>ServiceNow Request Fulfillment &amp; Procurement Workflow</h2>\n<h2>Status</h2>\n<p><strong>COMPLETE</strong></p>\n<p>The intended request fulfillment and procurement workflow has been performed, validated, evidenced, documented, and accurately bounded. Additional ServiceNow administration work belongs in the separate ServiceNow Administration &amp; ITSM Lab rather than being required for this project's completion.</p>\n<h2>Objective</h2>\n<p>Validate a realistic ServiceNow Personal Developer Instance workflow from catalog request through approval, procurement fulfillment, deployment, and automatic request completion.</p>\n<h2>Technical Areas Demonstrated</h2>\n<ul>\n<li>ServiceNow Service Catalog request handling.</li>\n<li>Request (<code>REQ</code>), Requested Item (<code>RITM</code>), and Catalog Task (<code>SCTASK</code>) relationships.</li>\n<li>Approval routing and separation of duties.</li>\n<li>Assignment groups, users, and fulfillment ownership.</li>\n<li>Role-qualified assignee troubleshooting.</li>\n<li>Service Operations Workspace task handling.</li>\n<li>Work notes and customer-visible comments.</li>\n<li>Backorder and estimated-delivery tracking.</li>\n<li>Automatic workflow stage transitions and closure.</li>\n</ul>\n<h2>Validated Workflow</h2>\n<p>A Standard Laptop request for Jeremy Fontenot generated <code>REQ0010001</code> and <code>RITM0010001</code>. The requested item entered approval and was approved by David Loo. ServiceNow then automatically created Procurement task <code>SCTASK0010001</code>.</p>\n<p>The Procurement group initially had no usable fulfillment member. A dedicated lab identity, <code>procurement.agent</code>, was created and added to Procurement. Group membership alone did not make the user selectable in <code>Assigned to</code>; inspection of the <code>Task [task].assigned_to</code> dictionary configuration showed a reference qualifier requiring the <code>itil</code> role. Adding the required lab role resolved the invalid-reference condition without weakening the platform qualifier.</p>\n<p>Procurement Agent was impersonated to validate the assignee experience. The task was moved to Work in Progress and fulfillment notes were recorded. Because no stock asset was established in the lab, the request was intentionally modeled as a vendor order rather than falsely claiming physical inventory fulfillment. <code>RITM0010001</code> was marked Backordered with an estimated delivery date, and a customer-visible status update was recorded.</p>\n<p>Vendor delivery was then simulated. Backorder status was cleared, procurement completion was documented, and <code>SCTASK0010001</code> was closed complete. ServiceNow automatically advanced <code>RITM0010001</code> from Order Fulfillment to Deployment and created Field Services task <code>SCTASK0010002</code>.</p>\n<p>A separate <code>field.services.agent</code> lab identity was created, granted the required <code>itil</code> role, and added to Field Services. The deployment task was assigned to that identity and validated through impersonation. Deployment notes were explicitly labeled <code>LAB SIMULATION</code>. The Configuration item field was intentionally left blank because no legitimate CI or physical asset was created.</p>\n<p>After <code>SCTASK0010002</code> was closed complete, ServiceNow automatically changed <code>RITM0010001</code> to <code>Closed Complete</code> with Stage <code>Completed</code>. The parent <code>REQ0010001</code> then automatically changed from Open to <code>Closed Complete</code>.</p>\n<p>The Request activity recorded:</p>\n<blockquote>\n<p>Request Automatically Closed as all Line Items were complete</p>\n</blockquote>\n<p>Neither the RITM nor the parent REQ was manually forced closed.</p>\n<h2>Workflow Path</h2>\n<pre><code class=\"language-text\">Requester\n   |\n   v\nREQ0010001 / RITM0010001\n   |\n   v\nApproval — David Loo\n   |\n   v\nSCTASK0010001 — Procurement\n   |\n   +--&gt; Vendor/backorder lab path\n   |\n   v\nProcurement Closed Complete\n   |\n   v\nAutomatic RITM transition to Deployment\n   |\n   v\nSCTASK0010002 — Field Services\n   |\n   v\nLAB SIMULATION: endpoint deployment\n   |\n   v\nField Services Closed Complete\n   |\n   v\nRITM automatically Closed Complete / Completed\n   |\n   v\nREQ automatically Closed Complete\n</code></pre>\n<h2>Troubleshooting Finding</h2>\n<p>The most significant administrative issue was the inability to select the new Procurement fulfillment user in <code>Assigned to</code>. The root cause was not group membership. The <code>Task [task].assigned_to</code> reference qualifier required <code>itil</code>. Granting that role made the user a valid assignee while preserving the existing platform control.</p>\n<h2>Result</h2>\n<p>The lab validated the complete relationship between Service Catalog request records, approval, automatically generated fulfillment tasks, assignment groups, role-qualified assignee selection, impersonated fulfillment, vendor/backorder tracking, sequential deployment work, automatic stage progression, and automatic request closure.</p>\n<h2>Claim Boundary</h2>\n<p>This is personal-lab work performed in a ServiceNow Personal Developer Instance. Physical laptop procurement, vendor delivery, software installation, and user handoff were simulated. The project demonstrates platform workflow understanding and hands-on administration but does not claim production ServiceNow administration or employer-owned configuration.</p></div></details></section><section class=\"content-block\" id=\"troubleshooting\"><h2>Troubleshooting</h2><p>Group membership did not make a Procurement user selectable. The Task assigned_to reference qualifier required the itil role. Granting that lab role resolved the invalid reference while retaining the qualifier.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"validation\"><h2>Validation & results</h2><p>Closing the Field Services task automatically completed the RITM and parent REQ. Procurement, delivery, installation, and handoff remained simulations.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"evidence\"><h2>Evidence</h2><p>STRONG — the complete request-fulfillment workflow, automatic lifecycle behavior, role-qualified assignment troubleshooting, and simulation boundaries are documented.</p><div class=\"doc-grid\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/projects/servicenow-request-fulfillment/README.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">README.md<small>Retained documentation supporting ServiceNow Request Fulfillment &amp; Procurement Workflow.</small> <span aria-hidden=\"true\">↗</span></a></div><div class=\"source-links\"><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Browse and filter the complete evidence library</a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/tree/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/projects/servicenow-request-fulfillment/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub project source <span aria-hidden=\"true\">↗</span></a></div></section><section class=\"content-block\" id=\"skills\"><h2>Skills demonstrated</h2><div class=\"tags\"><span class=\"tag\">ServiceNow</span><span class=\"tag\">Service Catalog</span><span class=\"tag\">ITIL</span><span class=\"tag\">Workflow</span></div><a href=\"#skills\" data-route=\"skills\" class=\"\">View the complete capability map →</a></section><section class=\"content-block\" id=\"limitations\"><h2>Limitations & claim boundaries</h2><div class=\"note\">Personal ServiceNow PDI. Physical laptop procurement, vendor delivery, software installation, and user handoff were simulated. The project demonstrates ServiceNow workflow understanding and hands-on lab administration, not employer production ownership.</div></section><section class=\"content-block\" id=\"next\"><h2>Next milestones</h2><p>Maintenance-only. Further ServiceNow administration belongs in the separate ServiceNow Administration &amp; ITSM Lab.</p></section></article></div><section class=\"section\"><p class=\"eyebrow\">Continue exploring</p><h2>Related projects</h2><div class=\"grid grid-2\"><article class=\"project-card\" data-project data-category=\"Cloud administration\" data-search=\"microsoft 365 messaging &amp; security administration mailbox delegation, message delivery, defender review, conditional access remediation, and bounded licensing evidence. exchange online defender conditional access\"><div class=\"card-head\"><span class=\"project-number\">PROJECT 10</span><span class=\"status\">COMPLETE</span></div><h3><a href=\"#projects/m365-messaging-security\" data-route=\"projects/m365-messaging-security\" class=\"\">Microsoft 365 Messaging &amp; Security Administration</a></h3><p>Mailbox delegation, message delivery, Defender review, Conditional Access remediation, and bounded licensing evidence.</p><div class=\"tags\"><span class=\"tag\">Exchange Online</span><span class=\"tag\">Defender</span><span class=\"tag\">Conditional Access</span></div><div class=\"card-footer\"><a href=\"#projects/m365-messaging-security\" data-route=\"projects/m365-messaging-security\" class=\"\">Read case study <span class=arrow>↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"text-link\">Evidence</a></div></article><article class=\"project-card\" data-project data-category=\"Endpoint management\" data-search=\"windows autopilot &amp; intune mdm provisioning physical-device provisioning through branded oobe, esp, entra join, security policy, and final intune compliance. autopilot intune entra join bitlocker\"><div class=\"card-head\"><span class=\"project-number\">PROJECT 11</span><span class=\"status\">COMPLETE</span></div><h3><a href=\"#projects/windows-autopilot-intune\" data-route=\"projects/windows-autopilot-intune\" class=\"\">Windows Autopilot &amp; Intune MDM Provisioning</a></h3><p>Physical-device provisioning through branded OOBE, ESP, Entra join, security policy, and final Intune compliance.</p><div class=\"tags\"><span class=\"tag\">Autopilot</span><span class=\"tag\">Intune</span><span class=\"tag\">Entra join</span><span class=\"tag\">BitLocker</span></div><div class=\"card-footer\"><a href=\"#projects/windows-autopilot-intune\" data-route=\"projects/windows-autopilot-intune\" class=\"\">Read case study <span class=arrow>↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"text-link\">Evidence</a></div></article></div></section>",
    "active": "Projects"
  },
  "projects/m365-messaging-security": {
    "title": "Microsoft 365 Messaging & Security Administration",
    "description": "Mailbox delegation, message delivery, Defender review, Conditional Access remediation, and bounded licensing evidence.",
    "body": "<div class=\"page-heading\"><p class=\"eyebrow\">Project 10 / Cloud administration</p><h1>Microsoft 365 Messaging &amp; Security Administration</h1><p class=\"lead\">Mailbox delegation, message delivery, Defender review, Conditional Access remediation, and bounded licensing evidence.</p><div class=\"tags\"><span class=\"status\">COMPLETE</span><span class=\"tag\">Developer environment</span></div><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/tree/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub documentation <span aria-hidden=\"true\">↗</span></a><a href=\"https://jeremyfontenot.online/m365-messaging-security.html\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original portfolio <span aria-hidden=\"true\">↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Evidence library</a></div></div><div class=\"case-layout\"><aside class=\"case-toc\"><p class=\"eyebrow\">Inside this case study</p><a href=\"#overview\" data-anchor=\"overview\">Overview</a><a href=\"#scenario\" data-anchor=\"scenario\">Operational scenario & objectives</a><a href=\"#environment\" data-anchor=\"environment\">Environment & technologies</a><a href=\"#architecture\" data-anchor=\"architecture\">Architecture</a><a href=\"#implementation\" data-anchor=\"implementation\">Implementation & administration</a><a href=\"#troubleshooting\" data-anchor=\"troubleshooting\">Troubleshooting</a><a href=\"#validation\" data-anchor=\"validation\">Validation & results</a><a href=\"#evidence\" data-anchor=\"evidence\">Evidence</a><a href=\"#skills\" data-anchor=\"skills\">Skills demonstrated</a><a href=\"#limitations\" data-anchor=\"limitations\">Limitations & claim boundaries</a><a href=\"#next\" data-anchor=\"next\">Next milestones</a></aside><article><section class=\"content-block\" id=\"overview\"><h2>Overview</h2><p>Mailbox delegation, message delivery, Defender review, Conditional Access remediation, and bounded licensing evidence.</p><p><strong>Classification:</strong> Developer environment.</p></section><section class=\"content-block\" id=\"scenario\"><h2>Operational scenario & objectives</h2><p>Validate messaging operations and security-policy behavior while preserving the unresolved Graph licensing-metadata discrepancy.</p></section><section class=\"content-block\" id=\"environment\"><h2>Environment & technologies</h2><p>Personal Microsoft 365 E5 Developer tenant with Exchange Online, Defender, Conditional Access, and test identities.</p><div class=\"tags\"><span class=\"tag\">Exchange Online</span><span class=\"tag\">Defender</span><span class=\"tag\">Conditional Access</span></div></section><section class=\"content-block\" id=\"architecture\"><h2>Architecture</h2><p>Personal Microsoft 365 E5 Developer tenant with Exchange Online, Defender, Conditional Access, and test identities.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"implementation\"><h2>Implementation & administration</h2><div class=\"imported\"><section class=\"page-hero\"><div class=\"wrap\"><p class=\"eyebrow\">M365 Lab Project 03 · COMPLETE</p><h2>Microsoft 365 Messaging &amp; Security Administration</h2><p class=\"lead\">Personal-tenant Microsoft 365 administration demonstrating Exchange Online configuration, Defender review, Conditional Access troubleshooting, audit validation, and licensing administration without presenting lab work as production ownership.</p><div class=\"actions\"><a class=\"button primary\" data-route=\"projects\" href=\"#projects\">Back to projects</a><a class=\"button\" data-route=\"evidence\" href=\"#evidence\">Review proof index</a></div></div></section><section class=\"section\"><div class=\"wrap\"><div class=\"metric-strip\"><div class=\"metric\"><strong>Exchange Online</strong><span>Messaging</span></div><div class=\"metric\"><strong>Defender</strong><span>Mail security</span></div><div class=\"metric\"><strong>Conditional Access</strong><span>Identity security</span></div><div class=\"metric\"><strong>Developer E5</strong><span>Licensing</span></div></div></div></section><section class=\"section\"><div class=\"wrap case-layout\"><article><section class=\"content-block\" id=\"source-edefafe9-scope\"><p class=\"eyebrow\">Scope</p><h2>Personal Microsoft 365 developer tenant</h2><p>This project uses a personal Microsoft 365 developer tenant to demonstrate bounded messaging, security, identity, and licensing administration. The work is documented as lab validation and does not claim production tenant ownership, enterprise mail-flow responsibility, or organization-wide security authority.</p></section><section class=\"content-block\" id=\"source-edefafe9-exchange\"><p class=\"eyebrow\">Exchange Online</p><h2>Shared mailbox, distribution group, transport rule, and message trace</h2><p>A shared mailbox was configured with Full Access, Send As, and Send on Behalf delegation. A distribution group was created and validated with member delivery. An external-sender transport rule was enabled in Enforce mode and functionally validated through message trace and subject tagging.</p></section><section class=\"content-block\" id=\"source-edefafe9-defender\"><p class=\"eyebrow\">Microsoft Defender</p><h2>Baseline mail protection and message investigation</h2><p>Anti-malware, Safe Attachments, Safe Links, anti-phishing, quarantine, and Explorer views were reviewed. Explorer evidence confirms visibility of the Project 3 test messages, including the external-sender validation message.</p></section><section class=\"content-block\" id=\"source-edefafe9-conditional-access\"><p class=\"eyebrow\">Conditional Access</p><h2>Troubleshoot the policy result, correct scope, then validate</h2><p>An internal test user was blocked with sign-in error 53003 because a security-information registration block policy intended for external identities was scoped to all users. Sign-in details and policy evaluation identified the cause. The policy was changed to guest or external users, the audit log recorded the successful update, and a later My Apps sign-in succeeded while MFA still evaluated successfully and the block policy no longer applied.</p></section><section class=\"content-block\" id=\"source-edefafe9-licensing\"><p class=\"eyebrow\">Licensing</p><h2>Effective Developer E5 assignment with discrepancy preserved</h2><p>A dedicated security group was used for Developer E5 licensing. Microsoft 365 Admin Center showed the group assignment with zero licensing errors and zero members without licenses, and the test user held an active effective E5 license. Microsoft Graph returned conflicting assignment metadata, so the discrepancy is explicitly documented instead of being presented as reconciled.</p></section><section class=\"content-block\" id=\"source-edefafe9-troubleshooting\"><p class=\"eyebrow\">Troubleshooting</p><h2>Evidence before resets or rebuilds</h2><p>The project preserved working Exchange and identity configuration while using sign-in logs, Conditional Access evaluation, audit logs, message trace, Defender Explorer, and Graph responses to isolate issues. Exchange Online and Microsoft Graph were also kept in separate PowerShell processes after an assembly-version conflict was identified.</p></section><section class=\"content-block\" id=\"source-edefafe9-evidence\"><p class=\"eyebrow\">Evidence</p><h2>Sanitized validation</h2><ul class=\"evidence-list\"><li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/08-conditional-access-evaluation-success.png\" rel=\"noopener noreferrer\" target=\"_blank\">Conditional Access evaluation<span>MFA succeeds and the external-user block is not applied</span></a></li><li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/07-signin-success-details.png\" rel=\"noopener noreferrer\" target=\"_blank\">Successful sign-in details<span>Post-remediation My Apps sign-in with MFA requirement</span></a></li><li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/01-exchange-powershell-validation.png\" rel=\"noopener noreferrer\" target=\"_blank\">Exchange validation<span>Shared mailbox, distribution group, and transport-rule PowerShell validation</span></a></li><li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/02-exchange-message-trace-sendas-delivered.png\" rel=\"noopener noreferrer\" target=\"_blank\">Message trace<span>Delivered Send As validation</span></a></li><li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/03-defender-explorer-external-sender-validation.png\" rel=\"noopener noreferrer\" target=\"_blank\">Defender Explorer<span>Project 3 message visibility and external-sender validation</span></a></li><li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/09-m365-e5-group-assignment-list.png\" rel=\"noopener noreferrer\" target=\"_blank\">Licensing validation<span>Developer E5 group assignment shown in Microsoft 365 Admin Center</span></a></li><li><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/main/evidence-library/projects/m365-messaging-security/validation.md\" rel=\"noopener noreferrer\" target=\"_blank\">Validation record<span>Documented results, limitations, and Graph metadata discrepancy</span></a></li></ul></section></article><aside class=\"case-nav panel\"><p class=\"eyebrow\">Case study</p><a data-route=\"projects/m365-messaging-security\" href=\"#projects/m365-messaging-security\">Personal Microsoft 365 developer tenant</a><a data-route=\"projects/m365-messaging-security\" href=\"#projects/m365-messaging-security\">Shared mailbox, distribution group, transport rule, and message trace</a><a data-route=\"projects/m365-messaging-security\" href=\"#projects/m365-messaging-security\">Baseline mail protection and message investigation</a><a data-route=\"projects/m365-messaging-security\" href=\"#projects/m365-messaging-security\">Troubleshoot the policy result, correct scope, then validate</a><a data-route=\"projects/m365-messaging-security\" href=\"#projects/m365-messaging-security\">Effective Developer E5 assignment with discrepancy preserved</a><a data-route=\"projects/m365-messaging-security\" href=\"#projects/m365-messaging-security\">Evidence before resets or rebuilds</a><a data-route=\"projects/m365-messaging-security\" href=\"#projects/m365-messaging-security\">Validation links</a></aside></div></section></div><details><summary>Project 3 Evidence Set <small> / README.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/README.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/7067b4b375b4\" data-route=\"documentation/7067b4b375b4\" class=\"\">Open document page</a></div><h2>Project 3 Evidence Set</h2>\n<h2>Microsoft 365 Messaging &amp; Security Administration</h2>\n<p><strong>Status:</strong> COMPLETE — validated portfolio scope; documented evidence limitations and licensing-metadata discrepancies remain in force</p>\n<p>This evidence package consolidates the configuration and validation work completed for Project 3. It is designed for portfolio use and avoids exposing passwords, recovery keys, tokens, private keys, authentication secrets, source IP addresses, local workstation paths, tenant-specific UPNs, and unnecessary object identifiers in public text artifacts.</p>\n<h2>Validated areas</h2>\n<ul>\n<li>Exchange Online shared mailbox configuration and delegation</li>\n<li>Exchange Online distribution group creation and membership</li>\n<li>Exchange Online external-sender transport rule</li>\n<li>Exchange message trace validation</li>\n<li>Microsoft Defender Explorer message visibility</li>\n<li>Microsoft Defender baseline mail protection review</li>\n<li>Microsoft Entra Conditional Access troubleshooting and remediation</li>\n<li>Conditional Access audit-log validation</li>\n<li>Successful post-remediation sign-in validation</li>\n<li>Microsoft 365 Developer E5 effective licensing validation</li>\n<li>Group-license assignment UI validation and documented Graph metadata discrepancy</li>\n</ul>\n<h2>Important status note</h2>\n<p>Microsoft 365 Admin Center shows <code>Project 3 E5 Licensing</code> as a group assignment for the Developer E5 SKU, and the test user has an active effective E5 license. However, Microsoft Graph continued to return an empty <code>assignedLicenses</code> collection for the group and <code>assignedByGroup: null</code> for the user. This discrepancy is documented rather than hidden or represented as fully reconciled.</p>\n<p>See <code>validation.md</code> and <code>evidence-index.md</code> for the evidence-to-claim mapping.</p>\n<h2>Public evidence handling</h2>\n<p>Text-based logs and command output in this folder are public sanitized derivatives. They preserve the validated result and troubleshooting narrative while omitting tenant-specific identifiers that are not necessary to support the portfolio claim. Screenshot evidence is retained as captured project proof and should be reviewed before reuse outside this repository.</p></div></details><details><summary>Evidence Index <small> / evidence-index.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence-index.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/8320ffd9e4bb\" data-route=\"documentation/8320ffd9e4bb\" class=\"\">Open document page</a></div><h2>Evidence Index</h2>\n<div class=\"table-scroll\"><table>\n<thead>\n<tr>\n<th>ID</th>\n<th>Evidence file</th>\n<th>Supports</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>E01</td>\n<td><code>evidence/screenshots/01-exchange-powershell-validation.png</code></td>\n<td>PowerShell validation of shared mailbox, distribution group, and external-sender transport rule</td>\n</tr>\n<tr>\n<td>E02</td>\n<td><code>evidence/screenshots/02-exchange-message-trace-sendas-delivered.png</code></td>\n<td>Shared mailbox Send As functional delivery validation</td>\n</tr>\n<tr>\n<td>E03</td>\n<td><code>evidence/screenshots/03-defender-explorer-external-sender-validation.png</code></td>\n<td>Defender Explorer visibility of Project 3 messages and external-sender test</td>\n</tr>\n<tr>\n<td>E04</td>\n<td><code>evidence/screenshots/04-ca-policy-scope-update-success.png</code></td>\n<td>Successful save of corrected external-user Conditional Access scope</td>\n</tr>\n<tr>\n<td>E05</td>\n<td><code>evidence/screenshots/05-post-remediation-myapps-success.png</code></td>\n<td>Functional post-remediation interactive access</td>\n</tr>\n<tr>\n<td>E06</td>\n<td><code>evidence/screenshots/06-signin-log-pre-post-remediation.png</code></td>\n<td>Sign-in log showing failed attempts before remediation and successful attempts afterward</td>\n</tr>\n<tr>\n<td>E07</td>\n<td><code>evidence/screenshots/07-signin-success-details.png</code></td>\n<td>Successful sign-in details, MFA requirement, user and application</td>\n</tr>\n<tr>\n<td>E08</td>\n<td><code>evidence/screenshots/08-conditional-access-evaluation-success.png</code></td>\n<td>MFA policy succeeds; security-info block policy is Not applied</td>\n</tr>\n<tr>\n<td>E09</td>\n<td><code>evidence/screenshots/09-m365-e5-group-assignment-list.png</code></td>\n<td>M365 Developer E5 product page showing Project 3 E5 Licensing as Type Group</td>\n</tr>\n<tr>\n<td>E10</td>\n<td><code>evidence/screenshots/10-m365-license-errors-zero.png</code></td>\n<td>Licensing errors = 0 and members without licenses = 0</td>\n</tr>\n<tr>\n<td>E11</td>\n<td><code>evidence/screenshots/11-m365-group-apps-services.png</code></td>\n<td>Apps &amp; services configuration view for the selected licensing group</td>\n</tr>\n<tr>\n<td>L01</td>\n<td><code>evidence/logs/AuditLogs_2026-09-21.csv</code></td>\n<td>Public sanitized audit-event derivative validating the Conditional Access policy update</td>\n</tr>\n<tr>\n<td>L02</td>\n<td><code>evidence/logs/license-details-output.txt</code></td>\n<td>Public sanitized summary of effective E5 licenseDetails and relevant service-plan provisioning states</td>\n</tr>\n<tr>\n<td>C01</td>\n<td><code>command-evidence.txt</code></td>\n<td>Sanitized PowerShell evidence transcribed from validated commands in the project session</td>\n</tr>\n</tbody>\n</table></div>\n<h2>Recommended portfolio subset</h2>\n<p>Use E01, E02, E03, E04, E07, and E08 as the primary visible evidence set. Use E09/E10 for licensing administration if licensing is discussed on the project page. L01/L02 are sanitized public derivatives intended for supporting review; tenant-specific identifiers and source IP details are intentionally omitted.</p></div></details><details><summary>Validation Record <small> / validation.md</small></summary><div class=\"document\"><div class=\"source-links\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">Original source <span aria-hidden=\"true\">↗</span></a><a href=\"#documentation/4cb905233407\" data-route=\"documentation/4cb905233407\" class=\"\">Open document page</a></div><h2>Validation Record</h2>\n<h2>Exchange Online</h2>\n<h3>Shared mailbox</h3>\n<p><strong>Status: COMPLETE</strong></p>\n<p>Validated object:</p>\n<ul>\n<li>Display name: <code>IT Support Shared</code></li>\n<li>Primary SMTP address: <code>&lt;shared-mailbox-smtp&gt;</code></li>\n<li>Recipient type: <code>SharedMailbox</code></li>\n</ul>\n<p>Delegation validated:</p>\n<ul>\n<li>Full Access: <code>&lt;lab-administrator&gt;</code></li>\n<li>Send As: <code>&lt;lab-administrator&gt;</code></li>\n<li>Send on Behalf: resolved to Lab Administrator / <code>&lt;lab-administrator&gt;</code></li>\n</ul>\n<p>Functional message trace evidence shows a message sent as the shared mailbox with status <code>Delivered</code>.</p>\n<h3>Distribution group</h3>\n<p><strong>Status: COMPLETE</strong></p>\n<p>Validated object:</p>\n<ul>\n<li>Display name: <code>Project 3 Distribution List</code></li>\n<li>Primary SMTP address: <code>&lt;distribution-group-smtp&gt;</code></li>\n<li>Recipient type: <code>MailUniversalDistributionGroup</code></li>\n</ul>\n<p>Validated members:</p>\n<ul>\n<li>Jeremy Fontenot</li>\n<li>Adele Vance</li>\n</ul>\n<h3>External sender transport rule</h3>\n<p><strong>Status: COMPLETE</strong></p>\n<p>Validated rule:</p>\n<ul>\n<li>Name: <code>Project 3 - External Sender Pilot</code></li>\n<li>State: <code>Enabled</code></li>\n<li>Mode: <code>Enforce</code></li>\n<li>Priority: <code>0</code></li>\n<li>Sender scope: <code>NotInOrganization</code></li>\n<li>Recipient: <code>&lt;lab-administrator&gt;</code></li>\n<li>Action: prepend subject with <code>[ EXTERNAL]</code></li>\n</ul>\n<p>Functional validation:</p>\n<ul>\n<li>External test message was delivered with the external-subject marker.</li>\n<li>Defender Explorer showed the message and related test messages as delivered.</li>\n</ul>\n<h2>Microsoft Defender</h2>\n<p><strong>Status: COMPLETE for reviewed baseline controls</strong></p>\n<p>Reviewed and documented during the project:</p>\n<ul>\n<li>Anti-malware default policy</li>\n<li>Safe Attachments built-in protection</li>\n<li>Safe Links built-in protection</li>\n<li>Anti-phishing default policy</li>\n<li>Quarantine view</li>\n<li>Explorer message investigation view</li>\n</ul>\n<p>Defender Explorer evidence confirms visibility of Project 3 test messages, including the external-sender validation message.</p>\n<h2>Microsoft Entra Conditional Access</h2>\n<h3>Problem observed</h3>\n<p><strong>Status: REMEDIATED</strong></p>\n<p>The <code>Project 3 License Test</code> account authenticated successfully but received sign-in error <code>53003</code> because Conditional Access blocked access.</p>\n<p>Sign-in analysis showed two relevant policy evaluations:</p>\n<ul>\n<li><code>Multifactor authentication for Microsoft partners and vendors</code> — Failure during the blocked attempt</li>\n<li><code>Security info registration for Microsoft partners and vendors</code> — Failure with <code>Block</code></li>\n</ul>\n<p>The security-info registration policy was incorrectly scoped to <code>All users</code>, causing an internal tenant member to hit a policy intended for external/partner identities.</p>\n<h3>Remediation</h3>\n<p><strong>Status: COMPLETE</strong></p>\n<p>Policy scope changed from:</p>\n<ul>\n<li>Include: <code>All users</code></li>\n</ul>\n<p>to:</p>\n<ul>\n<li>Include: <code>Guest or external users</code></li>\n<li>All six external identity categories selected</li>\n<li>External Microsoft Entra organizations: <code>All</code></li>\n</ul>\n<p>The existing emergency-access exclusions and trusted-location behavior were preserved.</p>\n<h3>Audit validation</h3>\n<p><strong>Status: COMPLETE</strong></p>\n<p>Relevant audit event:</p>\n<ul>\n<li>Activity: <code>Update conditional access policy</code></li>\n<li>Result: <code>Success</code></li>\n<li>Target: <code>Security info registration for Microsoft partners and vendors</code></li>\n<li>Initiated by: Jeremy Fontenot</li>\n<li>Time: 2026-09-21T20:48:36Z</li>\n</ul>\n<p>The audit record shows the policy changed away from <code>includeUsers: [\"All\"]</code> to external-user targeting.</p>\n<h3>Post-remediation sign-in validation</h3>\n<p><strong>Status: COMPLETE</strong></p>\n<p>Validated successful sign-in:</p>\n<ul>\n<li>User: <code>Project 3 License Test</code></li>\n<li>UPN: <code>&lt;test-user-upn&gt;</code></li>\n<li>Application: <code>My Apps</code></li>\n<li>Time: 2026-09-21T20:53:15Z</li>\n<li>Status: <code>Success</code></li>\n<li>Authentication requirement: <code>Multifactor authentication</code></li>\n<li>Additional detail: <code>MFA requirement satisfied by claim in the token</code></li>\n</ul>\n<p>Conditional Access evaluation after remediation:</p>\n<ul>\n<li>MFA policy: <code>Success</code></li>\n<li>Secure password change policy: <code>Not applied</code></li>\n<li>Reauthentication on sign-in risk policy: <code>Not applied</code></li>\n<li>Security info registration block policy: <code>Not applied</code></li>\n</ul>\n<p>This demonstrates that the scope remediation removed the incorrect block without disabling MFA enforcement.</p>\n<h2>Developer E5 licensing</h2>\n<h3>Effective user license</h3>\n<p><strong>Status: COMPLETE</strong></p>\n<p>The <code>Project 3 License Test</code> account has an active effective license:</p>\n<ul>\n<li>SKU: <code>DEVELOPERPACK_V2_E5</code></li>\n<li>SKU ID: <code>&lt;redacted-sku-id&gt;</code></li>\n</ul>\n<p>The license-details response shows the majority of service plans provisioned successfully. At the captured point in time:</p>\n<ul>\n<li><code>INTUNE_A</code> = <code>PendingInput</code></li>\n<li><code>INTUNE_O365</code> = <code>PendingActivation</code></li>\n</ul>\n<p>These non-final Intune states are documented rather than represented as completed provisioning.</p>\n<h3>Group assignment</h3>\n<p><strong>Status: COMPLETE in Microsoft 365 Admin Center / Graph metadata discrepancy documented</strong></p>\n<p>Microsoft 365 Admin Center shows:</p>\n<ul>\n<li>Group: <code>Project 3 E5 Licensing</code></li>\n<li>Type: <code>Group</code></li>\n<li>Developer E5 product selected</li>\n<li>Group apps and services available for management</li>\n<li>Licensing errors: <code>0</code></li>\n<li>Members without licenses: <code>0</code></li>\n</ul>\n<p>However, Microsoft Graph repeatedly returned:</p>\n<ul>\n<li>Group <code>assignedLicenses: []</code></li>\n<li>Group <code>licenseProcessingState: null</code></li>\n<li>User <code>assignedByGroup: null</code></li>\n</ul>\n<p>An attempted direct removal of the user license returned the service error that the license was inherited from group membership. Because the Microsoft 365 licensing UI and service behavior contradict the Graph metadata, the discrepancy is preserved as a troubleshooting finding.</p>\n<h2>Evidence handling</h2>\n<p>No passwords, tokens, private keys, recovery keys, LAPS passwords, or other secrets are included in this package. Public text derivatives also omit unnecessary tenant-specific UPNs, object identifiers, local workstation paths, and source IP addresses.</p></div></details></section><section class=\"content-block\" id=\"troubleshooting\"><h2>Troubleshooting</h2><p>Sign-in error 53003 traced to an external-identity security-information policy scoped to all users. Restricting scope to guest/external users restored the internal test sign-in while MFA remained effective. A Graph licensing-metadata discrepancy remains documented.</p><div class=\"doc-grid\"></div></section><section class=\"content-block\" id=\"validation\"><h2>Validation & results</h2><p>Delivery traces, Defender Explorer, audit logs, successful MFA sign-in evaluation, and effective E5 licensing support the completed lab scope.</p><div class=\"doc-grid\"><a href=\"#documentation/4cb905233407\" data-route=\"documentation/4cb905233407\" class=\"\">Validation Record<small>evidence-library/projects/m365-messaging-security/validation.md</small></a></div></section><section class=\"content-block\" id=\"evidence\"><h2>Evidence</h2><p>STRONG — Exchange Online, Defender, Conditional Access, sign-in validation, and Developer E5 licensing evidence are documented.</p><div class=\"doc-grid\"><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/09-m365-e5-group-assignment-list.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">09-m365-e5-group-assignment-list.png<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/05-post-remediation-myapps-success.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">05-post-remediation-myapps-success.png<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/validation.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">validation.md<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/04-ca-policy-scope-update-success.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">04-ca-policy-scope-update-success.png<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/logs/license-details-output.txt\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">license-details-output.txt<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/10-m365-license-errors-zero.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">10-m365-license-errors-zero.png<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/11-m365-group-apps-services.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">11-m365-group-apps-services.png<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/03-defender-explorer-external-sender-validation.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">03-defender-explorer-external-sender-validation.png<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/README.md\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">README.md<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/blob/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/evidence/screenshots/02-exchange-message-trace-sendas-delivered.png\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">02-exchange-message-trace-sendas-delivered.png<small>Configured and validated a shared mailbox with delegation, a distribution group, an enforced external-sender transport rule, and message delivery tracing.</small> <span aria-hidden=\"true\">↗</span></a></div><div class=\"source-links\"><a href=\"#evidence\" data-route=\"evidence\" class=\"\">Browse and filter the complete evidence library</a><a href=\"https://github.com/fontenotjeremy71-hub/jeremyfontenot/tree/5c130c816cd22a70f734b2c2ee6d6480732b1dc2/evidence-library/projects/m365-messaging-security/\" target=\"_blank\" rel=\"noopener noreferrer\" class=\"\">GitHub project source <span aria-hidden=\"true\">↗</span></a></div></section><section class=\"content-block\" id=\"skills\"><h2>Skills demonstrated</h2><div class=\"tags\"><span class=\"tag\">Exchange Online</span><span class=\"tag\">Defender</span><span class=\"tag\">Conditional Access</span></div><a href=\"#skills\" data-route=\"skills\" class=\"\">View the complete capability map →</a></section><section class=\"content-block\" id=\"limitations\"><h2>Limitations & claim boundaries</h2><div class=\"note\">Personal Microsoft 365 Developer tenant. The evidence README is synchronized with the current COMPLETE project status. Group-license UI evidence and Graph metadata were not fully reconciled; the discrepancy remains part of the claim boundary and is not represented as resolved.</div></section><section class=\"content-block\" id=\"next\"><h2>Next milestones</h2><p>Maintenance-only unless the Microsoft 365 tenant configuration materially changes; preserve the documented Microsoft Graph licensing-metadata discrepancy rather than hiding or overstating it.</p></section></article></div><section class=\"section\"><p class=\"eyebrow\">Continue exploring</p><h2>Related projects</h2><div class=\"grid grid-2\"><article class=\"project-card\" data-project data-category=\"Cloud administration\" data-search=\"azure arc hybrid windows management two arc-connected windows server lab machines, agent validation, and one sql server developer instance. azure arc windows server sql server\"><div class=\"card-head\"><span class=\"project-number\">PROJECT 06</span><span class=\"status\">COMPLETE</span></div><h3><a href=\"#projects/azure-arc-hybrid-management\" data-route=\"projects/azure-arc-hybrid-management\" class=\"\">Azure Arc Hybrid Windows Management</a></h3><p>Two Arc-connected Windows Server lab machines, agent validation, and one SQL Server Developer instance.</p><div class=\"tags\"><span class=\"tag\">Azure Arc</span><span class=\"tag\">Windows Server</span><span class=\"tag\">SQL Server</span></div><div class=\"card-footer\"><a href=\"#projects/azure-arc-hybrid-management\" data-route=\"projects/azure-arc-hybrid-management\" class=\"\">Read case study <span class=arrow>↗</span></a><a href=\"#evidence\" data-route=\"evidence\" class=\"text-link\">Evidence</a></div></article></div></section>",
    "active": "Projects"
  }
}
