geenforce: display scope is self-sufficient, no common inheritance
Per decision: displays need none of the fleet-wide common scope's software, so the gea-shopfloor-display scope carries everything it enforces and does not inherit common. This avoids repackaging common's SMB-backed payloads for a share-less display. - Invert the client common-merge switch: -NoCommon (default-on) becomes -IncludeCommon (default OFF). A scope now enforces alone unless opted in. The capability stays for a future share-less non-display PC; displays omit it. - Drop the common SMB-payload audit + inheritance sections from the display seed comments and docs (GE-ENFORCE-DISPLAY.md); document self-sufficiency. - GE-ENFORCE-CLIENT.md: common-scope inheritance is now opt-in.
This commit is contained in:
@@ -104,12 +104,13 @@ return code, `$null`, or several emitted objects) into the count/results shape
|
||||
`New-ShopdbReport` expects, so a not-yet-compliant engine still produces a valid
|
||||
report.
|
||||
|
||||
## Common-scope inheritance
|
||||
## Common-scope inheritance (opt-in, OFF by default)
|
||||
|
||||
Every PC inherits the fleet-wide `common` scope on top of its own pctype scope,
|
||||
mirroring the real GE-Enforce.ps1 (which applies `common\manifest.json` first,
|
||||
then the pctype's). `Invoke-ShopdbEnforce.ps1` fetches the `common` scope in
|
||||
addition to `-Scope` and merges it in via `Merge-ShopdbManifests`:
|
||||
By default a PC enforces its `-Scope` ALONE. Pass `-IncludeCommon` to also fetch
|
||||
the fleet-wide `common` scope and merge it on top, mirroring the real
|
||||
GE-Enforce.ps1 (which applies `common\manifest.json` first, then the pctype's).
|
||||
When enabled, `Invoke-ShopdbEnforce.ps1` fetches `common` in addition to
|
||||
`-Scope` and merges it via `Merge-ShopdbManifests`:
|
||||
|
||||
- entries are keyed by `Name` (case-insensitive);
|
||||
- common's unique entries come first, then all pctype entries (common enforces
|
||||
@@ -117,11 +118,16 @@ addition to `-Scope` and merges it in via `Merge-ShopdbManifests`:
|
||||
- on a `Name` conflict the pctype entry wins (its override replaces common's).
|
||||
|
||||
Common is fetched over the same fail-safe path (ETag + last-known-good cache).
|
||||
Pass `-NoCommon` to enforce the pctype alone, or `-CommonScope <name>` to inherit
|
||||
a different fleet scope. A run whose `-Scope` already is the common scope does
|
||||
not merge itself. This is how the three display subtypes (Dashboard, Lobby, 3D
|
||||
Print Room), selected by `C:\Enrollment\display-type.txt`, pick up shared policy
|
||||
without duplicating it per subtype.
|
||||
`-CommonScope <name>` inherits a different fleet scope; a run whose `-Scope`
|
||||
already is the common scope does not merge itself.
|
||||
|
||||
Displays do NOT use this: the `gea-shopfloor-display` scope is self-sufficient,
|
||||
so the display scheduled task omits `-IncludeCommon`. Common-merge exists for a
|
||||
future share-less non-display PC that genuinely needs the fleet-wide entries
|
||||
(which would first require repackaging common's SMB payloads as http/inline).
|
||||
The three display subtypes (Dashboard, Lobby, 3D Print Room), selected by
|
||||
`C:\Enrollment\display-type.txt`, carry their shared policy inside the display
|
||||
scope itself, not via common.
|
||||
|
||||
## Fail-safe is observable, not silent
|
||||
|
||||
|
||||
Reference in New Issue
Block a user