Dashboard › publish › Distillation
d0812334-173f-440c-8a49-28f05fb5f4e2["lore_tm_v1_b1C2q2jy8jiH4hlOgytqNrEiUJxnA5IlBs3ECBo8T2g","lore_tm_v1_7ygJrkX6FdW4jZEbohB4PJXSb9yaXBxx8ku5VQbDNoQ"]
Date: Sep 8, 2026
workflow_id parameters can be replaced with the workflow file name (for example, main.yaml).GET /repos/{owner}/{repo}/actions/workflows lists repository workflows; read access is sufficient, and private repositories require repo scope for OAuth app tokens and classic PATs. Pagination defaults are per_page=30 (maximum 100) and page=1. Each workflow includes id, node_id, name, path, state, timestamps, API/HTML/badge URLs, and optional deleted_at.GET /repos/{owner}/{repo}/actions/workflows/{workflow_id} gets a workflow; {workflow_id} accepts either its ID or workflow file name such as main.yaml; requires read access, with repo scope for OAuth app tokens/classic PATs on private repositories; returns HTTP 200.PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable disables a workflow, setting state to disabled_manually; {workflow_id} accepts a workflow file name; OAuth tokens and classic PATs require repo scope; returns HTTP 204.POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches manually triggers a workflow and accepts a workflow file name for {workflow_id}. The workflow must configure workflow_dispatch; required body field ref is a branch or tag, optional inputs supports at most 25 properties and omitted inputs use configured defaults; OAuth tokens and classic PATs require repo scope; documented response is HTTP 200 with workflow_run_id, run_url, and html_url.PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable enables a workflow and sets state to active; {workflow_id} accepts a workflow file name; OAuth tokens and classic PATs require repo scope; returns HTTP 204.GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing reports current-cycle billable usage for private-repository GitHub-hosted runners in milliseconds, including reruns but excluding macOS/Windows multipliers and whole-minute rounding. {workflow_id} accepts a file name; the endpoint is being retired. Response HTTP 200 contains billable.UBUNTU.total_ms, billable.MACOS.total_ms, and billable.WINDOWS.total_ms.workflow_dispatch can select YAML from arbitrary refs, and the CI relay’s permissions: {} only removes GITHUB_TOKEN; selected-ref YAML can add ${{ secrets.* }} in .github/workflows/ci-poller-dispatch.yml:3-12. .github/workflows/cocoapods-keepalive.yml:9,18-20 is more severe because its dispatch directly exposes a production secret. Agent classified this as violating the arbitrary-ref secret boundary and issued DO-NOT-MERGE.yarn lint fails at .github/workflows/cocoapods-keepalive.yml:1 with yml/plain-scalar; characterized as pre-existing but leaving the exact HEAD lint-red..github/workflows/ci-poller.yml:40-67 checks out the default branch before requesting either app token; .github/workflows/ci-poller-dispatch.yml:3-12 declares no credentials.workflow_dispatch and poller’s workflow_run gate in .github/workflows/ci-poller-dispatch.yml:3-12 and .github/workflows/ci-poller.yml:8-10,23..github/workflows/ci-poller.yml:28-38,445-455.src/publish/authorize-approval.js:135-169; human requester/approver separation in src/publish/authorize-approval.js:200-210; event/digest binding in src/publish/validate-approval-attestation.js:71-100; CI-ready revalidation in .github/workflows/ci-poller.yml:130-145,266-346; and pre-Craft fencing in .github/workflows/publish.yml:197-220,328-353..github/workflows/auto-approve.yml:17-23, .github/workflows/ci-poller.yml:41-52, and .github/workflows/publish.yml:192-223,353.yarn test --printConsoleTrace passed with 16 files and 72 tests; git diff --check passed; yarn lint failed at the pre-existing .github/workflows/cocoapods-keepalive.yml:1 yml/plain-scalar error.