Skip to content

Commit c921877

Browse files
committed
chore(release): cut 0.4.4
1 parent 980d5d2 commit c921877

File tree

20 files changed

+219
-257
lines changed

20 files changed

+219
-257
lines changed

docs/guide/operations.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ When a group appears stuck:
4343
2. Check group state (`active/idle/paused/stopped`).
4444
3. Check actor runtime status.
4545
4. Check message obligations (reply-required/attention ack).
46-
5. Check automation and delivery throttling.
46+
5. Check automation and delivery policy.
4747

4848
Useful commands:
4949

docs/guide/web-ui.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Click on a group in the sidebar to switch.
3939
2. Configure:
4040
- Group title
4141
- Guidance (preamble/help)
42-
- Automation rules and engine policies
42+
- Built-in automation, rules, and snippets
4343
- Delivery and messaging defaults
4444
- IM Bridge settings
4545

@@ -108,13 +108,14 @@ Access via the gear icon:
108108

109109
### Automation
110110

111-
- **Rules**: Create reminders with interval / recurring schedule / one-time schedule.
111+
- **Built-in Automation**: Configure system-managed follow-ups and collaboration health loops such as unread / reply-required / ACK follow-ups, actor idle alerts, keepalive, silence checks, and help nudges.
112+
- **Rules**: Create scheduled reminders with interval / recurring schedule / one-time schedule.
112113
- **Actions**:
113114
- `Send Reminder` (normal reminder delivery)
114115
- `Set Group Status` (operational, one-time only)
115116
- `Control Actor Runtimes` (operational, one-time only)
117+
- **Snippets**: Reusable message templates managed alongside rules.
116118
- **One-time behavior**: One-time rules auto-complete after firing, then can be cleaned up from completed list.
117-
- **Engine Policies**: Configure built-in nudges (reply-required, attention ACK, unread), actor idle, keepalive, quiet review, and help nudges.
118119

119120
### IM Bridge
120121

docs/reference/features.md

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,11 @@ Ledger (complete memory)
161161
162162
## Automation
163163
164-
Automation is now a rule engine (for reminders + operational actions), not only built-in nudges.
164+
Automation in CCCC combines built-in automation and user-defined rules.
165+
166+
Built-in automation covers system-managed follow-ups and collaboration health loops.
167+
168+
Rules cover scheduled reminders and operational actions, with snippets as reusable message templates.
165169
166170
### Rule Triggers
167171
@@ -189,24 +193,26 @@ Notes:
189193
- Completed one-time rules are disabled (no repeated fire).
190194
- UI supports clearing completed items for cleanup.
191195
192-
### Built-in Policies (separate from custom rules)
196+
### Built-in Automation
193197
194-
| Policy | Config | Default | Description |
195-
|--------|--------|---------|-------------|
196-
| Nudge | `nudge_after_seconds` | 300s | Unread message timeout reminder |
198+
| Behavior | Config | Default | Description |
199+
|----------|--------|---------|-------------|
200+
| Nudge | `nudge_after_seconds` | 300s | Digest follow-up for pending unread or obligation items |
197201
| Reply-required nudge | `reply_required_nudge_after_seconds` | 300s | Follow-up for required-reply obligations |
198202
| Attention-ack nudge | `attention_ack_nudge_after_seconds` | 600s | Follow-up for attention messages lacking ACK |
199-
| Unread nudge | `unread_nudge_after_seconds` | 900s | Inbox still-unread reminder |
200-
| Actor idle | `actor_idle_timeout_seconds` | 600s | Actor idle notification to foreman |
201-
| Keepalive | `keepalive_delay_seconds` | 120s | Foreman keepalive reminder |
202-
| Quiet review | `silence_timeout_seconds` | 0s | Optional foreman review when the whole group stays quiet; `0` disables it |
203-
| Help nudge | `help_nudge_interval_seconds` / `help_nudge_min_messages` | 600s / 10 | Prompt actor to revisit `cccc_help` |
203+
| Unread nudge | `unread_nudge_after_seconds` | 900s | Reminder when unread backlog keeps accumulating |
204+
| Actor idle | `actor_idle_timeout_seconds` | 0s | Optional actor idle notification to foreman; `0` disables it by default |
205+
| Keepalive | `keepalive_delay_seconds` | 120s | Follow-up after an actor declares a next step and then goes quiet |
206+
| Silence check | `silence_timeout_seconds` | 0s | Optional group-level silence review and idle transition; `0` disables it |
207+
| Help nudge | `help_nudge_interval_seconds` / `help_nudge_min_messages` | 600s / 10 | Prompt actor to revisit `cccc_help` and refresh working context |
204208
205-
### Delivery Throttling
209+
### Delivery Policy
206210
207211
| Config | Default | Description |
208212
|--------|---------|-------------|
209-
| `min_interval_seconds` | 0s | Minimum interval between consecutive deliveries (`0` disables throttling) |
213+
| `auto_mark_on_delivery` | `false` | Automatically advance the read cursor after a PTY delivery succeeds |
214+
215+
Low-level delivery throttling via `min_interval_seconds` remains supported in daemon/API settings for compatibility, but it is no longer exposed in the default Web settings UI.
210216
211217
## Runtime-Only Actor Secrets
212218
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# CCCC v0.4.4 Release Notes
2+
3+
`v0.4.4` is a small polish release over `v0.4.3`.
4+
It focuses on making the settings experience clearer, reducing UI/config friction, and aligning safer defaults with actual operator intent.
5+
6+
## Highlights
7+
8+
- Guidance is now the default first-open tab in group settings, matching the visible tab order instead of dropping users into Automation first.
9+
- Settings terminology now more clearly separates built-in automation from user-authored rules and snippets.
10+
- The Delivery panel was simplified around the only user-facing behavior that still matters there: whether successful PTY delivery should auto-advance the read cursor.
11+
- The Web settings UI no longer exposes `min_interval_seconds`, while daemon/API compatibility for that low-level delivery throttle remains intact.
12+
- Actor idle alerts now default to `0` (off) for new/default/reset paths, without silently changing existing group configs that already store a value.
13+
14+
## Upgrade Notes
15+
16+
- No data migration is required.
17+
- Existing groups keep their stored actor-idle and delivery-throttle values.
18+
- After upgrading, the most visible change is the cleaner group settings flow and the default-open Guidance tab.

docs/vnext/FEATURES.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -163,15 +163,15 @@ Ledger (完整记忆)
163163
| 机制 | 配置项 | 默认值 | 说明 |
164164
|------|--------|--------|------|
165165
| Nudge | `nudge_after_seconds` | 300s | 未读消息超时提醒 |
166-
| Actor idle | `actor_idle_timeout_seconds` | 600s | Actor 空闲通知 foreman |
166+
| Actor idle | `actor_idle_timeout_seconds` | 0s | 可选的 Actor 空闲通知 foreman,默认关闭 |
167167
| Keepalive | `keepalive_delay_seconds` | 120s | Next: 声明后提醒 |
168168
| 静默复核 | `silence_timeout_seconds` | 0s | 可选启发式检查;群组长时间静默时提醒 foreman 复核是否应转为空闲,`0` 表示关闭 |
169169
170-
### 4.2 投递限流
170+
### 4.2 投递策略
171171
172172
| 配置项 | 默认值 | 说明 |
173173
|--------|--------|------|
174-
| `min_interval_seconds` | 60s | 连续投递最小间隔 |
174+
| `auto_mark_on_delivery` | `false` | PTY 成功收到消息后是否自动推进已读光标 |
175175
176176
### 4.3 已移除的机制
177177

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "cccc-pair"
7-
version = "0.4.4rc1"
7+
version = "0.4.4"
88
description = "Global multi-agent delivery kernel with working groups, scopes, and an append-only collaboration ledger"
99
readme = { file = "README.md", content-type = "text/markdown" }
1010
requires-python = ">=3.9"

src/cccc/contracts/v1/group_template.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class GroupTemplateSettings(BaseModel):
4444
nudge_max_repeats_per_obligation: int = 3
4545
nudge_escalate_after_repeats: int = 2
4646
auto_mark_on_delivery: bool = False
47-
actor_idle_timeout_seconds: int = 600
47+
actor_idle_timeout_seconds: int = 0
4848
keepalive_delay_seconds: int = 120
4949
keepalive_max_per_actor: int = 3
5050
silence_timeout_seconds: int = 0

src/cccc/daemon/automation/engine.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ def _int(key: str, default: int) -> int:
8383
nudge_max_repeats_per_obligation=_int("nudge_max_repeats_per_obligation", 3),
8484
nudge_escalate_after_repeats=_int("nudge_escalate_after_repeats", 2),
8585
# Level 2
86-
actor_idle_timeout_seconds=_int("actor_idle_timeout_seconds", 600),
86+
actor_idle_timeout_seconds=_int("actor_idle_timeout_seconds", 0),
8787
keepalive_delay_seconds=_int("keepalive_delay_seconds", 120),
8888
keepalive_max_per_actor=_int("keepalive_max_per_actor", 3),
8989
silence_timeout_seconds=_int("silence_timeout_seconds", 0),

src/cccc/daemon/group/group_settings_ops.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@ def handle_group_settings_update(args: Dict[str, Any]) -> DaemonResponse:
160160
min_value=0,
161161
),
162162
"actor_idle_timeout_seconds": _safe_int(
163-
automation.get("actor_idle_timeout_seconds", 600),
164-
default=600,
163+
automation.get("actor_idle_timeout_seconds", 0),
164+
default=0,
165165
min_value=0,
166166
),
167167
"keepalive_delay_seconds": _safe_int(automation.get("keepalive_delay_seconds", 120), default=120, min_value=0),

src/cccc/kernel/group_template.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ def build_group_template_from_group(group: Group, *, cccc_version: str = "") ->
115115
"nudge_max_repeats_per_obligation": _as_int(automation.get("nudge_max_repeats_per_obligation", 3), 3),
116116
"nudge_escalate_after_repeats": _as_int(automation.get("nudge_escalate_after_repeats", 2), 2),
117117
"auto_mark_on_delivery": coerce_bool(delivery.get("auto_mark_on_delivery"), default=False),
118-
"actor_idle_timeout_seconds": _as_int(automation.get("actor_idle_timeout_seconds", 600), 600),
118+
"actor_idle_timeout_seconds": _as_int(automation.get("actor_idle_timeout_seconds", 0), 0),
119119
"keepalive_delay_seconds": _as_int(automation.get("keepalive_delay_seconds", 120), 120),
120120
"keepalive_max_per_actor": _as_int(automation.get("keepalive_max_per_actor", 3), 3),
121121
"silence_timeout_seconds": _as_int(automation.get("silence_timeout_seconds", 0), 0),
@@ -236,7 +236,7 @@ def preview_group_template_replace(group: Group, template: GroupTemplate) -> Gro
236236
"nudge_max_repeats_per_obligation": _as_int(automation.get("nudge_max_repeats_per_obligation", 3), 3),
237237
"nudge_escalate_after_repeats": _as_int(automation.get("nudge_escalate_after_repeats", 2), 2),
238238
"auto_mark_on_delivery": coerce_bool(delivery.get("auto_mark_on_delivery"), default=False),
239-
"actor_idle_timeout_seconds": _as_int(automation.get("actor_idle_timeout_seconds", 600), 600),
239+
"actor_idle_timeout_seconds": _as_int(automation.get("actor_idle_timeout_seconds", 0), 0),
240240
"keepalive_delay_seconds": _as_int(automation.get("keepalive_delay_seconds", 120), 120),
241241
"keepalive_max_per_actor": _as_int(automation.get("keepalive_max_per_actor", 3), 3),
242242
"silence_timeout_seconds": _as_int(automation.get("silence_timeout_seconds", 0), 0),

0 commit comments

Comments
 (0)