Repository navigation
Conversation
Co-authored-by: Cursor <cursoragent@cursor.com>
|
📁 PR Artifacts Notice This PR contains a |
Python API breakage checks — ✅ PASSEDResult: ✅ PASSED |
Endpoint auditContract: pinned release artifact
Actionable client-only calls (0)none Actionable server-only operations (18)
Documented non-divergences (13)Client calls intentionally absent from the filtered contract (11)
Reason: Operational Agent Server endpoints intentionally excluded from the filtered public release artifact.
Reason: Client-ahead API stacked on the pending Agent Server meta-profiles implementation.
Reason: Client-ahead API stacked on the pending Agent Server pre-flight LLM validation endpoint. Server operations covered by an exposed browser URL (2)
Reason: RemoteWorkspace.startWorkspaceSession exposes these authenticated URLs for browser iframe and file requests; they are not HttpClient method calls. |
REST API breakage checks (OpenAPI) — ✅ PASSEDResult: ✅ PASSED |
AGENT:
Implemented through the multi-agent pipeline (Claude Sonnet 5.5 medium design/review/triage, OpenAI GPT-6 Luna max implementation, OpenAI GPT-6.1 Sol high audit). On this host, with dummy sentinel files only:
make validaterc 0 in 15m59s (dummy auth/secrets/config/persistence checksums unchanged, sentinel absent from the log,git status --porcelainempty); the samemake validatefrom a fresh clone with no.venvrc 0 in 16m02s (under 31 min, porcelain empty, dummy checksums unchanged).sdk_validatewithCLAUDE_CODE_OAUTH_TOKENandCLAUDE_AUTH_CODEunset: 2550 passed, 13 deselected.Why
Builders run
make validateinside an agent-server shell. That shell exportsOPENHANDS_CODEX_AUTH_SOURCE,OPENHANDS_AGENT_SERVER_CONFIG_PATH,OH_PERSISTENCE_DIR,OH_SECRETS_DIR,CLOUD_AGENT_INJECTED_SECRET_NAMES, and sometimesOH_INTERNAL_SERVER_URL. Tests then read the host Codex auth file and write fixture records into the real secrets store.make validatepreviously unset only the two Claude OAuth variables, and a directuv run pytestunset none of them.Summary
make validateunsets those agent-server variables together withCLAUDE_CODE_OAUTH_TOKENandCLAUDE_AUTH_CODE, viaVALIDATE_UNSET_ENV. The suites, pyright, pre-commit, diff checks, and the Actions job namevalidateare unchanged.tests/conftest.pystrips the six agent-server variables inpytest_configure, before collection and before xdist workers start, so a direct pytest run does not inherit them. Tests that need a value still set it withmonkeypatch.tests/sdk/test_env_isolation.pychecks the strip helper, a subprocess pytest that inherits dummy values, and themake -n validateunset list.Issue Number
Closes #75
How to Test
Export the six variables at temp dummy files (codex
auth.json, secretssecrets.json, a persistence dir, a config file,OH_INTERNAL_SERVER_URL=http://127.0.0.1:9) plus fakeCLAUDE_CODE_OAUTH_TOKENandCLAUDE_AUTH_CODE. Then:make validateOn this host that was rc 0 in 15m59s. sha256 of the dummy files matched before and after, the sentinel string was absent from the log, and porcelain was empty. A fresh clone of this branch with no
.venv, same dummy env, finished in 16m02s with porcelain empty.Direct pytest of
tests/agent_serverandtests/sdkin that dummy env left the dummy files unchanged.sdk_validatewith the two OAuth variables unset passed (2550 passed, 13 deselected).Type
Notes
~/.openhandsas a whole is not a stable snapshot on this box while the agent server is running: the diffs were settings fields the live server rewrites and extension/skill git caches. Hostsecrets.jsonand profile directories were not among the changed paths. Dummy files were never pointed at/home/box/.codexor the runtime state dir.