Skip to content

fix(openhands): protect native shard discovery before macOS CI retirement - #959

Merged
seathatflowsinourveins merged 1 commit into
mainfrom
codex/runtime-workers-validate-shards-push-gate-20261010
Oct 10, 2026
Merged

seathatflowsinourveins merged 1 commit into
mainfrom
codex/runtime-workers-validate-shards-push-gate-20261010

Conversation

@seathatflowsinourveins

Copy link
Copy Markdown
Collaborator

Scope

Recognise python3 scripts/validate_shards.py run as repository-root test*.py discovery in the OpenHands resolver's trusted push gate. This is the prerequisite for #957: replaying its current head showed 258 of 321 tests/*.py files losing protection when the macOS workflow was retired; the fixed gate protects all 321 and gives a new module ci_discovered.

  • Base commit: a30c2188e4423f05a7448e5f7a3bcfd858e0f5b8.
  • Lane: lane:foundation.
  • Owned paths touched: blueprints/runtime-workers/openhands/resolver/push_gate.py, its dated evidence/shard-discovery-protection-20261010.json, tests/test_runtime_worker_openhands_push_gate.py, docs/decisions/2026-10-10-openhands-shard-discovery-protection.md, and manifests/evidence.json.

The repository-tree regression keeps the real shard suite step, removes other workflows and injects a new test module. It fails before the fix on main and on exact #957 source/tree 7df900f7dd6f24b20e3d9e54cfd21aba318d75e8, then passes. The existing protected expectation becomes the stronger ci_discovered rule. A MemoryTree regression retains Git-free derivation and rejects aggregate, runner and run-again as discovery calls.

Correctly identifying tests/test_catalogs.py as a discovered test also removes its eight locations from advisory gate-script import tracing. The historical monitoring receipt stays intact; the test asserts this exact correction, every remaining script count and every recorded shape.

SOTA sources

Evidence-class table

Claim Evidence class Command / receipt
New module has no protection before the fix and ci_discovered afterward when only the real shard suite step is present synthetic Repository-tree fixture regression; dated receipt fail_before
#957's 258 unprotected files become 321/321 protected local_integration Exact source/tree replay; dated receipt repository_tree_measurements
MemoryTree discovery launches no process and rejects non-run commands synthetic Dated receipt git_free_regression
Three required modules pass all 389 tests; publication integrity passes local_integration Commands below; Python 3.13.16
Mapping follows the shipped wrapper and pinned CPython mechanism source_review Pinned primary sources above

Receipt: shard-discovery-protection-20261010.json. The source pin is CPython 3.12.3; execution used the installed Python 3.13.16 client. The existing importable-package discovery boundary still applies.

Local commands run

python3 -m unittest tests.test_runtime_worker_openhands_push_gate.RepositoryWorkflowTests.test_validate_shards_alone_protects_a_new_test_module -v
Before: rc 1, one assertion failure (None, None); after: rc 0.
Exact #957 gate/tree replay: one assertion failure, zero errors before the fix.

python3 -m unittest tests.test_runtime_worker_openhands_push_gate tests.test_runtime_worker_openhands tests.test_runtime_worker_openhands_resolver -v
rc 0; 389 tests, zero failures/errors/skips, 71.812s.

python3 scripts/evidence_manifest.py --check
rc 0; 11,333 files. All four changed/new evidence files registered through scripts.host_receipts.register_file.

python3 scripts/validate.py
rc 0; 70 components, 11,333 hashed files, 4 profiles, 239 receipts.

gitleaks git . --log-opts=a30c2188e4423f05a7448e5f7a3bcfd858e0f5b8..HEAD --redact --no-banner
rc 0; one PR commit scanned, no leaks found; installed Gitleaks 8.30.1.

Decision record

2026-10-10-openhands-shard-discovery-protection.md records the sources, measured comparison, monitoring correction and the wrapper changes that would require revisiting this mapping.

Host evidence

Not applicable: the added receipt records local gate integration and synthetic regression fixtures.

Checklist

  • New/changed GitHub Actions are pinned to a full commit SHA with a version comment (no floating tags).
  • New/changed workflows declare top-level permissions: {} and grant each job only what it needs.
  • No secrets are printed, logged or committed; no new required secret was added without a documented owner.
  • No new paid hosting, subscription or billing surface was introduced.
  • Peer-owned untracked files and worktrees were preserved.

CC Claude read at this head gates landing. #957 rebases onto this prerequisite after it lands.

@seathatflowsinourveins seathatflowsinourveins added the lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers label Oct 10, 2026
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 10, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-10T06:17:57.243002Z 761d8ed PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@seathatflowsinourveins
seathatflowsinourveins merged commit 0a053e1 into main Oct 10, 2026
36 checks passed
@seathatflowsinourveins
seathatflowsinourveins deleted the codex/runtime-workers-validate-shards-push-gate-20261010 branch October 10, 2026 07:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

lane:foundation Foundation lane: Claude/Codex setup, hosts, memory, RAG, research, workers

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant