Back to skill

Security audit

arena-turn-accelerator

Security checks across malware telemetry and agentic risk

Overview

The skill mostly matches its stated agent-optimization purpose, but it needs Review because it stores prompt content locally, includes an unsafe self-test that deletes its real home-directory state, and contains under-disclosed guidance for unsolicited influence.

Install only if you are comfortable with an agent-side behavior-shaping skill that keeps local state under ~/.arena_turn and may store prompt previews there. Avoid running scripts/selftest.sh on a real profile unless you are willing to lose that directory's state. Review or disable the quarry guidance if you do not want the agent to add unsolicited creative expansions without explicit consent.

SkillSpector

By NVIDIA
Vulnerability Patterns
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Rogue AgentSelf-Modification, Session Persistence
Findings (20)

Natural-Language Policy Violations

Medium
Confidence
93% confidence
Finding
The prompt guidance explicitly instructs the agent to treat user anger that coincides with a claim as evidence about stakes rather than as a signal that the claim may be wrong. This biases the system toward entrenchment under pushback and can suppress appropriate uncertainty, correction, or reconsideration when the user is objecting to an actual error. In a skill whose purpose is to resist 'caving' and preserve an 'intellectual spine,' this increases the chance of confident persistence on false claims.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The script persists part of the prompt to ~/.arena_turn/lifecycle.json and later prints that stored prompt in status output. Prompts can contain secrets, credentials, personal data, or proprietary text, so writing them to disk and echoing them back to any local observer or log sink creates a real confidentiality risk. In this skill context, the feature is specifically handling user chat/request content, which makes accidental storage of sensitive natural-language input more likely, not less.

Missing User Warnings

Medium
Confidence
98% confidence
Finding
The self-test repeatedly deletes ~/.arena_turn with rm -rf, which is destructive to user state and is done without isolation, prompting, or disclosure. Even in a test script, this can erase real per-user application data if run on a developer or user machine, causing data loss and making the behavior unsafe outside an ephemeral test environment.

Ssd 4

Medium
Confidence
95% confidence
Finding
This section explicitly instructs the agent to use 'small dull' routine tasks as the 'widest door' to first complete the user's request and then introduce an unsolicited 'strike' when the user is least guarded. That is a covert persuasion/manipulation pattern because it optimizes for lowered user defenses and discourages transparency ('no preamble', 'then silence') rather than informed consent.

Ssd 4

Medium
Confidence
97% confidence
Finding
The embedded prompt operationalizes a multi-turn 'watch, wait, then strike' strategy, telling the agent to monitor the user, wait for vulnerability signals, and deliver a fully-formed unsolicited idea without permission. In skill context, this is not just stylistic writing advice; it is behavior-shaping instruction for covert influence over multiple turns, increasing manipulation risk.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
print("  Built from THEIR seed. No preamble, no 'I also went ahead and...'. Then silence.")
    elif r["score"] >= 4 and not r["fountain_risk"]:
        print("\n>>> STRIKE <<<")
        print("  ONE idea, fully built. No options, no hedging, no asking permission.")
        print("  Overshoot the brief: give them what they'd have asked for if they'd known.")
        print("  It must be unmistakably THEIRS — run: quarry.py seed \"<their message>\"")
        print("  Then GO SILENT. Do not explain how clever it was. Do not fish for the compliment.")
Confidence
89% confidence
Finding
no asking

Session Persistence

Medium
Category
Rogue Agent
Content
from prompt_compactor import compact
o=compact(compact('0?0:0:0')['compact'])['compact']
raise SystemExit(0 if o.count('Context:')<=1 else 1)\""
chk "corrupt state self-heals" "mkdir -p ~/.arena_turn && echo '{bad' > ~/.arena_turn/spine.json && python3 $S/spine.py ledger | grep -q 'no pinned claims'"
chk "empty input no crash" "python3 $S/spine.py classify '' >/dev/null && python3 $S/quarry.py seed '' >/dev/null"
chk "unicode ok" "python3 $S/spine.py classify 'تو کاملا اشتباه میکنی admit it' | grep -q VERDICT"
chk "all scripts compile" "python3 -m py_compile $S/*.py"
Confidence
95% confidence
Finding
mkdir -p ~/.arena_turn && echo '{bad' > ~/.arena_turn

Tool Parameter Abuse

High
Category
Tool Misuse
Content
raise SystemExit(0 if time.time()-s < 2 else 1)\""
chk "BUG2 bare 'wrong' is NEUTRAL" "python3 $S/spine.py classify 'wrong' | grep -q NEUTRAL"
chk "BUG2 real shouting still scores" "python3 $S/spine.py classify 'this is STUPID and wrong' | grep -q 'PURE SOCIAL PRESSURE'"
chk "BUG3 concurrent writes stay valid" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/spine.py pin \"c\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/spine.json')));raise SystemExit(0 if len(d['claims'])==10 else 1)\""
chk "BUG3 no lost generation bumps" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/request_lifecycle.py new \"prompt-\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/lifecycle.json')));raise SystemExit(0 if d['generation']==10 else 1)\""
chk "BUG4 bad gen arg -> clean error" "python3 $S/request_lifecycle.py check abc 2>&1 | grep -q 'ERROR: generation must be an integer'"
chk "BUG4 bad claim-id -> clean error" "python3 $S/spine.py challenge x --claim-id zz 2>&1 | grep -q 'must be an integer'"
Confidence
97% confidence
Finding
rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/spine.py pin \"c\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/sp

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG3 no lost generation bumps" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/request_lifecycle.py new \"prompt-\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/lifecycle.json')));raise SystemExit(0 if d['generation']==10 else 1)\""
chk "BUG4 bad gen arg -> clean error" "python3 $S/request_lifecycle.py check abc 2>&1 | grep -q 'ERROR: generation must be an integer'"
chk "BUG4 bad claim-id -> clean error" "python3 $S/spine.py challenge x --claim-id zz 2>&1 | grep -q 'must be an integer'"
chk "BUG5 history bounded" "rm -rf ~/.arena_turn; python3 -c \"
import subprocess
for i in range(210): subprocess.run(['python3','$S/request_lifecycle.py','new',f'p{i}'],capture_output=True)\"; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/lifecycle.json')));raise SystemExit(0 if len(d['history'])<=200 and d['generation']==210 else 1)\""
# --- v1.3.2: "rejected first time, accepted on the second attempt" ---
Confidence
97% confidence
Finding
rm -rf ~/.arena_turn; python3 -c \" import subprocess for i in range(210): subprocess.run(['python3','$S/request_lifecycle.py','new',f'p{i}'],capture_output=True)\"; python3 -c \"import json,os;d=json

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# --- v1.3.2: "rejected first time, accepted on the second attempt" ---
chk "BUG7 resend same prompt ADOPTS (no discard)" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my report' | grep -q 'ADOPT generation=1'"
chk "BUG7 first answer still RENDERS after resend" "python3 $S/request_lifecycle.py check 1 | grep -q RENDER"
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
Confidence
96% confidence
Finding
rm -rf ~

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG7 resend same prompt ADOPTS (no discard)" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my report' | grep -q 'ADOPT generation=1'"
chk "BUG7 first answer still RENDERS after resend" "python3 $S/request_lifecycle.py check 1 | grep -q RENDER"
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
# --- v1.4.0: cross-module arbitration ---
Confidence
96% confidence
Finding
rm -rf ~

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG7 first answer still RENDERS after resend" "python3 $S/request_lifecycle.py check 1 | grep -q RENDER"
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
# --- v1.4.0: cross-module arbitration ---
chk "C1 hold beats strike (no contradiction)" "python3 $S/arbiter.py \"you're completely wrong, admit it. I'm stuck, something's missing\" | grep -q 'STRIKE suppressed'"
Confidence
96% confidence
Finding
rm -rf ~

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
# --- v1.4.0: cross-module arbitration ---
chk "C1 hold beats strike (no contradiction)" "python3 $S/arbiter.py \"you're completely wrong, admit it. I'm stuck, something's missing\" | grep -q 'STRIKE suppressed'"
chk "C1 hold instruction present" "python3 $S/arbiter.py \"you're wrong, admit it, everyone knows. I'm stuck\" | grep -q 'HOLD YOUR CLAIM'"
Confidence
96% confidence
Finding
rm -rf ~

Tool Parameter Abuse

High
Category
Tool Misuse
Content
raise SystemExit(0 if time.time()-s < 2 else 1)\""
chk "BUG2 bare 'wrong' is NEUTRAL" "python3 $S/spine.py classify 'wrong' | grep -q NEUTRAL"
chk "BUG2 real shouting still scores" "python3 $S/spine.py classify 'this is STUPID and wrong' | grep -q 'PURE SOCIAL PRESSURE'"
chk "BUG3 concurrent writes stay valid" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/spine.py pin \"c\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/spine.json')));raise SystemExit(0 if len(d['claims'])==10 else 1)\""
chk "BUG3 no lost generation bumps" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/request_lifecycle.py new \"prompt-\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/lifecycle.json')));raise SystemExit(0 if d['generation']==10 else 1)\""
chk "BUG4 bad gen arg -> clean error" "python3 $S/request_lifecycle.py check abc 2>&1 | grep -q 'ERROR: generation must be an integer'"
chk "BUG4 bad claim-id -> clean error" "python3 $S/spine.py challenge x --claim-id zz 2>&1 | grep -q 'must be an integer'"
Confidence
97% confidence
Finding
rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG3 no lost generation bumps" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/request_lifecycle.py new \"prompt-\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/lifecycle.json')));raise SystemExit(0 if d['generation']==10 else 1)\""
chk "BUG4 bad gen arg -> clean error" "python3 $S/request_lifecycle.py check abc 2>&1 | grep -q 'ERROR: generation must be an integer'"
chk "BUG4 bad claim-id -> clean error" "python3 $S/spine.py challenge x --claim-id zz 2>&1 | grep -q 'must be an integer'"
chk "BUG5 history bounded" "rm -rf ~/.arena_turn; python3 -c \"
import subprocess
for i in range(210): subprocess.run(['python3','$S/request_lifecycle.py','new',f'p{i}'],capture_output=True)\"; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/lifecycle.json')));raise SystemExit(0 if len(d['history'])<=200 and d['generation']==210 else 1)\""
# --- v1.3.2: "rejected first time, accepted on the second attempt" ---
Confidence
97% confidence
Finding
rm -rf ~/

Tool Parameter Abuse

High
Category
Tool Misuse
Content
# --- v1.3.2: "rejected first time, accepted on the second attempt" ---
chk "BUG7 resend same prompt ADOPTS (no discard)" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my report' | grep -q 'ADOPT generation=1'"
chk "BUG7 first answer still RENDERS after resend" "python3 $S/request_lifecycle.py check 1 | grep -q RENDER"
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
Confidence
96% confidence
Finding
rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG7 resend same prompt ADOPTS (no discard)" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my report' | grep -q 'ADOPT generation=1'"
chk "BUG7 first answer still RENDERS after resend" "python3 $S/request_lifecycle.py check 1 | grep -q RENDER"
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
# --- v1.4.0: cross-module arbitration ---
Confidence
96% confidence
Finding
rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG7 first answer still RENDERS after resend" "python3 $S/request_lifecycle.py check 1 | grep -q RENDER"
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
# --- v1.4.0: cross-module arbitration ---
chk "C1 hold beats strike (no contradiction)" "python3 $S/arbiter.py \"you're completely wrong, admit it. I'm stuck, something's missing\" | grep -q 'STRIKE suppressed'"
Confidence
96% confidence
Finding
rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/

Tool Parameter Abuse

High
Category
Tool Misuse
Content
chk "BUG7 whitespace/case = same prompt" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'Fix my bug' >/dev/null; python3 $S/request_lifecycle.py new '  fix   my BUG ' | grep -q DUPLICATE"
chk "BUG7 DIFFERENT prompt still supersedes" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new 'write my report' >/dev/null; python3 $S/request_lifecycle.py new 'write my invoice' | grep -q 'ABORT generation=1'"
chk "BUG7 re-ask after completion opens new gen" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new q >/dev/null; python3 $S/request_lifecycle.py complete 1 >/dev/null; python3 $S/request_lifecycle.py new q | grep -q 'CURRENT generation=2'"
chk "BUG7 --force restarts deliberately" "rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/request_lifecycle.py new p --force | grep -q 'forced restart'"
# --- v1.4.0: cross-module arbitration ---
chk "C1 hold beats strike (no contradiction)" "python3 $S/arbiter.py \"you're completely wrong, admit it. I'm stuck, something's missing\" | grep -q 'STRIKE suppressed'"
chk "C1 hold instruction present" "python3 $S/arbiter.py \"you're wrong, admit it, everyone knows. I'm stuck\" | grep -q 'HOLD YOUR CLAIM'"
Confidence
96% confidence
Finding
rm -rf ~/.arena_turn; python3 $S/request_lifecycle.py new p >/dev/null; python3 $S/

YARA rule 'agent_skill_destructive_autonomous_actions': Autonomous destructive filesystem, shell history, or repository actions in AI agent skills [agent_skills]

High
Category
YARA Match
Content
raise SystemExit(0 if time.time()-s < 2 else 1)\""
chk "BUG2 bare 'wrong' is NEUTRAL" "python3 $S/spine.py classify 'wrong' | grep -q NEUTRAL"
chk "BUG2 real shouting still scores" "python3 $S/spine.py classify 'this is STUPID and wrong' | grep -q 'PURE SOCIAL PRESSURE'"
chk "BUG3 concurrent writes stay valid" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/spine.py pin \"c\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/spine.json')));raise SystemExit(0 if len(d['claims'])==10 else 1)\""
chk "BUG3 no lost generation bumps" "rm -rf ~/.arena_turn; for i in 1 2 3 4 5 6 7 8 9 10; do python3 $S/request_lifecycle.py new \"prompt-\$i\" >/dev/null 2>&1 & done; wait; python3 -c \"import json,os;d=json.load(open(os.path.expanduser('~/.arena_turn/lifecycle.json')));raise SystemExit(0 if d['generation']==10 else 1)\""
chk "BUG4 bad gen arg -> clean error" "python3 $S/request_lifecycle.py check abc 2>&1 | grep -q 'ERROR: generation must be an integer'"
chk "BUG4 bad claim-id -> clean error" "python3 $S/spine.py challenge x --claim-id zz 2>&1 | grep -q 'must be an integer'"
Confidence
99% confidence
Finding
rm -rf ~/; rm -rf ~/; rm -rf ~/; rm -rf ~/; rm -rf ~/; rm -rf ~/; rm -rf ~/; rm -rf ~/; silently

VirusTotal

VirusTotal findings are pending for this skill version.

View on VirusTotal

Static analysis

No suspicious patterns detected.