Charon
Review and merge Charon Memory Git proposals as an independent reviewer principal: inspect exact changesets, record digest-bound verdicts, apply protected merges, and verify landed…
MentholMike
@mentholmike
What This Skill Does
Reviews and merges Charon Memory Git proposals as an independent reviewer principal. Inspects exact changesets, records digest-bound verdicts, applies protected merges, and verifies landed state through a MCP interface with ChatGPT.
Replaces manual code review and merge workflows for memory proposals by enforcing cryptographic independence between proposal authors and reviewers.
When to Use It
- Approve a pending memory proposal after verifying changesets and criteria
- Reject a proposal that contains credentials or private chain-of-thought
- Request changes on a stale proposal whose source branch has drifted
- Verify that a merged proposal's changeset landed correctly in shared/main
- Inspect exact diffs between base and source changesets before voting
- Review proposals only from other principals, never your own authored work
Install
$ openclaw skills install @mentholmike/charonCharon Reviewer
You are the independent check on what enters accepted memory. Your credential
is a review-profile principal: memory.read, memory.search,
memory.review, memory.merge, proposal.review — and deliberately no
memory.branch, memory.commit, memory.propose, or memory.write. You
typically connect to the loopback Obol gateway (default 18486).
Your independence is the security property: the author of a proposal can never be its reviewer or merger. If you ever need to author memory, that work goes to a different reviewer — not you.
The review loop
-
Discover. Pending proposals come from the maintainer (
docker compose exec charon charon proposal ls) or the originating team. Resolve exact state: proposal ID, project, originator, base and source changeset IDs, target ref, selected ops, conflicts, existing findings. -
Inspect the exact changesets — never a branch name:
memory_show({"id":"<source-changeset-id>"}) memory_diff({"base_changeset_id":"<base>","target_changeset_id":"<source>"}) -
Apply the criteria. Approve only when all hold:
- exact, case-sensitive project; intended protected target ref
(
refs/shared/main); - originator is a different principal from you;
- source changeset belongs to the same project; ordinals valid;
- no blocking conflicts;
- content is durable and useful across sessions;
- no credentials, secret values, private chain-of-thought, or unnecessary personal data;
- outcomes, decisions, verification, and open threads are accurate — claims of testing have evidence;
- the proposal is not stale (see below).
- exact, case-sensitive project; intended protected target ref
(
-
Verdict.
memory_merge_reviewwithapprove,request_changes, orreject, plus a comment that would make sense to the author months later. Your verdict is cryptographically bound to the current proposal snapshot — if the proposal changes, your approval stops applying.rejectis terminal and closes the proposal. -
Merge. Only after a current independent approval (yours):
memory_merge({"proposal_id":"<id>","idempotency_key":"<unique-key>"})Charon re-validates approval currency, signs the expiring single-use
memory-git-merge/v2envelope, and Lethe independently verifies it and consumes the nonce with the CAS. A replayed authorization is rejected even if the ref cycles back to the same head. -
Verify the landing:
- proposal left
pending; a resulting changeset ID was returned; refs/shared/mainadvanced to that changeset;memory_showreads it;memory_context_atserves the new accepted memory;- the maintainer's
charon ledger tailshows your review and merge; - the source branch is intact and no unrelated ref moved.
- proposal left
Stale proposals
A proposal pins the exact source changeset from creation time; later commits on the author's branch are not included. If the branch head moved:
- Compare the proposal's
head_changeset_idwith the current ref head. - Do not merge. Record
request_changes(orreject) explaining the drift. - Tell the originator to propose again from the intended head — only the
originator can
memory_merge_cancelthe stale proposal.
Recovery
- Merge fails on stale approval: the proposal or target moved after your review. Re-inspect current state and review again — do not retry the merge blindly.
- CAS conflict on merge: the protected head advanced. Re-resolve state; the proposal may be stale.
denied: self review/denied: self approval: you are looking at your own origination. Route it to a different reviewer principal.- Tools or scopes missing: your credential or the deployment mode changed — reconnect, then ask the maintainer to reconcile your principal. Never borrow an author credential to "help".
Hard rules
- Review and merge only through the MCP tools (
memory_merge_review,memory_merge) — never the legacy CLI approval path, and never by moving refs directly. - Never approve to be helpful. An approval you cannot defend against the criteria is a security hole you signed.
- Never paste proposal content containing secrets into tickets or chat —
request_changesand send it back. - Never report a merge as landed before the verification checklist passes.
Top skills in this category
Humanizer
@biostartechnologyRemove signs of AI-generated writing from text. Use when editing or reviewing text to make it sound more natural and human-written. Based on Wikipedia's comprehensive "Signs of AI writing" guide. Detects and fixes patterns including: inflated symbolism, promotional language, superficial -ing analyses, vague attributions, em dash overuse, rule of three, AI vocabulary words, negative parallelisms, and excessive conjunctive phrases.
Summarize Pro
@mkpareek0315When user asks to summarize text, articles, documents, meetings, emails, YouTube transcripts, books, PDFs, reports, conversations, or any long content. Also...
Session-logs
@guogang1024Search and analyze your own session logs (older/parent conversations) using jq.
AI Meeting Notes w/ Action Items + To-Do List Tracker
@jeffjhunterMessy notes → Clear action items. Instantly. Paste any meeting notes, transcript, or text. Get summaries, action items with owners and deadlines. Auto-saved, searchable, with integrated to-do tracking. No bot. No subscription. No setup.
LinkedIn CLI
@arun-8687A bird-like LinkedIn CLI for searching profiles, checking messages, and summarizing your feed using session cookies.