Skip to content

Instrument ci.yml with shared-actions telemetry (DF12-98) - #498

Merged
leynos merged 2 commits into
mainfrom
ci-telemetry-pilot
Oct 17, 2026
Merged

leynos merged 2 commits into
mainfrom
ci-telemetry-pilot

Conversation

@leynos

@leynos leynos commented Oct 17, 2026 •

Copy link
Copy Markdown
Owner

Part of DF12-98

Step 2.3.1 (whitaker half) of the CI observability plan: whitaker's ci.yml jobs print the runner telemetry record that the collector reads. whitaker uses setup-rust (so it exercises sccache-status) and already writes sccache's JSON statistics, which makes it the pilot for the sccache half of the record. The actions are leynos/shared-actions#634 and leynos/shared-actions#636, pinned at leynos/shared-actions@81374b6. The collector side is https://github.com/leynos/grafana/pull/12, and the axinite half is leynos/axinite#444.

What changes

  • coverage-check, linux-full and windows-compat start ci-telemetry-start right after the checkout and report ci-telemetry-finish under if: always(), after the sccache health check and before the disk record and cache saves. windows-compat carries the pair too; its record says unsupported-os and has no CPU figures.
  • Finish takes setup-rust's sccache-status and reads the sccache-stats.json that scripts/record-sccache-effectiveness.sh already writes (the action's default file), so sccache is not asked a second time and a fallback run carries null counts, never zeros. The existing record, upload and health-check steps are untouched.
  • tests/workflow_contracts/ci_telemetry_test.py holds the placement (start second, after the checkout), if: always(), that only housekeeping follows the report, the status wiring, that the recorder runs before the report, and the pin. ci.yml has no roll-up job, so there are no exemptions.
  • The developers' guide describes the pair next to the sccache section.

Evidence

  • make test-workflow-contracts: 665 passed. actionlint .github/workflows/ci.yml is clean. make check-fmt, make markdownlint and make spelling pass. No Rust changed.

Overlapping open pull requests

None is touched. Dependabot: #486, #477, #476. User: #372. Robot-house: #352. Those that edit ci.yml will need a rebase.

Summary by Sourcery

Instrument all ci.yml jobs with pinned shared-actions telemetry for centralized runner and sccache observability.

New Features:

  • Add shared CI telemetry start and finish reporting to the coverage-check, linux-full, and windows-compat workflow jobs.
  • Capture runner resource metrics and sccache effectiveness for centralized CI observability.

Enhancements:

  • Add workflow contract tests enforcing telemetry placement, execution conditions, pinning, and sccache status wiring.

Documentation:

  • Document the CI telemetry requirements and collected metrics in the developers’ guide.

Tests:

  • Add contract coverage for telemetry instrumentation across all ci.yml jobs.

Start ci-telemetry-start after the checkout and report ci-telemetry-finish under if: always() in coverage-check, linux-full and windows-compat, pinned to shared-actions 81374b6f. Finish reads the sccache-stats.json the existing recorder writes and takes setup-rust's sccache-status. A contract holds placement, always(), the status wiring and the pin.
@coderabbitai

coderabbitai Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Review in 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

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Team
  • Run ID: ad9b6e40-1a0f-4aa1-b18e-de5c09c26f4a
📥 Commits

Reviewing files that changed from the base of the PR and between b2862a0 and 26edf68.

📒 Files selected for processing: 3
  • .github/workflows/ci.yml
  • docs/developers-guide.md
  • tests/workflow_contracts/ci_telemetry_test.py
🔗 Linked repositories identified

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

Included review availability: This review used your included allowance. 0 included reviews remain after this review. Your included PR review attempts over the past 7 days set your current allowance at 1 review per hour.

Summary

  • Add shared-actions telemetry to coverage-check, linux-full and windows-compat. Each job starts telemetry after checkout and reports under if: always(), pinned to commit 81374b6f183e59f0570ad36217ded90d3240fda6.
  • Pass setup-rust’s sccache-status to the finish action. The report follows the existing sccache statistics recorder. Document fallback reporting with null counts and Windows reporting as unsupported-os without CPU figures.
  • Add workflow contract tests for job selection, step placement, reporting conditions, status wiring, recorder ordering and action pinning.
  • Update the developers’ guide. Link the work to DF12-98 and the shared-actions changes in PR #634 and PR #636.

Validation

The supplied evidence confirms the contract tests were added. It does not confirm test or lint results.

Walkthrough

Add CI telemetry start and finish steps to coverage-check, linux-full and windows-compat. Add workflow contract tests and document the telemetry actions, inputs and reported metrics.

Changes

CI telemetry reporting

Layer / File(s) Summary
Wire and verify CI telemetry
.github/workflows/ci.yml, tests/workflow_contracts/ci_telemetry_test.py, docs/developers-guide.md
Start telemetry after checkout and report it on completion in the three jobs, passing through setup-rust’s sccache-status. Test job selection, step placement and ordering. Document the telemetry record and platform-specific reporting details.

Suggested labels: Roadmap

Priority: ⬇️ Low

Change: Feature

Merge Risk: ⚪ Minimal · up to 26edf

The telemetry wiring covers every current CI job. No actionable merge-blocking risk remains after normal checks.

Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

Failed Failed checks: 1 error · 1 warning

Check name Status Explanation Resolution
Testing (Unit And Behavioural) Error FAIL: Add behavioural or end-to-end coverage for the new CI telemetry integration. The workflow now invokes ci-telemetry-start and ci-telemetry-finish in all three jobs (`.github/workflows/ci.yml:… Add an opt-in workflow integration test, using the existing act smoke-test harness or an equivalent runner, that executes the pinned telemetry actions through a representative ci.yml path. Assert one DF12_CI_TELEMETRY record, successf…
Docstring Coverage Warning Docstring coverage is 55.56% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 1 files. (2 skipped: 2… Write docstrings for the functions missing them to satisfy the coverage threshold.
Passed Passed checks: 13 passed
Check name Status Explanation
Description check Passed The description directly explains the CI telemetry changes, affected jobs, tests, documentation, and related work.
Title check Passed The title clearly identifies the main change: adding shared-actions telemetry to ci.yml. It also references DF12-98, which the description identifies as the related work item.
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.
Testing (Overall) Passed Pass the testing check. The added contract suite is substantive and targets the changed workflow behaviour. It selects exactly coverage-check, linux-full and windows-compat (tests/workflow_contr…
User-Facing Documentation Passed Pass this check. The pull request adds internal CI telemetry only. It does not change Whitaker's user-facing lint, installer, or library interfaces. The user's guide identifies the developer's guide a…
Developer Documentation Passed Pass. Accept the documentation update. docs/developers-guide.md lines 836-848 documents the new ci-telemetry-start/ci-telemetry-finish tooling, placement, if: always(), pinned shared action, `…
Module-Level Documentation Passed Pass this check. The new Python module has a module-level docstring at tests/workflow_contracts/ci_telemetry_test.py:1-16. It explains the module's purpose, its telemetry contract, its relationship …
Testing (Property / Proof) Passed Keep the parameterized contract tests; do not add a property test. The invariant covers a complete, fixed table of three ci.yml jobs, asserted explicitly at `tests/workflow_contracts/ci_telemetry_te…
Testing (Compile-Time / Ui) Passed Pass this check. The pull request adds no Rust or TypeScript compile-time behaviour. It wires an existing pinned shared action into YAML and adds focused workflow-contract assertions in `tests/workflo…
Unit Architecture Passed PASS — The PR adds explicit CI command steps, not query APIs. .github/workflows/ci.yml starts and finishes telemetry through pinned shared-actions at lines 87–88, 260–264, 278–279, 470–474, 542–543 …
Domain Architecture Passed Pass this check. The pull request changes only CI workflow instrumentation, workflow contract tests, and developer documentation. It does not change domain code, commands, repositories, adapters, or b…
Observability Passed PASS. The PR adds bounded CI resource telemetry at meaningful job boundaries. Each of the three jobs starts telemetry immediately after checkout and finishes under if: always() with the pinned share…
Full details: Testing (Overall)

Explanation

Pass the testing check. The added contract suite is substantive and targets the changed workflow behaviour. It selects exactly coverage-check, linux-full and windows-compat (tests/workflow_contracts/ci_telemetry_test.py:55-61), then parameterizes assertions for every job. It checks the start action immediately after checkout and exactly once (lines 64-70), the pinned finish action exactly once under if: always() with only housekeeping after it (lines 73-85), the setup-rust status wiring (lines 88-94), and recorder-before-report ordering (lines 97-103). The workflow diff adds the corresponding start and finish steps for all three jobs (.github/workflows/ci.yml:87-88, 260-264, 278-279, 470-474, 542-543, 617-621). The suite is included by make test-workflow-contracts (Makefile:255-258). These assertions fail for omission, wrong placement, wrong pin, non-guaranteed reporting, incorrect status wiring, and premature reporting. They do not duplicate tests for the shared action's internal implementation, which is outside this check's requirement.

Full details: User-Facing Documentation

Explanation

Pass this check. The pull request adds internal CI telemetry only. It does not change Whitaker's user-facing lint, installer, or library interfaces. The user's guide identifies the developer's guide as the documentation for Whitaker development, and the pull request documents the telemetry behaviour there at docs/developers-guide.md:836-848. No user-facing documentation or migration note is required.

Full details: Developer Documentation

Explanation

Pass. Accept the documentation update. docs/developers-guide.md lines 836-848 documents the new ci-telemetry-start/ci-telemetry-finish tooling, placement, if: always(), pinned shared action, DF12_CI_TELEMETRY record, sccache status and statistics wiring, fallback behaviour, Windows behaviour, and missing-record condition. tests/workflow_contracts/ci_telemetry_test.py verifies the documented integration contract. The repository roadmap has no CI observability item, and the pull request adds no execplan or architecture decision that requires a Whitaker document update. The pinned shared-actions commit 81374b6f183e59f0570ad36217ded90d3240fda6 also contains the corresponding telemetry ADR and migration guidance.

Full details: Module-Level Documentation

Explanation

Pass this check. The new Python module has a module-level docstring at tests/workflow_contracts/ci_telemetry_test.py:1-16. It explains the module's purpose, its telemetry contract, its relationship to ci.yml, the collector, setup-rust, and the statistics recorder, and how to run it. The other changed files are workflow and documentation files, not code modules.

Full details: Testing (Property / Proof)

Explanation

Keep the parameterized contract tests; do not add a property test. The invariant covers a complete, fixed table of three ci.yml jobs, asserted explicitly at tests/workflow_contracts/ci_telemetry_test.py:55-61. The tests then apply the start, finish, status, and ordering checks to each job at lines 64-103. The workflow introduces no broad input space or generated state transitions; it adds the same telemetry pair to the three declared jobs at .github/workflows/ci.yml:87-88, 260-264, 278-279, 470-474, 542-543, and 617-621.

Full details: Testing (Compile-Time / Ui)

Explanation

Pass this check. The pull request adds no Rust or TypeScript compile-time behaviour. It wires an existing pinned shared action into YAML and adds focused workflow-contract assertions in tests/workflow_contracts/ci_telemetry_test.py:47-103. The structured telemetry output is implemented and tested in shared-actions commit 81374b6f183e59f0570ad36217ded90d3240fda6: the marker test checks the marker, JSON schema and exact key set (.github/actions/ci-telemetry-finish/tests/test_ci_telemetry_summarize.py:245-289), and the end-to-end test checks one marker plus semantic output (.github/actions/ci-telemetry-finish/tests/test_ci_telemetry_finish.py:116-149). A duplicate snapshot in this caller would add little value and would risk brittleness from runner-specific fields.

Full details: Unit Architecture

Explanation

PASS — The PR adds explicit CI command steps, not query APIs. .github/workflows/ci.yml starts and finishes telemetry through pinned shared-actions at lines 87–88, 260–264, 278–279, 470–474, 542–543 and 617–621. The finish action receives setup-rust's sccache-status through an explicit input and runs under if: always(). At shared-actions commit 81374b6f183e59f0570ad36217ded90d3240fda6, the composite actions isolate sampling, file access and log output behind a named action boundary (.github/actions/ci-telemetry-start/action.yml and .github/actions/ci-telemetry-finish/action.yml). No changed unit hides fallibility, dependencies or side-effects behind a pure read API.

Full details: Domain Architecture

Explanation

Pass this check. The pull request changes only CI workflow instrumentation, workflow contract tests, and developer documentation. It does not change domain code, commands, repositories, adapters, or business rules. The shared-actions telemetry calls remain in the CI infrastructure boundary and do not introduce transport, persistence, or vendor-specific concerns into the domain model.

Full details: Observability

Explanation

PASS. The PR adds bounded CI resource telemetry at meaningful job boundaries. Each of the three jobs starts telemetry immediately after checkout and finishes under if: always() with the pinned shared action (.github/workflows/ci.yml:81-88, 260-264, 279, 470-474, 542-543, 617-621). The finish step receives setup-rust's sccache-status after the existing statistics recorder, so cache fallback and effectiveness remain diagnosable (.github/workflows/ci.yml:237-264, 447-474, 602-621; scripts/record-sccache-effectiveness.sh:1-24). The referenced shared action at commit 81374b6f183e59f0570ad36217ded90d3240fda6 emits one DF12_CI_TELEMETRY record with CPU, memory, disk, job identity and sccache fields, uses null values for degraded sccache states, reports unsupported operating systems, and does not fail the job (leynos/shared-actions@81374b6f183e59f0570ad36217ded90d3240fda6:.github/actions/ci-telemetry-finish/action.yml:1-45; .../scripts/finish.py:1-20, 175-214, 260-309; .../scripts/sccache_stats.py:1-24, 337-385; .../scripts/summarize.py:1-22, 180-220). The record uses bounded metric fields and named CI identity fields, without customer payloads or secrets. No new alert or operational failure mode is introduced.

Full details: Testing (Unit And Behavioural)

Explanation

FAIL: Add behavioural or end-to-end coverage for the new CI telemetry integration. The workflow now invokes ci-telemetry-start and ci-telemetry-finish in all three jobs (.github/workflows/ci.yml:87-264, 278-474, and 542-621). The added tests only parse the workflow through all_jobs() and inspect step dictionaries (tests/workflow_contracts/ci_telemetry_test.py:39-103). They verify useful placement and wiring invariants, but they never execute either composite action, emit or parse DF12_CI_TELEMETRY, exercise a failed job, or verify runtime sccache fallback behaviour. The existing shared-action tests cover the action repository, not this repository's caller integration.

Resolution

Add an opt-in workflow integration test, using the existing act smoke-test harness or an equivalent runner, that executes the pinned telemetry actions through a representative ci.yml path. Assert one DF12_CI_TELEMETRY record, successful reporting after a failing work step, and null sccache counts for fallback. Keep the static contract tests for coverage of all three jobs and retain the existing workflow test target.

Full details: Docstring Coverage

Explanation

Docstring coverage is 55.56% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 1 files. (2 skipped: 2 unsupported.)

Resolution

Write docstrings for the functions missing them to satisfy the coverage threshold.

  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Start the record after checkout.
Finish it when each job ends.
Pass the sccache status through.
Check the steps and their order.
Document the metrics they send.

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

@sourcery-ai

sourcery-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

Reviewer's Guide

The PR instruments coverage-check, linux-full, and windows-compat with commit-pinned shared-actions telemetry, wiring existing setup-rust and sccache outputs into a single always-run collector record; documentation and contract tests enforce the required placement, ordering, and configuration.

Sequence diagram for CI telemetry collection

sequenceDiagram
    participant Job as CI job
    participant Start as ci-telemetry-start
    participant Rust as setup-rust
    participant Recorder as record-sccache-effectiveness.sh
    participant Finish as ci-telemetry-finish
    participant Collector as CI observability collector

    Job->>Start: Start telemetry after checkout
    Job->>Rust: Run setup-rust
    Rust-->>Finish: sccache-status
    Job->>Recorder: Write sccache-stats.json
    alt Job succeeds or fails
        Job->>Finish: Run with if: always()
        Finish->>Finish: Read sccache-stats.json
        Finish->>Collector: Print DF12_CI_TELEMETRY record
    end
Loading

File-Level Changes

Change Details Files
Added pinned shared-actions telemetry instrumentation to all three CI jobs.
  • Start telemetry immediately after checkout.
  • Report telemetry under if: always() after measured work and before housekeeping.
  • Pass setup-rust's sccache status to the finish action while reusing the existing statistics file.
.github/workflows/ci.yml
Documented the telemetry lifecycle and collector-facing record semantics.
  • Describe the pinned start/finish pair, emitted metrics, sccache reuse, fallback nulls, and Windows behavior.
  • Clarify that every CI job must carry the instrumentation pair.
docs/developers-guide.md
Added workflow contract tests enforcing telemetry integration.
  • Verify the expected CI job set and start placement.
  • Verify exactly-once always-reporting, permitted post-report housekeeping, status wiring, statistics-recorder ordering, and action pinning.
tests/workflow_contracts/ci_telemetry_test.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

codescene-access[bot]

This comment was marked as outdated.

@leynos
leynos marked this pull request as ready for review October 17, 2026 19:35
@sourcery-ai

sourcery-ai Bot commented Oct 17, 2026

Copy link
Copy Markdown

Sorry @leynos, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 5 days and 1 hour by commenting @sourcery-ai review. Upgrade to get a review now.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 17, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ⚠️ Failed 2026-10-17T19:35:32.401884Z 26edf68 Draft marked ready
🔒 Security Review ⚠️ Failed 2026-10-17T19:35:37.725336Z 26edf68 Draft marked ready
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, add credits to your account and enable them for code reviews in your settings.

@chatgpt-codex-connector

Copy link
Copy Markdown

The account paying for this security review has reached its Codex usage limits. The payer can check the Codex usage dashboard. For personal accounts, using credits requires enabling “Use credits for security reviews” in Code review settings. If you do not manage the paying account, contact this repository's admins.

@coderabbitai coderabbitai Bot added the Roadmap label Oct 17, 2026

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

Pre-merge checks failed. Please resolve the failing checks before merging.

@pandalump

Copy link
Copy Markdown
Collaborator

@coderabbitai At head 3bdcad4, your walkthrough for 26edf68 showed one failed row, Testing (Unit And Behavioural), and the Docstring Coverage warning. The docstrings are added (every helper in ci_telemetry_test.py now has one). For the Testing row I argue it cannot be met the way the resolution asks, and that the behaviour it names is already proven, with evidence:

  • The composite actions are not in this repository: they are leynos/shared-actions ci-telemetry-start and ci-telemetry-finish. Their behaviour is tested where they live, against the exact commit this change pins (81374b6f): an end-to-end test runs the real start and finish scripts and asserts exactly one DF12_CI_TELEMETRY line, finish with the sampler already dead (dead, missing and garbage PID files) still producing the record, the unsupported-os and container records, null sccache counts for a fallback (a fallback never reads as healthy), and real sccache 0.12, 0.16, 0.17 and 0.18 output; two calibration runs on real Ubicloud and hosted runners are recorded in the same repository.
  • This repository's integration is the caller wiring, which the contract holds by value: placement after the checkout, report under if: always() with only housekeeping after it, setup-rust's sccache-status passed through, the recorder running before the report, and the pin.
  • The wiring has also run for real. This pull request's own run printed one record per job: coverage-check (proc-stat, nproc 2, sccache started, 4543 hits and 14 misses read from the sccache-stats.json file the existing recorder writes, ghac backend), linux-full (same, 1704 hits and 0 misses) and windows-compat (unsupported-os, no CPU, sccache read from the same file). An act run would execute the same pinned actions without a runner shape, a ghac backend or a real cache, and would exercise less than the pull request's own CI does.

Does that clear the Testing (Unit And Behavioural) row, and is anything else blocking a merge at this head?

@coderabbitai

coderabbitai Bot commented Oct 17, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

I couldn't verify the requested revision for leynos/shared-actions. I haven't established whether the change is present or missing there. Please check the linked repository's PR/MR or branch reference and access, then retry.

You are interacting with an AI system.

@buzzybee-df12

Copy link
Copy Markdown
Collaborator

@coderabbitai At head 3bdcad4, please assess the one failed row of your walkthrough for 26edf68, Testing (Unit And Behavioural), on the evidence in this pull request alone; no other repository needs to be read. The Docstring Coverage warning is fixed (every helper in ci_telemetry_test.py has a docstring).

The row asks for an act run of the pinned telemetry actions. I argue that is not the right test here:

  1. The behaviour it names (one record, a failing job still reported, null sccache counts on a fallback) belongs to the shared actions and is tested where they live. This repository only configures them, and tests/workflow_contracts/ci_telemetry_test.py holds that configuration by value: start directly after the checkout, the report under if: always() with only housekeeping after it, setup-rust's sccache-status passed through, the recorder running before the report, and the one pinned commit.
  2. The wiring has run for real. The CI run of this pull request printed one DF12_CI_TELEMETRY record per job: coverage-check (sampler proc-stat, nproc 2, sccache started, 4543 hits and 14 misses read from the sccache-stats.json file the existing recorder writes, ghac backend), linux-full (same, 1704 hits and 0 misses) and windows-compat (sampler unsupported-os, no CPU figures, sccache read from the same file). Those are the figures an act run could not reproduce, since act has no Ubicloud shape and no ghac cache.

Does that clear the Testing (Unit And Behavioural) row, and is anything else blocking a merge at this head?

@coderabbitai

coderabbitai Bot commented Oct 17, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail
git rev-parse HEAD
git status --short
fd '^ci_telemetry_test\.py$'
ast-grep outline tests/workflow_contracts/ci_telemetry_test.py --items all
git diff --stat 26edf681 3bdcad47
gh pr view 498 --repo leynos/whitaker --json headRefOid,state,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup
gh api repos/leynos/whitaker/issues/498/comments --paginate --jq '.[] | select(.user.login == "coderabbitai[bot]") | {id,body}'
gh api repos/leynos/whitaker/pulls/498/reviews --paginate --jq '.[] | {user:.user.login,state,commit_id,body}'

Length of output: 2530


🏁 Script executed:

#!/bin/bash
set -u
sed -n '1,150p' tests/workflow_contracts/ci_telemetry_test.py
rg -n -C 5 'ci-telemetry|sccache-status|Record sccache|Check sccache|Record disk headroom|id: setup-rust|actions/checkout@' .github/workflows/ci.yml
gh pr view 498 --repo leynos/whitaker --json headRefOid,state,mergeable,mergeStateStatus,reviewDecision,statusCheckRollup
gh api repos/leynos/whitaker/issues/498/comments --paginate --jq '.[] | select(.user.login == "coderabbitai[bot]") | {id,body}'
gh api repos/leynos/whitaker/pulls/498/reviews --paginate --jq '.[] | {user:.user.login,state,commit_id,body}'
gh api graphql -f query='query { repository(owner:"leynos",name:"whitaker") { pullRequest(number:498) { reviewThreads(first:100) { nodes { isResolved comments(first:10) { nodes { author { login } body path } } } } } } }'

Length of output: 44632


🏁 Script executed:

#!/bin/bash
set -euo pipefail
gh run view 39064746392 --repo leynos/whitaker --json headSha,conclusion,event
gh run view 39064746392 --repo leynos/whitaker --log | grep -E 'DF12_CI_TELEMETRY|[0-9]+ passed|test-workflow-contracts' | head -n 45

Length of output: 9097


@buzzybee-df12 Yes. Treat Testing (Unit And Behavioural) as satisfied at 3bdcad47. I withdraw the requirement for an additional act test.

I checked only this repository and this PR’s CI evidence:

  • The workflow and contract tests cover all three jobs, the exact action pin, start placement, if: always(), status wiring, recorder ordering and housekeeping after reporting.
  • CI run 39064746392 passed at 3bdcad47. The workflow contract suite reported 665 passed.
  • The logs contain one telemetry record per job. They confirm the reported Linux hit/miss counts, file-based sccache statistics, and Windows unsupported-os with null CPU figures.
  • All nine functions in tests/workflow_contracts/ci_telemetry_test.py now have docstrings. The earlier Docstring Coverage warning no longer applies.

The successful run does not demonstrate failed-job or fallback execution. However, those implementation behaviours do not justify a duplicate test requirement in this caller-only change. The contract tests verify the caller’s reporting condition and status input.

I found no remaining code or test blocker in this assessment. GitHub reports MERGEABLE, CLEAN, and no failing checks. However, the review decision remains CHANGES_REQUESTED from my review of 26edf681. That review state is still outstanding; this reply does not approve the PR or change that state.

Thanks for clarifying the test boundary.

Linked revisions not inspected for this answer: leynos/shared-actions (requested revision unavailable). Their changes remain unverified.


✏️ Learnings added
Learnt from: buzzybee-df12
URL: https://github.com/leynos/whitaker/pull/498

Timestamp: 2026-10-17T20:20:55.647Z
Learning: In leynos/whitaker, .github/workflows/ci.yml consumes pinned ci-telemetry-start and ci-telemetry-finish actions from leynos/shared-actions. For caller-only telemetry wiring changes, assess tests/workflow_contracts/ci_telemetry_test.py and actual PR CI telemetry records. Do not require a duplicate act integration test solely to retest shared-action implementation behaviours, such as fallback count semantics or record generation after a work-step failure.

Note: Learnings are effective only in the context of similar code segments. To apply general coding guidelines, please configure review instructions. You can manage existing learnings in the app.

You are interacting with an AI system.

@leynos
leynos merged commit 61a101d into main Oct 17, 2026
9 checks passed
@leynos
leynos deleted the ci-telemetry-pilot branch October 17, 2026 20:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants