{
  "run_id": "Hetaireia--janissary-claude-haiku-5-5-1793109117027453833",
  "date": "2026-10-27T13:56:15.829800+00:00",
  "repo": "Hetaireia/janissary",
  "kind": "repo",
  "source": "https://github.com/Hetaireia/janissary",
  "commit": "786295443825ec3ff58b4fcdfc6621450cf69d76",
  "model": "claude-haiku-5-5",
  "model_version": "claude-haiku-5-5",
  "test_version": "readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2",
  "pass": true,
  "outcome": "pass",
  "time_to_working_s": 164.92296993200011,
  "total_s": 258.8022747039795,
  "steps": [
    "cd <guest-path> && pwd && ls -la && git status 2>&1 | head -3; id -u; python3 --version; cat README.md | head -150",
    "echo $CDP_URL; curl -s -m 10 -i $CDP_URL/json/version; echo; ls /inputs 2>&1; ls <guest-path> 2>&1",
    "cd <guest-path> && sed -n 150,400p README.md",
    "cd <guest-path> && grep -n \"requires-python\\|^name\\|scripts\" -A3 pyproject.toml | head -30; ls .coldpass; grep -n \"janissary\" pyproject.toml | head",
    "cd <guest-path> && python3 -m venv <guest-path> && <guest-path> install -q --upgrade pip 2>&1 | tail -3; cd <guest-path> && <guest-path> install -e . 2>&1 | tail -5",
    "cd <guest-path> && J=<guest-path>; $J terms show 2>&1 | head -20; echo ---; $J terms accept 2>&1; echo rc=$?; $J terms check 2>&1; echo rc=$?; $J --help 2>&1 | head -40",
    "cd <guest-path> && ls tools tests benchmark docs; grep -rl \"sqli\" tools tests --include=*.py | head; grep -n \"creds\\|--scan-git\" README.md | head -3",
    "cd <guest-path> && ls tests/fixtures | head -30; J=<guest-path>; $J creds --help 2>&1 | head -30",
    "mkdir -p <guest-path> && printf 'AWS_ACCESS_KEY_ID=<secret>\\nAWS_SECRET_ACCESS_KEY=<secret>\\n' > <guest-path> && cd <guest-path> && <guest-path> creds <guest-path> 2>&1; echo rc=$?",
    "mkdir -p <guest-path> && cat > <guest-path> <<'EOF'\nimport http.server, urllib.parse, sys\nclass H(http.server.BaseHTTPRequestHandler):\n    def do_GET(self):\n        u = urllib.parse.urlparse(self.path)\n        q = urllib.parse.parse_qs(u.query).get(\"q\", [\"\"])[0]\n        if u.path == \"/sqli\" and \"'\" in q:\n            body = b\"SQLITE_ERROR: near \\\"'\\\": syntax error\"\n            code = 500\n        elif u.path == \"/sqli\":\n            body = (\"<html><body>Results for \" + q + \"</body></html>\").encode()\n            code = 200\n        else:\n            body = b\"not found\"; code = 404\n        self.send_response(code)\n        self.send_header(\"Content-Type\", \"text/html\")\n        self.send_header(\"Content-Length\", str(len(body)))\n        self.end_headers()\n        self.wfile.write(body)\n    def log_message(self, *a): pass\nhttp.server.ThreadingHTTPServer((\"127.0.0.1\", 5001), H).serve_forever()\nEOF\ncd <guest-path> && (nohup python3 -I server.py > server.log 2>&1 &) ; sleep 1; curl -s \"http://127.0.0.1:5001/sqli?q=test\"; echo; curl -s -o /dev/null -w \"%{http_code}\\n\" \"http://127.0.0.1:5001/sqli?q='\"",
    "cd <guest-path> && timeout 600 <guest-path> scan -u \"http://127.0.0.1:5001/sqli?q=test\" -p q 2><guest-path>; echo rc=$?; tail -5 <guest-path>",
    "cd <guest-path> && grep -rn \"exit code\\|returncode\\|Exit code\" README.md docs/*.md | head; grep -n \"return 1\\|sys.exit\\|return 64\" src/janissary/cli.py | head -20",
    "cd <guest-path> && grep -rniE \"cron|schedul|--once|--now|webhook|while True\" src/janissary | head; mkdir -p <guest-path> && echo \"hello world, no secrets here\" > <guest-path> && <guest-path> creds <guest-path>; echo rc=$?; <guest-path> scan -u \"http://127.0.0.1:5001/sqli?q=test\" -p q --jsonl 2>/dev/null | head -c 400; echo; echo rc=$?",
    "mkdir -p <guest-path> && cd <guest-path> && cat > claims.json <<'EOF'\n[\n{\"kind\":\"claim\",\"claim\":\"Every finding carries raw_request and raw_response as HTTP/1.1 text (machine-readable JSONL)\",\"source\":\"Every finding carries `raw_request` and `raw_response` as HTTP/1.1 text\",\"input\":\"scan of local target http://127.0.0.1:5001/sqli?q=test with --jsonl\",\"expected\":\"JSONL output containing raw_request; exit code 1 because findings exist\",\"probe_kind\":\"cli\",\"argv\":[\"<guest-path>\",\"scan\",\"-u\",\"http://127.0.0.1:5001/sqli?q=test\",\"-p\",\"q\",\"--jsonl\"],\"expected_returncode\":1,\"expected_text\":\"raw_request\",\"stdin\":null,\"env\":{},\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"creds discovers credentials in a directory tree\",\"source\":\"Credential discovery in tree or Git history\",\"input\":\"clean directory <guest-path>\",\"expected\":\"0 findings\",\"probe_kind\":\"cli\",\"argv\":[\"<guest-path>\",\"creds\",\"<guest-path>\"],\"expected_text\":\"[*] 0 finding(s)\",\"stdin\":null,\"env\":{},\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"terms accept records Terms of Use acceptance\",\"source\":\"Accept the Terms of Use (required once before any network command):\",\"input\":\"janissary terms accept\",\"expected\":\"Terms version 1 accepted.\",\"probe_kind\":\"cli\",\"argv\":[\"<guest-path>\",\"terms\",\"accept\"],\"expected_text\":\"Terms version 1 accepted.\",\"stdin\":null,\"env\":{},\"cwd\":\"<guest-path>\"},\n{\"kind\":\"claim\",\"claim\":\"scan reports findings grouped by severity\",\"source\":\"Findings by severity:\",\"input\":\"scan of local target http://127.0.0.1:5001/sqli?q=test\",\"expected\":\"severity summary; exit code 1 because findings exist\",\"probe_kind\":\"cli\",\"argv\":[\"<guest-path>\",\"scan\",\"-u\",\"http://127.0.0.1:5001/sqli?q=test\",\"-p\",\"q\"],\"expected_returncode\":1,\"expected_text\":\"Findings by severity:\",\"stdin\":null,\"env\":{},\"cwd\":\"<guest-path>\"}\n]\nEOF\npython3 -I -c \"import json;print(len(json.load(open('claims.json'))))\"",
    "cd <guest-path> && cat > probe.json <<'EOF'\n{\"kind\":\"cli\",\"argv\":[\"<guest-path>\",\"scan\",\"-u\",\"http://127.0.0.1:5001/sqli?q=test\",\"-p\",\"q\",\"--jsonl\"],\"cwd\":\"<guest-path>\",\"stdin\":null,\"env\":{},\"expected_returncode\":1,\"expected_text\":\"raw_request\"}\nEOF\ncat > examples.json <<'EOF'\n[\n{\"kind\":\"example\",\"claim\":\"Scan a single endpoint (local target substituted for target.example)\",\"source\":\"README.md Quickstart: Scan a single endpoint\",\"input\":\"janissary scan -u http://127.0.0.1:5001/sqli?q=test -p q\",\"expected\":\"reflected XSS findings reported; exit code 1\",\"argv\":[\"<guest-path>\",\"scan\",\"-u\",\"http://127.0.0.1:5001/sqli?q=test\",\"-p\",\"q\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_returncode\":1,\"expected_text\":\"Findings by severity:\"},\n{\"kind\":\"example\",\"claim\":\"Scan a directory for credentials (offline, clean fixture; README example uses a git repo)\",\"source\":\"README.md Quickstart: Scan a Git repository for leaked credentials\",\"input\":\"janissary creds <guest-path>\",\"expected\":\"0 findings, exit code 0\",\"argv\":[\"<guest-path>\",\"creds\",\"<guest-path>\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"[*] 0 finding(s)\"}\n]\nEOF\ncat > cycles.json <<'EOF'\n{\"detected\":false,\"reason\":\"Inspected README.md and src/janissary (grep for cron, schedule, --once, --now, webhook, while True found no matches). janissary is a one-shot CLI (scan, creds, fingerprint, graphql, ws, admin, terms, agent, attack); no product scheduler or loop exists.\",\"checks\":[]}\nEOF\nfor f in probe claims examples cycles; do python3 -I -m json.tool $f.json >/dev/null && echo ok $f; done",
    "cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | tail -60",
    "cd <guest-path> && grep -n \"expected_returncode\\|def _run_example\\|example_checks\\|deferred\" check.py | head -40",
    "cd <guest-path> && sed -n 1195,1215p check.py",
    "cd <guest-path> && grep -n \"def example_expectation_documented\" -A12 check.py",
    "curl -s -m 5 \"http://localhost:5001/sqli?q=test\"; echo; cd <guest-path> && sed -n 1088,1110p check.py",
    "cd <guest-path> && sed -n 1110,1130p check.py",
    "cd <guest-path> && cat > examples.json <<'EOF'\n[\n{\"kind\":\"example\",\"claim\":\"Scan a directory for credentials (offline, clean fixture; README example uses a git repo)\",\"source\":\"README.md Quickstart: Scan a Git repository for leaked credentials\",\"input\":\"janissary creds <guest-path>\",\"expected\":\"0 findings, exit code 0\",\"argv\":[\"<guest-path>\",\"creds\",\"<guest-path>\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"[*] 0 finding(s)\"},\n{\"kind\":\"example\",\"claim\":\"Show the Terms of Use required before network commands\",\"source\":\"README.md Quickstart: Review with janissary terms show\",\"input\":\"janissary terms show\",\"expected\":\"Terms of Use text, exit code 0\",\"argv\":[\"<guest-path>\",\"terms\",\"show\"],\"cwd\":\"<guest-path>\",\"env\":{},\"expected_text\":\"JANISSARY TERMS OF USE - version 1\"}\n]\nEOF\ncd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | python3 -I -c \"import json,sys; d=json.load(sys.stdin); print(d['valid'], d['problems']); print(d['replay']['status']); print([ (c.get('verdict'),c.get('outcome')) for k in ('claims','example_checks','cycle_checks') for c in (d.get('replay',{}).get('details',{}).get(k) or [])])\" 2>&1 | head -30",
    "mkdir -p <guest-path> && cd <guest-path> && cat > report.json <<'EOF'\n{\"outcome\":\"working\",\"fault_owner\":null,\"operation\":\"Install JANISSARY from source, accept the Terms of Use, and run a DAST scan (janissary scan) and offline credential discovery (janissary creds) against a local HTTP target\",\"operation_scope\":\"Local target only: http://127.0.0.1:5001/sqli?q=test served by a fixture server at <guest-path> (left running). Requires Python >=3.10 (guest has 3.12.3) and a venv. No network, browser, or credentials were needed.\",\"steps\":[\"python3 -m venv <guest-path> && <guest-path> install -e . (README 'From source (development)')\",\"<guest-path> terms accept (README Quickstart)\",\"<guest-path> terms show\",\"<guest-path> scan -u \\\"http://127.0.0.1:5001/sqli?q=test\\\" -p q (README 'Scan a single endpoint'; returns exit 1 when findings exist)\",\"<guest-path> scan -u \\\"http://127.0.0.1:5001/sqli?q=test\\\" -p q --jsonl (README 'Machine-readable output')\",\"<guest-path> creds <guest-path> (finds AWS keys, exit 1)\",\"<guest-path> creds <guest-path> (exit 0, 0 findings)\"],\"deviations\":[\"Workspace is not a git repository and I did not run the git fetch/reset pin step; the pinned commit was not verified. Source already present in <guest-path> was used as-is.\",\"/inputs/coldpass-preflight.py does not exist in this guest; ran <guest-path> as instructed.\",\"README examples use https://target.example; substituted a local fixture HTTP server on 127.0.0.1:5001 (it reflects q unescaped and returns 500 on a single quote) because the scanner needs a reachable target.\",\"README 'Scan a Git repository' example (creds ./my-repo --scan-git) replaced by directory scan of an offline fixture; no git repo was created.\",\"The README scan example's exit code 1 (findings found) is documented in source code, not README text, so the scan example was recorded as a claim (exit 1 with 'Findings by severity:') rather than a checked example.\",\"Scope enforcement (--scope-include/--scope-exclude, exit 64) was not exercised.\",\"pip install -e . may have created egg-info metadata inside the workspace.\"],\"stuck_step\":null,\"main_blocker\":null,\"plain_failure\":null,\"suggested_fix\":\"None required. Optional: the scan example in README uses target.example, which cannot be run as-is; a documented local test target would make the quickstart easier to replay.\"}\nEOF\npython3 -I -m json.tool report.json >/dev/null && echo ok; cd <guest-path> && <env-var>=<guest-path> python3 -I <guest-path> --validate --replay 2>&1 | head -c 300"
  ],
  "stuck_step": null,
  "error_excerpt": null,
  "what_it_did": "Install JANISSARY from source, accept the Terms of Use, and run a DAST scan (janissary scan) and offline credential discovery (janissary creds) against a local HTTP target",
  "suggested_fix": null,
  "tokens_in": 564018,
  "tokens_out": 15766,
  "cost_usd": 0.0210899,
  "usage_complete": true,
  "checks": [
    {
      "check": "operation",
      "status": "PASS",
      "details": {
        "working": true,
        "argv": [
          "<guest-path>",
          "scan",
          "-u",
          "http://127.0.0.1:5001/sqli?q=test",
          "-p",
          "q",
          "--jsonl"
        ],
        "kind": "cli",
        "returncode": 1,
        "stdout": "{\"id\":\"jfv1:44538268085d38d45327bc8f51a1da6e\",\"class\":\"xss\",\"fingerprint\":\"jfv1:44538268085d38d45327bc8f51a1da6e\",\"title\":null,\"severity\":\"high\",\"url\":\"http://127.0.0.1:5001/sqli?q=%3Cscript%3Ealert%281%29%3C%2Fscript%3E\",\"method\":\"GET\",\"parameter\":\"q\",\"payload\":\"<script>alert(1)</script>\",\"raw_request\":\"GET /sqli?q=%3Cscript%3Ealert%281%29%3C%2Fscript%3E HTTP/1.1\\r\\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\\r\\nAccept-Encoding: identity\\r\\nAccept: text/html,application/json,*/*;q=0.8\\r\\nConnection: close\\r\\nHost: 127.0.0.1:5001\\r\\n\\r\\n\",\"raw_response\":\"HTTP/1.0 200 OK\\r\\nServer: BaseHTTP/0.6 Python/3.12.3\\r\\nDate: Tue, 27 Oct 2026 13:56:06 GMT\\r\\nContent-Type: text/html\\r\\nContent-Length: 63\\r\\n\\r\\n<html><body>Results for <script>alert(1)</script></body></html>\",\"signals\":[],\"timestamp\":\"2026-10-27T13:56:06Z\"}\n{\"id\":\"jfv1:44538268085d38d45327bc8f51a1da6e\",\"class\":\"xss\",\"fingerprint\":\"jfv1:44538268085d38d45327bc8f51a1da6e\",\"title\":null,\"severity\":\"high\",\"url\":\"http://127.0.0.1:5001/sqli?q=%3Cimg+src%3Dx+onerror%3Dalert%281%29%3E\",\"method\":\"GET\",\"parameter\":\"q\",\"payload\":\"<img src=x onerror=alert(1)>\",\"\n[excerpt truncated]",
        "stderr": "JANISSARY \u2014 differential DAST\n============================================================\n[*] Scanning http://127.0.0.1:5001/sqli?q=test\n[*] Parameters: q\n[*] Method: GET\n[*] Baseline samples: 10\n\n[*] Probing for WAF...\n    No WAF signatures observed\n  [q] baseline is static - timing gates disabled\n  [q] xss_script -> HIGH: reflected_xss | XSS payload reflected UNESCAPED in HTML\n  [q] xss_img -> HIGH: reflected_xss | XSS payload reflected UNESCAPED in HTML\n[excerpt truncated]",
        "needs_credentials": false,
        "needs_browser": false,
        "scope": "product operation"
      }
    }
  ],
  "safety": {
    "version": "z2x-1",
    "rules_version": "z2x-1",
    "summary": "Review signals: 4 known vulnerability.",
    "expected": "Reviewed as expected for a test run: attempted writes that failed, so nothing was written.",
    "findings": [
      {
        "kind": "known-vulnerability",
        "count": 4,
        "note": "OSV reports a known vulnerability in this dependency version.",
        "location_count": 1,
        "path": "requests"
      }
    ],
    "context": [],
    "limitations": [
      "A short run cannot establish that code is safe.",
      "Connections show IP addresses; proxies can hide the final hostname.",
      "Tracing covers dispatched commands and their children, not the whole OS; guest root can interfere with tracing."
    ],
    "static": {
      "dependency_note": "OSV scanned supported lockfiles; unpinned dependencies and unsupported formats are outside this check."
    },
    "evidence_url": "/safety/?run=Hetaireia--janissary-claude-haiku-5-5-1793109117027453833",
    "evidence_file": "/data/safety/Hetaireia--janissary-claude-haiku-5-5-1793109117027453833.json.gz"
  },
  "agent_execution": "native_agent",
  "agent_runtime": "claude-code",
  "agent_runtime_version": "2.1.310 (Claude Code)",
  "tool_transport": "mcp-assigned-vm",
  "platform": "linux",
  "reasoning": "low",
  "service_tier": null,
  "resources": {
    "cpus": 2,
    "memory_mib": 4096,
    "disk_mib": 32768
  },
  "native_tool_calls": 23,
  "native_bundle": null,
  "architecture": null,
  "backend": "hyperv",
  "platform_details": {
    "backend": "hyperv",
    "os": "linux"
  },
  "platform_conflicts": null,
  "sandbox_source": null,
  "source_pin": {
    "commit": "786295443825ec3ff58b4fcdfc6621450cf69d76",
    "url": "https://github.com/Hetaireia/janissary"
  },
  "purpose": "initial",
  "profile": {
    "model": "claude-haiku-5-5",
    "reasoning": "low"
  },
  "fault": {
    "owner": null,
    "status": "resolved",
    "reason": null
  },
  "fix_id": null,
  "verifies_run_id": null,
  "hosting": null,
  "operation_scope": "product operation",
  "tool_calls": 23,
  "guest_setup": null,
  "runtime": null,
  "runtime_version": null,
  "runtime_revision": null,
  "source_revision": null,
  "evidence_version": null,
  "failure_origin": null,
  "evidence_strength": "readme_checked",
  "works": "yes",
  "install_s": null,
  "first_use_s": null,
  "mcp": "none",
  "needs": [],
  "needs_which": null,
  "agent_interface": [
    "cli"
  ],
  "license": "Apache-2.0",
  "repo_url": "https://github.com/Hetaireia/janissary",
  "cost_to_try": "free",
  "hardware": null,
  "what_failed": null,
  "local_or_hosted": "local",
  "cycle_checks": [
    {
      "kind": "cycle",
      "claim": "Scheduled or looping main behavior",
      "source": "repository entry points",
      "input": "source inspection",
      "expected": "identify the product trigger",
      "verdict": "yes",
      "outcome": "Inspected README.md and src/janissary (grep for cron, schedule, --once, --now, webhook, while True found no matches). janissary is a one-shot CLI (scan, creds, fingerprint, graphql, ws, admin, terms, agent, attack); no product scheduler or loop exists.",
      "evidence": "Inspected README.md and src/janissary (grep for cron, schedule, --once, --now, webhook, while True found no matches). janissary is a one-shot CLI (scan, creds, fingerprint, graphql, ws, admin, terms, agent, attack); no product scheduler or loop exists.",
      "command": ""
    }
  ],
  "claims": [
    {
      "kind": "claim",
      "claim": "Every finding carries raw_request and raw_response as HTTP/1.1 text (machine-readable JSONL)",
      "source": "Every finding carries `raw_request` and `raw_response` as HTTP/1.1 text",
      "input": "scan of local target http://127.0.0.1:5001/sqli?q=test with --jsonl",
      "expected": "JSONL output containing raw_request; exit code 1 because findings exist",
      "command": "<guest-path> scan -u 'http://127.0.0.1:5001/sqli?q=test' -p q --jsonl",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: raw_request",
      "evidence": "raw_request\":\"GET /sqli?q=%3Cscript%3Ealert%281%29%3C%2Fscript%3E HTTP/1.1\\r\\nUser-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36\\r\\nAccept-Encoding: identity\\r\\nAccept: text/html,application/json,*/*;q=0.8\\r\\nConnection: close\\r\\nHost: 127.0.0.1:5001\\r\\n\\r\\n\",\"raw_response\":\"HTTP/1.0 200 OK\\r\\nServer: BaseHTTP/0.6 Python/3.12.3\\r\\nDate: Tue, 27 Oct 2026 13:56:07 GMT\\r\\nContent-Type: text/html\\r\\nContent-Length: 63\\r\\n\\r\\n<html><body>Results for <script>alert(1)</script></body></html>\",\"signals\":[],\"timestamp\":\"2026-10-27T",
      "returncode": 1,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "creds discovers credentials in a directory tree",
      "source": "Credential discovery in tree or Git history",
      "input": "clean directory <guest-path>",
      "expected": "0 findings",
      "command": "<guest-path> creds <guest-path>",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: [*] 0 finding(s)",
      "evidence": "[*] 0 finding(s)\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "terms accept records Terms of Use acceptance",
      "source": "Accept the Terms of Use (required once before any network command):",
      "input": "janissary terms accept",
      "expected": "Terms version 1 accepted.",
      "command": "<guest-path> terms accept",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Terms version 1 accepted.",
      "evidence": "Terms version 1 accepted.\nRecorded at <guest-path>\n",
      "returncode": 0,
      "source_checked": true,
      "source_file": "README.md"
    },
    {
      "kind": "claim",
      "claim": "scan reports findings grouped by severity",
      "source": "Findings by severity:",
      "input": "scan of local target http://127.0.0.1:5001/sqli?q=test",
      "expected": "severity summary; exit code 1 because findings exist",
      "command": "<guest-path> scan -u 'http://127.0.0.1:5001/sqli?q=test' -p q",
      "verdict": "yes",
      "outcome": "Real input produced the expected result: Findings by severity:",
      "evidence": "Findings by severity:\n    HIGH       2\n[*] Probing for WAF...\n    No WAF signatures observed\n  [q] baseline is static - timing gates disabled\n  [q] xss_script -> HIGH: reflected_xss | XSS payload reflected UNESCAPED in HTML\n  [q] xss_img -> HIGH: reflected_xss | XSS payload reflected UNESCAPED in HTML\n",
      "returncode": 1,
      "source_checked": true,
      "source_file": "README.md"
    }
  ],
  "claims_note": null,
  "example_checks": [
    {
      "kind": "example",
      "claim": "Scan a directory for credentials (offline, clean fixture; README example uses a git repo)",
      "source": "README.md Quickstart: Scan a Git repository for leaked credentials",
      "input": "janissary creds <guest-path>",
      "command": "<guest-path> creds <guest-path>",
      "evidence": "[*] 0 finding(s)",
      "deferred": false,
      "expected": "0 findings, exit code 0",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    },
    {
      "kind": "example",
      "claim": "Show the Terms of Use required before network commands",
      "source": "README.md Quickstart: Review with janissary terms show",
      "input": "janissary terms show",
      "command": "<guest-path> terms show",
      "evidence": "information it produces primarily to improve the security\nof the affected systems.\n\n6. NO WARRANTY\nJANISSARY is provided \"as is\", without warranty of any kind, as set\nout in the Apache License 2.0. These Terms supplement, and do not\nreplace, the Apache License 2.0.\n\n7. GOVERNING LAW\nThese Terms are governed by the laws of Victoria, Australia. The\nparties submit to the exclusive jurisdiction of the courts of\nVictoria, Australia.\n\nBy typing I AGREE, you confirm that you have read these Terms, that\nyou accept them, and that you will comply with clause 1 (Authorised\nUse) in every use of JANISSARY.",
      "deferred": false,
      "expected": "Terms of Use text, exit code 0",
      "returncode": 0,
      "verdict": "yes",
      "outcome": "command completed successfully"
    }
  ],
  "does_what_it_says": "yes",
  "maintenance": {
    "last_commit_at": "2026-10-27T10:15:13Z",
    "commits_90d": 205,
    "merged_prs_90d": 0,
    "open_issues": 4,
    "open_prs": 0,
    "reply_share": null,
    "reply_threads": 0,
    "median_reply_hours": null,
    "last_release_at": "2026-10-21T14:13:50Z",
    "archived": false,
    "verdict": "maintained",
    "note": "actively maintained: last commit 0 days ago; 205 commits and 0 merged PRs in 90 days; 4 open issues, 0 open PRs; latest release 2026-10-21"
  },
  "maintenance_verdict": "maintained",
  "maintenance_note": "actively maintained: last commit 0 days ago; 205 commits and 0 merged PRs in 90 days; 4 open issues, 0 open PRs; latest release 2026-10-21",
  "maintained": "active",
  "maintained_note": "last commit 0 days ago; 4 open issues, 4 answered or closed",
  "last_commit_at": "2026-10-27T10:15:16Z",
  "last_release_at": "2026-10-21T14:13:50Z",
  "open_issues": 4,
  "answered_issues": 4,
  "platforms_claimed": [
    "linux"
  ],
  "topic": "coding",
  "agent_interfaces": [
    {
      "interface": "cli",
      "evidence": "independent checker",
      "observed": true,
      "operation_checked": true
    }
  ],
  "agent_interfaces_note": "README metadata is a discovery hint, not pinned documentation proof. Observed interfaces were exercised in this run. An empty list means unknown.",
  "mcp_context": null,
  "tested_at": "2026-10-27T13:56:15.829800+00:00",
  "tested_commit": "786295443825ec3ff58b4fcdfc6621450cf69d76",
  "tested_with": {
    "agent": "claude-code",
    "agent_version": "2.1.310 (Claude Code)",
    "model": "claude-haiku-5-5",
    "model_route": "claude-haiku-5-5",
    "reasoning": "low",
    "os": "linux",
    "backend": "hyperv",
    "transport": "mcp-assigned-vm"
  },
  "setup_identity": {
    "repo": "Hetaireia/janissary",
    "source": "https://github.com/Hetaireia/janissary",
    "commit": "786295443825ec3ff58b4fcdfc6621450cf69d76",
    "source_revision": null,
    "os": "linux",
    "architecture": null,
    "backend": "hyperv",
    "model": "claude-haiku-5-5",
    "model_version": "claude-haiku-5-5",
    "agent_execution": "native_agent",
    "agent_runtime": "claude-code",
    "agent_runtime_version": "2.1.310 (Claude Code)",
    "tool_transport": "mcp-assigned-vm",
    "runtime": null,
    "runtime_version": null,
    "runtime_revision": null,
    "sandbox_source": null,
    "guest_setup": null,
    "source_pin": {
      "commit": "786295443825ec3ff58b4fcdfc6621450cf69d76",
      "url": "https://github.com/Hetaireia/janissary"
    },
    "platform_details": {
      "os": "linux",
      "backend": "hyperv"
    },
    "platform_conflicts": null,
    "reasoning": "low",
    "service_tier": null,
    "resources": {
      "cpus": 2,
      "memory_mib": 4096,
      "disk_mib": 32768
    },
    "operation": "Install JANISSARY from source, accept the Terms of Use, and run a DAST scan (janissary scan) and offline credential discovery (janissary creds) against a local HTTP target",
    "operation_scope": "product operation",
    "hosting": null,
    "kind": "repo",
    "test_version": "readme-d5b140d3c0f8b95c2dd6fe6fc381a303cacb92679582c22317d8e78b572f0cf2",
    "evidence_version": null
  },
  "other_model": null,
  "other_run_id": null,
  "models_agree": null,
  "furthest_model": null,
  "transcript_url": "/transcripts/Hetaireia--janissary-claude-haiku-5-5-1793109117027453833.txt",
  "report_url": "/reports/Hetaireia--janissary-claude-haiku-5-5-1793109117027453833.json"
}
