Skip to content
This repository was archived by the owner on Aug 31, 2026. It is now read-only.

Make CI truthful: remove continue-on-error, fix broken tests, delete dead workflows - #10

Merged
bGOATnote merged 3 commits into
mainfrom
ci/truthful-ci
Aug 31, 2026
Merged

bGOATnote merged 3 commits into
mainfrom
ci/truthful-ci

Conversation

@bGOATnote

Copy link
Copy Markdown
Member

Pre-archive cleanup, part 2 of 2 (CI honesty). Addresses audit findings P0-3 and P1-1. Companion to #9.

Why

CI was green by construction: every ci.yml step carried continue-on-error: true plus an || echo "skipped" swallow, while underneath pytest collection aborted on a SyntaxError and 52 CPU tests failed. The Actions tab was a wall of 177 cancelled nightly runs queued against self-hosted GPU runners that no longer exist (repo runner count: 0).

ci.yml

  • continue-on-error and error-swallowing removed from every step; failures now fail the job.
  • Lint gates on flake8 E9,F63,F7,F82; the never-gating mypy step is removed.
  • The package is installed for real (pip install -e . --no-build-isolation) and the full suite runs; the import check runs from robocache/ so the repo-root directory cannot shadow the installed package.

Real bugs fixed

  • robocache/tests/test_memory_strategy.py:107: dtype=torch::int32 (C++ scope syntax) -> torch.int32; this SyntaxError aborted collection of the entire suite.
  • robocache/python/robocache/backends.py: fused_multimodal_alignment used torch without importing it (NameError on the CPU multimodal path; ruff F821).
  • robocache.get_backend_info() now exists (tests called it; the package had no such attribute).

Honest failure accounting (marked, not hidden)

  • 16 CPU voxelization-fallback tests are xfail with reason: the fallback clamps out-of-bounds points into boundary voxels where the CUDA kernel drops them (0.3-3% voxel mismatch vs the golden reference) and raises IndexError on empty/single-point clouds. This is stated in the README Known Issues section (Correct performance claims, remove fabricated persona and self-audit docs #9) instead of being shipped as green.
  • tests/test_multimodal_fusion.py is skipped module-wide with reason: it targets the pre-1.0 two-stream fuse_multimodal API; the current API takes three streams.

Local CPU suite result: 44 passed, 350 skipped, 16 xfailed, 0 failed (fresh venv, torch 2.13.0 CPU, Python 3.11).

Dead workflows deleted

Workflow Why it could never produce a real run
isaac_sim_nightly.yml daily cron on [self-hosted, gpu]; runners gone; each run queued 24 h then was cancelled
benchmark_validation.yml weekly cron on self-hosted; same
compute-sanitizer.yml [self-hosted, gpu], dispatch-only, 0 runs ever
gpu_ci_a100.yml / gpu_ci_h100.yml self-hosted; runners gone
static-analysis.yml all four jobs if: false
security_scan.yml two jobs if: false; third requires a pull_request event its triggers never deliver - every scheduled run was skipped
kernel_build_validation.yml needs a GPU container (--gpus all) on a hosted runner; last main run failed; cannot succeed without a GPU
robocache/.github/workflows/ (7 files) nested location GitHub never reads

ci.yml and build-and-publish.yml (tag/dispatch-gated) remain.

🤖 Generated with Claude Code

https://claude.ai/code/session_01142EwVwkXFRGnYu7YgHSYL

bGOATnote and others added 3 commits August 31, 2026 16:16
…dead workflows

Addresses audit findings P0-3 and P1-1. Before this change CI was green by
construction: every ci.yml step had continue-on-error plus an "|| echo skipped"
swallow, while pytest collection aborted on a SyntaxError and 52 CPU tests
failed underneath.

ci.yml:
- Remove continue-on-error and the error-swallowing echo from every step;
  a failing step now fails the job.
- Lint gates on flake8 E9/F63/F7/F82 (syntax errors and undefined names);
  the mypy step, which never gated anything, is removed.
- Install the package for real (pip install -e . --no-build-isolation) and run
  the full test suite; run the import check from robocache/ so the repo-root
  directory does not shadow the installed package.

Test fixes (real bugs):
- tests/test_memory_strategy.py:107: dtype=torch::int32 (C++ syntax) ->
  torch.int32; this SyntaxError aborted collection of the whole suite.
- python/robocache/backends.py: fused_multimodal_alignment used torch without
  importing it (NameError on the CPU multimodal path, ruff F821).
- Expose robocache.get_backend_info() (tests called it; the attribute did not
  exist on the package).

Honest failure accounting (not fixed, marked):
- 16 CPU voxelization-fallback tests marked xfail: the fallback clamps
  out-of-bounds points into boundary voxels where the CUDA kernel drops them
  (0.3-3% voxel mismatch vs golden reference) and raises IndexError on
  empty/single-point clouds. Documented in the README Known Issues section
  rather than shipped as green.
- tests/test_multimodal_fusion.py skipped module-wide with reason: it targets
  the pre-1.0 two-stream fuse_multimodal API; the current API takes three
  streams.

CPU suite result: 44 passed, 350 skipped (CUDA-gated + stale module),
16 xfailed, 0 failed.

Dead workflows deleted (P1-1):
- Self-hosted GPU runners no longer exist (repo runner count is 0); their
  scheduled workflows produced 177 cancelled runs: isaac_sim_nightly.yml,
  benchmark_validation.yml, compute-sanitizer.yml, gpu_ci_a100.yml,
  gpu_ci_h100.yml.
- static-analysis.yml: all four jobs if: false - can never run.
- security_scan.yml: two jobs if: false, third requires a pull_request event
  its triggers never deliver - every scheduled run was skipped.
- kernel_build_validation.yml: requires a GPU container (--gpus all) on a
  hosted runner; its last run on main failed and it cannot succeed without a
  GPU.
- robocache/.github/workflows/: seven nested duplicates GitHub never reads.

ci.yml and build-and-publish.yml (tag/dispatch-gated) remain.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01142EwVwkXFRGnYu7YgHSYL
tests/perf modules import "from tests.perf.perf_guard import ..."; bare
pytest does not put the working directory on sys.path, python -m pytest does.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01142EwVwkXFRGnYu7YgHSYL
output.sum() after the block's final LayerNorm (gamma=1, beta=0 at init) is a
constant, so its true input gradient is exactly zero; the assertion only
passed where floating-point reduction order left roundoff noise (arm64) and
failed where it cancelled exactly (x86_64 CI). A quadratic loss exercises the
gradient path for real.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01142EwVwkXFRGnYu7YgHSYL
@bGOATnote
bGOATnote merged commit 752e99e into main Aug 31, 2026
2 checks passed
@bGOATnote
bGOATnote deleted the ci/truthful-ci branch August 31, 2026 19:26
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant