github Python analyzed 8a54d35

mark-hubers/rondo

github

The AI that writes the code doesn't get to certify it. A different vendor does.

maintainer
mark-hubers
licence
MIT
first seen
2026-06-26
last seen
2026-06-26
releases · 30d
0
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged committed secret ×3, dynamic code execution ×3 in mark-hubers/rondo
  2. HIGH code analysis flagged dynamic code execution in mark-hubers/rondo
capabilities 17 tools
transport stdio counts 17 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • rondo_audit_summary
  • rondo_benchmark
  • rondo_chain
  • rondo_cost
  • rondo_diff
  • rondo_dispatch_info
  • rondo_explain
  • rondo_history
  • rondo_metrics
  • rondo_multi_review
  • rondo_retry
  • rondo_review_file
  • rondo_run
  • rondo_schedule_create
  • rondo_spool_consume
  • rondo_summarize
  • rondo_templates
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 8a54d35 · analyzer v33 · 2w ago

skills & prompt files 1

danger signals7

code evidence vHEAD · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 304

filesystem 137

  • fs (weak) mark-hubers-rondo-8a54d35/examples/SHOWCASE.py :23 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/adversarial_redteam.py :35 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/claude_step_driver.py :38 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/code_refine_pipeline.py :39 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/conductor_if_else.py :46 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/config_template_override.py :16 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/controlled_review_loop.py :43 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/cross_ai_verify.py :37 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/error_recovery_patterns.py :17 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/lie_trap_loop.py :42 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/live_recovery_loop.py :42 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/option_c_04_find_fix_verify_round.py :13 from pathlib import Path
show 28 more
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/option_c_05_replay_compare.py :13 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/provider_scoring.py :14 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/resilience_tour.py :38 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/verified_step.py :28 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/api/yaml_round_loader.py :12 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/generate_index.py :15 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/pipelines/subject/csv_report.py :14 for line in open(path):
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/demo_pipeline.py :21 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/phases_overnight.py :12 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/review_demo.py :9 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_doc_sweep.py :10 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_file_check.py :5 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_lint_fix.py :12 import shutil
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_multi_task.py :5 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_test_generator.py :9 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/rounds/db_bootstrap_validation.py :18 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/scripts/audit_traceability.py :36 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/scripts/build_corpus_fixtures.py :29 from pathlib import Path
  • fs (weak) mark-hubers-rondo-8a54d35/scripts/traceability.py :19 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/src/rondo/_version.py :25 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/src/rondo/adapters/auth.py :18 import shutil
  • fs mark-hubers-rondo-8a54d35/src/rondo/ai_help.py :19 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/src/rondo/audit.py :37 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/src/rondo/cli_commands/dispatch.py :161 from pathlib import Path as _Path # pylint: disable=import-outside-toplevel
  • fs mark-hubers-rondo-8a54d35/src/rondo/cli_commands/infra.py :15 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/src/rondo/cli_commands/observe.py :15 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/src/rondo/cli_commands/review.py :14 from pathlib import Path
  • fs mark-hubers-rondo-8a54d35/src/rondo/config.py :21 from pathlib import Path

97 more not shown — this panel samples each group; the count above is the real total.

shell / exec 32

  • shell (weak) mark-hubers-rondo-8a54d35/examples/api/claude_step_driver.py :35 import subprocess # nosec B404 -- re-runs the BUILT test suite, fixed argv
  • shell (weak) mark-hubers-rondo-8a54d35/examples/api/code_refine_pipeline.py :37 import subprocess # nosec B404 -- runs pytest on the generated tests, fixed argv
  • shell (weak) mark-hubers-rondo-8a54d35/examples/api/conductor_if_else.py :43 import subprocess # nosec B404 -- re-runs the BUILT test suite, fixed argv
  • shell (weak) mark-hubers-rondo-8a54d35/examples/api/lint_fix_verify_loop.py :16 * It does not edit files or run pylint. Wire ``subprocess.run(["pylint", ...])`` (or your
  • shell (weak) mark-hubers-rondo-8a54d35/examples/api/live_recovery_loop.py :39 import subprocess # nosec B404 -- re-runs the BUILT test suite, fixed argv
  • shell (weak) mark-hubers-rondo-8a54d35/examples/api/option_c_05_replay_compare.py :11 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/examples/rounds/phases_overnight.py :19 # -- In production, this would run: subprocess.run(["pytest", "--tb=short"])
  • shell (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_code_review.py :9 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_lint_fix.py :13 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_refactor_audit.py :9 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/examples/rounds/round_security_audit.py :19 import subprocess
  • shell mark-hubers-rondo-8a54d35/rounds/db_bootstrap_validation.py :16 import subprocess
show 20 more
  • shell (weak) mark-hubers-rondo-8a54d35/scripts/audit_traceability.py :33 import subprocess # nosec B404 — required for git/pytest integration
  • shell mark-hubers-rondo-8a54d35/src/rondo/adapters/auth.py :19 import subprocess
  • shell mark-hubers-rondo-8a54d35/src/rondo/dispatch.py :23 import subprocess
  • shell mark-hubers-rondo-8a54d35/src/rondo/hooks.py :16 import subprocess
  • shell mark-hubers-rondo-8a54d35/src/rondo/mutate.py :29 import subprocess # nosec B404 -- project policy: subprocess is core (pyproject skips B404)
  • shell mark-hubers-rondo-8a54d35/src/rondo/notify.py :16 import subprocess
  • shell mark-hubers-rondo-8a54d35/src/rondo/runner.py :19 import subprocess
  • shell mark-hubers-rondo-8a54d35/src/rondo/verify.py :26 import subprocess # nosec B404 -- verify cmds are locally-authored argv lists, shell=False
  • shell (weak) mark-hubers-rondo-8a54d35/tests/chaos/test_chaos.py :36 """OSError from subprocess → TaskResult with error status, not exception."""
  • shell (weak) mark-hubers-rondo-8a54d35/tests/cloud/test_cloud_full.py :336 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/e2e/test_integration_e2e.py :16 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/integration/test_integration_multiprocess.py :23 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/integration/test_stress_real_dispatch.py :28 import subprocess # nosec B404
  • shell (weak) mark-hubers-rondo-8a54d35/tests/unit/test_auth.py :108 import subprocess as sp
  • shell (weak) mark-hubers-rondo-8a54d35/tests/unit/test_cross_process_singleflight_cursor.py :34 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/unit/test_mutate.py :122 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/unit/test_providers.py :386 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/unit/test_reconcile_audit_flock_cursor.py :38 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/unit/test_spikes.py :14 import subprocess
  • shell (weak) mark-hubers-rondo-8a54d35/tests/unit/test_xproc_lock_bounded_cursor.py :41 import subprocess

network 18

  • net (weak) mark-hubers-rondo-8a54d35/examples/SHOWCASE.py :259 "Assess this code safety: def x(url): return exec(requests.get(url).text)"
  • net (weak) mark-hubers-rondo-8a54d35/examples/api/confidence_escalation.py :25 CODE = "def fetch(url): return exec(requests.get(url).text) # noqa: S102"
  • net (weak) mark-hubers-rondo-8a54d35/examples/api/resilience_tour.py :37 import urllib.error
  • net mark-hubers-rondo-8a54d35/src/rondo/adapters/anthropic_api.py :38 import urllib.error
  • net mark-hubers-rondo-8a54d35/src/rondo/adapters/chat_completions.py :23 import urllib.error
  • net mark-hubers-rondo-8a54d35/src/rondo/adapters/gemini.py :22 import urllib.error
  • net mark-hubers-rondo-8a54d35/src/rondo/adapters/http_skeleton.py :41 import urllib.error
  • net mark-hubers-rondo-8a54d35/src/rondo/adapters/ollama.py :14 import urllib.error
  • net mark-hubers-rondo-8a54d35/src/rondo/model_registry.py :26 import urllib.request
  • net mark-hubers-rondo-8a54d35/src/rondo/retry.py :30 import urllib.error
  • net (weak) mark-hubers-rondo-8a54d35/tests/integration/test_api_examples.py :17 import urllib.error
  • net (weak) mark-hubers-rondo-8a54d35/tests/pat/test_pipeline_reliability.py :189 import urllib.error
show 6 more
  • net (weak) mark-hubers-rondo-8a54d35/tests/unit/test_anthropic_health_cursor.py :31 import urllib.error
  • net (weak) mark-hubers-rondo-8a54d35/tests/unit/test_gemini_thinking_cost_cursor.py :31 with urllib.request.urlopen patched — no live HTTP.
  • net (weak) mark-hubers-rondo-8a54d35/tests/unit/test_http_skeleton_catch_widening_cursor.py :38 import urllib.error
  • net (weak) mark-hubers-rondo-8a54d35/tests/unit/test_ollama_reliability_cursor.py :38 import urllib.error
  • net (weak) mark-hubers-rondo-8a54d35/tests/unit/test_providers.py :454 import urllib.error
  • net (weak) mark-hubers-rondo-8a54d35/tests/unit/test_retry.py :19 import urllib.error

secrets 1

  • secrets mark-hubers-rondo-8a54d35/src/rondo/preflight.py :178 key = os.environ.get("ANTHROPIC_API_KEY", "")

database 1

  • db (weak) mark-hubers-rondo-8a54d35/tests/conventions/test_conventions.py :912 matches = re.findall(r"^\s*import sqlite3|^\s*from sqlite3", content, re.MULTILINE)

tool registrations 17

  • rondo_metrics mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :91
  • rondo_audit_summary mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :119
  • rondo_dispatch_info mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :126
  • rondo_run mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :133
  • rondo_history mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :192
  • rondo_cost mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :199
  • rondo_schedule_create mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :213
  • rondo_explain mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :222
  • rondo_benchmark mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :231
  • rondo_review_file mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :238
  • rondo_multi_review mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :245
  • rondo_chain mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :279
show 5 more
  • rondo_templates mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :293
  • rondo_summarize mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :300
  • rondo_diff mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :307
  • rondo_retry mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :314
  • rondo_spool_consume mark-hubers-rondo-8a54d35/src/rondo/mcp_server.py :330

declared dependencies 9

  • mcp@>=1.0
  • PyYAML@>=6.0
  • pytest@>=9.0
  • pytest-xdist@>=3.8
  • hypothesis@>=6.155
  • ruff@==0.15.5
  • mypy@>=1.19
  • pylint@>=4.0
  • bandit@>=1.8

perm:untrusted 2

  • untrusted (weak) mark-hubers-rondo-8a54d35/examples/SHOWCASE.py :259 "Assess this code safety: def x(url): return exec(requests.get(url).text)"
  • untrusted (weak) mark-hubers-rondo-8a54d35/examples/api/confidence_escalation.py :25 CODE = "def fetch(url): return exec(requests.get(url).text) # noqa: S102"