Adrien Faure activity https://gitlab.com/adfaure 2026-03-20T21:35:24Z tag:gitlab.com,2026-03-19:5221191888 Adrien Faure pushed to project branch master at ryax-tech / ryax / ryax-runner 2026-03-19T09:31:57Z adfaure Adrien Faure

Adrien Faure (1e6fbc07) at 19 Mar 09:31

Merge branch '1394-per-action-performance-score' into 'master'

... and 1 more commit

tag:gitlab.com,2026-03-19:5221191880 Adrien Faure deleted project branch 1394-per-action-performance-score at ryax-tech / ryax / ryax-runner 2026-03-19T09:31:57Z adfaure Adrien Faure

Adrien Faure (fda70afc) at 19 Mar 09:31

tag:gitlab.com,2026-03-19:5221191791 Adrien Faure accepted merge request !412: Repair performance override scoring and preserve pending-execution compatibility at ryax-tech / ryax / ryax-runner 2026-03-19T09:31:55Z adfaure Adrien Faure

Summary This MR fixes the per-action performance override path in the runner placement scorer.

The previous implementation had two problems:

  • it applied a performance override incorrectly inside the generic objective loop,
  • and after the first fix, the scheduler no longer consumed PendingExecutionConnection.node_pool_objective_score in the normal schedule_one() path.

This MR keeps the scorer fix and restores compatibility with scheduler-side pending-execution overrides, without changing schema, ORM mapping, or repository structure.

What changed

ryax/runner/application/site_placement_service.py

  • _score_on_objectives() now accepts an explicit performance_overrides map.
  • Performance overrides are applied only to the PERFORMANCE objective.
  • Override values are now multiplied by the performance weight, like any other objective contribution.
  • Fallback is now per pool:
    • if a pool has an override, use it for performance,
    • otherwise fall back to the generic node-pool performance score.
  • The old all-or-nothing behavior was removed:
    • we no longer discard all overrides if one pool is missing.
  • The old triple-counting behavior was removed:
    • the same performance override is no longer added once per objective.
  • Compatibility was restored for the actual scheduling path:
    • if no explicit performance_overrides argument is provided,
    • _score_on_objectives() now reuses to_schedule.node_pool_objective_score when it is a real dict[str, float].
  • Invalid non-dict node_pool_objective_score values are ignored safely with a debug log instead of crashing.

tests/runner/application/test_site_placement_service.py:

  • Added small helpers to build node pools with objective scores and pending executions with objective weights.
  • Added regression tests for:
    • generic scoring without overrides,
    • performance-only override behavior,
    • partial override fallback per pool,
    • 0.0 override values,
    • missing generic objective scores,
    • no-objectives behavior,
    • schedule_one() using pending-execution override scores in the real path,
    • explicit override argument taking precedence over pending-execution scores,
    • invalid stored override values being ignored safely.
tag:gitlab.com,2026-03-19:5221076075 Adrien Faure approved merge request !412: Repair performance override scoring and preserve pending-execution compatibility at ryax-tech / ryax / ryax-runner 2026-03-19T09:05:48Z adfaure Adrien Faure

Summary This MR fixes the per-action performance override path in the runner placement scorer.

The previous implementation had two problems:

  • it applied a performance override incorrectly inside the generic objective loop,
  • and after the first fix, the scheduler no longer consumed PendingExecutionConnection.node_pool_objective_score in the normal schedule_one() path.

This MR keeps the scorer fix and restores compatibility with scheduler-side pending-execution overrides, without changing schema, ORM mapping, or repository structure.

What changed

ryax/runner/application/site_placement_service.py

  • _score_on_objectives() now accepts an explicit performance_overrides map.
  • Performance overrides are applied only to the PERFORMANCE objective.
  • Override values are now multiplied by the performance weight, like any other objective contribution.
  • Fallback is now per pool:
    • if a pool has an override, use it for performance,
    • otherwise fall back to the generic node-pool performance score.
  • The old all-or-nothing behavior was removed:
    • we no longer discard all overrides if one pool is missing.
  • The old triple-counting behavior was removed:
    • the same performance override is no longer added once per objective.
  • Compatibility was restored for the actual scheduling path:
    • if no explicit performance_overrides argument is provided,
    • _score_on_objectives() now reuses to_schedule.node_pool_objective_score when it is a real dict[str, float].
  • Invalid non-dict node_pool_objective_score values are ignored safely with a debug log instead of crashing.

tests/runner/application/test_site_placement_service.py:

  • Added small helpers to build node pools with objective scores and pending executions with objective weights.
  • Added regression tests for:
    • generic scoring without overrides,
    • performance-only override behavior,
    • partial override fallback per pool,
    • 0.0 override values,
    • missing generic objective scores,
    • no-objectives behavior,
    • schedule_one() using pending-execution override scores in the real path,
    • explicit override argument taking precedence over pending-execution scores,
    • invalid stored override values being ignored safely.
tag:gitlab.com,2026-03-19:5220778300 Adrien Faure pushed to project branch master at ryax-tech / ryax / ryax-engine 2026-03-19T07:44:02Z adfaure Adrien Faure

Adrien Faure (4ce8416a) at 19 Mar 07:44

doc: small typo

tag:gitlab.com,2026-03-18:5218840261 Adrien Faure commented on merge request !412 at ryax-tech / ryax / ryax-runner 2026-03-18T17:38:18Z adfaure Adrien Faure

A few questions.

  • Is it intended that the function is never called with the new parameter performance_overrides (except in the tests)?

  • Second question:

it applied a performance override incorrectly inside the generic objective loop,

Do you mean this loop (!412 (diffs)) ?

tag:gitlab.com,2026-03-18:5218840247 Adrien Faure commented on merge request !412 at ryax-tech / ryax / ryax-runner 2026-03-18T17:38:17Z adfaure Adrien Faure

tag:gitlab.com,2026-03-18:5217843295 Adrien Faure approved merge request !411: Add node pool in workflow run api at ryax-tech / ryax / ryax-runner 2026-03-18T14:13:25Z adfaure Adrien Faure
tag:gitlab.com,2026-03-18:5217841681 Adrien Faure deleted project branch add-node-pool-in-workflow-run-view at ryax-tech / ryax / ryax-front 2026-03-18T14:13:07Z adfaure Adrien Faure

Adrien Faure (325c8795) at 18 Mar 14:13

tag:gitlab.com,2026-03-18:5217841273 Adrien Faure accepted merge request !147: Add node pool in workflow run view at ryax-tech / ryax / ryax-front 2026-03-18T14:13:02Z adfaure Adrien Faure
tag:gitlab.com,2026-03-18:5217841264 Adrien Faure pushed to project branch master at ryax-tech / ryax / ryax-front 2026-03-18T14:13:02Z adfaure Adrien Faure

Adrien Faure (85e8b081) at 18 Mar 14:13

Add node pool in workflow run view

tag:gitlab.com,2026-03-18:5217817185 Adrien Faure approved merge request !147: Add node pool in workflow run view at ryax-tech / ryax / ryax-front 2026-03-18T14:08:46Z adfaure Adrien Faure
tag:gitlab.com,2026-03-18:5217817170 Adrien Faure commented on merge request !147 at ryax-tech / ryax / ryax-front 2026-03-18T14:08:46Z adfaure Adrien Faure

Ok thank you.

tag:gitlab.com,2026-03-18:5216696940 Adrien Faure commented on merge request !147 at ryax-tech / ryax / ryax-front 2026-03-18T10:11:47Z adfaure Adrien Faure

Do we care about the failing tests ?

tag:gitlab.com,2026-03-18:5216688754 Adrien Faure approved merge request !147: Add node pool in workflow run view at ryax-tech / ryax / ryax-front 2026-03-18T10:10:24Z adfaure Adrien Faure
tag:gitlab.com,2026-03-17:5213558941 Adrien Faure pushed to project branch prepare-extracting-mission at ryax-tech / ryax / ryax-runner 2026-03-17T15:34:20Z adfaure Adrien Faure

Adrien Faure (4d01ea97) at 17 Mar 15:34

remove debug logs

tag:gitlab.com,2026-03-17:5213551521 Adrien Faure commented on merge request !409 at ryax-tech / ryax / ryax-runner 2026-03-17T15:32:37Z adfaure Adrien Faure

@mercierm I tested it with workflows executing a lot of sleep action on my machine with this setup:

  • emit every 1s (limited to 1000)
  • sleep 5
  • sleep 4
  • sleep 3
  • sleep 2
  • sleep 1

All workflows finished successfully. Max deployment is reached, and the scheduler manages to reuse old deployments.

tag:gitlab.com,2026-03-17:5213523908 Adrien Faure pushed to project branch prepare-extracting-mission at ryax-tech / ryax / ryax-runner 2026-03-17T15:26:40Z adfaure Adrien Faure

Adrien Faure (9f6246fb) at 17 Mar 15:26

add logs

... and 9 more commits

tag:gitlab.com,2026-03-17:5212974561 Adrien Faure pushed to project branch prepare-extracting-mission at ryax-tech / ryax / ryax-runner 2026-03-17T13:41:20Z adfaure Adrien Faure

Adrien Faure (b3acb6a6) at 17 Mar 13:41

add logs