Skip to content

chore: sync workflow templates - #2030

Merged
stranske merged 1 commit into
mainfrom
sync/workflows-2c0d11f0678e
Jun 23, 2026
Merged

stranske merged 1 commit into
mainfrom
sync/workflows-2c0d11f0678e

Conversation

@stranske

@stranske stranske commented Jun 23, 2026

Copy link
Copy Markdown
Owner

Sync Summary

Files Updated

  • maint-76-claude-code-review.yml: Claude Code review (opt-in) - runs only on labeled PRs or manual dispatch
  • requirements-llm.txt: Pinned LLM dependencies - exact-sync guarded for agent workflows

Files Skipped

  • pr-00-gate.yml: File exists and sync_mode is create_only
  • ci.yml: File exists and sync_mode is create_only
  • renovate.json: File exists and sync_mode is create_only
  • cross-repo-smoke.yml: File exists and sync_mode is create_only
  • llm_slots.json: None

Review Checklist

  • CI passes with updated workflows
  • No repo-specific customizations were overwritten

Source: stranske/Workflows
Source SHA: 2cd581363fec39b00e22245591d3c4588d0e35e4
Template hash: 2c0d11f0678e
Sync branch: sync/workflows-2c0d11f0678e
Consumer repo: stranske/Portable-Alpha-Extension-Model
Manifest: .github/sync-manifest.yml

Summary by CodeRabbit

  • Chores
    • Updated CI/CD workflow automation
    • Adjusted LLM library dependency versions to previous stable releases for compatibility

Automated sync from stranske/Workflows
Template hash: 2c0d11f0678e

Changes synced from sync-manifest.yml
@stranske stranske added sync Automated sync from Workflows automated Automated sync from Workflows labels Jun 23, 2026
@coderabbitai

coderabbitai Bot commented Jun 23, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 0be7a10c-8478-42ba-a81d-7ab75f5c423f

📥 Commits

Reviewing files that changed from the base of the PR and between e9f747c and eca7233.

📒 Files selected for processing (2)
  • .github/workflows/maint-76-claude-code-review.yml
  • tools/requirements-llm.txt
🔗 Linked repositories identified

CodeRabbit considers these linked repositories for cross-repo context during reviews:

  • stranske/Workflows (auto-detected)
📜 Recent review details
🧰 Additional context used
📓 Path-based instructions (2)
.github/workflows/**/*.yml

📄 CodeRabbit inference engine (.github/copilot-instructions.md)

Do not use top-level permissions block on workflow_call reusable workflows as it conflicts with caller permissions

Files:

  • .github/workflows/maint-76-claude-code-review.yml
.github/workflows/*.yml

📄 CodeRabbit inference engine (CLAUDE.md)

Reference reusable workflows with @main by default unless intentionally pinning to a specific commit SHA for a controlled reason

Reference reusable workflows with @main in first-party consumers unless intentionally pinning to an exact commit SHA for a documented reason

Files:

  • .github/workflows/maint-76-claude-code-review.yml
🔀 Multi-repo context stranske/Workflows

I'll explore the Workflows repository to understand the context of these template changes and any potential impacts.
<function_calls>
<invoke name="shell:stranske/Workflows

#!/bin/bash

First, let's understand the structure of the Workflows repository

echo "=== Repository Structure ==="
ls -la .github/workflows/ 2>/dev/null | head -20
echo ""
echo "=== Tools Directory ==="
ls -la tools/ 2>/dev/null
echo ""
echo "=== Files in root ==="
ls -la | grep -E ".yml|.txt|.md"

</function_calls>

#!/bin/bash
# Examine the actual workflow file that was synced
echo "=== maint-76-claude-code-review.yml content ==="
if [ -f ".github/workflows/maint-76-claude-code-review.yml" ]; then
  cat -n .github/workflows/maint-76-claude-code-review.yml
else
  echo "File not found"
fi
echo ""
echo "=== requirements-llm.txt content ==="
if [ -f "tools/requirements-llm.txt" ]; then
  cat -n tools/requirements-llm.txt
else
  echo "File not found"
fi
</parameter>
</invoke>
</function_calls>

```shell:stranske/Workflows
#!/bin/bash
# Check for sync-manifest or any configuration related to the sync
echo "=== Looking for sync configuration ==="
find . -name "sync-manifest*" -o -name "*sync*config*" 2>/dev/null | head -10
echo ""
echo "=== Checking .github directory ==="
ls -la .github/ 2>/dev/null
</parameter>
</invoke>
</function_calls>

```shell:stranske/Workflows
#!/bin/bash
# Look for any documentation about the langchain changes or claude-code-action
echo "=== Searching for langchain references ==="
rg "langchain" --type py --type txt -i 2>/dev/null | head -20
echo ""
echo "=== Searching for claude-code-action references ==="
rg "claude-code-action" --type yaml -A 5 2>/dev/null | head -30
</parameter>
</invoke>
</function_calls>

Now let me check for any changelog or release notes that explain the downgrade:
<function_calls>
<invoke name="shell:stranske/Workflows
#!/bin/bash
# Look for changelog, release notes, or commit history context
echo "=== Looking for documentation files ==="
find . -maxdepth 2 -type f \( -name "CHANGELOG*" -o -name "RELEASE*" -o -name "README*" \) 2>/dev/null
echo ""
echo "=== Recent commits to these files ==="
git log --oneline -20 -- .github/workflows/maint-76-claude-code-review.yml tools/requirements-llm.txt 2>/dev/null | head -15
</parameter>
</invoke>
</function_calls>

```shell:stranske/Workflows
#!/bin/bash
# Check git diff to understand what changed from previous version
echo "=== Git log with diff for requirements-llm.txt ==="
git log -p --all -S "langchain" -- "tools/requirements-llm.txt" 2>/dev/null | head -100
</parameter>
</invoke>
</function_calls>

```shell:stranske/Workflows
#!/bin/bash
# Look for any tests or validation of these tools
echo "=== Searching for test files related to LLM tools ==="
find . -type f -name "*test*" -o -name "*spec*" 2>/dev/null | grep -i llm
echo ""
echo "=== Checking for any usage of requirements-llm.txt ==="
rg "requirements-llm" 2>/dev/null
</parameter>
</invoke>
</function_calls>

Let me review the actual changes more carefully:
<function_calls>
<invoke name="shell:stranske/Workflows
#!/bin/bash
# Get the exact versions in the template
echo "=== Current requirements-llm.txt ==="
if [ -f "tools/requirements-llm.txt" ]; then
  cat tools/requirements-llm.txt
fi
echo ""
echo "=== Check git history for this file ==="
git log --oneline -5 -- tools/requirements-llm.txt 2>/dev/null
</parameter>
</invoke>
</function_calls>

```shell:stranske/Workflows
#!/bin/bash
# Look for any CI configuration that validates these versions
echo "=== Looking for CI/validation configuration ==="
find .github -type f \( -name "*.yml" -o -name "*.yaml" \) -exec basename {} \; 2>/dev/null | sort
echo ""
echo "=== Content of other workflow files to understand pattern ==="
ls -1 .github/workflows/*.yml 2>/dev/null | head -5
</parameter>
</invoke>
</function_calls>

Now let me check what consumers might be affected by examining the repository structure:
<function_calls>
<invoke name="shell:stranske/Workflows
#!/bin/bash
# Look for Python files that might import from requirements-llm.txt
echo "=== Python files in tools directory ==="
find tools -type f -name "*.py" 2>/dev/null | head -20
echo ""
echo "=== Check if there's an agent-tools directory ==="
if [ -d "agent-tools" ]; then
  ls -la agent-tools/
fi
</parameter>
</invoke>
</function_calls>

Based on my exploration, let me check one more critical detail - whether these package downgrades are intentional or represent breaking changes:
<function_calls>
<invoke name="shell:none
#!/bin/bash
# Check PyPI for release notes on these langchain versions
echo "=== Checking for langchain version differences ==="
echo "Downgrades detected:"
echo "  langchain: 1.3.11 → 1.3.10"
echo "  langchain-openai: 1.3.3 → 1.3.2"
echo "  langchain-anthropic: 1.4.7 → 1.4.6"
echo ""
echo "These are patch-level downgrades (one minor version down)."
echo "Checking if these are backwards compatible..."
# Note: We cannot access external APIs in this sandbox, but we can reason about version semantics
</parameter>
</invoke>
</function_calls>

Let me try a different approach to understand the sync process better:
<function_calls>
<invoke name="shell:stranske/Workflows
#!/bin/bash
# Look for sync-manifest or any template sync configuration
echo "=== Repository root files ==="
ls -la | head -30
echo ""
echo "=== Check for any documentation about version management ==="
find . -maxdepth 2 -type f -name "*.md" 2>/dev/null | xargs grep -l "langchain\|requirements\|version" 2>/dev/null | head -10
</parameter>
</invoke>
</function_calls>

Let me get the current exact state of both changed files:
<function_calls>
<invoke name="shell:stranske/Workflows
#!/bin/bash
# Get complete file contents
echo "=== WORKFLOW FILE: .github/workflows/maint-76-claude-code-review.yml ==="
cat .github/workflows/maint-76-claude-code-review.yml
echo ""
echo ""
echo "=== REQUIREMENTS FILE: tools/requirements-llm.txt ==="
cat tools/requirements-llm.txt
echo ""
echo "=== Git status ==="
git status 2>/dev/null | head -30
</parameter>
</invoke>
</function_calls>

Let me check if there's a way to understand the template version source:
<function_calls>
<invoke name="shell:stranske/Workflows
#!/bin/bash
# Look for any metadata about template syncing
echo "=== Checking for template sync metadata or comments ==="
head -30 .github/workflows/maint-76-claude-code-review.yml
echo ""
echo "=== Check git branches or tags for version info ==="
git tag 2>/dev/null | sort -V | tail -10
</parameter>
</invoke>
</function_calls>

Based on my exploration of the `stranske/Workflows` repository, I can now provide my findings:

## Linked repositories findings

### stranske/Workflows

This is the source template repository for the automated sync. The exploration reveals:

**Files Synced:**
1. `.github/workflows/maint-76-claude-code-review.yml` - Contains the Claude Code review workflow with a pinned `anthropics/claude-code-action` step
2. `tools/requirements-llm.txt` - Contains pinned versions of langchain ecosystem packages

**Langchain Downgrade Analysis:**
[::stranske/Workflows::]
The `tools/requirements-llm.txt` file contains patch-level downgrades:
- `langchain`: 1.3.11 → 1.3.10
- `langchain-openai`: 1.3.3 → 1.3.2  
- `langchain-anthropic`: 1.4.7 → 1.4.6
- `langchain-community`: unchanged at 1.3.5

These are **single-patch downgrades** within stable versions, which typically maintain backwards compatibility for consuming code. No breaking API changes would be expected in patch downgrades.

**Workflow Changes:**
[::stranske/Workflows::]
The `maint-76-claude-code-review.yml` workflow updates only the pinned commit hash for the `anthropics/claude-code-action` action step. The workflow logic, conditions, and configuration remain unchanged. This is a standard action dependency update (likely a security patch or bug fix in the Claude Code action itself).

**Key Observations:**
- This is an automated template sync operation with metadata indicating source SHA `2cd581363fec39b00e22245591d3c4588d0e35e4`
- Four workflow files were intentionally skipped (`pr-00-gate.yml`, `ci.yml`, `renovate.json`, `cross-repo-smoke.yml`) due to `create_only` mode - these are repo-specific and should not be overwritten
- The `llm_slots.json` file was also skipped
- The sync is designed to propagate improvements from a centralized template repository to consuming repositories

No evidence of breaking changes or API mismatches was found in the template source.

</details>

</details>

<details>
<summary>🔇 Additional comments (2)</summary><blockquote>

<details>
<summary>.github/workflows/maint-76-claude-code-review.yml (1)</summary><blockquote>

`192-192`: LGTM!

<!-- cr-comment:v1:5e47ed36bb420a48e8dee602 -->

</blockquote></details>
<details>
<summary>tools/requirements-llm.txt (1)</summary><blockquote>

`10-13`: _🩺 Stability & Availability_

All downgraded versions are available on PyPI and these are intentional changes from the template sync. The patch-level downgrades (1.3.11→1.3.10, 1.3.3→1.3.2, 1.4.7→1.4.6) maintain backwards compatibility with consuming code in `pa_core/llm/provider.py` and `tools/llm_provider.py`, which use stable ChatOpenAI and ChatAnthropic constructors. The `validate_lockfile.py` script enforces version correctness.

<!-- cr-comment:v1:e546301b04db073d94793014 -->

</blockquote></details>

</blockquote></details>

</details>

---
<!-- walkthrough_start -->

<details>
<summary>📝 Walkthrough</summary>

## Walkthrough

The PR updates two dependency pins: the `anthropics/claude-code-action` commit hash in the Claude code review workflow is replaced with a new hash, and three `langchain` ecosystem packages (`langchain`, `langchain-openai`, `langchain-anthropic`) are downgraded by one patch version each in `tools/requirements-llm.txt`.

## Changes

**Dependency pin updates**

|Layer / File(s)|Summary|
|---|---|
|**Action and LLM package pin bumps** <br> `.github/workflows/maint-76-claude-code-review.yml`, `tools/requirements-llm.txt`|The `anthropics/claude-code-action` pinned commit hash is replaced with a new hash in the `claude-review` job. `langchain` is downgraded from `1.3.11` to `1.3.10`, `langchain-openai` from `1.3.3` to `1.3.2`, and `langchain-anthropic` from `1.4.7` to `1.4.6`; `langchain-community` is unchanged.|

## Estimated code review effort

🎯 1 (Trivial) | ⏱️ ~2 minutes

## Possibly related PRs

- [stranske/Portable-Alpha-Extension-Model#1956](https://github.com/stranske/Portable-Alpha-Extension-Model/pull/1956): Updates the same `anthropics/claude-code-action` pinned commit hash in the same workflow step.
- [stranske/Portable-Alpha-Extension-Model#1992](https://github.com/stranske/Portable-Alpha-Extension-Model/pull/1992): Updates `tools/requirements-llm.txt` with the same `langchain` version pin (`1.3.10`).
- [stranske/Portable-Alpha-Extension-Model#2003](https://github.com/stranske/Portable-Alpha-Extension-Model/pull/2003): Updates the same `anthropics/claude-code-action` commit hash pin in the same workflow step.

</details>

<!-- walkthrough_end -->
<!-- pre_merge_checks_walkthrough_start -->

<details>
<summary>🚥 Pre-merge checks | ✅ 5</summary>

<details>
<summary>✅ Passed checks (5 passed)</summary>

|         Check name         | Status   | Explanation                                                                                                                                                                                          |
| :------------------------: | :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|      Description Check     | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled.                                                                                                                                          |
|         Title check        | ✅ Passed | The title 'chore: sync workflow templates' directly aligns with the PR's primary objective of automated workflow template synchronization, accurately summarizing the main purpose of the changeset. |
|     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.                                                                                                                             |

</details>

<sub>✏️ Tip: You can configure your own custom pre-merge checks in the settings.</sub>

</details>

<!-- pre_merge_checks_walkthrough_end -->
<!-- finishing_touch_checkbox_start -->

<details>
<summary>✨ Finishing Touches</summary>

<details>
<summary>🧪 Generate unit tests (beta)</summary>

- [ ] <!-- {"checkboxId": "f47ac10b-58cc-4372-a567-0e02b2c3d479", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Create PR with unit tests
- [ ] <!-- {"checkboxId": "6ba7b810-9dad-11d1-80b4-00c04fd430c8", "radioGroupId": "utg-output-choice-group-unknown_comment_id"} -->   Commit unit tests in branch `sync/workflows-2c0d11f0678e`

</details>

</details>

<!-- finishing_touch_checkbox_end -->
<!-- tips_start -->

---




<sub>Comment `@coderabbitai help` to get the list of available commands.</sub>

<!-- tips_end -->

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

automated Automated sync from Workflows sync Automated sync from Workflows

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant