Releases: ChesterRa/cccc
Releases · ChesterRa/cccc
v0.2.8
Release Notes (0.2.8, Stable)
- Encoding & I18N
- Harden mailbox decoding for non‑ASCII: try UTF‑8 (BOM/strict), then UTF‑16 (BOM and NUL‑heuristic LE→BE) before GB18030; fallback Latin‑1 only as last resort. Prevents mojibake when peers write UTF‑16.
- Add Encoding Discipline to prompts and peer guides: always write .cccc/mailbox/**/{to_user.md,to_peer.md,patch.diff} as UTF‑8 (no BOM); avoid binary/unknown encodings or escaping that alters non‑ASCII text.
- Delivery & Outbox
- Unified Outbox (.cccc/state/outbox.jsonl) as the single source for outbound events.
- Bridges read Outbox and send summaries; orchestrator clears mailbox files after logging to avoid repeats.
- Telegram Bridge
- Switch API calls to JSON/UTF‑8 (application/json; charset=utf-8) for sendMessage, etc., fixing non‑ASCII corruption.
- Add outbound file ACK sidecar .sent.json; avoid re‑sending already delivered files.
- Preamble & Startup
- Lazy preamble: merge one lean SYSTEM block into the first user message per peer; no startup SYSTEM spam.
- Reset preamble state on orchestrator start; log lazy-preamble-sent in ledger.
- Insight & REV Governance
- Enforce one trailing fenced ```insight block on to_peer (intercept if missing); insight is meta‑only by guidance (no runtime novelty caps).
- Lightweight REV habit: track review/revise; gentle reminders only (non‑blocking).
- Mailbox & NUDGE
- Inbox pull flow with [NUDGE] guidance; ACK by file move or explicit token, reducing paste races.
- Robust read/write with explicit UTF‑8 for internal state files.
- Weekly Diary
- Path clarified to .cccc/work/docs/weekly/YYYY-Www.md (non‑authoritative, light‑touch habit).
- Housekeeping
- Multiple RCs (rc1–rc4) validated the UTF‑8 JSON transport and decoding changes end‑to‑end.
- Documentation refined to keep rules crisp (mailbox/outbox, insight, encoding, RFD).
- Known Issues
- If a peer writes non‑text/binary‑mangled content, the orchestrator cannot reconstruct valid Unicode. The prompt now instructs peers to emit UTF‑8; we can add a quiet ledger warning for non‑text writes if desired.
- Upgrade Notes
- Restart orchestrator and Telegram bridge after upgrading to load new prompt and decoder.
- Ensure environment locales are UTF‑8 (e.g., LANG=en_US.UTF-8) for external tools invoked by peers.
0.2.7
Highlights
- Quiet Boot + First‑Message Preamble
- No automatic SYSTEM injection at startup.
- The full (lean‑but‑complete) SYSTEM prompt is merged into the first user message per peer and sent as a single instruction. /refresh re‑sends the same text (single source).
- Clear “Why” section added to the SYSTEM prompt and PEERA/PEERB docs to enforce expert‑like collaboration (reflection, explicit next step/counter, TODOs that require consent).
- Clear “Why” section added to the SYSTEM prompt and PEERA/PEERB docs to enforce expert‑like collaboration (reflection, explicit next step/counter, TODOs that require consent).
- Insight Intercept (Structure Invariant)
- Outbound to_peer must end with exactly one trailing fenced ```insight block.
- Missing insight triggers a short, actionable intercept message; message is not forwarded until corrected. No timers, low friction.
- Unified Outbox (JSONL) for Reliable Delivery (Multi‑bridge Ready)
- Core appends outbound events to .cccc/state/outbox.jsonl:
- to_user: { id, ts, peer, text, eid }
- to_peer_summary: { id, ts, from, to, text, eid }
- Bridges consume Outbox (not mailbox files), send to IM, and record ack in ledger (bridge‑outbox‑sent). Idempotent via eid.
- Solves previous race where to_user.md could be cleared before bridges sent it; prepares for future multi‑bridge (Telegram, Slack, Email).
- to_peer Delivery Robustness
- Mailbox‑origin to_peer bypasses low‑signal filter (still subject to insight intercept and RFD/path gates).
- Inline patch in to_peer: preflight/apply/commit; clears to_peer.md; emits to_peer_summary to Outbox for external summary.
- Mailbox reads hardened (UTF‑8 with errors='replace') to avoid losing events on decoding anomalies.
- Telegram Bridge Improvements
- Consumes Outbox to send to_user and to_peer_summary; stops polling mailbox files.
- First‑message preamble fixed (imports prompt_weaver from .cccc reliably).
- File ACK: writes .sent.json with metadata and ignores it on scan. Summaries include optional captions and send‑as override.
- Weekly Diary Path, Docs, and README
- Weekly diary moved to .cccc/work/docs/weekly/YYYY-Www.md (non‑authoritative).
- README adds the practical “end every message with a trailing ```insight” rule and explains the first‑message preamble behavior.
Breaking Changes
- Bridges must consume Outbox (.cccc/state/outbox.jsonl) rather than polling mailbox files for to_user/to_peer summaries.
- Startup no longer injects SYSTEM by default; the preamble is added to the first user message per peer.
- Some config keys removed to keep things simple; only delivery.lazy_preamble.enabled remains.
Migration Notes
- If you have custom bridges:
- Tail .cccc/state/outbox.jsonl and send only events where type ∈ { to_user, to_peer_summary }.
- Maintain a small seen‑ids set (eid or id) for idempotence; write an ack entry to ledger if needed.
- If you relied on mailbox polling for summaries, remove that logic and switch to Outbox consumption.
- Keep using .cccc/mailbox//to_user.md and to_peer.md to communicate with the orchestrator; the core clears these after logging to Outbox.
Quality Notes
- Missing insight intercept prevents accidental low‑signal to_peer.
- Robust mailbox decode (UTF‑8 with replacement) eliminates intermittent “non‑delivery” due to bad bytes.
- Inline patch handling now cleans source file and broadcasts a summary event consistently.
Internal / Housekeeping
- Prompt weaver refined (lean, complete, single source); added “Why” purpose lines (insight/TODOs).
- PEERA/PEERB docs aligned with “every message has one ```insight” and the collaboration ethos.
- Removed misleading startup message about sending SYSTEM; behavior is now quiet boot + lazy preamble.
- Simplified config surface; default behavior aims for reliability and minimal ceremony.
v0.2.6 — Self‑check aligned & dialog rhythm stable
What’s new
- Self‑check text aligned with cli_profiles.yaml:
[Self-check] Briefly answer (≤2 line each):- Any drift from goal?
- What’s still unclear? Any new confusion created? Any better ideas?
- What was missed?
- The single next check (hook/path/metric).
Continue only after answering.
- Self‑check trigger broadened: counts all meaningful handoffs (User/System/PeerA/PeerB), filters NUDGE/low‑signal, so deep conversations reliably get periodic reflect prompts.
- Telegram summaries (from 0.2.5): preserve newlines and are configurable:
- max_msg_lines / max_msg_chars
- peer_message_max_lines / peer_message_max_chars
- CLI additions (from 0.2.5): cccc bridge restart / logs / version
- Packaging & repo hygiene: single‑source scaffold (build‑time sync), clean ignores for runtime/docs/tests/local venv
Upgrade notes
- After upgrading:
- cccc init --force # refresh scaffold
- Check .cccc/settings/telegram.yaml for the new line caps
- Optionally update inbound_suffix as per README to keep dialog “human‑like”
- cccc bridge restart
- Verify: ledger shows kind:self-check periodically; in Telegram, multi‑line summaries are readable.
v0.2.5
v0.2.5 — Telegram‑first RC → GA
Highlights
- Telegram summaries now preserve line breaks (multiline) with configurable caps:
- max_msg_lines / max_msg_chars (general summaries)
- peer_message_max_lines / peer_message_max_chars (Peer↔Peer)
- Bridge cwd fixed: logs write to .cccc/state/bridge-telegram.log; status validates live PID.
- CLI additions: cccc bridge restart / logs / version.
- Telegram‑first README: install → init → doctor → token → run;Minimal “First Landing Checklist”;Typical Session (Explore→Decide→Build)。
- Prompt upgrades (lightweight): human‑like rhythm with short templates (IDEA / Decision ≤6 lines / Reflect 2 lines)。No hard quotas.
Changes
- Packaging: single‑source scaffold with build‑time sync(scripts/sync_scaffold.py);clean repo ignores (state/logs/work/mailbox/docs/tests/venv)。
- Workflow: .github/workflows/release.yml auto‑publishes TestPyPI for rc tags and PyPI for stable tags。
- Inbound suffix guidance(sample in README):nudges peers to explore first, avoid pure ACK, capture reflect。
Upgrade Notes
- After upgrading:
- cccc init --force # refresh scaffold from package resources
- Review .cccc/settings/telegram.yaml: new keys
- max_msg_lines, peer_message_max_lines
- Optional: update inbound_suffix in .cccc/settings/cli_profiles.yaml(see README samples)
- cccc bridge restart
- For first‑time users:
- Copy PEERA.md → CLAUDE.md;PEERB.md → AGENTS.md;put brief in PROJECT.md
- Ensure CLI commands (claude/codex) are on PATH or set commands.peer*/env vars