abhigyanpatwari/GitNexus · error · SandboxError

ce_* arm has no staged Compound Engineering plugin

Error message

ce_* arm has no staged Compound Engineering plugin

What it means

Raised by ce_plugin_mounts_for_arm (runtime_mounts.py:122-126) when a Compound-Engineering arm is selected (one of ce_workflow, ce_workflow_direct, ce_review) but no CePluginSnapshot was staged — i.e. snapshot is None. SandboxError subclasses RuntimeError and signals that containment could not be established without weakening the contract.

Source

Thrown at eval/workflow_bench/runtime_mounts.py:125

            "name": "compound-engineering",
            "version": self.version,
            "manifest_schema_version": CE_PLUGIN_MANIFEST_SCHEMA_VERSION,
            "manifest_digest": self.manifest_digest,
            "file_count": self.file_count,
            "total_bytes": self.total_bytes,
        }


def ce_plugin_mounts_for_arm(
    arm: str,
    snapshot: CePluginSnapshot | None,
) -> tuple[ReadOnlyMount, ...]:
    """Expose the staged comparator only to CE arms."""

    if arm not in CE_ARMS:
        return ()
    if snapshot is None:
        raise SandboxError("ce_* arm has no staged Compound Engineering plugin")
    return (snapshot.mount,)


def ce_plugin_dir_for_arm(arm: str, snapshot: CePluginSnapshot | None) -> str | None:
    """Return Claude's fixed in-sandbox plugin path only for CE arms."""

    ce_plugin_mounts_for_arm(arm, snapshot)
    return SANDBOX_CE_PLUGIN if arm in CE_ARMS else None


def _validated_runtime_root(path: Path, *, label: str) -> Path:
    """Return one real directory without accepting any symlink hop."""

    root = path.expanduser().absolute()
    try:
        mode = root.lstat().st_mode
        resolved = root.resolve(strict=True)
    except OSError as exc:

View on GitHub (pinned to d540b00184)

Solutions

  1. Supply both --ce-plugin-dir and --ce-plugin-version when any ce_* arm is selected.
  2. If you did not intend CE comparison, remove the ce_* arm from --arms.
  3. Confirm the plugin dir passes validate_ce_plugin_inputs (real directory, valid manifest).

Example fix

# before: wfbench --arms ce_workflow ...
# after:  wfbench --arms ce_workflow --ce-plugin-dir /path/to/plugin --ce-plugin-version 1.2.3 ...
Defensive patterns

Strategy: validation

Validate before calling

from workflow_bench.runtime_mounts import CE_ARMS
if any(a in CE_ARMS for a in args.arms):
    if not args.ce_plugin_dir or not args.ce_plugin_version:
        raise SystemExit("ce_* arms require --ce-plugin-dir and --ce-plugin-version")

Type guard

from workflow_bench.runtime_mounts import CE_ARMS
def ce_arms_present(arms: list[str]) -> bool:
    return any(a in CE_ARMS for a in arms)

Prevention

When it happens

Trigger: The runner is invoked with a ce_* arm but --ce-plugin-dir and/or --ce-plugin-version were not supplied, so validate_ce_plugin_inputs returned None and staged_ce_plugin_snapshot yielded None; then ce_plugin_mounts_for_arm is called for that arm.

Common situations: Adding a CE arm to --arms without the plugin args; the CE plugin dir failed validation upstream; running CE comparison on a machine without the plugin checkout.

Related errors


AI-assisted analysis of abhigyanpatwari/GitNexus@d540b00184 (2026-08-12). Data as JSON: /api/errors/5971a8121b0ccf76. Report an issue: GitHub.