Skip to content

ca-codex ships ~15 unreachable entry scripts and a broken /ca-init first-run pointer #259

Description

@SUaDtL

ca-codex ships ~15 unreachable entry scripts and a broken /ca-init first-run pointer

Codex multi-host support (ADR-0011). Code under review is on branch feat/codex-support-m0, not main. ca-codex ships BETA; these are blocking-severity for the affected code but nothing is merged to the default branch yet.

Severity: med | Confidence: 0.8 | Group: dead-vendored-entries

Where:

  • plugins/ca-codex/hooks/hooks.json:1-70
  • plugins/ca-codex/.codex-plugin/plugin.json:5
  • tools/sync-core.py:41-50

Evidence / impact:

  • (architecture-005) hooks.json registers exactly 5 entries (session-start, pre-bash, pre-write, post-write-edit, prune-transcript). The plugin ships no commands/, skills/, or agents/ (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.p
  • (architecture-005 impact) Dead code masquerading as live: two-thirds of the shipped Codex payload is unreachable, inflating the trust-review surface users must approve and blurring which files are enforcement-bearing. The /ca-init pointer is a broken first-run path for the shipped beta: an installing user cannot follow the m

Recommendation:

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:

  • ca-codex's shipped payload contains only files reachable on that host, or unreachable ones are clearly marked.
  • The manifest's documented first-run command exists in the shipped plugin.

Activity

  1. added
    sev:medTribunal/triage: medium severity
    codexRelated to or noticed on the OpenAI Codex plugin.
    on Jul 9, 2026
  2. SUaDtL commented on Jul 9, 2026

    @SUaDtL
    CollaboratorAuthor

    Partially addressed by #285: the broken /ca-init manifest 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.py documents; 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.

  3. SUaDtL commented on Jul 10, 2026

    @SUaDtL
    CollaboratorAuthor

    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-init skill, 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.

  4. SUaDtL commented on Jul 12, 2026

    @SUaDtL
    CollaboratorAuthor

    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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    codexRelated to or noticed on the OpenAI Codex plugin.sev:medTribunal/triage: medium severity

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions