Repository navigation
v0.108.0
Owner (2026-10-20): "quay lại nâng cấp ccc đi uat đi sao mà nó dở quá luôn á auto kém chất lượng kết quả đạt chậm". Measured on ai-game-studio, 71 min after the 0.105.0 relaunch (9 rooms, 1,264 API calls):
- 14 cards were approved and 2 PRs merged; 15 approved cards waited 3.4–4.8 h.
- 25 of 59 open PRs conflicted and 14 sat on a branch other than main.
- 10 of 33 returns were a room getting another role's card.
- The team ran at 1,068 calls/h, 3.8× the day before. The Claude session limit had stopped every room 3 times in the 36 h before, 191 min in all.
- GitHub Actions on that repo had failed on billing for 12 h, and nothing told the owner.
Added
8sync ccc auto merge. It merges approved cards in code, with no model turn. Each card's PR must target the repo's default branch (gh repo view, cached a day; when it can't be read, nothing moves), be MERGEABLE, and have the card's SHA as head. It merges with--squash --delete-branch --match-head-commitand closes the card withmerged <sha>. A stacked card runs after its root. A PR whose base branch was already merged is retargeted and sent back toreview, so its new diff is reviewed before it merges. A conflict, a moved head, or another base sends the card back toreadywith the reason. The lead runs it first on every turn, and itsauto waitwakes on a new approved card.- Merge permission per project. It used to be stored per session, so the 19:40 relaunch dropped it and the merge guard then refused lead's
gh pr merge. The owner's answer is now stored per project root for at most 8 h in~/.local/state/8sync/ccc/grants/self-merge.projects.json, andauto status --jsonshows it asself_merge.- What grants it: only an option label the owner picked, read back from Claude Code's own transcript under
~/.claude/projects/every time the permission is used. The label must be "Tự merge…" / "Self-merge…" / "Auto-merge…" on any question, or "Duyệt tất cả" / "Chỉ merge" on aShipquestion. Free text and labels with a negation (không, chưa, tắt, no, not, off, later, sau) grant nothing. - Revoking: any other
Shipanswer revokes it. - Forgery: a hand-written store entry grants nothing. The guard also denies writes to the store, including through
..paths. - The guard allows exactly
gh pr merge <number> [--squash|--merge|--rebase] [--delete-branch] --match-head-commit <card sha>, only for a PR of an approved card whose base is the default branch.
- What grants it: only an option label the owner picked, read back from Claude Code's own transcript under
8sync ccc auto reopen <id> [--note]. A card closed by mistake goes back to the lane it came from, keeping its notes, SHA and PR.8sync ccc auto ci [--json]andciinauto status:ok,failing,billingorunknown, from the last 5gh runresults plus the annotations of the newest failed run. The reading is cached 10 min, and status never runsghitself.billing(payments failed or spending limit) shows in HQ's Office header and in status text, sends one owner alert a day, and tells rooms not to wait on CI.8sync ccc risklists the skills to call (skills; docs-only diff →/sec).
Changed
- The board checks the PR, not just the text.
- Moving a card into
qaorapprovedreads its PR withgh pr view(20 s limit). It refuses a base other than the default branch, a conflicting PR, an already-merged PR, a head different from--sha, or agherror. doneneeds evidence with a SHA or the<lệnh>: <kết quả>shape. "chưa" no longer closes a card.- Leaving
blockedkeeps the bounce count.blocked → reviewneeds agate <sha>note matching the current head.
- Moving a card into
- Cards go to the right role. A card's role comes from the tag at the start of its title (
[ui],[dev],[rd], …) or--roleonadd/move.- In
ready, dev rooms (dev, dev2, backend, core, …) get only[dev]or untagged cards, and ui rooms only[ui]or untagged. - Cards for a role no building room takes (
[game-designer],[art-director], or[rd]/[arch]sitting inready) are never handed out;auto lintandauto boardlist them for the lead. The team is the registered rooms plus the live Claude Code rooms of the project, so rooms HQ reopened count. - Adding or relabelling an
[arch]card wakes the arch room once, and so does an arch card moving intoreview.
- In
- Fewer turns spent polling:
- Rooms started by
auto up/revivewait inauto wait --timeout 1800(their settings raiseBASH_MAX_TIMEOUT_MS). Other rooms keep the 540 s default under Claude Code's 10-min Bash limit. A wake with a card claims it and works on it in the same turn, and a lead woken bymergerunsauto merge. - The cron backup runs every 30 min (was 10), and
--looprefuses less than 30 min. Rooms without a lane (arch, rd, ops, docs, sec) get no cron and no HQ auto-tick; they work on cards and messages only. - HQ's auto-tick skips a session that has its own cron for 35 min after its last turn, and skips lane-less rooms entirely.
auto on/pause/offclears those marks.
- Rooms started by
- Gates run once:
/shipand the lead's merge call8sync ccc riskand run only the skills it lists, instead of/sec+/rules+/aup-auditon every PR.- QA runs the test gate once per PR head SHA and records
gate <sha>: <lệnh>: <kết quả>on the card; review and lead reuse it until the head changes.
- The QA room runs on Sonnet (was Haiku): it gates visual UAT, and it had bounced cards that review then judged differently.
Removed
- OmniRoute. Owner (2026-10-20): "xóa sạch omniroute, ảnh github,… all liên quan omniroute cho lành nhé sài ccc chính chủ được rồi". The free providers it could route (LLM7, Gemini Free) never carried one omp turn, and both train on prompts. Gone:
scripts/vps/omniroute/and.github/workflows/omniroute-image.yml;- on the VPS: the container and its data volume,
/srv/apps/omniroute, the/router-aiCaddy routes and theirimport, theomniroute-updateandvps-cleantimers; - on GitHub: the
omniroute-router-aiGHCR package and its workflow runs; the org's "public packages" setting is back off; - locally: the
omnirouteprovider in omp'smodels.yml, the guide and PDF; the LLM7 and Gemini keys made for it were deleted. --modelexamples inccc auto omphelp and errors now read<provider>/<model>. Theccc auto omp on --modelfeature itself stays: it works with any non-Claude omp provider.
Install or update: curl -fsSL https://get.8syncdev.com/install | sh · 8sync up · then 8sync ccc kit
What's Changed
- v0.108.0: ccc auto lands approved work, board checks PRs and roles, fewer polling turns, CI billing health; remove OmniRoute by @8syncdev in #128
Full Changelog: v0.107.0...v0.108.0