[Task]: shorten the todo list default summary behind a typed full-payload escape hatch (GH-C88)
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
调研方向
Read the todo list read projection in the CLI command layer and the todo_list spec in loopx/control_plane/testing/cli_output_budget.py. Run python3 examples/control_plane/cli-output-budget-regression-smoke.py to understand the existing budget and differential checks. The design is still open on the escape-hatch flag, summary size, and ceilings; done means the default is bounded, the escape hatch preserves the full payload shape, and the smoke and loopx check --scan-path docs/status-data-contract.md pass.
由索引模型根据 Issue 内容生成。
描述
Task ID or area
GH-C88 (Lane B, S12 · "reduce review effort for useful changes" / #2881) — the todo list default summary
Technical direction
Core control-plane hardening
Intent
I need design feedback before implementation
Anchor type
Roadmap stream / milestone / card (S, G, R) in loopx-overall-roadmap-v0
Anchor reference
S12 · "reduce review effort for useful changes" / #2881; contributor board row GH-C88 (currently Needs design)
Goal, who is blocked, and exit
Current gap: todo list is the agent work-queue read path (qualified_default, surface todo_list), and its default JSON output is the full payload. Measured on the budget harness's crowded fixture (36 todos, 12 runs; 2244b96, native Windows host, Node 22.23.3; budget rows verified unchanged at current main): 17,450 chars / 493 lines while returning 12 of 36 todos. The structure is the problem, not just the size: 19 top-level keys with three parallel todo arrays (todos, agent_todos, user_todos — the same data grouped three ways), a per-item schema_version, and near-duplicate text/title per item. The manifest ceiling has been characterized at 82,000 chars crowded/json with a 2,050-chars-per-todo growth slope — the steepest in the matrix (next is status at 550/todo) — so agents pay a full-page readback to answer "what should I work on next", which is exactly the symptom reported in #2881.
Who is blocked without it: agents and operators who read the work queue every turn (token cost on the hot path), and reviewers who re-approve large readback diffs.
Accepted outcome (before → after): before, default todo list emits the full triple-array payload; after, the default output (both formats) is a bounded summary — envelope with ok, goal_id, todo_count / returned_todo_count / unfiltered_todo_count plus the top-N actionable todos, each carrying only todo_id, title, status, priority, claimed_by — and a typed escape-hatch flag emits the complete current payload with its shape unchanged, so existing automation keeps working untouched.
Exit condition: the default summary ships with the escape hatch, the todo_list manifest ceilings are tightened with matched measurements (proposal below), python3 examples/control_plane/cli-output-budget-regression-smoke.py (manifest + differential probe) passes, and loopx check --scan-path docs/status-data-contract.md stays clean.
Proposed scope
In scope / owner: the todo list read projection, its mode-variant/spec rows in loopx/control_plane/testing/cli_output_budget.py, and the new escape-hatch flag. Owned by @BigDataDZ.
Existing related work / dependencies: the existing budget regression smoke and its base/head differential probe; the turn-plan writeback-route discipline (compaction must not discard or redirect routing, already guarded by an assertion I will keep green).
Out of scope: the other nine qualified_default surfaces (status is the second-steepest at 550/todo and is deliberately untouched), write paths, scheduler/quota semantics, and any change to the full payload shape behind the escape hatch.
If staged: N/A — one cohesive slice.
Intended base branch
main
Relevant files or commands
loopx/control_plane/testing/cli_output_budget.py(todo_listspec + a new mode-variant row for the escape hatch)- the
todo listread projection in the CLI command layer python3 examples/control_plane/cli-output-budget-regression-smoke.pyloopx check --scan-path docs/status-data-contract.md
Validation plan
Accepted result and independent oracle: on the crowded fixture the default todo list JSON drops from the measured 17,450 chars / 493 lines to within the tightened ceiling while keeping every decision signal the summary claims (id/title/status/priority/claimed_by per surfaced todo plus the three counts); the escape hatch emits the full payload with an unchanged shape; the tightened manifest and the differential probe enforce both directions.
Actual entrypoint / safe command: python3 examples/control_plane/cli-output-budget-regression-smoke.py; a focused default-vs-escape-hatch todo list smoke.
Negative or recovery case: the differential probe's growth/duplication assertions on the default output — re-adding a parallel array or a per-item schema_version must fail the tightened ceilings.
Frontend / Lark / CLI impact: CLI only (the todo list default output).
Open design questions
- Escape-hatch flag name:
--full-json(proposal) vs a--brief-style inversion following the heartbeat convention (--thin/--brief). - Summary N: proposal N = 8 next-actionable todos in the existing stable order.
- Tightened ceilings: proposal crowded/json 82,000 → ~24,000 and growth 2,050 → ~600 per todo, from the measurement above; maintainers may prefer a different differential allowance.
Public/private boundary
- This issue does not include private benchmark traces, verifier output, credentials, internal document links, raw agent sessions, or local runtime state.
- I will not run or duplicate maintainer-owned benchmark cases unless a maintainer explicitly splits out a public task.
- This task is not a standalone catalog entry, behavior-pinning test, fixture dimension, rename, or docs restatement; if it includes one, the anchor above names the code, test, or copy that consumes it.
- 主要语言
- Python
- 星标
- 6.2k
- 派生
- 596
- 平均合并
- 7 小时 47 分钟
- 30 天内合并 PR
- 904
环境准备
- 没有 Dockerfile 或 Docker Compose 文件
- 有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
loopx-project/loopx 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 84/100
loopx-project/loopx#6842 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 72/100
loopx-project/loopx#6108 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
loopx-project/loopx#5688 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 60/100
loopx-project/loopx#5632 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
loopx-project/loopx#5443 · 1 条评论 ·
维护者通常 1 天内回复
查看 loopx-project/loopx 的全部 Issue
相似的 Issue
-
bug good first issue
难度 2/5 1-3 小时 新手友好度 78/100
yunaremaia/proto-drift#22 ·
-
bug good first issue
难度 2/5 1-3 小时 新手友好度 82/100
yunaremaia/memwatch#96 ·
-
bug good first issue
难度 1/5 1 小时以内 新手友好度 91/100
yunaremaia/ci-gate-watch#34 ·
-
bug good first issue
难度 2/5 1-3 小时 新手友好度 85/100
yunaremaia/agent-capability-attestation#64 ·
维护者通常 1 天内回复
-
bug good first issue
难度 1/5 1 小时以内 新手友好度 86/100
yunaremaia/agent-call-graph#43 ·
维护者通常 1 天内回复