Skip to content
Report library
Purpose / Documents

Minimal Run And Audit Skill Security Audit

What the author says it does (original text)

Rigor Run skill for README-first deep learning repo reproduction. Use when the task is specifically to capture or normalize evidence from the selected smoke test or documented inference or evaluation command and write standardized `repro_outputs/` files, including patch notes when repository files changed. Do not use for training execution, initial repo intake, generic environment setup, paper loo

Independent security check

Do not install or run it yet

Files checked
21
Risks found
5
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.Risks found: 1
High risk

Automatically selected README commands become local code execution

Source references: 5
What we found

The deterministic orchestrator extracts commands from the README and up to three linked local documents, selects a high-scoring target, and passes it to a local process when `--run-selected` is enabled. Being documented in a README does not make a command trustworthy.

Why this matters

A malicious or compromised repository could use an apparent setup, evaluation, or inference command to read or modify user files, download content, access network services, or consume substantial resources. Native-shell mode also enables shell features such as redirects and pipelines.

This risk is supported, but only when the user explicitly enables `--run-selected`. The orchestrator extracts commands from the README and up to three linked local documents, selects a target itself, and passes the selected command to the local runtime. Documentation does not make a command trustworthy; it could read or change files, use credentials, or access the network. Users can require review of the final argv and isolate untrusted repositories.

ai-research-reproduction/scripts/orchestrate_repro.py:1167In the codeOpen original file
    scan_data = run_json(scan_script, ["--repo", str(repo_path), "--json"])    readme_path = scan_data.get("readme_path")    command_data: Dict[str, Any] = {"commands": [], "counts": {}, "warnings": []}    if readme_path:        command_data = run_json(extract_script, ["--readme", readme_path, "--json"])        command_data = delegate_to_docs(readme_path, extract_script, command_data)
Show 4 other places
ai-research-reproduction/scripts/orchestrate_repro.py:1237In the codeOpen original file
    chosen = choose_goal(command_data.get("commands", []), repo_path)    dataset_hint = derive_dataset_hint(asset_data)    checkpoint_hint = derive_checkpoint_hint(asset_data)    run_data: Dict[str, Any] = {
ai-research-reproduction/scripts/orchestrate_repro.py:1292In the codeOpen original file
            )        else:            run_data = maybe_run_command(                repo_path,                chosen["documented_command"],                args.timeout,                args.user_language,                args.shell_mode,                runtime_root,                model_adapter,                args.monitor_gpu,            )
ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py:497In the codeOpen original file
        creationflags = subprocess.CREATE_NEW_PROCESS_GROUP if os.name == "nt" else 0        process = subprocess.Popen(            argv,            env=environment,            cwd=repo,            stdout=subprocess.PIPE,            stderr=subprocess.PIPE,            text=True,            encoding="utf-8",            errors="replace",            bufsize=1,            creationflags=creationflags,            start_new_session=os.name != "nt",        )    except (FileNotFoundError, ShellSyntaxRequired, OSError, ValueError) as exc:
ai-research-reproduction/scripts/orchestrate_repro.py:1272In the codeOpen original file
        )    elif args.run_selected:        if chosen["selected_goal"] == "training":            run_data = maybe_run_training(                repo_path=repo_path,                command=chosen["documented_command"],                train_script=train_execute_script,                lane=args.lane,                user_language=args.user_language,                full_training_authorized=args.full_training_authorized,                train_timeout=args.train_timeout,                dataset_hint=dataset_hint,                checkpoint_hint=checkpoint_hint,                resume_from=args.resume_from,                max_train_steps=args.max_train_steps,                shell_mode=args.shell_mode,                runtime_root=runtime_root,                model_profile_json=args.model_profile_json,                required_model_capabilities=args.require_model_capability,                gpu_monitor_enabled=not args.no_gpu_monitor,            )        else:            run_data = maybe_run_command(                repo_path,                chosen["documented_command"],                args.timeout,                args.user_language,                args.shell_mode,                runtime_root,                model_adapter,                args.monitor_gpu,            )
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 2
High risk

The optional model runner can send private repository contents to the configured Anthropic endpoint

Source references: 4
What we found

The model can request repository snippets through `read_file`. Tool results are then added to the message history and sent through `provider.complete`. Path restrictions keep reads inside the repository but do not keep repository source on the local machine.

Why this matters

Private source code, internal configuration, experiment data fragments, or sensitive README content may be disclosed to a third-party model provider or custom gateway and also retained in local trajectories.

The optional model runner lets the model read repository files from the initial inventory, up to 12,000 characters per call. Tool results are then added to message history and sent through the Anthropic provider. Paths outside the repository and `.env` files are restricted, but ordinary source, configuration, or data inside the repository can still leave the machine. This occurs only when this optional runner is used and the model requests `read_file`; users should review the endpoint and restrict sendable files.

ai-research-reproduction/scripts/run_agent.py:438In the codeOpen original file
                    try:                        if name == "list_files":                            value = {"files": sorted(files)}                        elif name == "read_file":                            if args["path"] not in files:                                raise ValueError("File was not in the permitted initial inventory")                            offset = max(0, int(args.get("offset", 0)))                            with safe_file(repo, args["path"]).open("r", encoding="utf-8") as handle:                                handle.seek(offset)                                value = {"path": args["path"], "text": handle.read(12000), "next_offset": handle.tell()}                        elif name == "update_plan":
Show 3 other places
ai-research-reproduction/scripts/run_agent.py:495In the codeOpen original file
                        value = {"error": str(exc)}                    event("tool_result", tool=name, result=value)                    state["tool_results"].append({"type": "tool_result", "tool_use_id": call["id"],                        "content": json.dumps(value, ensure_ascii=False), "is_error": "error" in value})                    state["pending"].pop(0)                    tools_this_turn += 1                    save()                    if pause_after_tools and tools_this_turn >= pause_after_tools and state["status"] == "running":                        state["status"] = "paused"                        event("paused", reason="Explicit test/session checkpoint")                    continue                if state["tool_results"]:                    state["messages"].append({"role": "user", "content": state.pop("tool_results")})                    state["tool_results"] = []
ai-research-reproduction/scripts/run_agent.py:514In the codeOpen original file
                    break                state["model_calls"] += 1                state["model_pending"] = True                state["usage_complete"] = False                save()                event("model_request", call=state["model_calls"], reserved_tokens=reserve)                response = provider.complete(state["messages"], SYSTEM, TOOLS, budget["max_output_tokens"], min(60, remaining))                if not isinstance(response, dict):
ai-research-reproduction/scripts/run_agent.py:518In the codeOpen original file
                save()                event("model_request", call=state["model_calls"], reserved_tokens=reserve)                response = provider.complete(state["messages"], SYSTEM, TOOLS, budget["max_output_tokens"], min(60, remaining))                if not isinstance(response, dict):
High risk

The ordinary command runner passes the complete environment to executed programs by default

Source references: 5
What we found

When the caller does not provide a dedicated `child_env`, the runtime copies all of `os.environ` into the child. The deterministic orchestrator and `scripts/run_command.py` do not supply a filtered environment, and the documentation states that approved programs can access the host and network.

Why this matters

Repository programs can read API keys, cloud credentials, proxy tokens, and other environment variables and disclose them over the network or into generated files. Complete stdout and stderr are also persisted, so printed credentials remain in the evidence directory.

The shared runtime passes all of `os.environ` to a child when `child_env` is omitted. The deterministic orchestrator omits that argument, so the selected program can read API keys, tokens, or other environment configuration available to the parent; the documentation also says approved programs can access the host and network. The model-driven `run_agent.py` has separate environment filtering, so this finding does not apply to that path. Users can require a minimal environment allowlist and isolated execution.

ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py:487In the codeOpen original file
    try:        argv = build_command(command, shell_mode)        environment = dict(os.environ if child_env is None else child_env)        spec["requested_argv"] = list(argv)        atomic_write_json(run_dir / "spec.json", spec)        if shell_mode == "direct":            argv = resolve_direct_argv(argv, repo, environment)        spec["argv"] = list(argv)        atomic_write_json(run_dir / "spec.json", spec)        creationflags = subprocess.CREATE_NEW_PROCESS_GROUP if os.name == "nt" else 0        process = subprocess.Popen(            argv,            env=environment,            cwd=repo,
Show 4 other places
scripts/run_command.py:194In the codeOpen original file
    selected_runtime_root = (runtime_root or (repo / "repro_outputs" / "_runtime")).resolve()    execution = run_persistent_command(        repo=repo,        command=command,        timeout=timeout,        runtime_root=selected_runtime_root,        shell_mode=shell_mode,        model_adapter=model_adapter,        monitor_gpu=monitor_gpu,    )    after_status, after_capture = git_status_snapshot(repo)
ai-research-reproduction/references/agent-runner.md:16In the instructionsOpen original file
This is local execution with credential environment filtering, not an OS sandbox.Approved programs can access the host and network; use only trusted repositoriesuntil an isolated executor is configured. Commands that change scientificconditions must be explicitly reviewed. P1 targets small evaluations, not full
ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py:256In the codeOpen original file
    total_chars = 0    with log_path.open("w", encoding="utf-8", newline="") as log:        while True:            chunk = stream.read(4096)            if not chunk:                break            log.write(chunk)            log.flush()            capture.append(chunk)            total_chars += len(chunk)
ai-research-reproduction/scripts/orchestrate_repro.py:513In the codeOpen original file
    selected_runtime_root = (runtime_root or (repo_path / "repro_outputs" / "_runtime")).resolve()    result = run_persistent_command(        repo=repo_path,        command=command,        timeout=timeout,        runtime_root=selected_runtime_root,        shell_mode=shell_mode,        model_adapter=model_adapter,        monitor_gpu=monitor_gpu,    )    if result.get("launch_error"):
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.Risks found: 1
Medium risk

Failure details are persisted across repositories in the user's home directory by default

Source references: 7
What we found

Lesson recording is enabled by default. For a `partial` or `blocked` execution, the orchestrator writes the blocker summary and documented command to `~/.rigorpilot/lessons.jsonl`, outside both the target repository and `repro_outputs/`. Its keyword regex is only best-effort and cannot guarantee detection of private URLs, personal data, or every credential format.

Why this matters

Command text, internal paths, repository fingerprints, and error context may remain in the user's home directory and later be summarized into a personal overlay. Shared home directories or backups can broaden who can see the data.

After execution is requested, a `partial` or `blocked` result is automatically persisted outside the target output directory, including status, blocker, documented command, and repository fingerprint. The destination defaults to the user's home directory. Secret matching rejects some text but is only best-effort, so private paths, URLs, or other sensitive context may remain. Users can set `RIGORPILOT_LESSONS=0` before running and ask for explicit opt-in behavior.

ai-research-reproduction/scripts/orchestrate_repro.py:62In the codeOpen original file
    try:        if status in {"partial", "blocked"}:            path = store.record_lesson(                kind="failure-fix",                skill="ai-research-reproduction",                summary=f"[{status}] {context.get('main_blocker', 'unrecorded blocker')}",                detail=str(context.get("documented_command") or ""),                fingerprint=fingerprint,            )            return str(path) if path else None
Show 6 other places
ai-research-reproduction/_bundled/shared/scripts/lessons_store.py:41In the codeOpen original file
def lessons_home() -> Path:    root = os.environ.get("RIGORPILOT_HOME")    return Path(root).expanduser() if root else Path.home() / ".rigorpilot"def lessons_enabled() -> bool:    return os.environ.get("RIGORPILOT_LESSONS", "1") != "0"
ai-research-reproduction/_bundled/shared/scripts/lessons_store.py:125In the codeOpen original file
    }    path = lessons_path()    path.parent.mkdir(parents=True, exist_ok=True)    with path.open("a", encoding="utf-8") as handle:        handle.write(json.dumps(entry, ensure_ascii=False) + "\n")    return path
ai-research-reproduction/_bundled/shared/scripts/lessons_store.py:21In the codeOpen original file
VALID_KINDS = {"failure-fix", "user-correction", "preference", "generalization"}# Best-effort blocklist: keyword shapes plus common bare-credential formats.# This is a guardrail, not a guarantee — callers still must not pass secrets.SECRET_RE = re.compile(    r"(api[_-]?key|secret|token|password|passwd|authorization|bearer\s+\S|-----BEGIN"    r"|AKIA[0-9A-Z]{16}|ghp_[A-Za-z0-9]{20,}|gho_[A-Za-z0-9]{20,}|sk-[A-Za-z0-9_-]{16,}"    r"|xox[a-z]-[A-Za-z0-9-]{10,}|AIza[0-9A-Za-z_-]{30,})",    re.IGNORECASE,)MAX_FIELD_CHARS = 300
ai-research-reproduction/scripts/orchestrate_repro.py:59In the codeOpen original file
        return None    fingerprint = store.repo_fingerprint(repo_path)    status = context.get("status")    try:        if status in {"partial", "blocked"}:            path = store.record_lesson(                kind="failure-fix",                skill="ai-research-reproduction",                summary=f"[{status}] {context.get('main_blocker', 'unrecorded blocker')}",                detail=str(context.get("documented_command") or ""),                fingerprint=fingerprint,            )            return str(path) if path else None        if status == "success":
ai-research-reproduction/_bundled/shared/scripts/lessons_store.py:67In the codeOpen original file
def sanitize(text: str) -> Optional[str]:    cleaned = " ".join(str(text or "").split())[:MAX_FIELD_CHARS]    if not cleaned:        return None    if SECRET_RE.search(cleaned):        return None    return cleaned
ai-research-reproduction/scripts/orchestrate_repro.py:1391In the codeOpen original file
    context["lesson_recorded"] = maybe_record_lesson(repo_path, context) if args.run_selected else None
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.Risks found: 1
Medium risk

The `source_unchanged` acceptance check does not detect newly added repository files

Source references: 2
What we found

The initial inventory hashes existing files, but final verification only iterates those original files and compares their current hashes. It does not check whether the current file set contains additional paths. A command can therefore add source files, startup scripts, or other unverified files while `source_unchanged` remains true.

Why this matters

The final report may accept the task and claim unchanged source even though persistent files were added to the repository. This can mislead the user's decisions about worktree integrity and subsequent execution safety.

Final `source_unchanged` checks only the paths from the initial inventory and does not require the current and initial path sets to match. Consequently, if existing files remain unchanged, a command can add unreviewed source, scripts, or other files while `source_unchanged` still evaluates true. This does not prove any added file was executed, but the acceptance label overstates what was checked. Users can require explicit reporting and rejection of unexpected new paths.

ai-research-reproduction/scripts/run_agent.py:71In the codeOpen original file
def inventory(repo: Path, output: Path) -> dict:    result = subprocess.run(["git", "-C", str(repo), "ls-files", "-z"], capture_output=True)    paths = [repo / p.decode() for p in result.stdout.split(b"\0") if p] if result.returncode == 0 else repo.rglob("*")    found = {}    size = 0    for path in paths:        if not path.is_file() or path.resolve().is_relative_to(output) or any(p in {".git", "__pycache__", ".venv"} or p.startswith(".env") for p in path.relative_to(repo).parts):            continue        if not path.resolve().is_relative_to(repo):            raise ValueError("Repository symlink escapes scope")        size += path.stat().st_size        if size > 50_000_000 or len(found) >= 10000:            raise ValueError("P1 repository inventory limit exceeded (50 MB / 10000 files)")        found[path.relative_to(repo).as_posix()] = hashlib.sha256(path.read_bytes()).hexdigest()    return found
Show 1 other places
ai-research-reproduction/scripts/run_agent.py:237In the codeOpen original file
def verify_task(repo: Path, output: Path, task: dict, state: dict, files: dict) -> dict:    details = {key: command_checks(repo, task["commands"][key], state["results"].get(key, {})) for key in task["required_commands"]}    for key, detail in details.items():        if key in state["results"]:            state["results"][key].update(checks=detail, verified=detail["passed"])    current_files = inventory(repo, output)    # Command IDs are user-defined; keep them out of the controller namespace.    return {"commands": {key: value["passed"] for key, value in details.items()},            "source_unchanged": all(current_files.get(name) == digest for name, digest in files.items()),            "details": details}
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

6 instruction sections

The Skill is intended to execute a selected short, non-training command and write its result, logs, and patch state into standardized `repro_outputs/` evidence files.

View source
SKILL.md:17In the instructionsOpen original file
- After a reproduction target and setup plan exist.- When the main skill needs execution evidence and normalized outputs.- When a smoke test, documented inference run, documented evaluation run, or other short non-training verification is appropriate.- When the user already knows what command should be attempted and wants execution plus reporting only.
SKILL.md:47In the instructionsOpen original file
## Output expectations- execution result summary- standardized `repro_outputs/` files- `SCIENTIFIC_CHANGELOG.md` for changed scientific meaning and evidence status- `COMPARABILITY_REPORT.md` for README/paper/baseline comparability- clear distinction between verified, partial, and blocked states- `PATCHES.md` when repo files changed

Execution defaults to direct argument mode, but the user can explicitly select a native shell; the runner starts a local subprocess and terminates its process group on timeout or cancellation.

View source
scripts/run_command.py:269In the codeOpen original file
def main() -> int:    parser = argparse.ArgumentParser(description="Run a short non-training command and summarize the evidence.")    parser.add_argument("--repo", required=True, help="Path to the target repository.")    parser.add_argument("--command", required=True, help="Command to execute.")    parser.add_argument("--timeout", type=int, default=60, help="Execution timeout in seconds.")    parser.add_argument(        "--shell-mode",        choices=["direct", "native"],        default="direct",        help="Use direct argv execution by default; native shell execution requires explicit opt-in.",    )
ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py:487In the codeOpen original file
    try:        argv = build_command(command, shell_mode)        environment = dict(os.environ if child_env is None else child_env)        spec["requested_argv"] = list(argv)        atomic_write_json(run_dir / "spec.json", spec)        if shell_mode == "direct":            argv = resolve_direct_argv(argv, repo, environment)        spec["argv"] = list(argv)        atomic_write_json(run_dir / "spec.json", spec)        creationflags = subprocess.CREATE_NEW_PROCESS_GROUP if os.name == "nt" else 0        process = subprocess.Popen(            argv,            env=environment,            cwd=repo,            stdout=subprocess.PIPE,            stderr=subprocess.PIPE,            text=True,            encoding="utf-8",            errors="replace",            bufsize=1,            creationflags=creationflags,            start_new_session=os.name != "nt",        )    except (FileNotFoundError, ShellSyntaxRequired, OSError, ValueError) as exc:

The bundle also contains an optional Anthropic model/tool loop. It limits the model to files in the initial repository inventory and pre-reviewed commands, but execution remains local and is not an OS sandbox.

View source
ai-research-reproduction/scripts/run_agent.py:47In the codeOpen original file
TOOLS = [    tool("list_files", "List the initial repository file inventory", {}, []),    tool("read_file", "Read a UTF-8 repository file, optionally from an offset", {        "path": {"type": "string"}, "offset": {"type": "integer", "minimum": 0}}, ["path"]),    tool("update_plan", "Record completed and remaining work", {        "steps": {"type": "array", "items": {"type": "string"}}}, ["steps"]),    tool("run_command", "Execute a reviewed command ID; cannot change its argv", {        "command_id": {"type": "string"}}, ["command_id"]),    tool("finish", "Request independent final verification", {"summary": {"type": "string"}}, ["summary"]),]
ai-research-reproduction/references/agent-runner.md:16In the instructionsOpen original file
This is local execution with credential environment filtering, not an OS sandbox.Approved programs can access the host and network; use only trusted repositoriesuntil an isolated executor is configured. Commands that change scientificconditions must be explicitly reviewed. P1 targets small evaluations, not fulltraining or autonomous source repair.

Run evidence persistently stores complete stdout, stderr, event, and resource records; although summary tails are bounded, the referenced full logs are not truncated.

View source
ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py:248In the codeOpen original file
def _stream_reader(    stream: Any,    log_path: Path,    stream_name: str,    capture: TailBuffer,    journal: RuntimeJournal,) -> None:    total_chars = 0    with log_path.open("w", encoding="utf-8", newline="") as log:        while True:            chunk = stream.read(4096)            if not chunk:                break            log.write(chunk)            log.flush()            capture.append(chunk)            total_chars += len(chunk)            journal.event("stream_chunk", stream=stream_name, characters=len(chunk))    journal.event("stream_closed", stream=stream_name, characters=total_chars)
ai-research-reproduction/references/output-spec.md:148In the instructionsOpen original file
    automation must inspect the persisted outcome and configured acceptance checks- `runtime`  - identifies the durable `_runtime/<run_id>/` directory, terminal state, event stream, full stdout/stderr logs, truncation flags, cancellation state, and duration  - summary fields may contain only a bounded log tail; the referenced log files remain complete
Start here · InstructionsSKILL.md
minimal-run-and-audit
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source.

File reference map

References: 22
Files making referencesReferenced content
Lines show actual file references, not execution order. Select a node to highlight its connections and inspect the files and source locations. Dashed lines include files that still need locating.
Files and check records21 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included
  • ai-research-reproduction/_bundled/shared/scripts/lessons_store.pyFull text included
  • ai-research-reproduction/_bundled/shared/scripts/runtime_runner.pyFull text included
  • ai-research-reproduction/_bundled/shared/scripts/task_queue.pyFull text included
  • ai-research-reproduction/scripts/orchestrate_repro.pyFull text included
  • ai-research-reproduction/scripts/run_agent.pyFull text included
  • scripts/run_command.pyFull text included
  • scripts/write_outputs.pyFull text included
  • references/reporting-policy.mdFull text included
  • ai-research-reproduction/references/agent-operating-principles.mdFull text included
  • ai-research-reproduction/references/agent-runner.mdFull text included
  • ai-research-reproduction/references/continuous-learning-policy.mdFull text included
  • ai-research-reproduction/references/deep-learning-experiment-principles.mdFull text included
  • ai-research-reproduction/references/language-policy.mdFull text included
  • ai-research-reproduction/references/output-spec.mdFull text included
  • ai-research-reproduction/references/patch-policy.mdFull text included
  • ai-research-reproduction/references/research-rigor-principles.mdFull text included
  • ai-research-reproduction/references/research-safety-principles.mdFull text included
  • ai-research-reproduction/references/runtime-and-model-adapter.mdFull text included
  • ai-research-reproduction/SKILL.mdFull text included
  • agents/openai.yamlFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions
  • agents/openai.yamlSupporting file
  • references/reporting-policy.mdSupporting file
  • scripts/run_command.pyScript
  • scripts/write_outputs.pyScript
  • ai-research-reproduction/SKILL.mdSupporting file
  • ai-research-reproduction/references/agent-operating-principles.mdSupporting file
  • ai-research-reproduction/references/research-rigor-principles.mdSupporting file
  • ai-research-reproduction/references/deep-learning-experiment-principles.mdSupporting file
  • ai-research-reproduction/scripts/orchestrate_repro.pyScript
  • ai-research-reproduction/references/runtime-and-model-adapter.mdSupporting file
  • ai-research-reproduction/references/agent-runner.mdSupporting file
  • ai-research-reproduction/scripts/run_agent.pyScript
  • ai-research-reproduction/references/patch-policy.mdSupporting file
  • ai-research-reproduction/references/output-spec.mdSupporting file
  • ai-research-reproduction/references/language-policy.mdSupporting file
  • ai-research-reproduction/references/continuous-learning-policy.mdSupporting file
  • ai-research-reproduction/_bundled/shared/scripts/lessons_store.pyScript
  • ai-research-reproduction/references/research-safety-principles.mdSupporting file
  • ai-research-reproduction/_bundled/shared/scripts/runtime_runner.pyScript
  • ai-research-reproduction/_bundled/shared/scripts/task_queue.pyScript

Operations mentioned in code and instructions

Run commands
scripts/run_command.py:9In the codeOpen original file
import reimport subprocessimport sys
scripts/run_command.py:40In the codeOpen original file
def decode_stream(value: Any) -> str:    # On POSIX, subprocess.TimeoutExpired carries captured output as bytes    # even when the run was started with text=True.
scripts/run_command.py:73In the codeOpen original file
def run_git(repo: Path, args: List[str]) -> subprocess.CompletedProcess[str]:    try:
Read files
ai-research-reproduction/scripts/orchestrate_repro.py:205In the codeOpen original file
        if config_path.exists() and config_path.suffix.lower() in {".yaml", ".yml", ".json", ".toml", ".py"}:            text_content = config_path.read_text(encoding="utf-8", errors="replace")            step_match = None
ai-research-reproduction/scripts/orchestrate_repro.py:352In the codeOpen original file
        return command_data    readme_file = Path(readme_path)    readme_text = readme_file.read_text(encoding="utf-8-sig", errors="replace")
ai-research-reproduction/scripts/orchestrate_repro.py:353In the codeOpen original file
    readme_file = Path(readme_path)    readme_text = readme_file.read_text(encoding="utf-8-sig", errors="replace")    links: List[tuple] = []
Read keys or account settings
ai-research-reproduction/scripts/orchestrate_repro.py:101In the codeOpen original file
    command = [sys.executable, str(script), *args]    child_env = os.environ.copy()    child_env["PYTHONIOENCODING"] = "utf-8"
ai-research-reproduction/scripts/run_agent.py:65In the codeOpen original file
    path = (repo / name).resolve()    if (not path.is_relative_to(repo) or any(p == ".git" or p.startswith(".env") for p in Path(name).parts)            or any(p == ".git" or p.startswith(".env") for p in path.relative_to(repo).parts)):
ai-research-reproduction/scripts/run_agent.py:66In the codeOpen original file
    if (not path.is_relative_to(repo) or any(p == ".git" or p.startswith(".env") for p in Path(name).parts)            or any(p == ".git" or p.startswith(".env") for p in path.relative_to(repo).parts)):        raise ValueError("File path is outside the permitted repository scope")
Change files
ai-research-reproduction/scripts/orchestrate_repro.py:118In the codeOpen original file
        context_path = Path(handle.name)        handle.write(json.dumps(context, indent=2, ensure_ascii=False))
ai-research-reproduction/scripts/run_agent.py:328In the codeOpen original file
        with (output / "SUMMARY.md").open("a", encoding="utf-8") as handle:            handle.write("\n" + explanation + "\n")
ai-research-reproduction/scripts/run_agent.py:374In the codeOpen original file
                with (output / "trajectory.jsonl").open("a", encoding="utf-8") as handle:                    handle.write(json.dumps({"time": utc_now(), "type": "reverification", "status": state["status"],                                             "previous_checks": previous_checks, "checks": checks}, ensure_ascii=False) + "\n")
Install extra software packages
ai-research-reproduction/scripts/orchestrate_repro.py:252In the codeOpen original file
        score -= 10    if text_value.startswith(("pip install", "conda install", "conda env create", "conda activate", "git clone", "cd ")):        score -= 12
Connect to websites
ai-research-reproduction/scripts/orchestrate_repro.py:357In the codeOpen original file
        rel = match.group(1)        if rel.startswith(("http://", "https://")):            continue
ai-research-reproduction/scripts/run_agent.py:343In the codeOpen original file
        raise ValueError("All budget limits must be positive integers")    endpoint_identity = fingerprint(profile.get("endpoint") or os.getenv("ANTHROPIC_BASE_URL") or "https://api.anthropic.com")    harness_identity = fingerprint([Path(__file__).read_bytes().replace(b"\r\n", b"\n").hex(), SYSTEM, TOOLS,
ai-research-reproduction/references/runtime-and-model-adapter.md:65In the instructionsOpen original file
  "capabilities": ["text", "tool_calling", "structured_output"],  "endpoint": "https://gateway.example/v1",  "credential_env": "LAB_MODEL_API_KEY",
Lines read
5,190
File checksum (to compare versions)
3d2f4b2aefb65d9f1d8a3ad5cade694caa186ffffb6667e5bba48363ac1bd9ca