Skip to content

chore(workflow): pin bonedigger lifecycle to clanker-queue rollout - #1196

Closed
castrojo wants to merge 1 commit into
testingfrom
chore/bonedigger-clanker-queue
Closed

chore(workflow): pin bonedigger lifecycle to clanker-queue rollout#1196
castrojo wants to merge 1 commit into
testingfrom
chore/bonedigger-clanker-queue

Conversation

@castrojo

@castrojo castrojo commented Jul 24, 2026

Copy link
Copy Markdown
Contributor

Pins dakota's bonedigger caller to the new bonedigger rollout SHA so it can consume the clanker-queue migration workflow.

Summary by CodeRabbit

  • Chores
    • Updated the automated lifecycle workflow to use a newer workflow revision.
    • No changes to workflow triggers, permissions, or job configuration.

@castrojo
castrojo requested a review from a team as a code owner July 24, 2026 17:07
@coderabbitai

coderabbitai Bot commented Jul 24, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The lifecycle job’s reusable workflow reference is updated from the previous pinned revision to commit aa3185566171de43106976cd5a0ac72ee3106868.

Changes

Lifecycle workflow update

Layer / File(s) Summary
Update lifecycle workflow reference
.github/workflows/bonedigger.yml
The lifecycle job now references the newer pinned reusable workflow commit.

Estimated code review effort: 1 (Trivial) | ~2 minutes

Poem

I’m a rabbit with a workflow pin,
A newer hash now hops in.
No triggers changed, no jobs astray,
Just one fresh revision leads the way. 🐇

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes pinning the bonedigger lifecycle workflow to the clanker-queue rollout SHA.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/bonedigger-clanker-queue

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

This PR targets main — please retarget it to testing. All content PRs (features, fixes, BST changes) land on testing. The main branch is a release bookmark only.

@hanthor hanthor left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This one-line rollout change targets main from a branch based on the active testing line, so the PR currently contains a large set of unrelated workflow, element, patch, and documentation changes and is conflicting. Dakota content PRs must target testing. Please retarget or recreate it from testing with only the bonedigger pin, then refresh that pin after the blocking changes on projectbluefin/bonedigger#33 are resolved.

@castrojo
castrojo changed the base branch from main to testing July 25, 2026 16:01
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@castrojo
castrojo force-pushed the chore/bonedigger-clanker-queue branch from 036f52b to 6f2efdc Compare July 25, 2026 16:01
@castrojo
castrojo enabled auto-merge July 25, 2026 16:01

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/bonedigger.yml:
- Around line 20-23: Remove the `secrets: inherit` entry from the reusable
workflow invocation in the Bonedigger workflow, leaving `uses` and `brand_name`
unchanged so the called workflow relies on its automatically provided
`github.token`.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: fd67166d-35f4-4056-95f2-b4a89d44a906

📥 Commits

Reviewing files that changed from the base of the PR and between e364c25 and 6f2efdc.

📒 Files selected for processing (1)
  • .github/workflows/bonedigger.yml

Comment on lines +20 to 23
uses: projectbluefin/bonedigger/.github/workflows/lifecycle.yml@aa3185566171de43106976cd5a0ac72ee3106868 # clanker-queue-rollout
with:
brand_name: "Dakota"
secrets: inherit

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow snippets =="
if [ -f .github/workflows/bonedigger.yml ]; then
  nl -ba .github/workflows/bonedigger.yml | sed -n '1,80p'
else
  echo ".github/workflows/bonedigger.yml not found"
fi

echo
echo "== reusable workflow source from pinned SHA =="
python3 - <<'PY'
import urllib.request
url="https://raw.githubusercontent.com/projectbluefin/bonedigger/aa3185566171de43106976cd5a0ac72ee3106868/.github/workflows/lifecycle.yml"
try:
    text=urllib.request.urlopen(url, timeout=20).read().decode()
    for i,line in enumerate(text.splitlines(), 1):
        print(f"{i:4}: {line}")
except Exception as e:
    print(f"ERROR fetching {url}: {e}")
PY

echo
echo "== other secrets inheritance usages in workflows =="
rg -n "secrets:\s*inherit|secrets:\s*\{" .github/workflows || true

Repository: projectbluefin/dakota

Length of output: 223


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "== workflow snippets =="
if [ -f .github/workflows/bonedigger.yml ]; then
  sed -n '1,100p' .github/workflows/bonedigger.yml | cat -n
else
  echo ".github/workflows/bonedigger.yml not found"
fi

echo
echo "== reusable workflow source from pinned SHA =="
python3 - <<'PY'
import urllib.request
url="https://raw.githubusercontent.com/projectbluefin/bonedigger/aa3185566171de43106976cd5a0ac72ee3106868/.github/workflows/lifecycle.yml"
try:
    text=urllib.request.urlopen(url, timeout=20).read().decode()
    lines=text.splitlines()
    for i,line in enumerate(lines, 1):
        print(f"{i:4}: {line}")
    print(f"\nTOKEN usages: {[i for i,line in enumerate(lines,1) if 'secrets.GITHUB_TOKEN' in line or 'GITHUB_TOKEN' in line][:20]}")
except Exception as e:
    print(f"ERROR fetching {url}: {e}")
PY

echo
echo "== other secrets inheritance usages in workflows =="
rg -n "secrets:\s*inherit|secrets:\s*\{" .github/workflows || true

echo
echo "== files in .github/workflows =="
git ls-files .github/workflows

Repository: projectbluefin/dakota

Length of output: 2455


🌐 Web query:

GitHub Actions reusable workflows permissions GITHUB_TOKEN automatically available secrets GitHub Actions documentation

💡 Result:

In GitHub Actions, reusable workflows handle permissions and secrets differently, as detailed below: GITHUB_TOKEN and Permissions The GITHUB_TOKEN is automatically available to reusable workflows [1][2]. Regarding permissions, reusable workflows inherit the permissions configured in the job that calls them [1][2]. If no permissions are explicitly specified in the calling job, the called workflow defaults to the standard default permissions for the GITHUB_TOKEN [1][2]. Crucially, GITHUB_TOKEN permissions passed to or inherited by a reusable workflow can only be restricted (downgraded) and never elevated; this applies to entire chains of nested workflows [1][2]. Secrets Unlike the GITHUB_TOKEN, other secrets are not automatically passed to reusable workflows [3][4]. To make secrets available, you must explicitly pass them using one of two methods [5]: 1. Explicit Passing: You can define the secrets in the reusable workflow's on.workflow_call block and pass them from the calling workflow using the secrets keyword [6][7][5]. 2. Inheritance: You can use the secrets: inherit keyword in the calling workflow to automatically pass all repository and organization secrets from the caller to the reusable workflow [6][7][5]. Note that environment secrets cannot be passed to reusable workflows because on.workflow_call does not support the environment keyword [6][7]. If a reusable workflow specifies an environment at the job level, it will use that environment's secrets rather than any secrets passed from the caller [6][7].

Citations:


🌐 Web query:

site:raw.githubusercontent.com/projectbluefin/bonedigger aa3185566171de43106976cdaa3185566171de43106976cd5a0ac72ee3106868 .github/workflows/lifecycle.yml

💡 Result:

I couldn’t verify that exact raw.githubusercontent.com/projectbluefin/bonedigger/.../.github/workflows/lifecycle.yml path. What I found instead is that Bluefin’s docs and reports discuss a bonedigger lifecycle workflow, but the reusable lifecycle.yml appears to live in projectbluefin/common, not directly in bonedigger. The docs also note that bonedigger was pinned to a SHA and later had to be updated because the pinned commit predated lifecycle.yml in that repo. (app.dosu.dev)

If you want, I can help locate the exact raw file URL or the commit SHA that contains it.

Citations:


🌐 Web query:

projectbluefin bonedigger lifecyle.yml secrets.GITHUB_TOKEN projectbluefin/common workflow_call inputs

💡 Result:

In the Project Bluefin ecosystem, bonedigger and common handle separate, complementary parts of the issue lifecycle automation [1][2][3]. The bonedigger repository provides a specialized workflow, lifecycle.yml, which handles: - Detecting ujust report issue bodies [3][4]. - Syncing priority labels based on ujust confirm counts (e.g., 3+ for priority/p1, 5+ for priority/p0) [2][4]. - Managing agent donation fast-track labels [2][3]. The broader issue lifecycle management, previously handled by bonedigger, was moved to projectbluefin/common/.github/workflows/lifecycle.yml [1][2]. This common workflow manages [4]: - Slash commands (e.g., /claim, /approve, /lgtm, /wontfix, /hold) [1][4]. - Issue body widget rendering (the pipeline status block) [1][4]. - Label creation and synchronization [1][4]. - Stale issue sweeps (queue transitions) [1][4]. Configuration: - Repositories typically call the bonedigger lifecycle workflow via uses: projectbluefin/bonedigger/.github/workflows/lifecycle.yml@main [2][3]. - If a repository requires the full set of lifecycle features, it must also wire the caller for projectbluefin/common/.github/workflows/lifecycle.yml [2][3]. - Regarding secrets.GITHUB_TOKEN: Project Bluefin workflows have transitioned away from requiring secrets: inherit for GITHUB_TOKEN usage [5][6]. Reusable workflows now prioritize using the automatically available github.token directly, and maintainers have explicitly removed empty secrets blocks and secrets: inherit lines from callers to improve security and satisfy workflow_call requirements [7][6]. Inputs: - When using workflow_call, workflows expect specific inputs defined in their respective on.workflow_call.inputs blocks [8][9][10]. For example, reusable-build.yml requires inputs like brand_name and stream_name [8][11], while ISO build workflows require inputs like image_version [9][10]. Documentation for these inputs is typically found within the specific reusable workflow file or the project's docs/skills/ directory [8][11][10].

Citations:


🏁 Script executed:

#!/bin/bash
set -u

echo "== git config =="
git config --get remote.origin.url || true
git rev-parse --is-inside-work-tree || true

echo
echo "== GitHub API pinned ref/tags/commit =="
python3 - <<'PY'
import json, urllib.request

owner,repo="projectbluefin","bonedigger"
sha="aa3185566171de43106976cd5a0ac72ee3106868"
base=f"https://api.github.com/repos/{owner}/{repo}"

print("git ref:")
try:
    print(
        urllib.request.urlopen(f"{base}/git/refs/tags/{sha.split('# ')[0]}", timeout=20).read().decode()
    )
except Exception as e:
    print(f"TAG_REF_ERROR: {type(e).__name__}: {e}")

print("\nresolved commit object:")
try:
    text=urllib.request.urlopen(f"{base}/git/commits/{sha}", timeout=20).read().decode()
    data=json.loads(text)
    print({k:data.get(k) for k in ("sha","type","message")})
except Exception as e:
    print(f"COMMIT_ERROR: {type(e).__name__}: {e}")

print("\nraw workflow from pinned valid commit:")
url=f"https://raw.githubusercontent.com/{owner}/{repo}/{sha}/.github/workflows/lifecycle.yml"
try:
    import ssl
    ctx=ssl.create_default_context()
    raw=urllib.request.urlopen(url, timeout=20, context=ctx).read().decode()
    lines=raw.splitlines()
    for i,line in enumerate(lines,1):
        if i<=120:
            print(f"{i:4}: {line}")
    print(f"\nsecret/token/permission-related lines:")
    for i,line in enumerate(lines,1):
        if any(k in line for k in ("secrets.", "permissions", "workflow_call", "github.token", "repo", "repo:")):
            print(f"{i:4}: {line}")
except Exception as e:
    print(f"RAW_ERROR: {type(e).__name__}: {e}")
PY

Repository: projectbluefin/dakota

Length of output: 813


🌐 Web query:

site:raw.githubusercontent.com/projectbluefin/bonedigger aa3185566171de43106976cd5a0ac72ee3106868 .github/workflows/lifecycle.yml secrets.GITHUB_TOKEN

💡 Result:

Yes — that workflow uses secrets.GITHUB_TOKEN as GH_TOKEN in multiple steps, including issue view/edit operations. (raw.githubusercontent.com)

Citations:


Avoid inheriting all caller secrets.

This reusable workflow consumes secrets.GITHUB_TOKEN, which reusable workflows receive automatically via github.token, so secrets: inherit unnecessarily exposes all Dakota caller secrets to the called workflow. Remove that line unless a specific additional secret is required.

🧰 Tools
🪛 zizmor (1.26.1)

[warning] 20-20: secrets unconditionally inherited by called workflow (secrets-inherit): this reusable workflow

(secrets-inherit)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/bonedigger.yml around lines 20 - 23, Remove the `secrets:
inherit` entry from the reusable workflow invocation in the Bonedigger workflow,
leaving `uses` and `brand_name` unchanged so the called workflow relies on its
automatically provided `github.token`.

Source: Linters/SAST tools

@castrojo

Copy link
Copy Markdown
Contributor Author

Merged into testing in commit a2feac9.

@castrojo castrojo closed this Jul 25, 2026
auto-merge was automatically disabled July 25, 2026 21:39

Pull request was closed

@castrojo castrojo added 4-review A pull request is awaiting review. and removed pr/needs-review labels Jul 28, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

4-review A pull request is awaiting review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants