fix(iterate): ship real vendor manifest dirs for Codex install - #607
onatozmenn wants to merge 2 commits into
Conversation
|
👋 This PR needs a couple of things fixed before OpenHands can review it:
Push an update once this is addressed and this check re-runs automatically. This is an automated check - no AI was used to generate this comment. |
5 similar comments
|
👋 This PR needs a couple of things fixed before OpenHands can review it:
Push an update once this is addressed and this check re-runs automatically. This is an automated check - no AI was used to generate this comment. |
|
👋 This PR needs a couple of things fixed before OpenHands can review it:
Push an update once this is addressed and this check re-runs automatically. This is an automated check - no AI was used to generate this comment. |
|
👋 This PR needs a couple of things fixed before OpenHands can review it:
Push an update once this is addressed and this check re-runs automatically. This is an automated check - no AI was used to generate this comment. |
|
👋 This PR needs a couple of things fixed before OpenHands can review it:
Push an update once this is addressed and this check re-runs automatically. This is an automated check - no AI was used to generate this comment. |
|
👋 This PR needs a couple of things fixed before OpenHands can review it:
Push an update once this is addressed and this check re-runs automatically. This is an automated check - no AI was used to generate this comment. |
There was a problem hiding this comment.
🟡 Changes recommended
Existing plugin-loading tests still require vendor paths to be symlinks, so the full test suite will fail for iterate.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
This PR fixes Codex installation by replacing iterate vendor manifest symlinks with real mirrored directories and updating synchronization checks. It also includes an unrelated GitHub repository monitor profile-resolution change.
Changes:
- Add real
.codex-pluginand.claude-pluginmanifest copies. - Validate and refresh real vendor manifests in
sync_extensions.py. - Add manifest/install tests and profile-resolution tests.
File summaries
| File | Description |
|---|---|
scripts/sync_extensions.py |
Supports symlinked or mirrored vendor manifests. |
skills/iterate/.codex-plugin/plugin.json |
Adds Codex manifest copy. |
skills/iterate/.claude-plugin/plugin.json |
Adds Claude manifest copy. |
tests/test_sync_extensions.py |
Tests vendor manifest synchronization and lossy installs. |
skills/github-repo-monitor/scripts/main.py |
Adds LLM profile resolution. |
tests/test_github_repo_monitor.py |
Tests profile resolution behavior. |
Review details
- Files reviewed: 8/8 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| for vendor in (".codex-plugin", ".claude-plugin"): | ||
| path = iterate / vendor | ||
| assert not path.is_symlink(), f"{vendor} must not be a symlink" | ||
| assert path.is_dir(), f"{vendor} must be a real directory" | ||
| assert (path / "plugin.json").read_bytes() == canon |
| profile = os.environ.get("AUTOMATION_MODEL") | ||
| if profile: | ||
| profile_llm = _fetch_profile_llm(agent_url, api_key, profile) | ||
| if profile_llm is not None: | ||
| llm = profile_llm | ||
| llm["usage_id"] = f"profile:{profile}" |
Co-authored-by: openhands <openhands@all-hands.dev>
a44d970 to
c1ee8ba
Compare
Co-authored-by: openhands <openhands@all-hands.dev>
|
Follow-up on the review: the branch has been cleaned to just this fix, and the valid point about plugin-loading tests is addressed — |
HUMAN:
I ran the targeted VendorManifests tests and verified the lossy-copy case fails on base but passes with the fix, with no new failures or ruff issues beyond the existing ones.
Why
skills/iterate/.codex-pluginis a symlink to.plugin/, and Codexplugin adddrops symlinked directories when materializing its install cache. The installed tree then has no.codex-plugin/plugin.json, so Codex fails with "missing or invalid plugin.json" and/iteratenever registers (#257).Summary
skills/iterate/.codex-pluginand.claude-pluginsymlinks with real directories containing byte-identicalplugin.jsoncopies (mode120000→100644).sync_symlinksnow accepts a real vendor dir whoseplugin.jsonmirrors the canonical one, flags stale copies, and refreshes them in fix mode; missing vendors still get symlinks as before.TestVendorManifeststests, including a lossy-install-copy simulation of the reported failure.Issue Number
Fixes #257
How to Test
python -m pytest tests/test_sync_extensions.py -q -k VendorManifests→ 4 passed, 2 skipped (symlink-creation tests skip on Windows without privileges; they run on Linux CI).test_sync_extensions.py: the 7 remaining failures are identical on base (Windows-env frontmatter/catalog issues), no new failures.ruff checkon touched files: no new findings (2 pre-existing F541s on base).Type
Bug fix