Skip to content

[codex] Ensure LangSmith fleet fallback artifacts - #2528

Merged
stranske merged 6 commits into
mainfrom
codex/langsmith-fleet-fallback-artifact
Jun 24, 2026
Merged

[codex] Ensure LangSmith fleet fallback artifacts#2528
stranske merged 6 commits into
mainfrom
codex/langsmith-fleet-fallback-artifact

Conversation

@stranske

@stranske stranske commented Jun 24, 2026

Copy link
Copy Markdown
Owner

Summary

  • add a reusable CI helper that writes one explicit LangSmith fleet fallback row when an implemented registry repo produces no artifacts/langsmith/langsmith-fleet.ndjson
  • wire the helper into reusable-10-ci-python.yml before the existing check/upload steps, using the shared registry from Workflows
  • cover fallback creation, existing-artifact preservation, rollout-status skips, workflow step wiring, PR-merge fallback lookup, and checkout credential hardening

Why

The Orchestrator backlog identified that several expected producer repos had recent CI runs but no accepted langsmith-fleet artifact alias. This makes the artifact-distribution path observable even when repo-local telemetry fails or CI exits partially, without pretending domain telemetry succeeded.

Validation

  • uv run pytest tests/scripts/test_ensure_langsmith_fleet_artifact.py tests/workflows/test_reusable_ci_workflow.py
  • uv run ruff check scripts/ensure_langsmith_fleet_artifact.py tests/scripts/test_ensure_langsmith_fleet_artifact.py tests/workflows/test_reusable_ci_workflow.py
  • uv run black --target-version py312 --check scripts/ensure_langsmith_fleet_artifact.py tests/scripts/test_ensure_langsmith_fleet_artifact.py tests/workflows/test_reusable_ci_workflow.py
  • git diff --check

Summary by CodeRabbit

  • New Features

    • Added a CI helper to ensure the LangSmith “fleet” telemetry NDJSON artifact exists and is uploadable, creating deterministic fallback records when needed.
    • Updated reusable CI/fleet telemetry workflow steps to use the fixed upload artifact name langsmith-fleet.ndjson and to fetch required helper/config files with safer checkout settings.
  • Bug Fixes

    • Improved fleet artifact resolution to prefer exact artifact-name matches, otherwise fall back to endsWith matching, selecting the newest eligible candidate.
    • Prevented ambiguous registry contracts from producing artifacts; added clearer skip/notice behavior.
  • Tests

    • Expanded unit and workflow conformance coverage for fallback creation, preservation, skip reasons, CLI notice formatting, and prefixed-name selection.

@coderabbitai

coderabbitai Bot commented Jun 24, 2026

Copy link
Copy Markdown

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a LangSmith fleet artifact ensure script, wires it into CI workflows, updates fleet artifact name matching, and extends script and workflow tests for the new flow.

Changes

LangSmith fleet telemetry ensure

Layer / File(s) Summary
ensure_langsmith_fleet_artifact.py: constants, registry helpers, and record building
scripts/ensure_langsmith_fleet_artifact.py
Adds module constants, registry loading and validation, artifact existence checks, registry entry selection, deterministic fallback field generation, and fallback record construction.
ensure_langsmith_fleet_artifact.py: artifact control flow and CLI
scripts/ensure_langsmith_fleet_artifact.py
Adds the ensure-artifact control flow, CLI argument parsing, GitHub context wiring, JSON stdout output, stderr warning handling, notice emission, and the module entrypoint.
CI workflow: sparse-checkout, ensure step, and upload name
.github/workflows/reusable-10-ci-python.yml
Extends the artifact-cache sparse-checkout list, adds the conditional LangSmith fleet helper checkout and ensure step, and changes the uploaded artifact name to langsmith-fleet.ndjson.
Fleet artifact name matching in workflows
.github/workflows/maint-80-langsmith-metrics-dashboard.yml, .github/workflows/maint-81-langsmith-fleet-conformance.yml
Updates fleet artifact selection to accept exact or suffix-matched names, prefer exact matches, and choose the newest eligible artifact.
Script contract tests
tests/scripts/test_ensure_langsmith_fleet_artifact.py
Adds tests for created, existing, skipped, and ambiguous registry outcomes, plus CLI notice output and Python-version-compatible UTC handling.
Workflow contract tests
tests/workflows/test_reusable_ci_workflow.py, tests/workflows/test_langsmith_metrics_dashboard.py, tests/workflows/test_langsmith_fleet_conformance_workflow.py
Extends workflow assertions for the LangSmith fleet ensure flow, upload name, and prefixed artifact matching behavior.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • stranske/Workflows#2473: Introduced the LangSmith fleet telemetry upload/check steps and langsmith-fleet.ndjson artifact handling that this PR extends with the new ensure checkout and script flow.

Suggested labels

automation, maintenance, github:actions

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 52.94% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly reflects the main change: adding LangSmith fleet fallback artifact handling in CI.
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.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/langsmith-fleet-fallback-artifact

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

@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 11:58 — with GitHub Actions Inactive
@stranske-keepalive

stranske-keepalive Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Workflow source detected

PR #2528 now has valid workflow source context (origin=local_request).

No linked GitHub issue is required for this PR.

Comment thread .github/workflows/reusable-10-ci-python.yml Fixed
@stranske
stranske force-pushed the codex/langsmith-fleet-fallback-artifact branch from 0b8c98f to 7a82859 Compare June 24, 2026 12:04
@agents-workflows-bot

agents-workflows-bot Bot commented Jun 24, 2026

Copy link
Copy Markdown
Contributor

Automated Status Summary

Head SHA: 901b7aa
Latest Runs: ⏳ pending — Gate
Required contexts: Gate / gate, Health 45 Agents Guard / guard
Required: core tests (3.12): ⏳ pending, core tests (3.13): ⏳ pending, docker smoke: ⏳ pending, gate: ⏳ pending

Workflow / Job Result Logs
(no jobs reported) ⏳ pending

Coverage Overview

  • Coverage history entries: 1

Coverage Trend

Metric Value
Current 70.64%
Baseline 85.00%
Delta -14.36%
Minimum 70.00%
Status ✅ Pass

Top Coverage Hotspots (lowest coverage)

File Coverage Missing
scripts/check_api_wrapper_guard.py 0.0% 123
scripts/cleanup_labels.py 0.0% 127
scripts/issue_dedup_smoke.py 0.0% 4
scripts/list_registered_consumer_repos.py 0.0% 33
scripts/repo_review_backlog_scan.py 0.0% 203
scripts/repo_review_round1_runner.py 0.0% 225
scripts/repo_review_round1_schema.py 0.0% 194
scripts/runner_lib/__main__.py 0.0% 3
scripts/update_langchain_versions.py 0.0% 34
scripts/validate_dependency_test_setup.py 0.0% 112
scripts/validate_template_completeness.py 0.0% 88
scripts/validate_template_sync.py 0.0% 77
scripts/validate_workflow_yaml.py 0.0% 98
scripts/repo_review_round2_schema.py 8.8% 185
scripts/langchain/topic_splitter.py 19.1% 57

Low Coverage Files (<50.0%)

File Coverage Missing
scripts/check_api_wrapper_guard.py 0.0% 123
scripts/cleanup_labels.py 0.0% 127
scripts/issue_dedup_smoke.py 0.0% 4
scripts/list_registered_consumer_repos.py 0.0% 33
scripts/repo_review_backlog_scan.py 0.0% 203
scripts/repo_review_round1_runner.py 0.0% 225
scripts/repo_review_round1_schema.py 0.0% 194
scripts/runner_lib/__main__.py 0.0% 3
scripts/update_langchain_versions.py 0.0% 34
scripts/validate_dependency_test_setup.py 0.0% 112
scripts/validate_template_completeness.py 0.0% 88
scripts/validate_template_sync.py 0.0% 77
scripts/validate_workflow_yaml.py 0.0% 98
scripts/repo_review_round2_schema.py 8.8% 185
scripts/langchain/topic_splitter.py 19.1% 57

Updated automatically; will refresh on subsequent CI/Docker completions.


Keepalive checklist

Scope

No scope information available

Tasks

  • No tasks defined

Acceptance criteria

  • No acceptance criteria defined

@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 12:06 — with GitHub Actions Inactive
@stranske
stranske force-pushed the codex/langsmith-fleet-fallback-artifact branch from 7a82859 to 01db80b Compare June 24, 2026 12:07
@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 12:09 — with GitHub Actions Inactive
@stranske
stranske force-pushed the codex/langsmith-fleet-fallback-artifact branch from 01db80b to 0800377 Compare June 24, 2026 12:09
@stranske

Copy link
Copy Markdown
Owner Author

Post-push follow-up: addressed the GitHub Advanced Security inline comment by setting persist-credentials: false on the new helper checkout and added a workflow test assertion for it. Also added the hidden workflow-source:local_request marker to satisfy PR metadata automation. Local validation now includes pytest, Ruff, Black, and git diff --check.

@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 12:10 — with GitHub Actions Inactive
@stranske
stranske marked this pull request as ready for review June 24, 2026 12:22
@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 12:23 — with GitHub Actions Inactive

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0800377fec

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/reusable-10-ci-python.yml

@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: 3

🤖 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/reusable-10-ci-python.yml:
- Around line 2456-2475: The reusable workflow’s Checkout Workflows LangSmith
fleet helper step currently uses a mutable actions/checkout version tag, which
should be pinned to an immutable commit SHA. Update the uses reference in the
checkout step to a specific SHA instead of `@v7`, keeping the existing step name,
repository, ref, and token handling in place.

In `@scripts/ensure_langsmith_fleet_artifact.py`:
- Around line 54-59: The fallback lookup in _entry_for_repo is too broad because
it matches on repo only, which can pick the wrong registry entry when multiple
surfaces exist. Update the lookup logic used by
ensure_langsmith_fleet_artifact.py to filter candidate entries by the LangSmith
artifact contract fields (surface, issue, operation, and required_domain_fields)
before building the fallback row, and then require exactly one eligible match.
If there are zero or multiple eligible entries, skip or fail instead of
returning the first repo match.
- Around line 259-267: The GitHub Actions annotations in
ensure_langsmith_fleet_artifact and the reusable CI workflow are using the wrong
prefix format, so they are not emitted as annotations. Update the print
statements around the fallback artifact warning and creation notice in
scripts/ensure_langsmith_fleet_artifact.py, and the corresponding annotation in
.github/workflows/reusable-10-ci-python.yml, to use the exact GitHub Actions
syntax with no spaces in the prefix, matching the existing warning/notice
messages.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 8301b1c5-27b3-492e-a2de-c262fc1618d4

📥 Commits

Reviewing files that changed from the base of the PR and between ba47758 and 0800377.

📒 Files selected for processing (4)
  • .github/workflows/reusable-10-ci-python.yml
  • scripts/ensure_langsmith_fleet_artifact.py
  • tests/scripts/test_ensure_langsmith_fleet_artifact.py
  • tests/workflows/test_reusable_ci_workflow.py
🔗 Linked repositories identified

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

  • stranske/Template (auto-detected)
  • stranske/Fine-Art-Archive (auto-detected)
  • stranske/Ready (auto-detected)
  • stranske/Workflows-Integration-Tests (auto-detected)

Comment thread .github/workflows/reusable-10-ci-python.yml
Comment thread scripts/ensure_langsmith_fleet_artifact.py Outdated
Comment thread scripts/ensure_langsmith_fleet_artifact.py
@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 12:49 — with GitHub Actions Inactive

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (2)
tests/workflows/test_reusable_ci_workflow.py (1)

237-241: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Duplicate assertion. Line 241 is identical to Line 237; Line 239 (.workflows-lib/scripts/...) already covers the substring. Drop the redundant check.

♻️ Proposed cleanup
     assert "scripts/ensure_langsmith_fleet_artifact.py" in langsmith_ensure_step["run"]
     assert (
         ".workflows-lib/scripts/ensure_langsmith_fleet_artifact.py" in langsmith_ensure_step["run"]
     )
-    assert "scripts/ensure_langsmith_fleet_artifact.py" in langsmith_ensure_step["run"]
     assert "fallback helper is unavailable" in langsmith_ensure_step["run"]
🤖 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 `@tests/workflows/test_reusable_ci_workflow.py` around lines 237 - 241, Remove
the redundant assertion in the reusable CI workflow test: in the test around
langsmith_ensure_step["run"], keep the check for
".workflows-lib/scripts/ensure_langsmith_fleet_artifact.py" and the one
occurrence of "scripts/ensure_langsmith_fleet_artifact.py", but delete the
duplicate assertion that repeats the same substring check as the earlier line so
the test remains minimal and non-redundant.
.github/workflows/reusable-10-ci-python.yml (1)

1534-1539: 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

Harden the artifact-cache checkout with persist-credentials: false.

This Checkout Workflows artifact cache action step now also pulls the LangSmith helper/registry into .workflows-lib using the App token, but unlike the new Checkout Workflows LangSmith fleet helper step (which sets persist-credentials: false at Line 2475), it leaves credential persistence on. This is the same zizmor "credential persistence through GitHub Actions artifacts" class flagged on the sibling step, and it replicates across the 9 consumer repos this workflow syncs to. Apply the same hardening here.

🔒 Proposed hardening
           ref: ${{ inputs.workflows_ref || 'main' }}
           path: .workflows-lib
           token: ${{ steps.app_token.outputs.token || github.token }}
+          persist-credentials: false
           sparse-checkout: |
             .github/actions/artifact-cache
             config/langsmith_fleet_registry.json
             scripts/ensure_langsmith_fleet_artifact.py

As per path instructions: "Flag template-injection, unpinned third-party actions, and spoofable bot-actor checks — this workflow YAML is synced to 9 consumer repos, so one bug replicates fleet-wide."

🤖 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/reusable-10-ci-python.yml around lines 1534 - 1539, The
Checkout Workflows artifact cache action step currently persists GitHub
credentials while using the App token to pull the LangSmith helper/registry,
which should be hardened the same way as the Checkout Workflows LangSmith fleet
helper step. Update the checkout configuration in the artifact-cache step to
disable credential persistence by setting persist-credentials to false, and keep
the sparse-checkout behavior intact so the helper files still land in
.workflows-lib without leaving reusable credentials behind.

Source: Path instructions

🤖 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.

Outside diff comments:
In @.github/workflows/reusable-10-ci-python.yml:
- Around line 1534-1539: The Checkout Workflows artifact cache action step
currently persists GitHub credentials while using the App token to pull the
LangSmith helper/registry, which should be hardened the same way as the Checkout
Workflows LangSmith fleet helper step. Update the checkout configuration in the
artifact-cache step to disable credential persistence by setting
persist-credentials to false, and keep the sparse-checkout behavior intact so
the helper files still land in .workflows-lib without leaving reusable
credentials behind.

In `@tests/workflows/test_reusable_ci_workflow.py`:
- Around line 237-241: Remove the redundant assertion in the reusable CI
workflow test: in the test around langsmith_ensure_step["run"], keep the check
for ".workflows-lib/scripts/ensure_langsmith_fleet_artifact.py" and the one
occurrence of "scripts/ensure_langsmith_fleet_artifact.py", but delete the
duplicate assertion that repeats the same substring check as the earlier line so
the test remains minimal and non-redundant.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: c6e26617-7a31-4de7-8ff3-1acf0b7190d4

📥 Commits

Reviewing files that changed from the base of the PR and between 0800377 and 3354626.

📒 Files selected for processing (4)
  • .github/workflows/reusable-10-ci-python.yml
  • scripts/ensure_langsmith_fleet_artifact.py
  • tests/scripts/test_ensure_langsmith_fleet_artifact.py
  • tests/workflows/test_reusable_ci_workflow.py
🔗 Linked repositories identified

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

  • stranske/Template (auto-detected)
  • stranske/Fine-Art-Archive (auto-detected)
  • stranske/Ready (auto-detected)
  • stranske/Workflows-Integration-Tests (auto-detected)

@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 12:58 — with GitHub Actions Inactive

@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.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/reusable-10-ci-python.yml (1)

2540-2540: 🗄️ Data Integrity & Integration | 🟡 Minor

Namespace the LangSmith fleet artifact name

This upload ignores artifact-prefix, so repeated invocations of reusable-10-ci-python.yml in the same run can overwrite each other’s langsmith-fleet.ndjson artifact. Use the prefix here too if each caller should retain its own telemetry; keep the filename fixed in path if the downstream consumer needs it.

🤖 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/reusable-10-ci-python.yml at line 2540, The LangSmith
fleet artifact upload currently uses a fixed artifact name, so repeated calls to
reusable-10-ci-python.yml can overwrite each other’s telemetry. Update the
artifact configuration near the langsmith-fleet.ndjson upload to include
artifact-prefix in the uploaded artifact name while keeping the path filename
unchanged if downstream expects it. Use the existing artifact-prefix value in
the same workflow step so each caller gets a namespaced artifact and collisions
are avoided.

Source: Path instructions

🤖 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.

Outside diff comments:
In @.github/workflows/reusable-10-ci-python.yml:
- Line 2540: The LangSmith fleet artifact upload currently uses a fixed artifact
name, so repeated calls to reusable-10-ci-python.yml can overwrite each other’s
telemetry. Update the artifact configuration near the langsmith-fleet.ndjson
upload to include artifact-prefix in the uploaded artifact name while keeping
the path filename unchanged if downstream expects it. Use the existing
artifact-prefix value in the same workflow step so each caller gets a namespaced
artifact and collisions are avoided.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: e42cf548-d86e-4f02-9734-3570374f1ab8

📥 Commits

Reviewing files that changed from the base of the PR and between 3354626 and 6f8aae5.

📒 Files selected for processing (2)
  • .github/workflows/reusable-10-ci-python.yml
  • tests/workflows/test_reusable_ci_workflow.py
🔗 Linked repositories identified

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

  • stranske/Template (auto-detected)
  • stranske/Fine-Art-Archive (auto-detected)
  • stranske/Ready (auto-detected)
  • stranske/Workflows-Integration-Tests (auto-detected)

@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 13:08 — with GitHub Actions Inactive
@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 13:13 — with GitHub Actions Inactive

@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: 2

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
.github/workflows/reusable-10-ci-python.yml (1)

2457-2475: 🗄️ Data Integrity & Integration | 🟠 Major | 🏗️ Heavy lift

Stop executing the helper from main in a versioned reusable workflow.

Linked consumers are calling reusable-10-ci-python.yml@v1, but this path checks out stranske/Workflows at inputs.workflows_ref || 'main' and immediately runs ensure_langsmith_fleet_artifact.py from that checkout. That decouples the reusable workflow version from the helper CLI/schema it depends on, so a later main change can break existing @v1 consumers or silently emit incompatible fleet records without any change on their side. The helper/registry checkout needs to follow the same immutable ref as the reusable workflow version, not a moving branch.

Also applies to: 2491-2511

🤖 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/reusable-10-ci-python.yml around lines 2457 - 2475, The
helper checkout in the reusable workflow is still pinned to a moving `main` ref,
which breaks versioned consumers of `reusable-10-ci-python.yml`. Update the
`Checkout Workflows LangSmith fleet helper` step and the
`ensure_langsmith_fleet_artifact.py` execution path so they use the same
immutable ref as the reusable workflow version instead of `inputs.workflows_ref
|| 'main'`, keeping the helper/registry schema aligned with the workflow
release.

Source: Linked repositories

🤖 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/maint-80-langsmith-metrics-dashboard.yml:
- Around line 181-194: The artifact selection logic in the workflow’s repository
scan is too permissive because it accepts any newest non-expired artifact whose
name merely ends with the requested suffix. Update the jq filtering in the
artifact resolution step to restrict suffix matches to artifacts from trusted
producers only, using a provenance signal from the registry or workflow/run
metadata before accepting them; keep the exact-name path but require verified
source for the fallback match in the artifact lookup block.

In @.github/workflows/maint-81-langsmith-fleet-conformance.yml:
- Around line 68-78: The artifact selection logic currently trusts any repo-wide
suffix match in the candidate filtering and sort path, which can let spoofed
artifacts win over the intended fleet upload. Update the artifact lookup in the
workflow’s conformance download step so the match from
candidates/exactCandidates is also validated against trusted provenance metadata
before selecting artifact, and only fall back to the broader suffix match if
that provenance check passes. Keep the logic centered around the
candidatePool/artifact selection block so the reusable-CI artifact is chosen
deterministically and safely.

---

Outside diff comments:
In @.github/workflows/reusable-10-ci-python.yml:
- Around line 2457-2475: The helper checkout in the reusable workflow is still
pinned to a moving `main` ref, which breaks versioned consumers of
`reusable-10-ci-python.yml`. Update the `Checkout Workflows LangSmith fleet
helper` step and the `ensure_langsmith_fleet_artifact.py` execution path so they
use the same immutable ref as the reusable workflow version instead of
`inputs.workflows_ref || 'main'`, keeping the helper/registry schema aligned
with the workflow release.
🪄 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: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 52b04a76-c7ea-4618-a057-3febe4cebd96

📥 Commits

Reviewing files that changed from the base of the PR and between 6f8aae5 and e50b8a0.

📒 Files selected for processing (6)
  • .github/workflows/maint-80-langsmith-metrics-dashboard.yml
  • .github/workflows/maint-81-langsmith-fleet-conformance.yml
  • .github/workflows/reusable-10-ci-python.yml
  • tests/workflows/test_langsmith_fleet_conformance_workflow.py
  • tests/workflows/test_langsmith_metrics_dashboard.py
  • tests/workflows/test_reusable_ci_workflow.py
🔗 Linked repositories identified

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

  • stranske/Template (auto-detected)
  • stranske/Fine-Art-Archive (auto-detected)
  • stranske/Ready (auto-detected)
  • stranske/Workflows-Integration-Tests (auto-detected)

Comment thread .github/workflows/maint-80-langsmith-metrics-dashboard.yml
Comment thread .github/workflows/maint-81-langsmith-fleet-conformance.yml
@stranske
stranske temporarily deployed to agent-high-privilege June 24, 2026 13:17 — with GitHub Actions Inactive
@stranske
stranske merged commit d096fa2 into main Jun 24, 2026
115 checks passed
@stranske
stranske deleted the codex/langsmith-fleet-fallback-artifact branch June 24, 2026 13:26
@stranske

Copy link
Copy Markdown
Owner Author

Closer review fix 2026-06-24T13:36Z: addressed the unresolved Codex thread by uploading the fallback fleet telemetry artifact under the exact registry artifact name langsmith-fleet.ndjson instead of ${{ inputs['artifact-prefix'] }}langsmith-fleet.ndjson. Updated tests/workflows/test_reusable_ci_workflow.py to assert the registry artifact name. Validation: python -m pytest tests/workflows/test_reusable_ci_workflow.py -q -> 9 passed; git diff --check passed. Pushed commit ab7f0de8; waiting on fresh PR CI/CodeRabbit after push.

stranske added a commit that referenced this pull request Jun 24, 2026
Squash-merged by closer after green checks and zero unresolved review threads. No source issue; no verifier label expected.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants