Context
PR #424 (jrag watch) added the load-bearing tests that prove the feature's core guarantees — but they're all skipped in CI.
.github/workflows/test.yml sets JAVA_CODEBASE_RAG_RUN_HEAVY=0, so these heavy-gated tests never run in CI:
tests/watch/test_daemon.py::test_golden_*_ipc_* (6) — golden IPC byte-identity for every read command (proves the warm path renders byte-identically to cold, with a _load_graph spy proving the daemon served).
tests/watch/test_concurrency_characterization.py (3) — Lance atomic-version reads, graph copy-on-write snapshot isolation, warm model reuse.
tests/watch/test_warm.py (5) — WarmResources + the COW snapshot lifecycle.
Why it matters
CI structurally cannot catch a regression in the three properties that justify shipping watch mode: byte-identity, never-partial reads, and warm reuse.
Proposal
Add a heavy CI job (or a nightly) that runs with JAVA_CODEBASE_RAG_RUN_HEAVY=1.
Caveat: the heavy suite currently exits with a pre-existing lance/pyarrow SIGSEGV (exit 139) at Python interpreter teardown — unrelated to watch mode (the os._exit discipline in cli/jrag exists specifically to dodge it). The job should read the pytest summary line from the log rather than gating on the process exit code. (Filed separately — see the full-suite-health issue.)
Repro
JAVA_CODEBASE_RAG_RUN_HEAVY=1 .venv/bin/python -m pytest tests/watch -q
Context
PR #424 (
jrag watch) added the load-bearing tests that prove the feature's core guarantees — but they're all skipped in CI..github/workflows/test.ymlsetsJAVA_CODEBASE_RAG_RUN_HEAVY=0, so these heavy-gated tests never run in CI:tests/watch/test_daemon.py::test_golden_*_ipc_*(6) — golden IPC byte-identity for every read command (proves the warm path renders byte-identically to cold, with a_load_graphspy proving the daemon served).tests/watch/test_concurrency_characterization.py(3) — Lance atomic-version reads, graph copy-on-write snapshot isolation, warm model reuse.tests/watch/test_warm.py(5) —WarmResources+ the COW snapshot lifecycle.Why it matters
CI structurally cannot catch a regression in the three properties that justify shipping watch mode: byte-identity, never-partial reads, and warm reuse.
Proposal
Add a heavy CI job (or a nightly) that runs with
JAVA_CODEBASE_RAG_RUN_HEAVY=1.Caveat: the heavy suite currently exits with a pre-existing lance/pyarrow SIGSEGV (exit 139) at Python interpreter teardown — unrelated to watch mode (the
os._exitdiscipline incli/jragexists specifically to dodge it). The job should read the pytest summary line from the log rather than gating on the process exit code. (Filed separately — see the full-suite-health issue.)Repro