Commit 367ab28
feat(bridge): replace legacy Codex integration
Changes:
- Keep three deliberately distinct names: bridge as the installed plugin identifier, skill namespace, marketplace registration, and MCP server key, matching the single-word names of the other plugins; bridge_CC-Codex as the human brand in descriptions, display metadata, and site navigation; and plugins/bridge_cc-codex as the source directory. Bump the bridge from 0.1.0 to 0.2.0.
- Keep the two host payloads named symmetrically as claude-skills/ and codex-skills/, matching the repository's other dual-host plugin, and update manifests, MCP metadata, package validation, build contracts, changelog, and operator documentation.
- Migrate cc_foundry, cc_oss, cc_develop, and cc_research from the legacy Codex rescue plugin to self-contained bridge implement, advise, and review calls with explicit unavailable and disabled behavior; bump each consumer minor version.
- Replace flat installed-plugin detection with the actual nested registry contract, update bridge telemetry, propagate shared Foundry policy, and add regressions rejecting legacy selectors and placeholder-only briefs.
- Install bridge_CC-Codex through Claude and Codex synchronization paths, and retire plugins the rig no longer uses through a PURGE_PLUGINS list whose uninstall failures are reported but never fatal; codex@openai-codex is the one conditional entry, purged only after a successful bridge installation in the same run.
- Bump Codex Rig to 0.9.0 for managed bridge synchronization, setup discovery across both skill layouts, package metadata, and executable sync scenarios.
- Update repository catalogs and documentation, group the four Claude Code Rig plugins under compact nested navigation, and expose bridge_CC-Codex as its own exact public label.
- Open a grouped navigation tab's children on hover or keyboard focus through a Material tabs-item override, because the site hides the primary sidebar on wide screens and the stock partial links only a section's first child, leaving the rest unreachable on desktop.
- Drop paint containment from the tab list so that submenu can actually appear. The theme sets `contain: content` on the list, which clips descendants to the list box regardless of the overflow rule beside it, so the submenu markup rendered and painted nowhere; only the paint component is dropped, keeping the theme's layout and style containment.
- Replace the runtime-specific accent palette with a vendor-neutral slate and cyan theme, renaming the stylesheet accordingly, because the site documents both Claude Code and Codex packages.
Adversarial review of the migration found eleven defects, all fixed here:
- Repoint four availability gates that still probed the retired integration while their dispatch had already moved to the bridge: the vitality mode searched for a file the purge step deletes, the investigate gate filtered a flat registry shape that the real nested file never matches, and the audit adversarial mode and research hypothesis pipeline both accepted the Codex CLI on PATH as proof the bridge was installed. Each one silently disabled its own bridge step.
- Ship the availability detector in every consumer plugin instead of reaching across plugins for it. The shared pre-pass resolved the script under the calling plugin's root, and only Foundry carried a copy, so every develop-side Codex pre-pass resolved to a missing path that the absent-status fallback swallowed. The four copies are byte-identical and manifested for drift enforcement.
- Rename the detector to check_bridge.py, derive its selector and cache path from an overridable marketplace constant, require a registry entry that carries an install path before reporting installed, and stop treating a leftover cache directory as proof of installation; cache directories outlive uninstall, so that path reported available for a plugin the host had already removed.
- Collapse the parallel detection family onto that single detector: eight skill gates and the resolve preflight previously parsed plugin-list text, which cannot distinguish an installed plugin from one the user disabled, and the preflight additionally reused a cache key whose meaning had changed under it.
- Restore the review-comment fallback dispatch, which had been replaced by an unconditional bridge call while the surrounding step still documented a fallback agent, and record what the resolve routing marker is actually consumed by.
- Accept the task from a file through bridge_call.py --task-file, mutually exclusive with --task, so a consumer forwarding text it did not author never has to embed that text in a command line it composes.
- Report a failed managed install in the exit status instead of ending every run with unconditional success.
- Extend the migration regression to the probes the retired integration was detected by, not only its selectors; that widening is what surfaced two of the gates above.
Impact:
- Claude Code and Codex consumers now use one bidirectional bridge contract for implementation, advice, and review without a legacy dispatch fallback.
- Every delegated consumer brief carries concrete task context, paths, permissions, verification, stop conditions, and expected output instead of leaking plan shorthand or private notation.
- Existing legacy installations are retired safely during the first successful post-push Claude sync; a failed bridge install cannot strand the user without the prior integration.
- Bridge availability now resolves identically for every consumer and agrees with what the installer considers installed, so a disabled, uninstalled, or never-installed bridge degrades each skill along its documented path instead of dispatching into a plugin the host cannot resolve.
- Documentation navigation remains compact while the human brand, machine identifier, and underscore source path are kept deliberately distinct.
Verification:
- Canonical Codex Rig gate passed lint, format, tests, and review; types were explicitly not applicable for the edited mixed-language plugin surfaces.
- Integrated affected suites across the bridge, Codex Rig, all four consumers, and the marketplace benchmark: 3978 passed with one pre-existing SciPy warning, including nine regressions added by the review pass.
- Bridge source validation passed at 0.2.0; strict manifest validation passed for both the bridge and the marketplace; shell syntax, doctests, and shared-copy propagation all clean.
- Pre-commit passed and was idempotent on a second run; it regenerated four consumer blueprint manifests and the Codex Rig package manifest, which is what keeps each recorded command hash matching its source.
- The navigation submenu was verified in headless Chrome at 1400x700 against two builds differing only in the containment rule: without it the submenu is absent from the render, with it every child paints below its tab. A second run drove the shipped focus path with no style overrides and confirmed that focusing a section tab opens its submenu and places the children in the keyboard sequence; a third confirmed the panel renders legibly in the dark scheme.
- The sync script itself was not executed; its install, purge, and setup-dispatch paths are covered by extracted-block tests and shell syntax checking only.
Residual limits:
- The commit must be pushed before the sync script can install this revision; repository policy makes the remote the installation source.
- Provider-backed Claude and Codex smoke calls were not rerun because provider credits and paid execution are environment-owned; the deterministic runtime protocol suite remains green.
- Native Windows execution was unavailable; cross-platform Windows semantics are covered by deterministic tests but not a native-host run.
- Two files in this commit were written by a concurrent session rather than by this work: the oss patch version bump and the review agent-prompts note directing the challenger to skip its own Codex pre-flight. They were included at the author's explicit direction.
---
Co-authored-by: claude[bot] <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: Codex <codex@openai.com>1 parent f157e1f commit 367ab28
103 files changed
Lines changed: 2178 additions & 1380 deletions
File tree
- .claude-plugin
- .claude
- .codex
- docs
- stylesheets
- overrides/partials
- plugins
- bridge_cc-codex
- .claude-plugin
- .codex-plugin
- bin
- claude-skills
- advise
- implement
- review
- docs
- tests
- cc_develop
- .claude-plugin
- bin
- rules
- skills
- review
- cc_foundry
- .claude-plugin
- agents
- bin
- hooks
- rules
- skills
- audit
- modes
- templates
- calibrate/templates
- investigate
- setup
- tests
- cc_oss
- .claude-plugin
- bin
- rules
- skills
- analyse
- modes
- templates
- release/modes
- resolve
- modes
- review
- templates
- tests
- cc_research
- .claude-plugin
- bin
- rules
- skills
- judge
- run
- modes
- codex-rig
- .codex-plugin
- scripts
- tests
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
34 | | - | |
| 34 | + | |
35 | 35 | | |
36 | 36 | | |
37 | 37 | | |
| |||
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | | - | |
| 3 | + | |
4 | 4 | | |
5 | | - | |
| 5 | + | |
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
10 | | - | |
| 11 | + | |
11 | 12 | | |
12 | 13 | | |
13 | 14 | | |
| |||
36 | 37 | | |
37 | 38 | | |
38 | 39 | | |
| 40 | + | |
39 | 41 | | |
40 | 42 | | |
41 | 43 | | |
42 | | - | |
| 44 | + | |
43 | 45 | | |
44 | 46 | | |
45 | 47 | | |
| |||
69 | 71 | | |
70 | 72 | | |
71 | 73 | | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
72 | 82 | | |
73 | 83 | | |
74 | 84 | | |
| |||
81 | 91 | | |
82 | 92 | | |
83 | 93 | | |
84 | | - | |
| 94 | + | |
85 | 95 | | |
86 | 96 | | |
87 | 97 | | |
88 | 98 | | |
89 | 99 | | |
90 | 100 | | |
91 | 101 | | |
| 102 | + | |
| 103 | + | |
92 | 104 | | |
93 | 105 | | |
94 | 106 | | |
| |||
198 | 210 | | |
199 | 211 | | |
200 | 212 | | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
201 | 226 | | |
202 | 227 | | |
203 | 228 | | |
| |||
301 | 326 | | |
302 | 327 | | |
303 | 328 | | |
304 | | - | |
| 329 | + | |
305 | 330 | | |
306 | 331 | | |
307 | 332 | | |
308 | 333 | | |
309 | 334 | | |
310 | 335 | | |
311 | | - | |
| 336 | + | |
312 | 337 | | |
313 | | - | |
| 338 | + | |
314 | 339 | | |
315 | 340 | | |
316 | 341 | | |
| |||
322 | 347 | | |
323 | 348 | | |
324 | 349 | | |
| 350 | + | |
325 | 351 | | |
326 | 352 | | |
327 | 353 | | |
| |||
360 | 386 | | |
361 | 387 | | |
362 | 388 | | |
| 389 | + | |
| 390 | + | |
363 | 391 | | |
364 | 392 | | |
0 commit comments