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

status: a truncated ACTIVE_GOAL_STATE.md reports healthy with zero Todos

Ouverte
#6,870 2 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

@JasonBuildAI y travaille déjà.

Depuis le 19/10/2026.

  • #6921 par @JasonBuildAI — ouverte

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
55/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
python

Piste de recherche

Start with loopx/control_plane/todos/active_state_todos_parser.py:36 and the state parsing rules in machine_region.py:53-58,86,103, then exercise loopx status --format json and loopx todo list --format json with the provided healthy and truncated fixtures. Done means truncated state no longer reports healthy with zero Todos, and the warning or validation behavior is covered by tests.

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

Description

What happens

ACTIVE_GOAL_STATE.md truncated at a section boundary (e.g. everything from
## Agent Todo onward removed) is read as a goal with no Todos:

healthy: {"status_exit":0,"status_ok":true,"todo_index_total":2,"attention":"[P1] implement the thing","todo_total":2}
wounded: {"status_exit":0,"status_ok":true,"todo_index_total":0,"attention":"run the first read-only adapter tick and save a compact run record","todo_total":0}

Both loopx status --format json and loopx todo list --format json exit 0
with ok:true, and the attention line silently degrades from the real P1 item
to the generic first-tick advice. 5/5 runs.

Why this path is taken

parse_active_state_todos iterates only the regions it finds
(loopx/control_plane/todos/active_state_todo_parser.py:36), and a missing
section is legal — only unterminated frontmatter or malformed/orphan markers
raise (machine_region.py:53-58,86,103). A present-but-truncated file is
therefore indistinguishable from a goal that genuinely has no Todos.

Trigger honesty

The state writer is atomic (runtime/document_io.py, temp + fsync + replace),
so this is not a same-version torn write. It models disk corruption after a
crash, a partial backup/restore, or a bad manual/merge edit of a file that is
present.

Relationship to #6799

#6799 is about a missing state file letting the quota gate authorize turns.
This is the sibling case: the file exists, its earlier sections parse, and the
Todo section is simply gone — so a missing-file guard would not fire, and the
quota gate sees a goal with no open work.

Expected

A state file that parses but lost a section it used to have should not read as
"no open work". Options: require the ## Agent Todo region; compare a revision
or section inventory against the last known good state; or surface a
state_incomplete warning on status/todo list.

Reproduced

Snapshot 105c4bc1; unchanged on main at 1c7b258cb. Fixture: one goal with
exactly two Agent Todos; the wounded copy is the same fixture with the state
file cut at 377 → 235 bytes (before ## Agent Todo). The script asserts the
healthy control first (2 Todos, P1 attention) and fails if the wounded side does
not match.

Langage dominant
Python
Étoiles
6.2k
Forks
596
Merge moyen
6 h 44 min
PR mergées (30 j)
915

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.