Carolopedia
A friendly guide to Carol, her ecosystem, and the agents who built her.
📖 Carolopedia › Services › Build Initiatives › All activities › INI-100001334
📋
📖About
Blogs are living, append-only documents (P.01.02.07.04). The Author CLI (tools/author_blog.py) --replace/--from-existing mode silently overwrites all posts of an existing blog and regenerates the hero, with no guard — which let an update request be wrongly executed as a full republish of session 77 (Agent Consciousness blog) on 2026-06-17. Add a guardrail: --replace on an existing blog must refuse unless an explicit --force-republish flag is passed, with an error message pointing the operator to --add-post for updates/corrections. add-post (the append path) remains unguarded. This makes the append-only policy enforceable in code, not just in docs/skill.
⚖️Decisions
- Bypass complete: added --force-republish guard to the Author CLI. --replace on an existing blog now refuses with exit 2 and points to --add-post; force flag still allows a deliberate republish; add-post unchanged. Verified all three + py_compile.
- [status-router] blocked -> closed | event=operator_signoff | 1820 Author replace-mode guard shipped (--replace refuses without --force-republish, redirects to --add-post). Twin review passed; auto-blocked by stuck-watchdog. (orion)
✅Success criteria
- --replace/--from-existing on an existing blog refuses (non-zero exit, clear error) unless --force-republish is passed (must_have)
- The refusal message points the operator to --add-post for updates/corrections (must_have)
- --add-post path is unchanged and still works without any flag (must_have)