hermes-agent/scripts
kshitij ca120413fc fix(tests): forward HERMES_TEST_* knobs through the hermetic runner
scripts/run_tests.sh runs the suite under `env -i` with an explicit
allowlist. The runner's own documented environment knobs were never on
that list, so all of them were silent no-ops for anyone invoking the
canonical wrapper:

  * HERMES_TEST_WORKERS / PATHS / FILE_TIMEOUT / FILE_RETRIES / SLICE
    are read by run_tests_parallel.py at argparse-default time — inside
    the stripped environment.
  * HERMES_TEST_IMAGE is read by tests/docker/conftest.py to skip its
    session-scoped docker build.

The HERMES_TEST_IMAGE strip is the expensive one, and it's been biting
CI since docker.yml switched from bare pytest to run_tests.sh
(f0cb04921): the workflow sets HERMES_TEST_IMAGE to the image the build
step just loaded, the wrapper drops it, and every per-file pytest
subprocess falls back to building hermes-agent-harness:latest itself.
The job log timing shows it plainly — the first 8 files dispatched (the
LPT-heaviest) all report 248-297s, which is them waiting out the
concurrent initial `docker build` (~4 min on a cold local builder);
every file dispatched after that rides the layer cache and finishes in
4-38s (e.g. test_dump_build_sha.py, a single `docker run --entrypoint
cat`, reported 256.6s). ~4 min of pure waste per docker job, on both
arches — and the tests exercised a locally-rebuilt image WITHOUT the
HERMES_GIT_SHA build-arg the workflow bakes in, not the artifact being
shipped.

Fix: forward the six knobs the same way the Windows location vars are
forwarded (66c4c9c0b) — an explicit compute-before-drop allowlist, each
var only when set, so POSIX runs without them are byte-for-byte
unchanged and the 'no credential can leak' property stays auditable.

Verified empirically via a probe test through the wrapper:
  before: HERMES_TEST_IMAGE=None inside the subprocess
  after:  HERMES_TEST_IMAGE='sentinel-image', HERMES_TEST_FILE_TIMEOUT
          forwarded, HERMES_TEST_WORKERS=3 yields '(3 workers)' in the
          summary, and an unrelated SOME_SECRET stays stripped.
bash -n clean; shellcheck: no new findings (SC2046 on the pre-existing
compileall line predates this change).
2026-08-05 19:46:43 -04:00
..
ci fix(ci): follow artifact download redirect without auth 2026-08-05 11:16:18 -04:00
lib
observability
sandbox feat(dev-sandbox): support fake installer / fake main / git clones 2026-08-04 17:36:26 -04:00
tests test(install): exercise 8.3 normalization by running install.ps1, not by parsing it 2026-08-04 15:34:32 -06:00
toolperf_abeval feat(scripts): reproducible core-toolset A/B eval harness (toolperf_abeval) 2026-08-05 13:43:30 -07:00
whatsapp-bridge
LIVETEST_README.md
add_contributor.py
analyze_livetest.py
audit_pr_attribution.py
benchmark_browser_eval.py
build_model_catalog.py
build_skills_index.py
capture-cage-terminal.sh
check-windows-footguns.py
check_subprocess_stdin.py
contributor_audit.py chore: release v0.20.0 (2026.8.3) 2026-08-03 09:57:23 -07:00
dev-sandbox.sh feat(dev-sandbox): support fake installer / fake main / git clones 2026-08-04 17:36:26 -04:00
discord-voice-doctor.py
docker_config_migrate.py
docker_rebootstrap_nous_session.py
generate_conformance_vectors.py
hermes-gateway
install.cmd
install.ps1 fix(install): resolve 8.3 profile aliases so a built desktop app stops reporting failure 2026-08-04 15:34:32 -06:00
install.sh
install_psutil_android.py
iso-certify.py
keystroke_diagnostic.py
kill_modal.sh
lint_diff.py
micro_compaction_report.py
profile-tui.py
release.py fix(credential-pool): clear exhaustion state on key rotation (#22622) 2026-08-04 11:35:06 -06:00
run_tests.sh fix(tests): forward HERMES_TEST_* knobs through the hermetic runner 2026-08-05 19:46:43 -04:00
run_tests_parallel.py
sample_and_compress.py
smoke_nemo_relay_shared_metrics.py Merge updated client resource metrics into active-install metrics 2026-08-04 15:10:41 -07:00
tool_search_livetest.py
tool_search_livetest2.py
tool_search_livetest_ue.py
tool_search_livetest_ue_disc.py
tool_search_livetest_ue_hard.py