README's first sentence names qwen as a harness; it is a deprecated alias for opencode with no doc at the expected path #448

Closed
opened 2026-07-01 21:58:51 +00:00 by coilyco-ops · 6 comments
Member

Why

Persona: oss-agent-power-user, angle jargon-audit. README, sentence one: "It drives an agent harness (claude, goose, codex, qwen) into an ephemeral container..." - the very first claim the repo makes. Per-harness docs follow a clear, discoverable naming convention: docs/agent-claude.md, docs/agent-goose.md, docs/agent-codex.md. Following that convention for the fourth named harness, docs/agent-qwen.md, does not exist.

The actual doc is docs/agent-opencode.md, whose first line is: "opencode is the local Ollama-backed harness behind the renamed qwen mode." The rename/deprecation is otherwise explained only in docs a reader would never reach from the README or the per-harness docs - internal migration-history pages: docs/agentsapi.md ("The qwen -> opencode untangle keeps --mode qwen a deprecated alias") and docs/agent-adapter-manifest.md ("roster key renamed from qwen by ward#401"). Both cite an internal issue number as the explanation.

Worse, the docs disagree with each other about qwen's current status:

  • docs/agentsapi.md / docs/agent-adapter-manifest.md: qwen is a deprecated alias, the real name is opencode.
  • docs/container-stop.md: lists qwen alongside claude/codex/goose as one of four live --driver values, no mention of deprecation.
  • docs/container.md: "qwen (level 0) - doctrine only" - implying not yet functional.
  • docs/agent-advisor.md: "codex/qwen refuse with a pointer to a supported mode" - implying qwen is not usable for that role at all.

An oss-agent-power-user specifically checking "does the claude/goose/codex/qwen promise hold, documented symmetrically" cannot get a straight answer: is qwen a current harness, a deprecated alias, a doctrine-only placeholder, or a refused mode? All four descriptions exist in different docs, none linked from the other, none linked from the README.

Deliverable

Either drop qwen from the README's opening sentence (naming opencode instead, since that is the real, current harness) or add docs/agent-qwen.md as a one-line pointer: "qwen is a deprecated alias for opencode; see agent-opencode.md." Reconcile the conflicting status claims across container-stop.md, container.md, agent-advisor.md, and agentsapi.md into one current-state statement.

Done condition

A reader following the README's four named harnesses to docs/agent-<name>.md finds a real page for each of the four, or is told plainly and immediately that one name is an alias and where the real doc lives. No two docs disagree about whether qwen currently works.


Severity: adoption-fatal · persona: oss-agent-power-user · angle: jargon-audit
Filed by Claude Code during a cold-read release pressure test (run 6).

## Why Persona: `oss-agent-power-user`, angle `jargon-audit`. README, sentence one: "It drives an agent harness (claude, goose, codex, qwen) into an ephemeral container..." - the very first claim the repo makes. Per-harness docs follow a clear, discoverable naming convention: `docs/agent-claude.md`, `docs/agent-goose.md`, `docs/agent-codex.md`. Following that convention for the fourth named harness, `docs/agent-qwen.md`, does not exist. The actual doc is `docs/agent-opencode.md`, whose first line is: "`opencode` is the local Ollama-backed harness behind the renamed `qwen` mode." The rename/deprecation is otherwise explained only in docs a reader would never reach from the README or the per-harness docs - internal migration-history pages: `docs/agentsapi.md` ("The **qwen -> opencode** untangle keeps `--mode qwen` a deprecated alias") and `docs/agent-adapter-manifest.md` ("roster key renamed from `qwen` by ward#401"). Both cite an internal issue number as the explanation. Worse, the docs disagree with each other about qwen's current status: - `docs/agentsapi.md` / `docs/agent-adapter-manifest.md`: qwen is a **deprecated alias**, the real name is opencode. - `docs/container-stop.md`: lists `qwen` alongside `claude`/`codex`/`goose` as one of four live `--driver` values, no mention of deprecation. - `docs/container.md`: "`qwen` (level 0) - doctrine only" - implying not yet functional. - `docs/agent-advisor.md`: "`codex`/`qwen` refuse with a pointer to a supported mode" - implying qwen is not usable for that role at all. An `oss-agent-power-user` specifically checking "does the claude/goose/codex/qwen promise hold, documented symmetrically" cannot get a straight answer: is qwen a current harness, a deprecated alias, a doctrine-only placeholder, or a refused mode? All four descriptions exist in different docs, none linked from the other, none linked from the README. ## Deliverable Either drop `qwen` from the README's opening sentence (naming `opencode` instead, since that is the real, current harness) or add `docs/agent-qwen.md` as a one-line pointer: "qwen is a deprecated alias for opencode; see agent-opencode.md." Reconcile the conflicting status claims across `container-stop.md`, `container.md`, `agent-advisor.md`, and `agentsapi.md` into one current-state statement. ## Done condition A reader following the README's four named harnesses to `docs/agent-<name>.md` finds a real page for each of the four, or is told plainly and immediately that one name is an alias and where the real doc lives. No two docs disagree about whether qwen currently works. --- **Severity: adoption-fatal** · persona: oss-agent-power-user · angle: jargon-audit Filed by Claude Code during a cold-read release pressure test (run 6).
Author
Member

+1 — independently hit via oss-agent-power-user/install-path, this run. The README names qwen as a harness, but the docs point at opencode as the actual local Ollama-backed path, so the naming surface is split.

+1 — independently hit via oss-agent-power-user/install-path, this run. The README names qwen as a harness, but the docs point at opencode as the actual local Ollama-backed path, so the naming surface is split.
coilyco-ops added this to the ward launch milestone 2026-07-01 23:29:36 +00:00
Owner

Verification close from the ward#492 burndown director: tonight's README rework (#444 epic, b0ce6d5 and the #461 landing) removed every qwen mention from the README - a grep of main finds zero instances, so the first-sentence naming this ticket reports no longer exists. The deeper alias cleanup (bash bootstrap still gating on WARD_MODE=qwen) is captured as ward#498. Closing via the issue API. Recorded by Claude Code (Fable) during the ward#492 burndown session.

Verification close from the ward#492 burndown director: tonight's README rework (#444 epic, b0ce6d5 and the #461 landing) removed every qwen mention from the README - a grep of main finds zero instances, so the first-sentence naming this ticket reports no longer exists. The deeper alias cleanup (bash bootstrap still gating on WARD_MODE=qwen) is captured as ward#498. Closing via the issue API. Recorded by Claude Code (Fable) during the ward#492 burndown session.
Author
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-ward-448 on host kais-macbook-pro-2.local is carrying this issue (reserved 2026-07-02T08:01:52Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-ward-448` on host `kais-macbook-pro-2.local` is carrying this issue (reserved 2026-07-02T08:01:52Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-ward-448 on host kais-macbook-pro-2.local is carrying this issue (reserved 2026-07-02T08:01:52Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-ward-448` on host `kais-macbook-pro-2.local` is carrying this issue (reserved 2026-07-02T08:01:52Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Author
Member

🔒 Reserved by ward agent --driver claude — container engineer-claude-ward-448 on host kais-macbook-pro-2.local is carrying this issue (reserved 2026-07-02T08:01:52Z). Concurrent ward agent runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); --force overrides.

— Claude (she/her), via ward agent

<!-- ward-agent-reservation --> 🔒 Reserved by `ward agent --driver claude` — container `engineer-claude-ward-448` on host `kais-macbook-pro-2.local` is carrying this issue (reserved 2026-07-02T08:01:52Z). Concurrent `ward agent` runs are blocked until it finishes or the reservation goes stale (2h0m0s TTL); `--force` overrides. <!-- ward-agent-signature --> — Claude (she/her), via `ward agent`
Owner

WARD-OUTCOME: done - added docs/agent-qwen.md alias pointer and settled every doc on 'opencode is the harness, qwen its deprecated alias'.

Most of the README half of this was already gone - the #444 rework had stripped qwen from the opening sentence before I started, so the live work was the part the earlier verification-close skipped: the four docs that still disagreed. The fix itself was low-drama once I pinned the ground truth in container_compute.go (opencode canonical, qwen a still-honoured alias with a deprecation warning, signing persona stays Qwen) - after that it was naming discipline: container-stop/container/advisor/preflight/director-startup-triage all said 'qwen' where they meant the current mode.

One thing fought back: the 4000-char markdown cap. container.md was already 7 chars under it, so my alias clause blew the budget three times before I gave up on cramming the alias note there and just named opencode cleanly (the alias is documented in container-stop.md and the new stub anyway - omission isn't a contradiction). Also caught two newer docs (agent-codex/agent-goose, landed on main after I branched) with the same 'just qwen' phrasing and folded them in.

Confident in the result: pre-commit green, no doc now calls qwen a live harness, and every qwen mention left is legit (WARD_QWEN_MODEL env var, the qwen3-coder model, the Qwen persona, rename history). Not in scope and left alone: the bash bootstrap still gating on WARD_MODE=qwen, already tracked as ward#498.

WARD-OUTCOME: done - added docs/agent-qwen.md alias pointer and settled every doc on 'opencode is the harness, qwen its deprecated alias'. Most of the README half of this was already gone - the #444 rework had stripped qwen from the opening sentence before I started, so the live work was the part the earlier verification-close skipped: the four docs that still disagreed. The fix itself was low-drama once I pinned the ground truth in container_compute.go (opencode canonical, qwen a still-honoured alias with a deprecation warning, signing persona stays Qwen) - after that it was naming discipline: container-stop/container/advisor/preflight/director-startup-triage all said 'qwen' where they meant the current mode. One thing fought back: the 4000-char markdown cap. container.md was already 7 chars under it, so my alias clause blew the budget three times before I gave up on cramming the alias note there and just named opencode cleanly (the alias is documented in container-stop.md and the new stub anyway - omission isn't a contradiction). Also caught two newer docs (agent-codex/agent-goose, landed on main after I branched) with the same 'just qwen' phrasing and folded them in. Confident in the result: pre-commit green, no doc now calls qwen a live harness, and every qwen mention left is legit (WARD_QWEN_MODEL env var, the qwen3-coder model, the Qwen persona, rename history). Not in scope and left alone: the bash bootstrap still gating on WARD_MODE=qwen, already tracked as ward#498.
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
coilyco-flight-deck/ward#448
No description provided.