Skip to content

ci: register codex eval workflows on main - #13

Merged
tsaqib merged 1 commit into
mainfrom
feat/codex-workflows-registration
May 26, 2026
Merged

tsaqib merged 1 commit into
mainfrom
feat/codex-workflows-registration

Conversation

@tsaqib

@tsaqib tsaqib commented May 26, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds the two manual-codex-judge*.yml workflow files (project + user scope) to main so they show up in the Actions tab and can be dispatched against the feat/codex-eval-backend branch (#11) — without merging that branch's larger code changes (codex driver, conftest refactor, four pytest scenarios) yet.

This is the workflow-registration pattern documented at docs/internal/adding-agent-eval-backend.md:172-180. Same shape as the earlier ci: register copilot eval workflows on main PR.

Why this is safe to merge immediately

  • Both workflows are workflow_dispatch: only — no push: / pull_request: / schedule: triggers. Merging this PR cannot kick anything off on its own.
  • They expect skills-evals files (codex_driver.py, test_codex_*.py, the X_X_AGENT-aware conftest) that don't exist on main. Running them against main would fail at the pytest step. They are only meaningful when dispatched with ref=feat/codex-eval-backend.
  • They depend on DEEPSEEK_API_KEY (already configured). No new secrets.

After merge

Once this lands, the Actions tab will show manual / codex cli <- llm judge and manual / codex cli <- llm judge (user scope). Pick either, set Use workflow from: feat/codex-eval-backend, and dispatch.

GitHub Actions registers workflow_dispatch workflows from the default
branch only. Merging the two manual-codex-judge*.yml files to main
makes them visible in the Actions tab so they can be dispatched
against the feat/codex-eval-backend branch (which carries the codex
driver, conftest changes, and test scenarios) without having to merge
that branch first. Same pattern as the copilot registration PR.

Both workflows are workflow_dispatch only — no push/PR triggers, so
this merge cannot kick anything off on its own. They depend on
skills-evals files that don't exist on main; running them against
main would fail at the pytest step. They are only meaningful when
dispatched with ref=feat/codex-eval-backend.

Signed-off-by: Tanzim Saqib <[email protected]>
@tsaqib
tsaqib merged commit aa591f6 into main May 26, 2026
2 checks passed
@tsaqib
tsaqib deleted the feat/codex-workflows-registration branch May 26, 2026 04:40
tsaqib added a commit that referenced this pull request May 26, 2026
PR #13 landed the pre-hook version of the two manual-codex-judge*.yml
files on main as a workflow-registration commit. The feat branch
already carries the post-hook version (callbacks + PYTHONPATH). Take
the feat version wholesale — main's variant has nothing that isn't
also in feat.

Signed-off-by: Tanzim Saqib <[email protected]>
@tsaqib tsaqib mentioned this pull request May 26, 2026
4 tasks done
tsaqib added a commit that referenced this pull request May 26, 2026
GitHub Actions registers workflow_dispatch workflows from the default
branch only. Merging the two manual-opencode-judge*.yml files to main
makes them visible in the Actions tab so they can be dispatched
against the opencode-evals branch (which carries the opencode driver,
conftest changes, and test scenarios) without having to merge that
branch first. Same pattern as the codex (#13) and copilot
registration PRs.

Both workflows are workflow_dispatch only — no push/PR triggers, so
this merge cannot kick anything off on its own. They depend on
skills-evals files that don't exist on main; running them against
main would fail at the pytest step. They are only meaningful when
dispatched with ref=opencode-evals.

Signed-off-by: Tanzim Saqib <[email protected]>
tsaqib added a commit that referenced this pull request May 26, 2026
Roll forward the two manual-codex-judge*.yml files on main to match
what feat/codex-eval-backend currently carries. Workflow_dispatch
parses the YAML from main, so the iterative fixes on the feat branch
weren't visible to the Actions tab until this lands.

Cumulative changes since the initial registration in #13:
- Install LiteLLM proxy via `uv tool install` (was pip+setup-python).
- Drop a `cp .../litellm_proxy_hooks.py /tmp/litellm/` step so LiteLLM
  can resolve the hook module (it looks relative to the config file's
  directory, not PYTHONPATH).
- Register the hook via `litellm_settings.callbacks` so non-function
  tools (codex's namespace / MCP groupings) are stripped before
  forwarding to DeepSeek.
- Set `reasoning_effort: none` on both deepseek-v4-* models so
  thinking mode is disabled and codex doesn't have to round-trip
  `reasoning_content` (which it doesn't know about).
- Move `setup-uv` above the litellm step so `uv tool` is available
  for the proxy install; remove the obsolete `setup-python` step.

Workflows remain `workflow_dispatch:` only and depend on skills-evals
code (driver, hook, tests, conftest changes) that lives only on
feat/codex-eval-backend. Dispatch them with ref=feat/codex-eval-backend
until #11 merges.

Signed-off-by: Tanzim Saqib <[email protected]>
tsaqib added a commit that referenced this pull request May 26, 2026
* ci: register kilo eval workflows on main

GitHub Actions registers `workflow_dispatch` triggers from the default
branch only. Until `manual-kilo-judge.yml` exists on `main`, it won't
show up in the Actions tab and `gh workflow run` will refuse it — even
when targeting the feature branch that holds the implementation. This
is the small focused PR described in
`docs/internal/adding-agent-eval-backend.md` §6, same shape as PR #12
(copilot) and PR #13 (codex).

The file is copied verbatim from `feat/kilo-eval-backend` (PR #16). No
code changes, no test changes, no doc changes.

Safe to merge now:

- `workflow_dispatch:` only — no push / pull_request / schedule
  triggers, so merging this PR cannot run anything on its own.
- The job depends on skills-evals files (`kilo_driver.py`,
  `test_kilo_*.py`, the `X_X_AGENT_UNDER_TEST`-aware conftest) that
  don't exist on `main` yet. Dispatching against `main` would fail at
  the pytest step; the workflow is only meaningful when dispatched
  with `ref=feat/kilo-eval-backend`.
- No new secrets. `DEEPSEEK_API_KEY` is already configured for the
  other manual-*-judge workflows.

After merge: open Actions, pick "manual / kilo code <- llm judge", set
**Use workflow from: feat/kilo-eval-backend**, and dispatch.

Signed-off-by: Tanzim Saqib <[email protected]>

* ci: add user-scope variant to the kilo registration

Mirrors the project-scope manual-kilo-judge.yml with
X_X_INSTALL_SCOPE=user added so `x-x init` lands skills under
~/.kilo/skills/ instead of <workspace>/.kilo/skills/. Matches the
existing claude/codex/copilot patterns where every backend ships
both scope variants.

Same merge-safety story as the project-scope file: workflow_dispatch
only, depends on skills-evals files from feat/kilo-eval-backend (#16)
that aren't on main yet, no new secrets.

Signed-off-by: Tanzim Saqib <[email protected]>

---------

Signed-off-by: Tanzim Saqib <[email protected]>
tsaqib added a commit that referenced this pull request May 26, 2026
* ci: sync codex eval workflows on main with latest fixes

Roll forward the two manual-codex-judge*.yml files on main to match
what feat/codex-eval-backend currently carries. Workflow_dispatch
parses the YAML from main, so the iterative fixes on the feat branch
weren't visible to the Actions tab until this lands.

Cumulative changes since the initial registration in #13:
- Install LiteLLM proxy via `uv tool install` (was pip+setup-python).
- Drop a `cp .../litellm_proxy_hooks.py /tmp/litellm/` step so LiteLLM
  can resolve the hook module (it looks relative to the config file's
  directory, not PYTHONPATH).
- Register the hook via `litellm_settings.callbacks` so non-function
  tools (codex's namespace / MCP groupings) are stripped before
  forwarding to DeepSeek.
- Set `reasoning_effort: none` on both deepseek-v4-* models so
  thinking mode is disabled and codex doesn't have to round-trip
  `reasoning_content` (which it doesn't know about).
- Move `setup-uv` above the litellm step so `uv tool` is available
  for the proxy install; remove the obsolete `setup-python` step.

Workflows remain `workflow_dispatch:` only and depend on skills-evals
code (driver, hook, tests, conftest changes) that lives only on
feat/codex-eval-backend. Dispatch them with ref=feat/codex-eval-backend
until #11 merges.

Signed-off-by: Tanzim Saqib <[email protected]>

* fix: disable deepseek thinking via extra_body, not reasoning_effort

Same fix as on the feat branch — reasoning_effort=none was ignored
(DeepSeek's schema only accepts "high" or "max"). The actual
disable is `thinking: { type: "disabled" }` passed via extra_body
so LiteLLM merges it into the upstream request body.

Signed-off-by: Tanzim Saqib <[email protected]>

---------

Signed-off-by: Tanzim Saqib <[email protected]>
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