docs: record phase one lifecycle verification

This commit is contained in:
codex
2026-08-06 10:01:34 +03:00
parent 9fce6ee830
commit 8d32f8e7ae
2 changed files with 12 additions and 8 deletions
+5 -3
View File
@@ -1,6 +1,8 @@
# Package activation
Before changing package pointers, Launcher Next writes an activation snapshot containing exact previous `current.json` and `previous.json` contents and their SHA-256 values. Files are copied to a unique staging directory and rehashed. Only then is staging moved to `packages/<package>/versions/<version>` and the package-local pointer updated atomically.
Files are copied to an operation-owned staging directory, rehashed and moved to a deterministic immutable version location. Materialization never changes activation pointers. Explicit activation writes schema-v2 `current.json` through an operation-owned temporary file, flush, replace and readback. The pointer binds manifest SHA-256, deterministic payload-set SHA-256 and every payload relative path/length/SHA-256.
Activation and receipt-bound rollback are serialized by a process-local `SemaphoreSlim`. Cross-process coordination is not verified and network-share pointer mutation is not supported. The controlled lifecycle pilot uses only an explicit local root and does not imply corporate DFS, AutoCAD runtime or production acceptance.
Rollback restores the exact pointers, deletes the pilot version and startup script, and removes incomplete staging. Autodesk assemblies, PDBs, executables, test assemblies and legacy files are rejected from the pilot package.
@@ -10,14 +12,14 @@ Each activated version retains its validated package manifest alongside its payl
`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`.
immutable 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.
or corrupted update never becomes last-known-good. Resolution follows only the explicit current/previous pointers and never enumerates the version store to find an approximate candidate.
Resolution emits stable evidence codes: `ONLINE_PACKAGE_SELECTED`,
`VALID_CURRENT_CACHE_SELECTED`, `PREVIOUS_LKG_SELECTED`,
@@ -4,10 +4,12 @@
"realCorporateRosterParsing": "BLOCKED",
"realCorporatePackageAcquisition": "BLOCKED",
"blockReason": "CORPORATE_CATALOG_AND_ROSTER_PATHS_NOT_CONFIGURED",
"localImmutableStaging": "VERIFIED_BY_TESTS",
"controlledOutageRecovery": "VERIFIED_BY_TESTS",
"productionActivation": "NOT_RUN",
"autodeskRuntime": "NOT_RUN",
"productionReadiness": "NOT_ACHIEVED",
"localImmutableStaging": "CONTROLLED_FILESYSTEM_PILOT_VERIFIED",
"localPackageLifecycle": "CONTROLLED_FILESYSTEM_PILOT_VERIFIED",
"controlledOutageRecovery": "CONTROLLED_FILESYSTEM_PILOT_VERIFIED",
"crossProcessActivationCoordination": "NOT_RUNTIME_VERIFIED",
"productionActivation": "NOT_RUNTIME_VERIFIED",
"autodeskRuntime": "NOT_RUNTIME_VERIFIED",
"productionReadiness": "NOT_RUNTIME_VERIFIED",
"redaction": "No corporate paths, roster contents, package payload, session identity, or machine data were recorded."
}