Skip to content

fix(repo): tasks check --warm judges task host requirements - #182

Merged
napetrov merged 4 commits into
intel:mainfrom
napetrov:host-under-warm
Oct 23, 2026
Merged

napetrov merged 4 commits into
intel:mainfrom
napetrov:host-under-warm

Conversation

@napetrov

Copy link
Copy Markdown
Contributor

Part of #41 (D3 follow-up: host requirements under --warm).

Summary

 check_task(task, warm)
-  reason = None if warm else host_reason(task, probed_host)
+  reason = host_reason(task, probed_host)     # same container view (affinity, cgroup quota) with or without network
   null   runs only when the host meets the task
   oracle runs when the host meets it, or only CPUs are short
   verdict: host miss -> unsupported (allowed by --allow-unsupported)

repo run already judged the host on every path; only tasks check --warm skipped it. The null/oracle step moves to _check_step (radon CC of check_task 21 -> 13).

Evidence

Merge Danger

Door: two-way

Blast Radius: narrow

CI that runs tasks check --warm on a host missing a task's requirements now sees unsupported (exit 1 unless --allow-unsupported) instead of whatever null/oracle gave.

🤖 Generated with Claude Code

--warm skipped the host verdict, so on a host that misses a task's
requirements the untouched-tree null run passed and the task was
reported broken instead of unsupported; --allow-unsupported could not
pass it. The probe sees the same container view (affinity, cgroup
quota) with or without network. repo run already judged the host.
check_task's null/oracle step moves to _check_step (CC 21 -> 13).

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
@codecov-commenter

codecov-commenter commented Oct 22, 2026 •

Copy link
Copy Markdown

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 91.66%. Comparing base (5064dc2) to head (aeacdc0).
⚠️ Report is 1 commits behind head on main.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #182      +/-   ##
==========================================
+ Coverage   91.64%   91.66%   +0.02%     
==========================================
  Files         222      222              
  Lines       27409    27410       +1     
  Branches     4508     4508              
==========================================
+ Hits        25118    25126       +8     
+ Misses       1620     1615       -5     
+ Partials      671      669       -2     
Files with missing lines Coverage Δ
dokimi/dokimi/repos/selfcheck.py 95.95% <100.00%> (+3.10%) ⬆️

... and 1 file with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@antonwolfy antonwolfy left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. The fix is right: --warm now judges the host through the same _host_reason path as an offline check, and the _check_step extraction keeps the old behaviour for the null/oracle steps. Two nits inline.

What I ran, on a Linux review host at 9598a29:

  • make ci-local: 27 passed, 1 failed, 7 skipped. The failure is pip-audit, reporting a new gitpython 3.2.0 advisory (CVE-2026-114145) in the existing locks; it is not caused by the PR. 7089 tests passed; the changed-line coverage gate passed.
  • Mutation run on selfcheck.py: 24 mutants against the host/runner/run test files. Every mutant that changes which steps run, including restoring None if warm, is killed. 8 survive, all in the moved _check_step failure paths (see the second inline comment).

Checked, no issues

  • Equivalence: the old loop and _check_step match on prepare failure ("{kind}: {exc}", no verdict problems, other step still runs), on oracle non-zero/timeout, and on the skip condition (not reason / run_oracle).
  • Probe cost: run_check probes once per check and passes host to every check_task, so --warm adds no probes.
  • Probe view: probe_host runs with network="none" and the evaluation's runner flags, so --warm's network does not change the affinity or cgroup quota view.

Comment thread dokimi/dokimi/repos/selfcheck.py Resolved
antonwolfy and others added 3 commits October 22, 2026 17:18
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
Signed-off-by: Anton Volkov <antonwolfy@gmail.com>
Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
@xaleryb

xaleryb commented Oct 23, 2026

Copy link
Copy Markdown
Contributor
  • Run: tasks check with and without --warm on main and on this head, using real docker, against a toy repo with 5 tasks (a 64-CPU requirement, an AMD-vendor requirement, a requirement the host meets, and two tasks with no host block). Also ran the full suite, ruff, mypy strict, bandit, and a mutation pass over _check_step.
  • Input: --warm on a host that does not meet a task's requirements. Main says ok and exits 0. This head says unsupported/host, runs no null, and exits 1. That matches the offline verdicts. --allow-unsupported exits 0 and lists the tasks it let through. This is the announced change and nothing else differs.
  • Both earlier threads are fixed at this head: d459193 corrects the fragment and the docstring, and 10e5aa8 adds failure-path tests that kill the mutants listed in the thread.
  • No open findings. No commits from us.

@xaleryb xaleryb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Approved at aeacdc0. Every earlier point re-run at this head passes and no must-fix or mid item is open; full suite, ruff and mypy clean on Linux; CI green.

@napetrov
napetrov merged commit 25cf179 into intel:main Oct 23, 2026
28 checks passed
napetrov added a commit to napetrov/dokimi that referenced this pull request Oct 23, 2026
main's intel#182 judges the host under --warm in every case, so drop this PR's
judge_host wiring and its changelog fragment; the test stays.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
napetrov added a commit to napetrov/oneDAL that referenced this pull request Oct 24, 2026
Moves the reusable workflow and the quick-start install from ad1cbd0 to
intel/dokimi main 09be35b, which adds the workflow's allow-unsupported
input (intel/dokimi#156), judges task host requirements under --warm
(intel/dokimi#182) and ships the built-in review graders
(intel/dokimi#120). repo validate passes unchanged on 27 tasks.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
napetrov added a commit to napetrov/oneDAL that referenced this pull request Oct 24, 2026
…host

dokimi now judges task host requirements under --warm (intel/dokimi#182)
and the reusable workflow can pass --allow-unsupported (intel/dokimi#156).
The task leaves exclude-tasks: on a runner with 4+ GenuineIntel CPUs it is
self-checked like every other task; on a smaller or AMD runner dokimi
reports it unsupported with the reason instead of a null run that passes,
and the job passes.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
napetrov added a commit to napetrov/oneDAL that referenced this pull request Oct 26, 2026
Moves the reusable workflow and the quick-start install from ad1cbd0 to
intel/dokimi main 09be35b, which adds the workflow's allow-unsupported
input (intel/dokimi#156), judges task host requirements under --warm
(intel/dokimi#182) and ships the built-in review graders
(intel/dokimi#120). repo validate passes unchanged on 27 tasks.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
napetrov added a commit to napetrov/oneDAL that referenced this pull request Oct 26, 2026
…host

dokimi now judges task host requirements under --warm (intel/dokimi#182)
and the reusable workflow can pass --allow-unsupported (intel/dokimi#156).
The task leaves exclude-tasks: on a runner with 4+ GenuineIntel CPUs it is
self-checked like every other task; on a smaller or AMD runner dokimi
reports it unsupported with the reason instead of a null run that passes,
and the job passes.

Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
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.

4 participants