hermes-agent/scripts
ethernet 7aecab56db ci: move the review comment and the image build out of the CI run
The CI run stayed in progress until its last job ended. Two advisory jobs
set that time: the review-comment poller (40 minutes) and the Docker image
build (45 minutes). Neither job was required to merge.

GitHub refuses `gh run rerun` on a run that is in progress. Thus a reviewer
who added the `ci-reviewed` label had to wait for the two slow jobs, and
label-rerun.yml carried a 2100-second wait loop for this reason. The fast
required jobs were ready long before.

Each slow job now runs in its own workflow:

- docker.yml owns its `pull_request` trigger and does its own change
  detection. The new `detect` job runs the same composite action with the
  same condition that ci.yml applied, so a tests-only PR still skips the
  build. The `workflow_call` trigger is gone.
- ci-review-comment.yml starts on `workflow_run` when CI starts. It reads
  the workflow and the scripts from the default branch, which is the trust
  boundary that the old job got from its `ref: default_branch` checkout.

The poller reads job results through the API, so it can report on a run
that it does not belong to. `WATCH_WORKFLOWS` names sibling workflows for
the same commit, and `select_watched_runs` keeps the newest run for each
name. Thus the comment still shows the Docker results. The list is
newline-separated, because a workflow name can contain a comma.

The poller always exits 0 now. It reports on the CI run from a different
run, so a failed CI job is not a failure of the poller. The CI run has its
own gate for that.

Also correct a parse error in label-rerun.yml. STATUS came from the already
truncated RUN_ID, so its value was the run id and never "completed". Thus
the wait branch always ran.

ci.yml no longer needs `packages: write`, because the image build has left.
2026-08-09 15:40:04 -04:00
..
ci
lib
observability
sandbox
tests
toolperf_abeval
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
desktop-update.ps1
dev-sandbox.sh
discord-voice-doctor.py
docker_config_migrate.py
docker_rebootstrap_nous_session.py
generate_conformance_vectors.py
hermes-gateway
install.cmd
install.ps1
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
run_tests.sh
run_tests_parallel.py
sample_and_compress.py
smoke_nemo_relay_shared_metrics.py
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