Repository navigation
ca-codex ships ~15 unreachable entry scripts and a broken /ca-init first-run pointer #259
Description
Activity
- addedsev:medTribunal/triage: medium severityTribunal/triage: medium severitycodexRelated to or noticed on the OpenAI Codex plugin.Related to or noticed on the OpenAI Codex plugin.
on Jul 9, 2026 Partially addressed by #285: the broken
/ca-initmanifest pointer is fixed (accurate activation description).Re-scoping the remaining two concerns:
- Dead vendored entries (~15 unregistered scripts): re-framed as accepted. Full-core vendoring is the self-contained-payload contract
sync-core.pydocuments; the unregistered entries are inert on Codex (never in hooks.json). Selective per-plugin vendoring would need transitive-dependency analysis and risks breaking the registered entries' shared-lib imports — not worth the risk for inert code. Leaving as-is unless you want the surface reduction. - Codex-only init UX: genuine gap, surfaced as a separate decision ([Decision] How does a Codex-only user initialize the shared .codearbiter/ store? #287).
Keeping this open for your call on whether the reframe is acceptable (then close) or you want the vendoring reduction.
- Dead vendored entries (~15 unregistered scripts): re-framed as accepted. Full-core vendoring is the self-contained-payload contract
- added a commit that references this issue
on Jul 9, 2026 Second half addressed in PR #295 (M3): the manifest description and doctor pointer no longer reference the Claude-side /ca:init — first-run is the standalone
ca-initskill, and every runtime-emitted pointer is host-native via Host.cmd_ref. Status of the two original concerns: (1) broken first-run pointer — FIXED (#285 fixed the description; #295 ships the actual ca-init skill and host-native doctor/scaffold pointers); (2) inert vendored entries — the earlier reframe stands (full-core vendoring is the sync-core self-contained-payload contract; unregistered entries are inert), now also LEDGERED explicitly in docs/parity.md. Your call whether the reframe closes this or you still want the surface reduction.- added a commit that references this issue
on Jul 12, 2026 Closed by current shipped state. The broken first-run path is resolved: plugins/ca-codex/skills/ca-init/SKILL.md exists, the manifest directs standalone users to ca-init, and runtime references are host-native. The remaining vendored-entry concern is an accepted, documented self-contained-payload choice: tools/sync-core.py requires both plugins to vendor the full canonical core, while host-impossible surfaces are inert and explicitly ledgered in docs/parity.md. Fresh checks: check-plugin-refs.py ca-codex PASS; sync-core.py --check PASS (42 x 2 byte-identical); build-surface.py --check --host codex PASS. No residual acceptance gap remains.
ca-codex ships ~15 unreachable entry scripts and a broken /ca-init first-run pointer
Severity: med | Confidence: 0.8 | Group: dead-vendored-entries
Where:
plugins/ca-codex/hooks/hooks.json:1-70plugins/ca-codex/.codex-plugin/plugin.json:5tools/sync-core.py:41-50Evidence / impact:
ls plugins/ca-codex/= hooks + ORCHESTRATOR.md + manifest). Yet sync-core.py vendors ALL 42 core .py files, so statusline.py, wire-statusline.py, pre-read.py, pre-edit.py, git-enforce.py, doctor.py, preview.py, metrics.py, taskwrite.pRecommendation:
Capability-gate or trim the vendored payload so ca-codex does not ship ~15 non-registered enforcement scripts as trust-surface bloat, and fix the manifest first-run pointer (it names a /ca-init that ca-codex does not ship).
Acceptance criteria: