You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Code-review fixes to the JUnit XML CI gate, plus a new doc/config lint
rule and a producer→consumer parity test.
reports_junit.py:
- Load task.json for dataset rows: task_id "<suite>/<row_id>" is a real
nested dir, so validate it as a contained relative path (_is_safe_relpath)
instead of rejecting any '/'. Rejects absolute/backslash/'..'/Windows-drive
values; the resolve()-containment check remains the backstop.
- Guard the root <testsuites> time against NaN/inf like per-testcase time
via a shared _time_attr helper; also degrade (not crash) on a
pathologically large integer duration that overflows float()/'.3f'.
- Render informational (gating=False) criteria as [INFO], not [FAIL]/[PASS],
mirroring reports.py; only an explicit JSON `false` is informational
(null / non-bool fails safe to gating).
Docs: fix CODER_EVAL_API_BACKEND -> API_BACKEND (the real Settings env
name; the CODER_EVAL_-prefixed spelling was silently dropped by
Settings extra="ignore", selecting no backend).
CE027 (tests/lint/doc_env_parity.py): new rule flagging framework-prefixed
env-var assignments in README/action.yml/docs that no Settings field/alias
or src/ consumer backs — the class that produced the API_BACKEND bug.
Assignment-scoped with a hardened boundary and a real-consumer src scan to
avoid false positives.
Tests: dataset nested-load, nested '..'/drive rejection, informational
[INFO] (passing + null-gating), root/huge-int time degradation, and a
producer→consumer parity test running real eval_result_to_task_dict output
through generate_junit_xml.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
0 commit comments