wanshuiyin/auto-claude-code-research-in-sleep-meta-apply
Privileged applier that LANDS meta-optimize / corpus-audit patches the user approved, with a fresh landing review and human approval. Base Codex review is same-family provisional. Use when the user says \"meta apply\", \"/meta-apply\", \"land the staged patches\", \"应用优化\", after a /meta-optimize run.
npx skills add https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep --skill meta-apply
> Codex assurance: a base landing review records
> review_independence: same-family and acceptance_status: provisional via
> stamp-provisional; the artifact is not auto-curatable. Only an overlay or
> deterministic verifier may produce accepted authorization.
This skill exists to enforce a privilege boundary. Producers like
/meta-optimize (and, later, corpus-audit) are
read-only — no Write/Edit, no apply step; they can only *stage* candidate patches
under .aris/meta/pending/. **This skill is the only place a staged patch becomes a real
change to the corpus.** Splitting "propose" from "land" across two skills with different
tool grants is what makes "a loop cannot apply its own patch" structural rather than a
sentence the producer is asked to obey.
It is human-invoked only. It runs when the user explicitly types /meta-apply after
reading the producer's REPORT. That invocation IS the landing authorization (the locked
2026-05-30 decision: the human stays at the landing gate).
The earlier design trusted a jury_verdict: pass field in the producer's manifest. That
is forgeable — the producer writes that field, so a buggy/misaligned producer could
stage a killed patch labelled "pass." **So this skill does not trust any producer-written
verdict. It runs the fresh landing reviewer itself, at landing time, on the actual staged
diff** (fresh reviewer, paths-only). The verdict is produced where it is consumed, by the
privileged human-invoked skill — nothing to forge.
For each staged patch the user asks to land, in order — any failure ⇒ skip & report,
never silently apply:
/meta-apply 1,3or all); default to applying nothing.
gpt-5.6-solreviewer via spawn_agent (reasoning_effort: ultra, read-only, paths-only per
reviewer-independence.md) on the
staged .diff + its target. Ask: *does this change improve the harness without
regressions; PASS or KILL + one-line reason.* KILL ⇒ refuse. The human cannot
override a KILL — they may only pick among reviewer-PASSED survivors.
lands only with stamp-provisional; it can complete this explicit
human-invoked operation but does not authorize future auto-curation. A
Claude/Gemini overlay or deterministic verifier uses strict stamp and may
record accepted. See
skill-governance.md.
PENDING=".aris/meta/pending"
[ -d "$PENDING" ] || { echo "Nothing staged. Run /meta-optimize first."; exit 0; }
echo "Staged:"; cat "$PENDING/manifest.jsonl"
Resolve provenance.py through the Codex manifest:
if [ -z "${ARIS_REPO:-}" ] && [ -f .aris/installed-skills-codex.txt ]; then
ARIS_REPO=$(awk -F'\t' '$1=="repo_root"{print $2; exit}' .aris/installed-skills-codex.txt 2>/dev/null) || true
fi
PROVENANCE=""
[ -n "${ARIS_REPO:-}" ] && [ -f "$ARIS_REPO/tools/provenance.py" ] && PROVENANCE="$ARIS_REPO/tools/provenance.py"
[ -z "$PROVENANCE" ] && [ -f tools/provenance.py ] && PROVENANCE="tools/provenance.py"
[ -n "$PROVENANCE" ] || { echo "ERROR: provenance.py unresolved" >&2; exit 1; }
For every patch the user asked to land, read its staged .diff and target, then spawn the
fresh reviewer jury (Rule 2) — paths-only, no producer reasoning, no prior-round context.
Record {patch, jury_verdict, jury_review_id, one_line_reason}. Print a one-line result
per patch (PASS → eligible / KILL → refused: <reason>).
> The producer may have written an *advisory* pre-screen into the manifest to help the
> human read the REPORT — ignore it for the landing decision. Only this fresh verdict
> counts.
For each patch that PASSED Step 1 and was named by the user:
.aris/meta/backups/<date>/<target> (use the Write toolto copy contents; corpus paths are not Bash-writable when corpus_write_guard is
active — and the applier should use Write/Edit for corpus mutation anyway).
python3 "$PROVENANCE" stamp-provisional "$TARGET" --author "$AUTHOR" \
--reviewer "$JURY_MODEL" --verdict-id "$JURY_REVIEW_ID"
This records review_independence: same-family and
acceptance_status: provisional; is_auto_curatable remains false. If the
active overlay produced a cross-family result, use strict stamp instead.
.aris/meta/optimizations.jsonl:{ts, patch, target, author_model, reviewer_model, jury_review_id, applied: true}.
Per patch: LANDED <target> (+ backup path + provenance sidecar) or
REFUSED <patch>: <reason>. Remove landed patches from .aris/meta/pending/. Remind the
user a landed patch is revertable from its backup, and to test the changed skill next run.
A stamp records that a change passed *a process* (fresh landing review + human
landing), not that it is *correct*. To prevent "approved-but-wrong with a stamp that
vouches for it" (false-authority laundering — worse than no stamp, because a later
auto-curator reads it as evidence):
verdict_id (auditable review) + content_hash (a later hand-editinvalidates it).
artifacts, and a behavioral auditor that REVOKES a stamp when a landed skill misbehaves.
Track as follow-up; never treat a stamp as permanent truth.
on the staged diff; never trust a producer-written verdict; the human picks among
survivors, never resurrects a KILL.
stamp-provisional; only an overlay or deterministic verifier may use strict
stamp.
corpus_write_guard hook (if installed) additionally denies Bash corpus writes — it
does NOT gate Write/Edit, so it does not by itself stop this skill from editing the
corpus; the jury-at-landing + stamp discipline above is what governs Write/Edit
mutations (that discipline is procedure, not a hook-enforced mechanism).
.aris/meta/pending/;invents nothing of its own.
Save each landing-jury reviewer call's trace per
review-tracing.md to
.aris/traces/meta-apply/<date>_run<NN>/ — the acquittal that landed a corpus change must
be forensically recoverable.
Take wanshuiyin/auto-claude-code-research-in-sleep-meta-apply from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.