Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

[Task]: shorten the todo list default summary behind a typed full-payload escape hatch (GH-C88)

Ouverte
#5,895 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Les mainteneurs répondent en général sous 1 jour

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
35/100
Type d'issue
Fonctionnalité
Clarté
Plutôt claire
Activité
Active
Stack technique
cli, python
Domaine
cli, tooling

Piste de recherche

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.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

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_list spec + a new mode-variant row for the escape hatch)
  • the todo list read projection in the CLI command layer
  • python3 examples/control_plane/cli-output-budget-regression-smoke.py
  • loopx 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
  1. Escape-hatch flag name: --full-json (proposal) vs a --brief-style inversion following the heartbeat convention (--thin / --brief).
  2. Summary N: proposal N = 8 next-actionable todos in the existing stable order.
  3. 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.
Langage dominant
Python
Étoiles
6.2k
Forks
596
Merge moyen
7 h 47 min
PR mergées (30 j)
904

Préparer son environnement

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de loopx-project/loopx

Toutes les issues de loopx-project/loopx

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.