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

A task whose plan finished just before an engine restart reads interrupted and cannot be landed

Ouverte
#1,657 1 commentaire 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
68/100
Type d'issue
Bug
Clarté
Clairement spécifiée
Activité
Active
Stack technique
go
Domaine
backend, cli

Piste de recherche

Start with reconcileSettledRun in internal/session/task_run_recover.go, then trace the retry affordance in internal/tui3/taskretry.go and plan handling in internal/session/tools_tasks.go. Seed the described recovery state in a session test and verify that a plan finished before restart remains landable through the page or tasks resolve, with the landed commit and spend preserved.

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

Description

area:session bug sev:serious

What happened

On dev (seen through PR #1632 at 458d1be73, whose recovery change does not touch this path), a task whose plan finished just before its engine restarted comes back interrupted with no way to finish it.

On 2026-09-28, in a git repo, on the engine road (plain codeaf, deepseek/deepseek-v4-flash): /task write a python script count.py that counts lines in every .txt file here, and a test for it; run the test. While the roster said Running 1, the workspace's codeaf engine daemon was killed. The surface reconnected to a new engine.

The task page then read:

interrupted · 43s · $0.0018

while its own body said done · ran 43s, and that count.py and four passing tests were written (they are on the task's branch). The page offers no enter retry (pressing Enter changes nothing). Asking the conversation to land it made the model call tasks with id: "2", resolve: "accept", which answered:

No task "2" in this project

Replication

Deterministic (no model). Not yet written. The ending is decided in reconcileSettledRun (below) for a plan root whose status is done at recovery time, so a session test can seed a checkpoint with an admitted run row plus a plan store whose root is done, open the conversation, and assert what the row says and what tasks answers for its id.

Field (real models). The steps above: any key the product accepts (OPENROUTER_API_KEY or the profile's key), a cheap model, about 2 minutes and under $0.01. What makes it fire: the plan must finish before the engine dies. Kill the daemon a few seconds after the worker reports its test passing.

Where

  • reconcileSettledRun in internal/session/task_run_recover.go. Its default case writes the plan finished before the restart; inspect the saved working copy before landing its changes and leaves the row interrupted.
  • The retry affordance in internal/tui3/taskretry.go only offers a retry for a failed node without a run, so an interrupted plan run gets none.
  • In internal/session/tools_tasks.go, plan rows are handled for reads, but resolve and continue fall through to the ordinary task lookup, which cannot find a plan-only run row. That's where No task "2" comes from.

The fix

A task whose plan finished before a restart is either offered as finished work to land (the same resolve / accept door a finished task has), or it says what to do next and that door works. The tasks tool must never answer "No task" for a task the page is showing.

Acceptance

End to end, through the engine road: kill the engine after the plan finishes, reopen, and the task can be landed through the page or tasks resolve. The receipt names the landed commit, and the spend shown before the kill is still shown after.

Langage dominant
Go
Étoiles
115
Forks
14
Merge moyen
13 h 37 min
PR mergées (30 j)
303

Préparer son environnement

Nous n'avons pas encore vérifié les fichiers d'installation de ce projet. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

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 Agent-Field/CodeAF

Toutes les issues de Agent-Field/CodeAF

Issues similaires

Plus d'issues Go

Recevez les nouvelles issues par e-mail

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