Dashboard › publish › Distillation
5c9d428b-68cd-4f22-95a1-0bf0e02ee06a["lore_tm_v1_gK3Sqy69lF4Z0Mypjntjxq9Cj2X4FMF2BFbLRh71ZDI","lore_tm_v1_NU3Lu3YOlC4sFbbW9YP6m1pYwIBhRcG-Enek1uVVlyA","lore_tm_v1_4yK9G3jNjd7kMrkMBGYBvqXGHR9heRsgnv9HIKY-k54","lore_tm_v1_cjOg-Iem7WnyMoqWbTV8uAFKY1XUUTVdsM6mtckFY30"]
Date: Sep 9, 2026
.github/workflows/cocoapods-keepalive.yml:1-27 defines CocoaPods Token Keep-Alive, scheduled daily at midnight UTC via cron "0 0 * * *" because CocoaPods sessions expire after 3 days of inactivity; job keepalive runs on macos-15 in protected environment: production, exposes COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }}, installs CocoaPods with gem install cocoapods, prints pod --version, and refreshes the session with pod trunk me > /dev/null 2>&1..github/workflows/test.yml:1-34 defines Test for pushes to main and pull requests with permissions: contents: read; job unit-test runs on ubuntu-latest, uses Bash, checks out with actions/checkout@d23441a48e516b6c34aea4fa41551a30e30af803, sets up Node 24 using actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38, caches node_modules using actions/cache@0057852bfaa89a56745cba8c7296529d2fc39830 and key ${{ runner.os }}-node_modules-${{ hashFiles('package.json', 'yarn.lock') }}, conditionally runs yarn install --frozen-lockfile, then runs yarn test.499 insertions(+), 117 deletions(-); largest changes were .github/workflows/ci-poller.yml with 195 changed lines and .github/workflows/publish.yml with 139 changed lines.src/modules/approval-attestation.js:3-6 defines hidden-comment formats with prefixes <!-- publish-approval , <!-- publish-auto-approval , and <!-- publish-ci-ready , plus suffix -->.src/modules/approval-attestation.js:8-12 implements createAttestation(prefix, value) by JSON-serializing the value, encoding it as base64url, and wrapping it with the selected prefix and ATTESTATION_SUFFIX.src/modules/approval-attestation.js:14-29 implements requestDigest({ body, labels, title }): it throws Invalid publish request unless body is a string and labels is an array, then computes a SHA-256 hexadecimal digest over JSON containing the exact body, Boolean dryRun derived from a dry-run label, and title.src/modules/approval-attestation.js:31-55 defines three proof payloads: createApprovalAttestation() binds actor, stringified eventId, requestDigest, and title; createAutoApprovalAttestation() binds autoApprover, requestDigest, and title; createCiReadyAttestation() binds acceptedActor, stringified acceptedEventId, ciReadyActor, requestDigest, and title.src/modules/approval-attestation.js:58-127 parses the first matching hidden attestation from a comment via parseAttestation(), returning null for a missing prefix/suffix or invalid Base64URL/JSON; parseApprovalAttestation(), parseAutoApprovalAttestation(), and parseCiReadyAttestation() additionally require all expected payload fields to be strings.src/modules/approval-attestation.js:129-142 implements compareEventIds(left, right) without numeric precision loss: it stringifies IDs, strips leading zeroes, rejects non-decimal IDs with Invalid issue event ID, compares digit lengths, then uses localeCompare.src/modules/approval-attestation.js:144-174 implements currentLabeledEvent(events, labelName) by filtering for labeled events with the requested label, a string or numeric ID, and actor.login, then choosing the greatest ID via compareEventIds(); malformed IDs or no matches return null. currentAcceptedEvent() selects accepted, and currentCiReadyEvent() selects ci-ready.src/modules/approval-attestation.js:176-193 implements hasApprovalAttestation(): a proof is accepted only from the exact attestationAuthor and only when its actor, eventId, request digest, and title match the supplied current event and live issue.src/modules/approval-attestation.js:195-216 implements hasAutoApprovalAttestation(): a proof is accepted only from the exact attestationAuthor and only when its autoApprover, request digest, and title match the expected approver and live issue.src/modules/approval-attestation.js:218-242 implements hasCiReadyAttestation(): a proof is accepted only from the exact attestationAuthor and only when acceptedActor, acceptedEventId, ciReadyActor, request digest, and title match the supplied accepted event, current CI-ready event, and live issue.src/modules/approval-attestation.js:244-259 exports compareEventIds, createApprovalAttestation, createAutoApprovalAttestation, createCiReadyAttestation, currentAcceptedEvent, currentCiReadyEvent, currentLabeledEvent, hasApprovalAttestation, hasAutoApprovalAttestation, hasCiReadyAttestation, parseApprovalAttestation, parseAutoApprovalAttestation, parseCiReadyAttestation, and requestDigest.