From 951f13023d7fb4187657532b5f178f9dbe09e4fa Mon Sep 17 00:00:00 2001 From: Dallin Romney Date: Sat, 1 Aug 2026 19:54:39 +0800 Subject: [PATCH] fix(ci): accept attested legacy Telegram evidence (#117330) * fix(ci): attest legacy Telegram QA evidence mode * fix(ci): attest Telegram QA evidence contract * refactor(ci): narrow Telegram evidence compatibility --- .../openclaw-release-telegram-qa.yml | 26 +++++++++++++------ 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/.github/workflows/openclaw-release-telegram-qa.yml b/.github/workflows/openclaw-release-telegram-qa.yml index abfd51ac3a38..9863d6834de8 100644 --- a/.github/workflows/openclaw-release-telegram-qa.yml +++ b/.github/workflows/openclaw-release-telegram-qa.yml @@ -2551,7 +2551,7 @@ jobs: ' "$proof_path" >/dev/null done - - name: Finalize trusted Telegram process-boundary evidence + - name: Finalize trusted Telegram execution evidence id: finalize_boundary if: always() && steps.terminate_sut.outputs.quiescent == 'true' && steps.run_lane.outputs.output_dir != '' env: @@ -2574,13 +2574,14 @@ jobs: jq -e \ --arg runId "$GITHUB_RUN_ID" \ --argjson runAttempt "$GITHUB_RUN_ATTEMPT" \ + --arg targetSha "$TARGET_SHA" \ ' .version == 1 and .kind == "telegram-sut-boundary" and .runId == $runId and .runAttempt == $runAttempt and (.workflowSha | test("^[a-f0-9]{40}$")) and - (.targetSha | test("^[a-f0-9]{40}$")) and + .targetSha == $targetSha and (.candidateArtifact.id | test("^[1-9][0-9]*$")) and (.candidateArtifact.name | length > 0) and (.candidateArtifact.digest | test("^[a-f0-9]{64}$")) and @@ -2588,15 +2589,24 @@ jobs: .candidateArtifact.runAttempt == $runAttempt and (.candidateArtifact.fileName | length > 0) and (.candidateArtifact.sha256 | test("^[a-f0-9]{64}$")) and - (.candidateArtifact.sourceSha | test("^[a-f0-9]{40}$")) and + .candidateArtifact.sourceSha == $targetSha and (.candidateArtifact.version | length > 0) ' "$context_path" >/dev/null - # This frozen extended-stable candidate predates the boundary protocol. - # Every other target fails closed until it emits the required evidence. - legacy_process_boundary_target_sha="2dbfe013e511d0c7e0720356f5af5c7bb210db19" - if [[ "$TARGET_SHA" == "$legacy_process_boundary_target_sha" ]]; then - jq --arg executionMode "legacy-runner" \ + # The archive and source tree were independently attested before this step. + # A tracked contract opts legacy candidates into the pre-boundary evidence shape. + legacy_contract_path="${CANDIDATE_ROOT}/qa/contracts/telegram-execution-evidence.json" + if [[ -e "$legacy_contract_path" || -L "$legacy_contract_path" ]]; then + [[ -f "$legacy_contract_path" && ! -L "$legacy_contract_path" ]] + candidate_version="$(jq -er '.candidateArtifact.version' "$context_path")" + jq -e --arg candidateVersion "$candidate_version" ' + (keys | sort) == ["candidateVersion", "kind", "mode", "version"] and + .version == 1 and + .kind == "openclaw-release-telegram-execution-evidence" and + .mode == "legacy-direct-runner-v1" and + .candidateVersion == $candidateVersion + ' "$legacy_contract_path" >/dev/null + jq --arg executionMode "legacy-direct-runner-v1" \ '. + {executionMode: $executionMode}' "$context_path" >"$aggregate_path" chmod 0600 "$aggregate_path" echo "aggregate_path=$aggregate_path" >>"$GITHUB_OUTPUT"