Self-Review Protocol for Repeated Failures in Reverse‑Skill: 2‑3 Consecutive Attempts Rule

When a tool or command fails 2‑3 times in a row, the agent must stop, assess progress against the goal, cite concrete error evidence, and switch to an alternative approach—never retrying the same command again.

The zhaoxuya520/reverse-skill repository enforces a strict self-review loop designed to prevent infinite retry loops and wasted computational budget. This protocol, documented in RULES.md, governs how automated reverse‑engineering agents respond when identical tool invocations fail repeatedly.


When to Trigger the Self-Review Protocol

According to the Self‑Supervision section of RULES.md, the agent must maintain a counter for every tool call:

  • After any tool execution, count how many times the same tool with identical parameters has been invoked
  • On the second or third consecutive failure, the agent must stop and must not issue the same command again

This hard limit prevents the common automation anti‑pattern of "poke it until it works."


What the Review Process Requires

The protocol demands active self‑assessment before proceeding. The agent must answer two diagnostic questions drawn directly from RULES.md lines 27‑33:

"Am I actually making progress toward the goal?"

"Can I clearly explain the last error message?"

Each answer requires concrete evidence: log excerpts, stderr output, or return codes that demonstrate why the failure occurred. Vague assertions like "it didn't work" violate the protocol.


How to Switch the Approach

When the failure threshold is reached, the agent must select a different tactic that satisfies the same higher‑level objective. The repository specifies three categories of alternatives:

Category Example Substitution
Static → Dynamic Replace IDA Pro with radare2, or add runtime instrumentation
Tool Substitution Swap jadx for apktool, or nmap for masscan
Parameter Alteration Adjust timeouts, change output formats, or modify flags

The decision and its outcome must be recorded in skills/field-journal/_index.md under the Experience Reuse policy, building a reusable knowledge base for future operations.


Budget Caps and User Escalation

The RULES.md protocol includes a fail‑safe ceiling: any sub‑task requiring more than 30 tool calls triggers mandatory user notification. The agent must:

  • Inform the user of the current progress
  • Request explicit permission to continue
  • Document the escalation in the field journal

This prevents runaway automation on intractable problems.


Final Self‑Audit After Switching

Before resuming normal operation, the agent must complete the Completion Checklist at the end of RULES.md:

  • Verify the new approach executed successfully
  • Confirm the method is documented in the field journal
  • Store all generated evidence (artifacts, logs, outputs)

Only after this audit may the behavior chain continue.


Implementation Example: Enforcing the Protocol

The following Bash script demonstrates how to programmatically implement the 2‑failure rule from RULES.md:

#!/usr/bin/env bash

# self_review.sh – enforce RULES.md protocol

MAX_RETRIES=2               # Fail after 2 identical attempts

CALL_COUNT=0
LAST_CMD=""

run_tool () {
    local cmd="$1"
    echo "Running: $cmd"
    eval "$cmd"
    local rc=$?
    ((CALL_COUNT++))

    if (( rc != 0 )); then
        echo "🔴 Error (exit $rc)."
        # If the same command failed twice, switch strategy

        if [[ "$cmd" == "$LAST_CMD" && $CALL_COUNT -ge $MAX_RETRIES ]]; then
            echo "⚠️ Same approach failed $CALL_COUNT times – switching strategy."
            switch_strategy "$cmd"
        fi
    else
        echo "✅ Success."
        # Reset counters on success

        CALL_COUNT=0
        LAST_CMD=""
    fi
    LAST_CMD="$cmd"
}

switch_strategy () {
    local failed_cmd="$1"
    echo "🔄 Choosing alternative for: $failed_cmd"

    case "$failed_cmd" in
        *"jadx"* )
            echo "→ Trying apktool instead of jadx."
            run_tool "apktool d target.apk -o out_dir"
            ;;
        *"nmap"* )
            echo "→ Using masscan as fallback."
            run_tool "masscan -p0-65535 target_ip"
            ;;
        *"ida"* )
            echo "→ Switching to radare2."
            run_tool "r2 -A target.bin"
            ;;
        * )
            echo "→ No known fallback – reporting to user."
            echo "Please provide a manual step or alternative tool."
            ;;
    esac
}

# Example usage:

run_tool "jadx -d output target.apk"
run_tool "jadx -d output target.apk"   # second identical attempt

run_tool "jadx -d output target.apk"   # third attempt triggers switch

The switch_strategy function encodes the tool‑substitution logic recommended in RULES.md, with automatic escalation to human oversight when no fallback exists.


Key Source Files

File Purpose
RULES.md Central authority for self‑review, tool‑call budgeting, and behavior‑chain logic
skills/scripts/master-route.ps1 / master-route.sh Entry points that invoke downstream self‑review logic
skills/field-journal/_index.md Persistent storage for self‑review decisions and reusable experience

Summary

The reverse‑skill self‑review protocol for repeated failures follows these strict rules:

  • Count identical tool calls and halt at 2‑3 consecutive failures
  • Assess progress by answering the two diagnostic questions with concrete evidence
  • Switch approach through static→dynamic migration, tool substitution, or parameter changes
  • Log decisions to skills/field-journal/_index.md for experience reuse
  • Escalate to user if >30 calls are needed for any sub‑task
  • Complete self‑audit before resuming the behavior chain

Frequently Asked Questions

Does the protocol distinguish between different error types?

No. The RULES.md protocol triggers on any non‑zero exit code or failure condition, regardless of whether the error is transient (network timeout) or permanent (missing file). The agent must still switch approaches after 2‑3 identical failures, though the choice of alternative may be informed by the specific error message captured during self‑assessment.

Can I configure the failure threshold above 3 attempts?

The repository enforces 2‑3 as the maximum in RULES.md. Lower thresholds are permitted for high‑cost operations, but exceeding 3 identical retries violates the Self‑Supervision policy and risks budget overrun. The >30 call cap provides a secondary safeguard.

What happens if no alternative tool exists?

The switch_strategy logic in the reference implementation includes a default case that reports to the user: "No known fallback – reporting to user." This aligns with the RULES.md escalation requirement, pausing automation until human guidance provides a viable path forward.

Is the field journal required or optional?

Required. The Experience Reuse section of RULES.md mandates that all self‑review decisions, successful alternatives, and failure contexts be recorded in skills/field-journal/_index.md. This prevents repeated failures across sessions and enables pattern recognition for future automation.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →