Repository navigation
Description
Problem
The opencode-acp agent entry added to home/openclaw/default.nix (PR #2237, #2229 mechanism 1) makes the whole NixOS configuration fail to evaluate, which blocks every nixos-rebuild switch on the laptop:
error: The option `home-manager.users.user.programs.openclaw.config.agents.entries.opencode-acp.runtime.acp' does not exist.
Did you mean `home-manager.users.user.programs.openclaw.config.agents.entries.opencode-acp.runtime.type'?
Root cause (verified with a minimal reproduction)
The generated schema in nix-openclaw (nix/generated/openclaw-config-options.nix, locked rev 4e5f444, identical on upstream main) types an agent entry's runtime as:
t.nullOr (t.oneOf [
(t.submodule { options = { type = enum [ "embedded" ]; }; })
(t.submodule { options = { acp = ...; type = enum [ "acp" ]; }; })
])Under the pinned nixpkgs, types.oneOf is foldl' either ..., and a submodule type's check accepts any attribute set — so every plain-attrset definition is claimed by the FIRST (embedded) branch, which then rejects the acp attribute as an unknown option. The acp branch is unreachable:
{ type = "acp"; acp = { ... }; }→ "The option `x.acp' does not exist"{ type = "acp"; }alone → "A definition for optionx.type' is not of typevalue "embedded" (singular enum)'"
Both reproduced against the pinned nixpkgs (6510408) with a 15-line evalModules test, independent of this repo's config.
Impact
- The laptop has been unable to switch since the entry merged; it is still on the 2026-10-28 generation.
- This blocked the config: park qwen models (cline-pass/commandcode) + park codedb in mcpx — stacked on #2198 #2220/feat(openclaw): opencode-route provider proxy — OpenCode server front for OpenClaw (#2229) #2250 deployment chain (2026-10-29) at the switch step.
Fix plan
- Remove the
opencode-acpentry fromhome/openclaw/default.nix(leaving a comment pointing here) so the configuration evaluates and the deployment chain can proceed. The ACP capability itself (acp.enabled, allowedAgents, acpx plugin, per-agent wrappers from openclaw: enable claude, codex, agy as ACP agents alongside opencode #1728) is unaffected — OpenClaw can still spawn OpenCode over ACP from sessions. - File the generator bug upstream in openclaw/nix-openclaw with the minimal reproduction (a discriminable encoding would be a single submodule with
type = enum [ "embedded" "acp" ]plus an optionalacpattrset). - Restore the entry (tracked by Follow-up (#2229): ACP-runtime agent entry for OpenClaw→OpenCode dispatch (opencode-acp) #2256) once the schema can express it — either an upstream generator fix + input bump, or a local workaround proven by evaluation.
Acceptance: the entry is restored AND nixos-rebuild switch succeeds with it present.
Acceptance criteria
- A laptop
nixos-rebuild switchevaluates with theopencode-acpagent entry present (or the entry is removed/reworked with the reason recorded here) - The workaround or fix is verified against the pinned nixpkgs with the same minimal evalModules reproduction from the body, which must now reach the acp branch or fail with a comprehensible error
- OpenClaw ACP dispatch (OpenClaw cannot reach the OpenCode server: build all three dispatch mechanisms (ACP-runtime agent, headless sessions_spawn, opencode-route provider front) #2229 mechanism 1) either works through the fixed entry or is explicitly deferred with a follow-up issue
Activity
fix(openclaw): remove opencode-acp entry that cannot evaluate
dezren39 commentedon Oct 30, 2026
Upstream generator bug filed: openclaw/nix-openclaw#176 (with the minimal reproduction and a suggested discriminable encoding). Fix PR for the immediate unblock: #2512 — evaluation of the full NixOS toplevel verified succeeding with the entry removed.
dezren39 commentedon Oct 30, 2026
Intake review
Related: #2256 (the ACP-runtime agent entry follow-up), #2237 (PR that added the entry), #2229 (OpenClaw dispatch mechanisms)
Notes: Filed 2026-10-30T02:03Z with a verified minimal reproduction: under the pinned nixpkgs,
types.oneOffolds witheitherand a submodulecheckaccepts any attrset, so the first (embedded) branch claims every definition and the acp branch of the nix-openclaw generated schema is unreachable. The defect is in the generated schema / nixpkgs type interaction, not in this repo's entry definition. Impact per the body: the laptop's NixOS configuration fails to evaluate, blocking everynixos-rebuild switch. This pass appends acceptance criteria and applies kind/priority/effort; no source label (filer session not recorded on the issue).Risks: While this is open, any laptop config change is blocked or must route around the entry; a silent removal of the entry would also silently drop the #2229 ACP dispatch work.
Suggested approach: Decide the layer: (a) patch the generated schema consumption in this repo (e.g. restructure the entry so the embedded branch cannot claim it, or override the option type), or (b) carry the entry disabled with a pointer here until nix-openclaw regenerates its schema. Verify with the body's 15-line evalModules repro before touching the laptop config.
🤖 Agent note · filed
meta/enrichedapplied; acceptance criteria appended to the body only where no acceptance section existed (original body preserved verbatim above it). Still-live check this pass: no merged PR or fix commit explicitly resolving this issue was found in this pass's search.dezren39 commentedon Oct 30, 2026
Update (2026-10-29): Drew chose the embedded runtime as the standing shape for OpenClaw's agents, so the opencode-acp entry will NOT be restored even when the schema can express it — #2256 is closed as not planned. This issue stays as the record of the evaluation blocker (fixed forward by #2512) and the upstream generator report (openclaw/nix-openclaw#176).
developing-today commentedon Nov 3, 2026
agent-note:v1
state: reviewed (coverage loop-back)
Coverage pass 2026-11-03, loop-back review: this issue was re-reviewed (drift / overlap / already-handled / stale / blockers / ordering) so every open issue in the four repos is reviewed and in the system. Verdict: still live; in the system as task 7332 (triage, queued, priority 50) in repo-health-code-pilot. Labels audited and synced. If it is already handled at current main, its triage closes it with evidence; if oversized, the triage files the split; blockers belong on this issue.
Found via: coverage loop-back 2026-11-03
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: picked_up
Found via: OpenChamber scheduled lane
Task: 7332 (repo-health-code-pilot)
Worker: repo-worker-code
Lane: 8ac61616-3815-4e7b-b33d-840a3829154a
Session: ses_e5e5c374d17ffezowNmwt2RE2W
Next: Revalidate #2509 and linked #2512 against current GitHub state; close with evidence if already resolved.
dezren39 commentedon Nov 3, 2026
agent-note:v1
state: triaged (task 7332)
opencode-acpentry and documents the generated-schema failure. The PR records that the full NixOS toplevel drvPath evaluation succeeds with the entry removed and fails without the change.nixos-rebuildevaluation blocker in this repo is fixed by fix(openclaw): remove opencode-acp entry that cannot evaluate (#2509) #2512. The underlying nix-openclaw generator defect is still open at Generated schema: agent runtime oneOf of submodules makes the acp branch unreachable openclaw/nix-openclaw#176; the ACP-runtime entry is intentionally not restored per the 2026-10-29 decision, with any future dispatch work tracked by Follow-up (#2229): ACP-runtime agent entry for OpenClaw→OpenCode dispatch (opencode-acp) #2256. This is not an upstream schema fix.