feat: resolve roster-bound packages through verified cache
This commit is contained in:
@@ -7,9 +7,18 @@ Rollback restores the exact pointers, deletes the pilot version and startup scri
|
||||
## Last-known-good resolution
|
||||
|
||||
Each activated version retains its validated package manifest alongside its payload.
|
||||
`LocalPackageStore.ResolveAsync` revalidates the manifest, package identity/product
|
||||
compatibility, entry payload and every payload SHA-256 before returning a local
|
||||
version. It returns current first. Only when current is invalid and the caller
|
||||
explicitly permits offline fallback can it return previous. It never reads or
|
||||
executes a package from DFS, and a failed or corrupted update never becomes
|
||||
last-known-good.
|
||||
`PackageResolutionUseCase` receives an explicit roster requirement: package ID,
|
||||
product/year/architecture, channel, exact version, roster identity and offline
|
||||
policy. On an online acquisition it stages locally, binds that requirement to the
|
||||
activated version, then revalidates through `LocalPackageStore.ResolveAsync`.
|
||||
|
||||
The resolver checks manifest, binding, identity/product compatibility, entry and
|
||||
all payload lengths/SHA-256 before returning a local version. It returns current
|
||||
first. Only when current is invalid and the requirement explicitly permits offline
|
||||
fallback can it return previous. A cache entry with another roster, channel or
|
||||
version is rejected. It never reads or executes a package from DFS, and a failed
|
||||
or corrupted update never becomes last-known-good.
|
||||
|
||||
Resolution emits stable evidence codes: `ONLINE_PACKAGE_SELECTED`,
|
||||
`VALID_CURRENT_CACHE_SELECTED`, `PREVIOUS_LKG_SELECTED`,
|
||||
`OFFLINE_FALLBACK_DISABLED`, and `NO_SAFE_PACKAGE_AVAILABLE`.
|
||||
|
||||
@@ -1 +1 @@
|
||||
{"nextPilotModeImplemented":true,"pilotConfigurationImplemented":true,"pilotRootPolicyImplemented":true,"productDiscoveryImplemented":true,"profileDiscoveryImplemented":true,"safetyGateImplemented":true,"prepareImplemented":true,"executionPermitImplemented":true,"isolatedStoreImplemented":true,"atomicActivationImplemented":true,"rollbackImplemented":true,"startupScriptLifecycleImplemented":true,"realProcessAdapterCompiled":true,"realExecutionReleaseEnabled":false,"actualProcessStarted":false,"actualPilotRootCreated":false,"actualPackageActivated":false,"productionDeploy":false}
|
||||
{"nextPilotModeImplemented":true,"pilotConfigurationImplemented":true,"pilotRootPolicyImplemented":true,"productDiscoveryImplemented":true,"profileDiscoveryImplemented":true,"safetyGateImplemented":true,"prepareImplemented":true,"executionPermitImplemented":true,"isolatedStoreImplemented":true,"atomicActivationImplemented":true,"rollbackImplemented":true,"offlineResolutionImplemented":true,"offlineResolutionVerifiedByTests":true,"productionCatalogOutageRuntimeVerified":false,"startupScriptLifecycleImplemented":true,"realProcessAdapterCompiled":true,"realExecutionReleaseEnabled":false,"actualProcessStarted":false,"actualPilotRootCreated":false,"actualPackageActivated":false,"productionDeploy":false}
|
||||
|
||||
+6
-1
@@ -1,6 +1,11 @@
|
||||
# Foundation scope
|
||||
|
||||
Launcher Next is intentionally non-deploying. Package synchronization accepts only a supplied local test source; no production UNC client is wired. Process launch preparation is dry-run only, and the WPF launch button is disabled. The next authorized slice is registry discovery validation and a non-production package catalog pilot.
|
||||
Launcher Next is intentionally non-deploying. Package synchronization accepts only a supplied local test source; no production UNC client is wired. Process launch preparation is dry-run only, and the WPF launch button is disabled.
|
||||
|
||||
Package selection now has a product-neutral orchestration contract: an explicit
|
||||
roster requirement is resolved through catalog acquisition/local staging, or—only
|
||||
with explicit policy—through a fully revalidated current/previous local cache.
|
||||
This is verified by local integration tests, not by a production catalog outage.
|
||||
|
||||
`tests/Launcher.Next.Tests/fixtures/p-rec-annot-pilot.manifest.json` is a synthetic P_Rec_Annot contract. Its all-zero hash is deliberately replaced by a hash of a test-created one-byte placeholder; it does not identify or package a real Autodesk plugin.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user