feat(dash): surface waiting lane host-neutral as agent - #3006
Merged
huangruiteng merged 1 commit intoAug 9, 2026
Conversation
The panel displayed 'Waiting on: codex' for goals whose latest run is classified as codex-ready, which reads as a product reference (Codex CLI) even when the lane is actionable by any agent host (Codex, Pi, etc.). Map the codex waiting classification to the host-neutral 'agent' word at the projection layer; both words classify identically in the status-bucket logic, so no bucket behavior changes. Smoke: session-dash-panel-smoke asserts a codex-classified fixture goal projects waiting_on == 'agent'; verified live against the loopx registry.
huangruiteng
approved these changes
Aug 9, 2026
huangruiteng
left a comment
Owner
There was a problem hiding this comment.
Verdict
APPROVE - no blockers. Reviewed exact head 756247f4fa72e28696889fc7cf11d3b161da9044; session-dash smoke passes locally and all checks pass.
动机
session dash 对 codex-ready 分类显示 Waiting on: codex,容易被误读为 Codex CLI 产品引用,但该 lane 实际可由任意 agent host(Codex、Pi 等)执行。PR 在 projection 层把 codex 映射为 host-neutral 的 agent。
改动思路
只在展示投影层做同义词映射,status_bucket 分类逻辑不变,因此不会改变状态分组行为。
具体改动
loopx/presentation/projections/session_dash.py:_goal_entry中waiting_on == "codex"时改为"agent",并加注释说明同义词。examples/session-dash-panel-smoke.py:新增断言,codex-main-controlsession 的 goal 投影waiting_on == "agent"且不等于"codex"。
关键代码讲解
_goal_entry的waiting_onfallback:先取 status item,再取 run goal,最后默认"auto";映射发生在最终显示前,确保status_bucket仍按原始分类工作。- 回归 smoke 直接覆盖原
codex分类的 goal,防止未来再次暴露内部分类名。
对主干的风险
无阻塞项。改动只影响展示字段,bucket 行为不变,smoke 和 CI 均通过。该 PR 目标是 frontend prototype 分支,不涉及 main。
我的整体评价
改动小、意图清晰、测试覆盖到位,可以合并到特性分支。
English Verdict
Approve. Maps the codex waiting classification to host-neutral agent at the dash projection layer without changing bucket behavior; smoke and CI pass at 756247f4fa72e28696889fc7cf11d3b161da9044.
huangruiteng
merged commit Aug 9, 2026
2b1e048
into
huangruiteng:frontend-control-plane-im-prototype-rfc
5 checks passed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The session dash panel displayed Waiting on: codex for goals whose latest run classification is codex-ready (
CODEX_READY_CLASSIFICATIONS). That reads as a product reference (Codex CLI) even though the lane is actionable by any agent host — Pi, Codex, etc.codexis LoopX's internal classification for an agent-actionable lane (session_runtime_status_waiting_ontreatsagent/codexas synonyms).Change: map the
codexwaiting classification to the host-neutral agent word at the session-dash projection layer. Both words classify identically in the status-bucket logic, so bucket behavior is unchanged.loopx/presentation/projections/session_dash.py:waiting_on == "codex"→"agent"with a comment explaining the synonym.examples/session-dash-panel-smoke.py: asserts a codex-classified fixture goal projectswaiting_on == "agent".Validation: session-dash-panel-smoke OK (14 tests), static-site-presentation-smoke OK, cli-command-module-contract OK, ruff/py_compile/diff-check clean. Verified live:
loopx-goalnow projectswaiting_on=agent(wascodex),status_bucketunchanged.