Skip to content

fix: green the fork's remaining CI test shards (test 2/5/6) - #250

Merged
OmarB97 merged 4 commits into
mainfrom
fix/fork-ci-test-failures
Jun 24, 2026
Merged

OmarB97 merged 4 commits into
mainfrom
fix/fork-ci-test-failures

Conversation

@OmarB97

@OmarB97 OmarB97 commented Jun 24, 2026

Copy link
Copy Markdown
Owner

What does this PR do?

Greens the last 3 red CI checks — the test (2), test (5), test (6) shards. After #247 (lockfile) and #248 (pytest-timeout) let the Python suite actually run, 5 real failures surfaced across those shards — all fork-specific drift the earlier failures had masked. This fixes all 5.

Shard Failing test Root cause Fix
5 test_docker_context_includes_license_file fork-only .dockerignore line excluded LICENSE (upstream has none) drop the entry
6 test_optional_mcps_manifests_ship_in_both_wheel_and_sdist optional-mcps/unreal-engine/manifest.yaml on disk, no [tool.setuptools.data-files] target add the target
2 test_in_repo_lists_match_manifest claude-fable-5 added to model lists, model-catalog.json not rebuilt regenerate (deterministic script)
2 test_sidecar_session_create_scopes_profile upstream test; fork's web/ChatSidebar.tsx diverged (no profile switcher) documented xfail
2 test_npm_audit_fix_hint_avoids_crashing_workspace_flag upstream test; fork's doctor.py diverged (managed-scope, no npm-audit-workspace) documented xfail

None were introduced here — they're pre-existing fork drift, unmasked once the suite could run.

Related Issue

Final follow-up to the fork-CI repair series (#247, #248). This takes the fork from 3 red checks to green.

Type of Change

  • 🐛 Bug fix (non-breaking)
  • ♻️ Chore (catalog regen) + test housekeeping (xfail)

Changes Made

  • .dockerignore — remove the fork-added LICENSE exclusion so the image ships its license (and the test passes).
  • pyproject.toml — add "optional-mcps/unreal-engine" = ["optional-mcps/unreal-engine/manifest.yaml"].
  • website/static/api/model-catalog.json — regenerate via scripts/build_model_catalog.py (adds anthropic/claude-fable-5; the script reads in-repo lists, no network).
  • tests/hermes_cli/test_doctor.py, tests/test_dashboard_sidecar_close_on_disconnect.py@pytest.mark.xfail (non-strict) with documented reasons for two upstream tests whose surfaces the fork has deliberately diverged (web ChatSidebar 142+/200− vs upstream; doctor evolved toward managed-scope). Porting upstream features into those locally-untestable, intentionally-diverged surfaces is out of scope; the marker XPASSes cleanly if the fork later adopts them.

How to Test

uv sync --locked --python 3.11 --extra dev
uv run python -m pytest \
  tests/test_docker_webui_install_surface.py::test_docker_context_includes_license_file \
  tests/test_packaging_metadata.py::test_optional_mcps_manifests_ship_in_both_wheel_and_sdist \
  "tests/hermes_cli/test_model_catalog.py::TestManifestMatchesInRepoLists::test_in_repo_lists_match_manifest" \
  "tests/hermes_cli/test_doctor.py::test_npm_audit_fix_hint_avoids_crashing_workspace_flag" \
  "tests/test_dashboard_sidecar_close_on_disconnect.py::test_sidecar_session_create_scopes_profile" -v

Local result: 3 passed, 2 xfailed, 0 failed. The per-shard failure counts from the #248 run (test 2 = 3, test 5 = 1, test 6 = 1) are fully accounted for here.

Checklist

Code

  • Conventional-commit messages (fix(docker), fix(packaging), chore(catalog), test:)
  • Searched existing PRs; not a duplicate
  • Only changes related to greening these shards
  • Tests: the three real fixes are verified by the previously-failing tests now passing; the two xfails carry documented reasons
  • Tested on macOS 15 (Darwin 25.6)
  • uv lock --check unaffected (no dependency change)

Documentation & Housekeeping

  • Docs / config / cross-platform / schemas — N/A

Screenshots / Logs

Before (from #248's run): test (2) 3 failed, test (5) 1 failed, test (6) 1 failed. After (local): the same five tests → 3 passed, 2 xfailed. CI on this PR is the real check.

Omar Baradei and others added 4 commits June 24, 2026 16:56
A fork-only `.dockerignore` entry excluded the top-level LICENSE ("not needed
inside the container"), but tests/test_docker_webui_install_surface.py
(test_docker_context_includes_license_file) requires the license to ship in the
build context — and an image should carry its own license anyway. Drop the entry.

Co-Authored-By: Claude Code <noreply@anthropic.com>
optional-mcps/unreal-engine/manifest.yaml ships on disk, but pyproject's
[tool.setuptools.data-files] only declared linear and n8n, so the wheel/sdist
dropped it. tests/test_packaging_metadata.py enforces one target per
optional-mcps/<name>; add the missing unreal-engine target.

Co-Authored-By: Claude Code <noreply@anthropic.com>
The fork added anthropic/claude-fable-5 to OPENROUTER_MODELS / _PROVIDER_MODELS
but never rebuilt the published catalog, so tests/hermes_cli/test_model_catalog.py
(test_in_repo_lists_match_manifest) saw website/static/api/model-catalog.json out
of sync. Regenerated via scripts/build_model_catalog.py (deterministic; no network).

Co-Authored-By: Claude Code <noreply@anthropic.com>
The v0.17.0 upstream merge brought two tests for surfaces the fork has
deliberately evolved away from:

- test_sidecar_session_create_scopes_profile expects web/ ChatSidebar.tsx to pass
  a dashboard `profile` to session.create; the fork's ChatSidebar (its own
  reasoning-effort picker / session switcher, 142+/200- vs upstream) has no
  profile switcher to scope.
- test_npm_audit_fix_hint_avoids_crashing_workspace_flag expects an
  npm-audit-per-workspace doctor check the fork's managed-scope doctor doesn't
  implement.

xfail (non-strict, documented) rather than port upstream features into
deliberately-diverged, locally-untestable surfaces. Remove the marker if the
fork adopts either feature.

Co-Authored-By: Claude Code <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🔎 Lint report: fix/fork-ci-test-failures vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 10913 on HEAD, 10910 on base (🆕 +3)

🆕 New issues (3):

Rule Count
unresolved-attribute 2
unresolved-import 1
First entries
tests/test_dashboard_sidecar_close_on_disconnect.py:4: [unresolved-import] unresolved-import: Cannot resolve imported module `pytest`
tests/run_agent/test_credits_notices_toggle.py:76: [unresolved-attribute] unresolved-attribute: Unresolved attribute `_credits_session_start_micros` on type `AIAgent`
run_agent.py:3004: [unresolved-attribute] unresolved-attribute: Object of type `Self@get_credits_spent_micros` has no attribute `_credits_session_start_micros`

✅ Fixed issues (1):

Rule Count
invalid-assignment 1
First entries
tests/run_agent/test_credits_notices_toggle.py:76: [invalid-assignment] invalid-assignment: Object of type `None` is not assignable to attribute `_credits_session_start_micros` of type `int`

Unchanged: 5711 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

@OmarB97
OmarB97 merged commit 3321d16 into main Jun 24, 2026
35 checks passed
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