[Task]: shorten the todo list default summary behind a typed full-payload escape hatch (GH-C88)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 35/100
Direzione di ricerca
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.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
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.
- Lingua principale
- Python
- Stelle
- 6.2k
- Fork
- 596
- Merge medio
- 7h 47m
- PR unite (30g)
- 904
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di loopx-project/loopx
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 84/100
loopx-project/loopx#6842 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
loopx-project/loopx#6108 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
loopx-project/loopx#5688 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 60/100
loopx-project/loopx#5632 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
loopx-project/loopx#5443 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di loopx-project/loopx
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 6 giorni
-
Bump zizmor to 1.31.1+Apertagithub_actions
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
collective/icalendar#2003 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
openzim/python-scraperlib#360 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
volcengine/OpenViking#6445 ·
I maintainer di solito rispondono entro 1 giorno