Skip to content

Commit bbac32a

Browse files
committed
Release v6.2.9 callback visibility and diagnostics
1 parent 1cbe8f2 commit bbac32a

56 files changed

Lines changed: 1451 additions & 96 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

CHANGELOG.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,15 @@
22

33
## Unreleased
44

5+
## v6.2.9 (2026-05-22)
6+
7+
### Callback Visibility And Diagnostics Release
8+
9+
- **Callback Root Replies Are Visible**: delegated callback root jobs now show `callback_pending` while the child chain is still running, then `ask get` and `watch` surface the final message-bureau reply after the continuation completes.
10+
- **Ask Observer Commands Marked Diagnostics-Only**: inherited ask skills, CLI help, project/runtime memory surfaces, and tests now describe `ask get`, `pend`, `watch`, and `ping` as explicit debugging tools, not normal ask workflow steps.
11+
- **Long CCB Text Artifacts Added**: oversized ask bodies, terminal replies, notices, and callback continuation text spill to bounded UTF-8 artifacts under `.ccb/ccbd/artifacts/text/`, with previews and diagnostics bundle coverage.
12+
- **Shutdown Cleanup Hardened**: remote kill now tracks both prepared and current control-plane pids, and foreground tmux exit can best-effort request project stop-all so an exited namespace does not leave the backend looking active.
13+
514
## v6.2.8 (2026-05-21)
615

716
### Config Source, Stop Cleanup, And Tmux Policy Release

README.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<img src="https://img.shields.io/badge/Every_Model_Controllable-CF1322?style=for-the-badge" alt="Every Model Controllable">
88
</p>
99

10-
[![Version](https://img.shields.io/badge/version-6.2.8-orange.svg)]()
10+
[![Version](https://img.shields.io/badge/version-6.2.9-orange.svg)]()
1111
[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey.svg)]()
1212

1313
**English** | [Chinese](README_zh.md)
@@ -74,9 +74,9 @@ Build project-local teams with roles, pane layout, provider state, worktree isol
7474
<details>
7575
<summary><b>Latest release highlights</b></summary>
7676

77-
- **Config sources are explicit**: CCB reports whether the effective config came from the built-in default, user `~/.ccb/ccb.config`, or project `.ccb/ccb.config`.
78-
- **`ccb kill` cleanup is ordered after the response**: project tmux namespace destruction is deferred until after `stop_all` finalization, so cleanup completes even when kill is launched from a CCB tmux pane.
79-
- **Managed tmux stays isolated but usable**: CCB now explicitly enables owned `mouse on` and `set-clipboard on` policy in project namespaces and detached tmux paths.
77+
- **Callback roots show the real final reply**: delegated callback root jobs report `callback_pending` while the child chain is running, then `ask get` and `watch` show the final message-bureau reply after continuation.
78+
- **Observer commands are diagnostics-only**: ask skills and help surfaces now state that `ask get`, `pend`, `watch`, and `ping` are explicit debugging tools, not normal ask workflow steps.
79+
- **Long CCB text is artifact-backed**: oversized ask bodies, terminal replies, notices, and callback continuation text are stored as bounded UTF-8 artifacts with previews and diagnostics bundle coverage.
8080

8181
See [Release Notes](#release-notes) for the full history.
8282

@@ -338,6 +338,16 @@ Thanks to the [Linux.do community](https://linux.do) for testing, feedback, and
338338
Historical note: older release notes below may mention `askd`, legacy flags, or removed commands. Those references are kept only as changelog history and do not redefine the current CLI surface.
339339

340340
<details open>
341+
<summary><b>v6.2.9</b> - Callback Visibility And Diagnostics Release</summary>
342+
343+
- Shows `callback_pending` for delegated callback root jobs while the child chain is still running, then resolves `ask get` and `watch` to the final message-bureau reply after continuation.
344+
- Marks `ask get`, `pend`, `watch`, and `ping` as diagnostics-only across inherited ask skills, CLI help, memory-facing wording, and tests.
345+
- Stores oversized ask bodies, terminal replies, notices, and callback continuation text under `.ccb/ccbd/artifacts/text/` with short previews and diagnostic bundle inclusion.
346+
- Hardens shutdown cleanup by tracking prepared and current control-plane pids during remote kill and best-effort stopping the backend after foreground tmux namespace exit.
347+
348+
</details>
349+
350+
<details>
341351
<summary><b>v6.2.8</b> - Config Source, Stop Cleanup, And Tmux Policy Release</summary>
342352

343353
- Includes explicit config source kinds for built-in defaults, user `~/.ccb/ccb.config`, and project `.ccb/ccb.config`, with project config taking highest priority.

README_zh.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<img src="https://img.shields.io/badge/模型皆可控-CF1322?style=for-the-badge" alt="模型皆可控">
88
</p>
99

10-
[![Version](https://img.shields.io/badge/version-6.2.8-orange.svg)]()
10+
[![Version](https://img.shields.io/badge/version-6.2.9-orange.svg)]()
1111
[![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-lightgrey.svg)]()
1212

1313
[English](README.md) | **中文**
@@ -74,9 +74,9 @@
7474
<details>
7575
<summary><b>最新版本亮点</b></summary>
7676

77-
- **配置来源显式化**CCB 会报告当前配置来自内置默认、用户 `~/.ccb/ccb.config`,还是项目 `.ccb/ccb.config`
78-
- **`ccb kill` 清理顺序修复**project tmux namespace destroy 延后到 `stop_all` 回包后的 finalize 阶段,避免从 CCB tmux pane 执行 kill 时清理只跑一半
79-
- **Managed tmux 继续隔离但保留可用性**CCB 在 project namespace 和 detached tmux 路径中显式启用自有 `mouse on``set-clipboard on` policy
77+
- **Callback root 能看到最终回复**委派式 callback root job 等待子链路时显示 `callback_pending`,continuation 完成后 `ask get``watch` 会显示最终 message-bureau reply
78+
- **Observer 命令仅用于诊断**ask skill 和帮助界面会明确 `ask get``pend``watch``ping` 是调试工具,不是普通 ask 工作流步骤
79+
- **长文本改为 artifact 支撑**超长 ask body、终态回复、notice 和 callback continuation 文本会保存为有预览的 UTF-8 artifact,并进入诊断 bundle
8080

8181
完整历史见 [新版本记录](#新版本记录)
8282

@@ -329,6 +329,16 @@ ccb reinstall
329329
历史说明:下面较旧的发布记录里仍可能出现 `askd`、旧 flag 或已移除命令。这些内容仅作为 changelog 历史保留,不代表当前 CLI 入口。
330330

331331
<details open>
332+
<summary><b>v6.2.9</b> - Callback Visibility And Diagnostics Release</summary>
333+
334+
- 委派式 callback root job 在子链路运行期间显示 `callback_pending`,continuation 完成后 `ask get``watch` 会解析到最终 message-bureau reply。
335+
- 在继承 ask skills、CLI help、memory-facing wording 和测试中,将 `ask get``pend``watch``ping` 标记为 diagnostics-only。
336+
- 将超长 ask body、终态回复、notice 和 callback continuation 文本保存到 `.ccb/ccbd/artifacts/text/`,保留短预览并纳入诊断 bundle。
337+
- 强化 shutdown cleanup:remote kill 同时跟踪预先快照和当前发布的 control-plane pid,foreground tmux namespace 退出后会 best-effort stop backend。
338+
339+
</details>
340+
341+
<details>
332342
<summary><b>v6.2.8</b> - Config Source, Stop Cleanup, And Tmux Policy Release</summary>
333343

334344
- 包含显式配置来源:内置默认、用户 `~/.ccb/ccb.config`、项目 `.ccb/ccb.config`,并保持项目配置优先级最高。

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
6.2.8
1+
6.2.9

ccb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ backend_env = get_backend_env()
2121
if backend_env and not os.environ.get("CCB_BACKEND_ENV"):
2222
os.environ["CCB_BACKEND_ENV"] = backend_env
2323

24-
VERSION = "6.2.8"
24+
VERSION = "6.2.9"
2525
GIT_COMMIT = "release"
26-
GIT_DATE = "2026-05-11"
26+
GIT_DATE = "2026-05-22"
2727

2828

2929
def main():

docs/ccbd-diagnostics-contract.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ It is the authoritative design anchor for:
1212
- `.ccb/ccbd/start-policy.json`
1313
- `.ccb/ccbd/lifecycle.jsonl`
1414
- `.ccb/ccbd/heartbeats/<subject-kind>/*.json`
15+
- `.ccb/ccbd/artifacts/text/`
1516
- project-scoped backend log retention under `.ccb/ccbd/`
1617
- `ccb doctor`
1718
- `ccb doctor ps`
@@ -131,6 +132,7 @@ Rules:
131132
- `start-policy.json` records the persisted project recovery startup policy, including inherited `auto_permission` and forced recovery-restore semantics
132133
- `lifecycle.jsonl` records namespace creation/destruction and later runtime lifecycle events
133134
- `heartbeats/<subject-kind>/*.json` records non-lease heartbeat state for long-lived supervised subjects such as running jobs; these files are diagnostics/evidence, not backend ownership authority
135+
- `artifacts/text/` stores oversized CCB agent-to-agent message and reply text. Request bodies, terminal replies, notices, and callback continuations larger than 4 KiB are written there as UTF-8 text artifacts; ledgers store only the short preview plus artifact path, byte count, and sha256 metadata. These artifacts are diagnostics/evidence and transport support, not scheduling authority.
134136
- running-job heartbeat observations stay in diagnostics/events and must not be emitted as caller-visible mailbox replies; after three consecutive no-progress observations, the terminal `heartbeat_timeout` reply is the caller-visible outcome
135137
- daemon lease heartbeat and subject heartbeat must remain separate concepts and separate files
136138
- `doctor` and bundle export must include these records when present
@@ -201,6 +203,7 @@ The support bundle must include:
201203
- backend authority files such as lease, keeper, shutdown intent, and namespace state when present
202204
- backend recovery policy authority such as `start-policy.json` when present
203205
- persisted non-lease heartbeat state under `.ccb/ccbd/heartbeats/` when present
206+
- oversized CCB text artifacts under `.ccb/ccbd/artifacts/text/` when referenced by recent message/reply records
204207
- recent backend event streams such as supervision, namespace lifecycle, and cleanup history
205208
- backend stdout/stderr logs
206209
- per-agent runtime authority and recent agent/provider logs

docs/ccbd-startup-supervision-contract.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,10 @@ Foreground command split:
387387
- the foreground attach RPC budget is allowed to match the stable operational client budget, while daemon config/probe checks must remain fast-fail
388388
- the foreground attach target-ready budget must remain bounded by the startup transaction budget so namespace/UI lag does not redefine backend startup authority
389389
- once the tmux client is observed attached, `ccb` should issue a best-effort tmux client refresh so the first attached frame does not depend on a manual user redraw
390+
- if the foreground tmux client later exits and the authoritative project
391+
session no longer exists on the project-owned socket, `ccb` must best-effort
392+
request project stop-all before returning so `[server exited]` cannot leave
393+
an apparently active backend behind
390394
- in a non-interactive terminal, reports the start transaction without attaching to tmux
391395
- startup success and foreground attach success are distinct outcomes; foreground attach failure must not rewrite a successful startup report as failed
392396
- foreground attach errors must state whether `ccbd` failed to answer the attach ping or whether `ccbd` was responsive but the project namespace was not attachable
@@ -590,8 +594,8 @@ That means:
590594
- once shutdown intent is acquired, new mutating RPC requests such as `submit`, `start`, `restore`, `retry`, or `attach` must be rejected with a stable lifecycle-level stopping error; clients must not surface raw socket reset errors as the user-visible contract
591595
- shutdown-style RPC handlers that return an after-response finalizer must enqueue that finalizer even when writing the response fails; `stop_all` may destroy the tmux pane that issued `ccb kill`, and a disconnected client must not prevent backend unmount/finalization
592596
- local daemon shutdown helpers must not stop at `mark_unmounted()` plus socket close; they must run the same stop-all cleanup transaction first so provider-runtime pid files, namespace state, and configured-agent authority do not survive a backend-local shutdown
593-
- CLI remote-stop shutdown helpers must snapshot structured control-plane pids and record shutdown intent before sending `stop_all`; post-stop inspections may observe a newer generation and must not become the authority for which pids to terminate
594-
- CLI remote-stop shutdown helpers must not treat lifecycle `phase=unmounted` alone as terminal; after a successful `stop_all` response they must also wait for the recorded `ccbd` and project `keeper` pids to exit, terminate lingering control-plane pids with the same bounded pid-tree cleanup used by the local shutdown path, and persist lifecycle `phase=unmounted` / `desired_state=stopped`
597+
- CLI remote-stop shutdown helpers must snapshot structured control-plane pids and record shutdown intent before sending `stop_all`; they must also keep tracking any current `ccbd` and project `keeper` pids still published by the project lease during the bounded shutdown wait so a missed pre-stop snapshot cannot leave a live backend behind
598+
- CLI remote-stop shutdown helpers must not treat lifecycle `phase=unmounted` alone as terminal; after a successful `stop_all` response they must also wait for the recorded and currently published `ccbd` / project `keeper` pids to exit, terminate lingering control-plane pids with the same bounded pid-tree cleanup used by the local shutdown path, and persist lifecycle `phase=unmounted` / `desired_state=stopped`
595599
- orphan process collection must include structured control-plane pid authority from `.ccb/ccbd/lease.json`, `.ccb/ccbd/keeper.json`, and `.ccb/ccbd/lifecycle.json`; `/proc` command-line matching is only a fallback evidence source and must not be the only way to find ccbd/keeper residue
596600
- control-plane `/proc` fallback matching must be scoped to CCB control-plane commands for the same `--project <project_root>`; it must not broadly kill every process whose command line mentions the project root
597601
- tmux shutdown cleanup must preserve full project socket paths from `TMUX`, `CCB_TMUX_SOCKET_PATH`, and runtime authority records; collapsing `/path/to/tmux.sock` to `tmux.sock` targets a different tmux server and violates project-scoped kill semantics

inherit_skills/claude_skills/ask/RUNTIME.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,6 @@ EOF
1616
- Use `--silence` for silent-on-success delivery.
1717
- Use `--callback` from inside an active task when the target result should return as a continuation task.
1818
- Plain nested `ask` from an active CCB task is rejected; choose `--callback` for needed results or `--silence` for independent no-result-needed work.
19-
- After the command returns, immediately end the turn. Do not wait for a reply, do not run `pend` / `ping` / `watch`, do not poll.
19+
- `ask get`, `pend`, `watch`, and `ping` are diagnostics-only commands for explicit debugging requests, not normal ask workflow tools.
20+
- After the command returns, immediately end the turn. Do not wait for a reply, do not run `ask get` / `pend` / `ping` / `watch`, do not poll.
2021
- For `--callback`, report only that delegation was submitted; the final result belongs in the later continuation task.

inherit_skills/claude_skills/ask/SKILL.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ Use this only for `/ask <target> <message...>`.
1717
- Use `--callback` only from inside an active CCB task when this agent needs the target's result before finishing the original task. The current turn must end after submit; CCB will route the target result back as a new continuation task.
1818
- Plain nested `ask` from an active CCB task is rejected; choose `--callback` for needed results or `--silence` for independent no-result-needed work.
1919
- Do not manually append output-policy text; `ask` injects reply guidance.
20+
- `ask get`, `pend`, `watch`, and `ping` are diagnostics-only commands for explicit debugging requests, not normal ask workflow tools.
2021

2122
Always send `MESSAGE` through the `<<'EOF' ... EOF` heredoc below. No other form is allowed.
2223

@@ -44,4 +45,4 @@ $MESSAGE
4445
EOF
4546
```
4647

47-
After the command returns, immediately end the turn. Do not wait for a reply, do not run `pend` / `ping` / `watch`, do not poll, do not add commentary. For `--callback`, report only that delegation was submitted; the final result belongs in the later continuation task.
48+
After the command returns, immediately end the turn. Do not wait for a reply, do not run `ask get` / `pend` / `ping` / `watch`, do not poll, do not add commentary. For `--callback`, report only that delegation was submitted; the final result belongs in the later continuation task.

inherit_skills/claude_skills/ask/SKILL.md.powershell

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ Use this only for `/ask <target> <message...>`.
1515
- Use `--silence` when success does not need a body; failures, blockers, or required next actions should still surface.
1616
- Use `--callback` only from inside an active CCB task when this agent needs the target's result before finishing the original task. The current turn must end after submit; CCB will route the target result back as a new continuation task.
1717
- Plain nested `ask` from an active CCB task is rejected; choose `--callback` for needed results or `--silence` for independent no-result-needed work.
18+
- `ask get`, `pend`, `watch`, and `ping` are diagnostics-only commands for explicit debugging requests, not normal ask workflow tools.
1819
- Do not manually append output-policy text; `ask` injects reply guidance.
1920

2021
PowerShell equivalent of the heredoc form. Always pipe a single-quoted here-string (`@'...'@`) to `FilePath "ask"` on stdin - the heredoc form is the only allowed form.
@@ -27,4 +28,4 @@ $MESSAGE
2728

2829
Use `-ArgumentList @("--compact", "$TARGET")` for compact replies, `-ArgumentList @("--silence", "$TARGET")` for silent-on-success delivery, and `-ArgumentList @("--callback", "$TARGET")` for callback continuations.
2930

30-
After the command returns, immediately end the turn. Do not wait for a reply, do not run `pend` / `ping` / `watch`, do not poll, do not add commentary. For `--callback`, report only that delegation was submitted; the final result belongs in the later continuation task.
31+
After the command returns, immediately end the turn. Do not wait for a reply, do not run `ask get` / `pend` / `ping` / `watch`, do not poll, do not add commentary. For `--callback`, report only that delegation was submitted; the final result belongs in the later continuation task.

0 commit comments

Comments
 (0)