Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

A held (queued) task cannot be stopped and keeps the repo write-lock

オープン
#1,571 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
68/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
go
領域
backend, cli, devtools

調査の方向性

Build dev 837b2b0 and reproduce the held-task flow with task.max_load forced low. Read internal/session/task_run.go:1264 and task_pressure.go:447, then trace admission, folder locking, and the stop path for queued tasks. Done means the e2e cases pass: stopping a held task marks it stopped immediately, and a not-yet-started held task holds no repo write-lock.

索引モデルが issue の本文から書いたものです。

説明

area:session bug sev:critical

Seen on: dev 837b2b0.

Behaviour

A senior-dev task held by the busy-machine gate read queued · 10m 47s with no reason. /stop then 1 stop it did not stop it (still queued). While it was held, another team's member could not edit the folder: the repo write-lock is held by the other window's still-running PATCH task. Only restarting the engine ended it, and after the restart tasks.json still said running for that task. A held task should be stoppable, and a task that has not started should not hold the folder's write-lock.

Replication

  1. Build dev 837b2b0 (git checkout 837b2b0 && make build), or install the dev build with curl -fsSL https://agentfield.ai/get/devaf | bash.
  2. Use an isolated profile: export HOME=$(mktemp -d), export OPENROUTER_API_KEY, default model.
  3. Leave the busy-machine gate ON for this one (step 5 forces it).
  4. Make a small repo: R=$(mktemp -d) && cd "$R" && git init -q && printf 'package main\n\nfunc main() {}\n' > main.go && printf 'module demo\n\ngo 1.22\n' > go.mod && git add -A && git commit -qm init.
  5. Force the hold: set task.max_load to a value below the machine's current load per core (for example 0.01) under /settings.
  6. Ask a manager to hand a change to senior-dev (or run /task for a small change). The task shows queued.
  7. /stop, choose 1 stop it: the task stays queued.
  8. From another conversation in the same repo, ask for a small edit: it is refused with the write-lock line.

Evidence

  • Screen: queued · 10m 47s; after /stop → 1 stop it, still queued; the other member: the repo write-lock is held by the other window's still-running PATCH task.
  • tasks.json "state": "running", the task folder empty, the task branch already checked out, no model calls for 23 minutes.
  • internal/session/task_run.go:1264: graph.governor = newAdmissionGovernor(a.config.TaskMaxLoad, ...); the hold happens at admission (task_pressure.go:447, heldBy = config.KeyTaskMaxLoad).

Guessed cause

A guess from reading the code, not a confirmed diagnosis. The busy-machine hold happens after the folder lock and branch are taken, and the stop path covers only tasks that have started.

Acceptance

  • e2e: with the gate forced as above, /stop → 1 stop it ends the queued task at once (row stopped), and another conversation can then edit the repo.
  • e2e: while a task is held and not started, no write-lock is held on its repo.

Found while writing the public docs; manual text differences are in #1545.

🤖 Generated with Claude Code

主要言語
Go
スター
115
フォーク
14
平均マージ
9時間 35分
マージ済み PR(30日)
752

環境構築

このプロジェクトの環境構築ファイルはまだ確認していません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

Agent-Field/CodeAF のほかの issue

Agent-Field/CodeAF の issue をすべて見る

似ている issue

Go の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。