fw termlink dispatch: CLAUDE.md's check-in rule terminates headless workers at their first commit (exit 0, mandate unfinished)
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 43/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- cli, shell
- Lĩnh vực
- cli, developer-experience
Hướng nghiên cứu
Start by locating the fw termlink dispatch implementation and the shipped CLAUDE.md template; the issue does not name their file paths or tests. Read how dispatch prompts are composed and how run completion is recorded, then check the existing dispatch tests. Done means headless workers receive the narrowly scoped stop-condition guidance, the template distinguishes interactive sessions, and missing expected artifacts can be reported as incomplete without bypassing gates.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
fw termlink dispatch spawns a headless claude -p worker into a project whose CLAUDE.md
tells it, in §Agent Behavioral Rules:
Commit Cadence and Check-In
After every commit, briefly report what was done and ask if the user wants to continue.
Do not chain multiple commits without user interaction.
There is no user attached to a dispatched worker. A claude -p process has exactly one way
to "ask and wait": end its turn. Ending its turn ends the process. So a well-behaved worker
that makes a commit terminates itself at its first commit, with exit_code 0 and a
partially-finished mandate.
The worker is not misbehaving. It is following the governance it was given, and the
governance is what kills it.
What we measured
Dispatch r3-audit, one of nine in a three-round orchestrated sequence (task T-1102):
fw termlink dispatch --task T-1102 --name r3-audit \
--prompt-file <composed> --project /opt/1409-sprind --timeout 7200 \
--permission-mode acceptEdits --allowed-tools "Read Write Edit Bash Glob Grep TodoWrite"
meta.json: "status": "done", "exit_code": 0, 14:41:56Z → 14:59:25Z.
Exit 0, 17½ minutes, and the mandate was a 3-cycle audit run with a required handback
deliverable. It completed cycle 1 of 3 and wrote no handback. Its final message:
Committed. Per the commit cadence protocol, let me check in before continuing.
[…] Given the scale of the remaining mandate […] do you want me to continue autonomously
through the full 3-cycle run, or pause here so you can review/redirect?
It cited the rule by name. Cycle 1 itself was good work — four new WARNs triaged, three
closed with evidence, one correctly parked as a Sovereign question, one filed upstream. Then
it stopped, because it was told to.
Why this is easy to miss: exit_code 0 and status: done. Nothing in meta.json
distinguishes "finished the mandate" from "asked a question into the void and exited". An
orchestrator that checks exit codes — the obvious thing to check — records a successful run.
We only caught it because the deliverable file was absent.
Two earlier dispatches in the same sequence hit a related failure: both REVIEW workers exited
without the standalone handback their dispatch required, and their stop conditions had to be
reconstructed from report bodies and meta.json afterwards.
Why this belongs in the framework, not in every prompt
fw termlink dispatch knows the worker is headless — it constructs the claude -p
invocation. The project's CLAUDE.md does not, and cannot: it is one file serving both
interactive sessions and dispatched workers, and the rule is correct for the first.
So the knowledge exists at exactly the point where it can be acted on, and is not acted on.
Every dispatch made by any project carries this latent.
Asks, in order of leverage
-
fw termlink dispatchshould inject a headless-context preamble that narrowly
suspends the check-in rule and names the stop conditions that replace it (mandate
complete / budget / blocking gate / Sovereign decision). Narrow: it must not read as
permission to skip gates, tick Human ACs,--force, or decide Sovereign questions. We
did this by hand in the re-dispatch and the worker resumed correctly. -
Make the rule conditional in the shipped
CLAUDE.mdtemplate, e.g. "…ask if the user
wants to continue. This applies to interactive sessions only; a dispatched or headless
worker continues to its stop condition and records what it would have asked as a Sovereign
question in its handback." Fixes the source rather than patching each dispatch. -
Distinguish "mandate complete" from "exited early" in
meta.json.exit_code 0+
status: donecurrently covers both. A--expect-artifact <path>flag that marks the run
incomplete when the deliverable is missing would have caught all three instances here
automatically, instead of relying on an orchestrator noticing an absent file.
Environment
- Framework 1.6.769, shared-tooling mode, tmux backend
- 9 dispatches across 3 rounds; 3 affected (1 hard stop at cycle 1/3, 2 missing handbacks)
- Ngôn ngữ chính
- Shell
- Star
- 16
- Fork
- 6
- Merge trung bình
- 6 giờ 24 phút
- Pull request đã merge (30 ngày)
- 5
Chuẩn bị môi trường
- Có Dockerfile hoặc tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của DimitriGeelen/agentic-engineering-framework
-
area:cli bug severity:low status:fixed-on-bleeding-edge triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
DimitriGeelen/agentic-engineering-framework#100 · 5 bình luận ·
-
area:cli bug severity:medium status:fixed-on-bleeding-edge triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
DimitriGeelen/agentic-engineering-framework#97 · 5 bình luận ·
-
area:context bug severity:low status:fixed-on-bleeding-edge triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
DimitriGeelen/agentic-engineering-framework#96 · 5 bình luận ·
-
area:docs bug severity:medium status:in-progress triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 78/100
DimitriGeelen/agentic-engineering-framework#95 · 4 bình luận ·
-
area:watchtower bug severity:low status:released triaged
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 76/100
DimitriGeelen/agentic-engineering-framework#94 · 4 bình luận ·
Tất cả issue của DimitriGeelen/agentic-engineering-framework
Issue tương tự
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
koalaman/shellcheck#3593 ·
Maintainer thường phản hồi trong vòng 2 ngày
-
Link Checker ReportĐang mởautomated issue report
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
a2aproject/A2A#2381 ·
Maintainer thường phản hồi trong vòng 3 ngày
-
e2e-failure ready-to-code
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
redhat-developer/rhdh-plugin-export-overlays#4485 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
good first issue spells
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100