autonomic-bot ef58e33102 advisory-scan: derive windows from a compose diff (--compose-to)
Typing --from/--to/--image by hand means someone has to remember the recipe also
bumped its redis. That is how sidecar CVEs went uncounted for months. Point this
at a PR's compose.yml and it reads the windows off the diff instead.

  advisory-scan.py plausible --compose-to <.../branch/<pr>/compose.yml>
    -> community-edition: v2.0.0 -> v3.2.1
    -> clickhouse-server: 23.4.2.11-alpine -> 24.12-alpine
    -> 6 CVEs, identical to the hand-specified args

Details that mattered:

- keyed by SERVICE, not image repo. plausible moved plausible/analytics ->
  ghcr.io/plausible/community-edition; keyed by repo that reads as one image
  vanishing and an unrelated one appearing, and the app window - the one carrying
  the critical - is lost entirely.
- the baseline is the repo's DEFAULT BRANCH resolved from the API, never assumed
  to be main, because several recipes keep a stale main beside a live master.
- image names are matched against advisory sources BOTH ways: an image name is
  often longer than its source repo (clickhouse/clickhouse-server vs
  ClickHouse/ClickHouse) and sometimes shorter (redis vs redis/redis). One
  direction silently dropped the clickhouse window.
- credentials go in an Authorization header, never the URL: in-URL creds leak
  into shell history and process lists, and urllib mis-parses a password
  containing a colon.

--from/--to/--image remain for finer-grained checks (scanning a window that is
not a literal compose diff). 71 tests; discourse 140 / gitea 2 / mailu 2
unchanged.
2026-08-11 19:24:24 +00:00

cc-ci-orchestrator

Orchestrator workspace for building the cc-ci Co-op Cloud recipe CI server. The plan, launch tooling, and loop prompts live in cc-ci-plan/; see AGENTS.md for the roles and operating model. Secrets (.testenv) are gitignored — never commit them.

Run the orchestrator in tmux (survives disconnects + closing your laptop)

Keep this supervising session alive on the host with tmux, and use --remote-control so you can watch/steer it from claude.ai/code (or the mobile app).

# 0. Exit any running orchestrator session first — a conversation can't be resumed while it's live:
#      /exit        (inside Claude)   or Ctrl-D

# 1. Start a detachable tmux session on this host
tmux new -s orchestrator

# 2. Inside tmux, resume the orchestrator conversation WITH remote control:
claude --resume autonomous-orchestrator \
  --remote-control "autonomous-orchestrator" \
  --dangerously-skip-permissions
#    - If name-resume opens a picker instead of resuming directly, choose "autonomous-orchestrator".
#    - Or resume by the stable session id (more deterministic in a fresh pane):
#        claude --resume 34a80a99-b37e-4809-b8da-ccc9fafe785e \
#          --remote-control "autonomous-orchestrator" --dangerously-skip-permissions

# 3. Detach — the process keeps running:  press Ctrl-b, then d

Reconnect later

  • On this host: tmux attach -t orchestrator
  • From anywhere: claude.ai/code → the autonomous-orchestrator session

Why it survives: tmux keeps the claude process alive across SSH disconnects and your laptop closing; remote-control runs outbound from this host to Anthropic, so it stays connected regardless of the viewer. After a host reboot, re-run steps 12.

Two different "names": --resume <name|id> selects the conversation to restore (shown in the /resume picker); the --remote-control "<name>" value is only the web display label and resumes nothing. Resuming reuses the same session id each time (stays 34a8…) — don't pass --fork-session unless you intend to branch a new conversation.

Already inside a live session and just want the web surface? Run /remote-control — no exit/resume.

Kick off / supervise the loops

cd /srv/cc-ci/cc-ci-plan
./launch.sh start                       # Builder + Adversary loops (interactive --remote-control in tmux) + watchdog
./launch.sh status                      # session + DONE state
./launch.sh logs builder|adversary|watchdog
./launch.sh stop

Full supervision guide, credential map, and the Incus VM fallback are in cc-ci-plan/kickoff.md and cc-ci-plan/plan.md §1.5.

S
Description
Autonomous orchestrator: planning, launch, and setup for the cc-ci Co-op Cloud recipe CI server
Readme
1.9 MiB
Languages
Python 78.7%
Shell 12.1%
Nix 8.5%
HCL 0.7%