Skip to content

Commit eeb0cf2

Browse files
committed
Refine macOS imaging presentation and repository specifications
- Updated slide content in the macOS imaging presentation to clarify timing, structure, and key points for better audience engagement. - Adjusted the appendix descriptions and added details about the extended Q&A session. - Enhanced visual concepts and talking points across multiple slides for clarity and emphasis on key messages. - Revised repository specifications to explicitly exclude VMware Fusion as a v1 macOS guest provider due to current documentation limitations. - Updated documentation references to reflect changes in cleanup processes and evidence capture requirements.
1 parent c3e9197 commit eeb0cf2

7 files changed

Lines changed: 117 additions & 115 deletions

docs/Demo-Runbook.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ PASS Blocking dialog captured
107107
PASS Evidence redaction applied
108108
PASS Rollback restored Post-Enroll-Baseline
109109
PASS VS Code accepted after rollback
110-
WARN Intune cloud assignment would still need cleanup before production expansion
110+
WARN Intune cloud assignment would still need report-only cleanup review before production expansion
111111
```
112112

113113
## Recovery Pivots

docs/Hypervisor-Decision-Guide.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55

66
- **Status:** Active
77
- **Owner:** Frank Lesniak
8-
- **Last Updated:** 2026-05-05
9-
- **Scope:** Decision guide for choosing Parallels, UTM, or Tart in the `macOSLab` v1 lab.
10-
- **Related:** [Prerequisites](Prereqs.md), [Apple Silicon Constraints](Apple-Silicon-Constraints.md), [Provider Version Matrix](Provider-Version-Matrix.md), [UTM macOS guest documentation](https://docs.getutm.app/guest-support/macos/), [Parallels macOS VM CLI documentation](https://docs.parallels.com/landing/parallels-desktop-developers-guide/command-line-interface-utility/manage-virtual-machines-from-cli/general-virtual-machine-management/create-a-virtual-machine)
8+
- **Last Updated:** 2026-05-06
9+
- **Scope:** Decision guide for choosing Parallels, UTM, or Tart in the `macOSLab` v1 lab, and for explaining why VMware Fusion is not a v1 macOS guest provider.
10+
- **Related:** [Prerequisites](Prereqs.md), [Apple Silicon Constraints](Apple-Silicon-Constraints.md), [Provider Version Matrix](Provider-Version-Matrix.md), [UTM macOS guest documentation](https://docs.getutm.app/guest-support/macos/), [Parallels macOS VM CLI documentation](https://docs.parallels.com/landing/parallels-desktop-developers-guide/command-line-interface-utility/manage-virtual-machines-from-cli/general-virtual-machine-management/create-a-virtual-machine), [Broadcom Fusion Apple silicon compatibility](https://knowledge.broadcom.com/external/article/315602/compatibility-considerations-for-arm-gue.html)
1111

1212
Use Parallels first when you need the shortest path to the live demo. Use UTM when cost, openness, or provider-swap comparison matters more than full automation. Treat Tart as an advanced stub in v1.
1313

@@ -19,6 +19,12 @@ Use Parallels first when you need the shortest path to the live demo. Use UTM wh
1919
| UTM | Documented/manual provider-swap path | Secondary path, budget-sensitive labs, and provider comparison | Partial lifecycle automation where `utmctl` behavior is proven; creation and checkpoint paths are manual-step-required in v1 | Do not present UTM as full live Parallels parity. |
2020
| Tart | Stubbed advanced path | Later CI/runner conversation | Mutating primitives fail clearly in v1 | Full Tart parity requires later explicit owner approval. |
2121

22+
## VMware Fusion Scope Note
23+
24+
VMware Fusion supports Apple-silicon hosts for Arm guest operating systems, including Arm Windows and Arm Linux. It is not a v1 `macOSLab` provider because current Broadcom documentation says Arm variants of macOS are not supported in Fusion VMs on Apple silicon.
25+
26+
Treat Fusion as a Q&A clarification, not a fourth core provider. The question is not whether Fusion supports Apple silicon; it does. The question is whether it supports the Apple-silicon macOS guest workflow this repository is built around; current Broadcom documentation says it does not.
27+
2228
## Parallels Default Path
2329

2430
Choose Parallels when you need:

docs/Snapshot-Strategy.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
- **Status:** Active
77
- **Owner:** Frank Lesniak
88
- **Last Updated:** 2026-05-06
9-
- **Scope:** Defines the five-checkpoint model, restore warnings, cloud cleanup posture, and checkpoint readiness expectations for `macOSLab`.
9+
- **Scope:** Defines the five-checkpoint model, restore warnings, report-only cloud cleanup posture, and checkpoint readiness expectations for `macOSLab`.
1010
- **Related:** [Fidelity Boundaries](Fidelity-Boundaries.md), [Provider Version Matrix](Provider-Version-Matrix.md), [Prerequisites](Prereqs.md), [macOSLab repository specification](spec/macOSLab-repository-spec.md)
1111

1212
Snapshots are the reason the lab is fast, but they are also where local state and cloud state can drift. Use the five canonical checkpoint names exactly.
@@ -19,7 +19,7 @@ Snapshots are the reason the lab is fast, but they are also where local state an
1919
| `Pre-Enroll` | `Clean-OS` plus Intune Company Portal at the sign-in screen; not enrolled. |
2020
| `Post-Enroll-Baseline` | Fully enrolled, recently synced, deterministic healthy baseline. For Demo 4, Visual Studio Code is installed and launches successfully here. |
2121
| `Broken-Policy-State` | Deterministic intentionally broken state for the engineered demo failure. For Demo 4, the Gatekeeper/System Policy Control profile blocks VS Code. |
22-
| `Recovered-Known-Good` | Post-rollback healthy state, captured after cloud cleanup or reconciliation. For Demo 4, `spctl` accepts VS Code and the app launches again. |
22+
| `Recovered-Known-Good` | Post-rollback healthy state, captured after report-only cloud cleanup review or manual reconciliation notes. For Demo 4, `spctl` accepts VS Code and the app launches again. |
2323

2424
Alternative checkpoint names are not allowed in v1 unless a caller explicitly opts into non-canonical names for local experimentation.
2525

@@ -33,7 +33,7 @@ Capture `Post-Enroll-Baseline` after enrollment, policy receipt, and enough sync
3333

3434
Capture `Broken-Policy-State` only when the failure is intentional and documented in the test plan.
3535

36-
Capture `Recovered-Known-Good` after rollback and any required cloud cleanup or reconciliation notes are complete.
36+
Capture `Recovered-Known-Good` after rollback and after any required report-only cloud cleanup review or manual reconciliation notes are complete.
3737

3838
## Restore Rule
3939

@@ -47,9 +47,9 @@ Restore commands must require explicit acknowledgement for non-interactive or un
4747

4848
Checkpoint capture should prefer a stopped guest. Snapshotting a running or paused VM can preserve transient identity, network, or MDM timing state that makes later evidence harder to explain. Providers must enforce or clearly document clean-shutdown requirements.
4949

50-
## Cloud Cleanup Posture
50+
## Cloud Cleanup Review Posture
5151

52-
V1 local rollback does not delete or retire cloud records. Cloud cleanup remains report-only unless a later owner-approved Phase 10 change adds mutation. A valid report-only cleanup result may identify candidate Intune, Entra, and Defender records, explain why they may be stale, and show portal paths or Graph commands for manual cleanup.
52+
V1 local rollback does not delete or retire cloud records. The cloud cleanup step is a report-only review unless a later owner-approved Phase 10 change adds mutation. A valid report-only cleanup result may identify candidate Intune, Entra, and Defender records, explain why they may be stale, and show portal paths or Graph commands for manual cleanup.
5353

5454
For the Gatekeeper stage path, disconnect VM networking immediately before restoring `Post-Enroll-Baseline` so the bad Intune assignment cannot immediately reapply during the local recovery proof. Capture `Post-Enroll-Baseline` itself in the normal enrolled and network-capable state.
5555

docs/planning/demo-pivot-plan.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ PASS Blocking dialog captured
405405
PASS Evidence redaction applied
406406
PASS Rollback restored Post-Enroll-Baseline
407407
PASS VS Code accepted after rollback
408-
WARN Intune cloud assignment would still need cleanup before production expansion
408+
WARN Intune cloud assignment would still need report-only cleanup review before production expansion
409409
```
410410

411411
The key live payoff is:
@@ -715,9 +715,10 @@ The slide description must preserve the CFP contract:
715715
| 22 | Demo 4 evidence: VS Code blocked, `spctl` rejects, rollback restores. | During Demo 4 |
716716
| 23 | FileVault and Defender proof boundaries: still required, not the live failure. | 68:00 |
717717
| 24 | Dragons checklist updated for Gatekeeper and cloud state. | 70:00 |
718-
| 25 | Repo tree and `Start-Here.md`. | 73:00 |
719-
| 26 | Q&A buckets. | 75:00 |
720-
| 27 | Monday plan and final reminder. | 102:00 |
718+
| 25 | Repo tree and `Start-Here.md`. | 72:25 |
719+
| 26 | Monday plan and CFP recap. | 73:15 |
720+
| 27 | Q&A buckets. | 74:30 |
721+
| 28 | Final thank-you. | 104:30 |
721722

722723
The artifact should include speaker lines for the delicate transition:
723724

docs/planning/macOS-imaging-03a-bolstered-outline.md

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ The session outline now aligns with the final `macOSLab` repository decisions:
4949
| Primary speaker | Frank Lesniak |
5050
| Co-speaker | Michael Niehaus |
5151
| Event | Midwest Management Summit at the Mall of America 2026 |
52-
| Total length | 105 minutes |
53-
| Core content | 75 minutes |
52+
| Total length | 90-105 minutes |
53+
| Core content | 60-75 minutes; current deck target is 74:30 |
5454
| Extended Q&A | 30 minutes |
5555
| Q&A format | Raise-hand questions; mic runner if the room is large; no live polling |
5656
| Primary technology | Intune |
@@ -232,6 +232,8 @@ Use this once. Do not turn the session into polling.
232232
| UTM | Cost-free experimentation path with Apple Virtualization and QEMU options; automation exists but does not mirror Parallels one-for-one. | Budget-sensitive labs, learning, and teams comfortable with templates/configuration artifacts. | Provider-swap demo. |
233233
| Tart | CLI-first Apple Silicon VM tooling built for automation, CI, and image distribution. | Teams building repeatable macOS runners or pipeline-based test loops. | Repo/Q&A/appendix path, not a third equal branch in the core. |
234234

235+
VMware Fusion supports Apple-silicon hosts for Arm guest operating systems, including Arm Windows and Arm Linux. It is not a core provider for this session because current Broadcom documentation says Arm variants of macOS are not supported as Fusion guests on Apple silicon. Fusion may come up in Q&A as a Windows/Linux Arm option, but it is not a macOS guest lab path for this talk.
236+
235237
Do not frame the section as "which product is best." Frame it as:
236238

237239
> Which tool makes the safe behavior easiest for your team?
@@ -295,13 +297,13 @@ Avoid trying to show every Graph query, every profile payload, and every Intune
295297
| `Pre-Enroll` | You want a clean device identity path for each enrollment test. | Best default for enrollment and MDM identity fidelity. | Slower because enrollment and sync rerun. |
296298
| `Post-Enroll-Baseline` | You need a fast repeated policy regression loop. | Fastest and most stage-reliable. | Intune/Entra cloud state keeps moving while the VM rolls backward. |
297299
| `Broken-Policy-State` | You need a deterministic demo failure. | Excellent for stage reliability. | Must be explained honestly as a checkpointed failure. |
298-
| `Recovered-Known-Good` | You need proof that rollback returns the VM to a useful baseline. | Makes recovery visible. | Can hide cloud cleanup problems if not documented. |
300+
| `Recovered-Known-Good` | You need proof that rollback returns the VM to a useful baseline. | Makes recovery visible. | Can hide cloud reconciliation problems if the report-only cleanup review is skipped. |
299301

300302
Recommended operational rule:
301303

302304
- Use `Pre-Enroll` as the gold-standard identity baseline.
303305
- Use `Post-Enroll-Baseline` for speed and demo reliability.
304-
- Pair post-enroll rollback with a documented cloud cleanup routine. In v1, that routine is report-only: it identifies candidate cloud records and manual cleanup steps, but it does not mutate Intune, Entra, or Defender records.
306+
- Pair post-enroll rollback with a documented cloud cleanup review. In v1, that review is report-only: it identifies candidate cloud records and manual cleanup steps, but it does not mutate Intune, Entra, or Defender records.
305307
- Teach "snapshot time travel" as a real anti-pattern.
306308

307309
Important stage warning:
@@ -324,14 +326,14 @@ The audience should believe that even the failure was engineered.
324326

325327
### Repo Timing
326328

327-
**Decision:** Publish the repo before the session, but reveal the QR/short URL near the end of the core.
329+
**Decision:** Publish the repo before the session, but reveal the QR code and `https://github.com/franklesniak/macOSLab` URL near the end of the core.
328330

329331
Recommended stage pattern:
330332

331333
1. Show the command you would run.
332334
2. Open a pre-cloned local copy.
333335
3. Show the exact demo paths.
334-
4. Reveal the QR/short URL at 73:00.
336+
4. Reveal the QR target, `https://github.com/franklesniak/macOSLab`, near the end of the core talk.
335337
5. Keep attention on the stage until the core content is done.
336338

337339
Do not depend on a live `git clone` over conference Wi-Fi.
@@ -1121,7 +1123,7 @@ Primary live flow:
11211123
7. Restore `Post-Enroll-Baseline`.
11221124
8. Run the recovered validation plan.
11231125
9. Show `spctl` accepts VS Code and the app launches.
1124-
10. State clearly that the Intune assignment still needs cleanup before production expansion.
1126+
10. State clearly that the Intune assignment still needs report-only cleanup review before production expansion.
11251127

11261128
Example commands:
11271129

@@ -1155,7 +1157,7 @@ PASS Blocking dialog captured
11551157
PASS Evidence redaction applied
11561158
PASS Rollback restored Post-Enroll-Baseline
11571159
PASS VS Code accepted after rollback
1158-
WARN Intune cloud assignment would still need cleanup before production expansion
1160+
WARN Intune cloud assignment would still need report-only cleanup review before production expansion
11591161
```
11601162

11611163
Controlled failure options:
@@ -1178,9 +1180,9 @@ Recovery playbook:
11781180
- If rollback fails, stop and diagnose before the session; do not claim the rollback restores app launch until `spctl` accepts VS Code.
11791181
- If a secret appears on screen, stop, switch to redacted screenshots, and continue calmly.
11801182

1181-
## Wrap-Up: 70:00-75:00
1183+
## Wrap-Up: 71:30-74:30
11821184

1183-
### Dragons Checklist, 70:00-73:00
1185+
### Dragons Checklist and Anti-Patterns, 71:30-72:25
11841186

11851187
Show a prebuilt triage table.
11861188

@@ -1214,12 +1216,12 @@ Explicit dragons to name:
12141216
- Gatekeeper/System Policy Control app-execution controls.
12151217
- Disk and snapshot sprawl.
12161218

1217-
### Repo Handoff and Q&A Rules, 73:00-75:00
1219+
### Repo Handoff, Monday Plan, and Recap, 72:25-74:30
12181220

12191221
Show:
12201222

12211223
- QR code.
1222-
- Short URL.
1224+
- URL: `https://github.com/franklesniak/macOSLab`.
12231225
- Repo tree.
12241226
- `docs/Start-Here.md` highlighted.
12251227
- `examples/MMSMOA-2026` highlighted.
@@ -1236,9 +1238,11 @@ Q&A rules:
12361238
- Follow-ups if time permits.
12371239
- Include hypervisor and enrollment method if relevant.
12381240

1239-
## Extended Q&A: 75:00-105:00
1241+
Keep the CFP recap slide in the core talk. It repeats the four accepted takeaways with green checkmarks and one-line delivery notes.
1242+
1243+
## Extended Q&A: 74:30-104:30
12401244

1241-
### Mechanics, 75:00-78:00
1245+
### Mechanics, 74:30-77:30
12421246

12431247
Leave the Q&A bucket slide up.
12441248

@@ -1261,7 +1265,7 @@ Six buckets. Few enough that the slide is a real menu rather than a wall of text
12611265
| Evidence and change-board outputs | What do I attach to a change ticket? What does Log Analytics ingestion look like? How do I redact recovery-key proof safely? |
12621266
| CI, Tart, and inventory adjacencies | When do I move beyond desktop labs? Should I bridge any of this into ConfigMgr inventory? |
12631267

1264-
### Structured Answer Framework, 78:00-102:00
1268+
### Structured Answer Framework, 77:30-104:30
12651269

12661270
Use this pattern:
12671271

@@ -1285,18 +1289,9 @@ Use these if needed:
12851289
- "Who has a change board that wants more than 'the portal says assigned'?"
12861290
- "Who is trying to decide whether Tart belongs in a CI path?"
12871291

1288-
### Close-Out, 102:00-105:00
1289-
1290-
End with the Monday plan:
1292+
### Final Thank-You, 104:30-105:00
12911293

1292-
1. Clone the repo.
1293-
2. Build one VM.
1294-
3. Take a `Pre-Enroll` snapshot.
1295-
4. Enroll into a lab scope.
1296-
5. Test one risky policy.
1297-
6. Export redacted evidence.
1298-
7. Roll back.
1299-
8. Clean up the cloud record.
1294+
End with the QR code, speaker names, and one sentence of thanks.
13001295

13011296
Final line:
13021297

@@ -1330,9 +1325,10 @@ Final line:
13301325
| 22 | Demo 4 evidence: VS Code blocked, `spctl` rejects, rollback restores. | During Demo 4 |
13311326
| 23 | FileVault and Defender proof boundaries: still required, not the live failure. | 68:00 |
13321327
| 24 | Dragons checklist updated for Gatekeeper and cloud state. | 70:00 |
1333-
| 25 | Repo tree and Start Here. | 73:00 |
1334-
| 26 | Q&A buckets. | 75:00 |
1335-
| 27 | Monday plan and final reminder. | 102:00 |
1328+
| 25 | Repo tree and Start Here. | 72:25 |
1329+
| 26 | Monday plan and CFP recap. | 73:15 |
1330+
| 27 | Q&A buckets. | 74:30 |
1331+
| 28 | Final thank-you. | 104:30 |
13361332

13371333
## Windows-Admin Translation Cheat Sheet
13381334

@@ -1669,7 +1665,7 @@ Answer:
16691665

16701666
Answer:
16711667

1672-
> No. Snapshot rollback restores the VM state. It does not erase Intune, Entra, Defender portal state, audit logs, or reporting history. The starter kit treats cloud cleanup as part of the lab lifecycle because otherwise you create haunted device objects.
1668+
> No. Snapshot rollback restores the VM state. It does not erase Intune, Entra, Defender portal state, audit logs, or reporting history. The starter kit treats report-only cloud cleanup review as part of the lab lifecycle because otherwise you create stale cloud records that no longer match the restored VM.
16731669
16741670
### "Can you show the FileVault recovery key?"
16751671

@@ -1686,11 +1682,11 @@ Answer:
16861682
- Freeze demo tenant policies.
16871683
- Update placeholder build values throughout the deck and demo configs to your actual pinned build.
16881684
- Publish repo privately or publicly enough to validate links.
1689-
- Run full 105-minute rehearsal.
1685+
- Run a full 75-minute core rehearsal plus a 30-minute Q&A drill.
16901686
- Record Demo 4 success path.
16911687
- Rehearse the break-glass narration over the recording at least once.
16921688
- Validate screenshots.
1693-
- Validate QR code and short URL.
1689+
- Validate QR code and `https://github.com/franklesniak/macOSLab`.
16941690
- Confirm both speakers know handoffs.
16951691
- Confirm evidence redaction behavior.
16961692
- Confirm no full recovery key, token, secret, or private tenant detail appears in any public artifact.
@@ -1702,7 +1698,7 @@ Answer:
17021698
- Confirm all checkpoints.
17031699
- Export evidence from a clean run.
17041700
- Test hotspot or fallback network.
1705-
- Confirm repo short URL.
1701+
- Confirm repo URL.
17061702
- Re-run `Test-LabReadiness.ps1`.
17071703
- Rehearse failure pivots.
17081704
- Re-check Parallels, UTM, Tart, Apple, and Microsoft documentation for any changed behavior or version notes.

0 commit comments

Comments
 (0)