Dashboard › cli › Distillation
797c8ffd-32f5-410e-929c-522181bae4e2["lore_tm_v1_VsocXy6WzB4PTIO8nIGVUwZZzNubbkjzmYHzH-ax2qM","lore_tm_v1_4ws4ZXytuwmrd_biKuqO9Ui-IE3iRJC69nWGUBW5P4Q","lore_tm_v1_xyxYHwlNhjS-m_CWgFbIgfayJanaAsOxCsFWHfHgHv8","lore_tm_v1_l5FXcvomocw4FdBpTiMAcCwR1o3dNzMdvYaAksZ8eQM","lore_tm_v1_EzX4uade50uyta3JhsLmrBTFrWSxd_N2S_da4oz2yeo","lore_tm_v1_kBxQQmZ7IJFr3N1EK-VqMCVa0sixh5dkC7gGwooxsS4","lore_tm_v1_5oZpovHTQdBX9clIxFNABRQt-b4aXoVW6i-dhiEwEnA","lore_tm_v1_prXHttSiEsGNxm637c-8M3TxE1GaBinRivmdz9yG0Jo","lore_tm_v1_dYf_ynNcjJ_jcNoIJbLrhGyUbV5rgUmSjEmYiHWbfcs","lore_tm_v1_MYpm44QiyLA9FIivn_rODnR5JwOEquPp87JJ-ODsx84","lore_tm_v1_HgVMuPpayLdn1s44pW0Hd9Npa5Boe_BTqOfjIna78vI"]
Date: Sep 10, 2026
MERGE verdicts and all gates pass, followed by immutable merge-commit parent/tree verification.cea7b2afba91f11f1cdbb1785ea97ba61159520c over base ec83887a16f780f32fba4b7d710bad262dba3a22; its merge state changed from BLOCKED to UNSTABLE.102747511909, Build Docs job 102747511887, and aggregate CI Status job 102747776434 completed successfully. Warden job 102746449039 remained IN_PROGRESS.65odpkap was scheduled for 5 minutes to recheck exact head cea7b2afba91f11f1cdbb1785ea97ba61159520c, Warden, and threads; await security task ses_f7665898bffevf1NoUXL04MCBb by notification only without polling or duplication; and, if security returned substantive MERGE and Warden passed, reconfirm exact head, CLEAN status, and all threads before merging through gh and verifying immutable merge-commit parents/tree.ses_f7665898bffevf1NoUXL04MCBb returned DO-NOT-MERGE with two MUST-FIX findings.packages/cli/src/lib/ghcr.ts:234-242 accepted any truthy token and returned it as a string, allowing { "token": {} } across the typed boundary; packages/cli/src/lib/ghcr.ts:253-277 cast arbitrary JSON to OciManifest without validating schemaVersion, layers, annotations, digests, sizes, or media types; consequently packages/cli/src/lib/upgrade.ts:617-645 could select, report, and cache a nightly source from a partial payload such as {annotations:{version:"1.2.3-dev.1"}}.token; OCI manifests must pass one runtime validator requiring schema version 2, an array of structurally valid layers, string annotations, non-negative finite sizes, and valid consumed digests in sha256:<hex> form.{token:{}} with HTTP 200 and assert getAnonymousToken() rejects with UpgradeError before any manifest request; 2. pass fetchLatestNightlyVersionWithSource() HTTP-200 payloads that are arrays, null, omit layers, use non-array layers, or contain malformed layer fields, then assert terminal metadata failure and zero legacy-source requests; 3. retain a complete valid manifest fixture as the positive control.packages/cli/src/lib/upgrade.ts:509 and GHCR token/manifest body consumption at packages/cli/src/lib/ghcr.ts:234,277 occurred outside the cancellation/transport wrapper, while packages/cli/src/commands/cli/upgrade.ts:221-225 allowed cache fallback only for UpgradeTransportError.response.json() could lose the callerβs arbitrary abort reason, while a connection termination during body consumption remained a raw error rather than UpgradeTransportError, incorrectly preventing cache fallback. Existing cancellation tests covered fetch rejection and pagination but not response-body consumption.signal.reason if the external signal is aborted, classify body transport failures as UpgradeTransportError, and classify completed malformed JSON as terminal metadata errors.ReadableStream that aborts during body consumption with a generic AbortError, then assert rejection is the exact object passed to controller.abort(reason) and that no retry or legacy request occurs; 2. use a stream that fails with TypeError("terminated") without cancellation, seed the version cache, and assert the curl command takes network fallback; 3. return completed malformed JSON and assert no cache fallback and no legacy request.ec83887a16f780f32fba4b7d710bad262dba3a22, head cea7b2afba91f11f1cdbb1785ea97ba61159520c, and merge base equal to base; it inspected all 17 changed source/test files from Git objects and reported patch SHA-256 b8d084021f9abb67a916c80ae2d18e3ae7c4552cad4c5a7a7e1d11385b474ff4.OciManifest references in packages/cli/src/lib/upgrade.ts:63, packages/cli/src/lib/ghcr.ts:189, packages/cli/src/lib/delta-upgrade.ts:23, and packages/cli/test/lib/ghcr.test.ts:23; OciLayer is defined in packages/cli/src/lib/ghcr.ts:172.packages/cli/src/lib/ghcr.ts implementation defines OciLayer with digest: string, mediaType: string, size: number, and optional annotations?: Record<string, string>; OciManifest has schemaVersion: number, optional mediaType, optional config?: OciLayer, layers: OciLayer[], and optional annotations?: Record<string, string>.getAnonymousToken() in packages/cli/src/lib/ghcr.ts:212-242 obtains the selected ghcrRepo, calls fetchWithRetry(), casts await response.json() to { token?: string }, checks only truthiness at :235, and returns data.token.fetchManifest() in packages/cli/src/lib/ghcr.ts:253-277 requests ${GHCR_REGISTRY}/v2/${source.ghcrRepo}/manifests/${tag} with Authorization: Bearer ${token}, Accept: OCI_MANIFEST_TYPE, and User-Agent; it throws GhcrManifestHttpError for non-OK responses but returns await response.json() cast directly to OciManifest for successful responses.parseUpgradeJson() helper with three distinct outcomes: 1. caller cancellation rethrows the exact signal.reason; 2. completed malformed JSON becomes terminal UpgradeError; 3. response body-stream failure becomes UpgradeTransportError. Planned call sites were GitHub, npm, GHCR token, and GHCR manifest boundaries, with OCI structure validated before any nightly source selection.