Skip to content

Fix codecov changes#2422

Open
Dreamsorcerer wants to merge 2 commits into
mainfrom
fix-codecov-pr
Open

Fix codecov changes#2422
Dreamsorcerer wants to merge 2 commits into
mainfrom
fix-codecov-pr

Conversation

@Dreamsorcerer

Copy link
Copy Markdown
Collaborator

Previous PR (#2367) doesn't seem to have worked correctly. Hopefully this will work now..

@greptile-apps

greptile-apps Bot commented Jun 8, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR fixes the Codecov configuration and refactors the PR labelling workflow to use workflow_run instead of check_run, addressing issues from the previous attempt (#2367).

  • .codecov.yml: Removes the explicit true values from project and patch keys, leaving them as YAML nulls to let Codecov use its default behaviour rather than the override that was apparently causing issues.
  • .github/workflows/pr-label.yml: Switches the trigger from check_run: completed to workflow_run: [ci]: completed, rewrites the script to resolve PR numbers as an array (correctly iterating over all associated PRs), and adds a SHA-based fallback for fork PRs where workflow_run.pull_requests is empty. The pull_request_target listener is narrowed to synchronize only, since its sole remaining role is clearing a stale label before CI finishes on a new push.

Confidence Score: 5/5

Safe to merge — both files make targeted, low-risk corrections to CI configuration.

The codecov change simply removes explicit boolean overrides so the service uses its defaults. The workflow change correctly switches to the workflow_run event, handles fork PRs via SHA fallback, and iterates over all associated PR numbers rather than assuming a single one. No functional regressions are introduced in the labelling logic.

No files require special attention.

Important Files Changed

Filename Overview
.codecov.yml Removes explicit true from project and patch status keys, leaving them as YAML nulls to use Codecov defaults.
.github/workflows/pr-label.yml Replaces check_run trigger with workflow_run, rewrites label logic to handle arrays of PR numbers, and adds a fork-PR fallback via head SHA lookup.

Sequence Diagram

sequenceDiagram
    participant Dev as Developer
    participant GH as GitHub
    participant CI as ci workflow
    participant PL as pr-label workflow

    Dev->>GH: Push to PR
    GH->>PL: pull_request_target: synchronize
    PL->>GH: "Remove ready-to-merge label (ciOk=false)"

    GH->>CI: Trigger ci workflow (pull_request event)
    CI-->>GH: Workflow completed

    GH->>PL: "workflow_run: completed (event=pull_request)"
    PL->>GH: listJobsForWorkflowRun(run_id)
    GH-->>PL: jobs list

    alt Same-repo PR
        PL->>PL: "prNumbers = workflow_run.pull_requests[].number"
    else Fork PR (pull_requests is empty)
        PL->>GH: listPullRequestsAssociatedWithCommit(head_sha)
        GH-->>PL: open PRs
        PL->>PL: "prNumbers = filtered open PRs"
    end

    alt "ciComplete.conclusion === 'success'"
        PL->>GH: addLabel(ready-to-merge) for each PR
    else CI failed or job not found
        PL->>GH: removeLabel(ready-to-merge) for each PR
    end
Loading

Reviews (2): Last reviewed commit: "Edge case: multiple PRs" | Re-trigger Greptile

Comment thread .github/workflows/pr-label.yml Outdated
@codecov

codecov Bot commented Jun 8, 2026

Copy link
Copy Markdown

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
2118 1 2117 72
View the top 1 failed test(s) by shortest run time
dimos.e2e_tests.test_dimsim_spatial_memory::test_go_to_the_bed
Stack Traces | 571s run time
lcm_spy = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x72fbf4476750>
start_blueprint = <function start_blueprint.<locals>.set_name_and_start at 0x72fbf217a700>
human_input = <function human_input.<locals>.send_human_input at 0x72fbf217aca0>
dim_sim = <dimos.e2e_tests.dim_sim_client.DimSimClient object at 0x72fbf21ea360>
explore_house = <function explore_house.<locals>.explore at 0x72fbf217b6a0>

    @pytest.mark.self_hosted_large
    def test_go_to_the_bed(lcm_spy, start_blueprint, human_input, dim_sim, explore_house) -> None:
        start_blueprint(
            "run",
            "unitree-go2-agentic",
            simulator="dimsim",
        )
        lcm_spy.save_topic(".../McpClient/on_system_modules/res")
        lcm_spy.wait_for_saved_topic(".../McpClient/on_system_modules/res", timeout=1200.0)
    
        explore_house()
    
        human_input("go to the bed")
    
>       lcm_spy.wait_until_odom_position(-3.567, -1.332, threshold=2, timeout=180)

dim_sim    = <dimos.e2e_tests.dim_sim_client.DimSimClient object at 0x72fbf21ea360>
explore_house = <function explore_house.<locals>.explore at 0x72fbf217b6a0>
human_input = <function human_input.<locals>.send_human_input at 0x72fbf217aca0>
lcm_spy    = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x72fbf4476750>
start_blueprint = <function start_blueprint.<locals>.set_name_and_start at 0x72fbf217a700>

dimos/e2e_tests/test_dimsim_spatial_memory.py:32: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/e2e_tests/lcm_spy.py:182: in wait_until_odom_position
    self.wait_for_message_result(
        predicate  = <function LcmSpy.wait_until_odom_position.<locals>.predicate at 0x72fbf217b920>
        self       = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x72fbf4476750>
        threshold  = 2
        timeout    = 180
        x          = -3.567
        y          = -1.332
dimos/e2e_tests/lcm_spy.py:168: in wait_for_message_result
    self.wait_until(
        event      = <threading.Event at 0x72fbf21eae10: unset>
        fail_message = 'Failed to get to position x=-3.567, y=-1.332'
        listener   = <function LcmSpy.wait_for_message_result.<locals>.listener at 0x72fbf217b740>
        predicate  = <function LcmSpy.wait_until_odom_position.<locals>.predicate at 0x72fbf217b920>
        self       = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x72fbf4476750>
        timeout    = 180
        topic      = '/odom#geometry_msgs.PoseStamped'
        type       = <class 'dimos.msgs.geometry_msgs.PoseStamped.PoseStamped'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x72fbf4476750>

    def wait_until(
        self,
        *,
        condition: Callable[[], bool],
        timeout: float,
        error_message: str,
        poll_interval: float = 0.1,
    ) -> None:
        start_time = time.time()
        while time.time() - start_time < timeout:
            if condition():
                return
            time.sleep(poll_interval)
>       raise TimeoutError(error_message)
E       TimeoutError: Failed to get to position x=-3.567, y=-1.332

condition  = <bound method Event.is_set of <threading.Event at 0x72fbf21eae10: unset>>
error_message = 'Failed to get to position x=-3.567, y=-1.332'
poll_interval = 0.1
self       = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x72fbf4476750>
start_time = 1780931706.4430914
timeout    = 180

dimos/e2e_tests/lcm_spy.py:105: TimeoutError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

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.

1 participant