docs: tighten the channel formatting skills changelog entry

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01A2YZQDTw9TQrH3m8NBtVAW
This commit is contained in:
gavrielc
2026-07-10 22:57:28 +03:00
parent cb2bbcc7aa
commit 6d397fc116
+1 -1
View File
@@ -4,7 +4,7 @@ All notable changes to NanoClaw will be documented in this file.
## [Unreleased]
- [BREAKING] **Channel formatting skills (`whatsapp-formatting`, `slack-formatting`) moved out of trunk — WhatsApp and Slack installs must re-run their `/add-<channel>` skill after updating.** Both skills now live on the `channels` branch as part of their channel's payload and are copied in by `/add-whatsapp` / `/add-slack` and the setup channel installers; trunk no longer ships them, so installs without those channels stop carrying channel-specific formatting instructions in every agent's context. **Existing installs:** updating removes the skills from your working tree. For WhatsApp, the next container spawn also regenerates each group's composed CLAUDE.md without the `skill-whatsapp-formatting.md` fragment — agents silently lose WhatsApp formatting rules (asterisk bold, no headers, etc.). For Slack, the `slack-formatting` skill drops out of `~/.claude/skills`, so agents lose the mrkdwn guidance. Re-run `/add-whatsapp` and/or `/add-slack` (idempotent; they now restore the skills), or copy back directly, e.g. `mkdir -p container/skills/whatsapp-formatting && git show origin/channels:container/skills/whatsapp-formatting/instructions.md > container/skills/whatsapp-formatting/instructions.md` (plus the sibling `SKILL.md`, and `container/skills/slack-formatting/SKILL.md` for Slack).
- [BREAKING] **`whatsapp-formatting` and `slack-formatting` container skills moved from trunk to the `channels` branch.** They now install with their channel — `/add-whatsapp` / `/add-slack` and the setup installers copy them in — so installs without those channels stop carrying channel-specific formatting instructions in every agent's context. **Migration:** updating removes both skills from the working tree WhatsApp agents lose the formatting fragment from their composed CLAUDE.md on next spawn, Slack agents lose the mrkdwn skill from `~/.claude/skills`. Re-run `/add-whatsapp` / `/add-slack` (idempotent) to restore.
- **Pre-task script failures back their series off instead of spinning.** A `--script` that errors lands the occurrence as a failed run (`script-skip:error` ack → `failed` status); recurrence reads the series' trailing failed streak and re-arms at `max(cron next, now + 2·2^(n1) min, cap 60)`; after 8 consecutive failures the series is auto-paused with a host-written note in its run log (`ncl tasks resume` revives it). A deliberate `wakeAgent:false` gate is a normal run and never backs off. Also fixed: an explicitly-addressed `<message to>` in a task fire's final text now delivers as a deliberate send (previously suppressed as a turn-reply echo → zero delivery when the agent skipped the MCP tool); identical echoes of an MCP send are dropped in the runner, where the duplication originates.
- [BREAKING] **Scheduled tasks moved from MCP tools to `ncl tasks`.** The six scheduling MCP tools are no longer exposed to agent containers; agents and operators manage tasks with `ncl tasks list/get/create/update/cancel/pause/resume/delete`. New tasks run from a per-agent-group system session rather than waking the chat session that created them, and task writes are not approval-gated inside the owning group. **Migration:** [docs/ncl-tasks-migration.md](docs/ncl-tasks-migration.md).
- **Optional per-container resource caps.** `CONTAINER_CPU_LIMIT` and `CONTAINER_MEMORY_LIMIT` pass through to `docker run` as `--cpus` / `--memory` (`container-runner.ts`). Both empty by default — no flag added, spawn args byte-identical to today — so existing installs are unaffected. Set them to cap an agent container's CPU/memory so one agent can't monopolize the host (e.g. `CONTAINER_CPU_LIMIT=2`, `CONTAINER_MEMORY_LIMIT=8g`). Swap is intentionally not managed here: `--memory` is a hard cap on a swapless host.