The-Fool-09 commited on
Commit
57a6d0c
·
verified ·
1 Parent(s): 51bc0c2

Upload folder using huggingface_hub

Browse files
Files changed (50) hide show
  1. AGENTS.md +8 -0
  2. Dockerfile +81 -0
  3. README.md +64 -10
  4. __init__.py +16 -0
  5. chunk1.json +68 -0
  6. client.py +107 -0
  7. eval/plausibility_eval.py +22 -0
  8. eval/test_bug_injector.py +49 -0
  9. eval/test_executor.py +26 -0
  10. graphify-out/GRAPH_REPORT.md +115 -0
  11. graphify-out/cache/0c6469e30544c18c153edc6c36fc813de3a5919105b54570f09136cd26cfc475.json +1 -0
  12. graphify-out/cache/1f05f73bdc29a2c726dfcbc4f0837f3e9268a4b0d7e90a96ed59fb4121c1bdba.json +1 -0
  13. graphify-out/cache/4284b1726a6f5337f88470318a6a3adc952d81bf0af980a3066fede2113a5de1.json +1 -0
  14. graphify-out/cache/42ccfd67266bbb0515001a31a0884b5111cf535a7456540aaf8126356f66c0d8.json +1 -0
  15. graphify-out/cache/4b0c118efff193a51a179a31f39f5b0ff13346f112a008af15a082475d834b5b.json +1 -0
  16. graphify-out/cache/56f26791a042ec1641e859dcef8c30dc6a237a8202a4a5a1d70d1f41bf5e8916.json +1 -0
  17. graphify-out/cache/7506245e194ca6061e161c330bcb6ca080a7be650cb6bc5f1e00ad900b81a709.json +1 -0
  18. graphify-out/cache/75483d038cbfffeee334670ed9b2d5b2b72a83aa109974b620ab06c6c532eacb.json +1 -0
  19. graphify-out/cache/b1a762596f5fee316f1df48b8cdd9fc129b88766a1d8a8ba2fd0c3ac49893360.json +1 -0
  20. graphify-out/cache/c9885de9861dfdbfb8bf65fbf952f414e725d2a6075f4b839d2e64559590e362.json +1 -0
  21. graphify-out/cache/cb20eafcbbe253b791b01a8f4d81e9275e85d46f833b71e1bd53abf19cd17e26.json +1 -0
  22. graphify-out/cache/d0a5997f201fea0af43ec9eeaaa25d7fcd42b2f27e50b4798176f0227ddf4f9c.json +1 -0
  23. graphify-out/cache/d6d5ae1a9a21fc3ab376c0282323e399ef74b332e975871ff941a93dec674d27.json +1 -0
  24. graphify-out/cache/eb2e059208921f657055e709a0f0bf0f0f435790fbb43c66ecb98c40d8d5af40.json +1 -0
  25. graphify-out/cache/ede71c6c9d6a4345dfd051cb97f6c21f3113e4558c838f39aba660c5a5206a95.json +1 -0
  26. graphify-out/cache/f33eda5e3a4e90a27a5be751f771e90a9733c095bbc2093d20044746d2d98c4a.json +1 -0
  27. graphify-out/graph.html +257 -0
  28. graphify-out/graph.json +2341 -0
  29. models.py +39 -0
  30. notebooks/train_colab.ipynb +511 -0
  31. openenv.yaml +8 -0
  32. openenv_debugZero.egg-info/PKG-INFO +14 -0
  33. openenv_debugZero.egg-info/SOURCES.txt +20 -0
  34. openenv_debugZero.egg-info/dependency_links.txt +1 -0
  35. openenv_debugZero.egg-info/entry_points.txt +2 -0
  36. openenv_debugZero.egg-info/requires.txt +10 -0
  37. openenv_debugZero.egg-info/top_level.txt +1 -0
  38. pyproject.toml +50 -0
  39. run_episode.py +36 -0
  40. server/__init__.py +11 -0
  41. server/app.py +81 -0
  42. server/bug_injector.py +192 -0
  43. server/debugZero_environment.py +128 -0
  44. server/executor.py +89 -0
  45. server/plausibility.py +32 -0
  46. server/requirements.txt +6 -0
  47. training/dual_role_sampler.py +27 -0
  48. training/grpo_train.py +126 -0
  49. training/rewards.py +45 -0
  50. uv.lock +0 -0
AGENTS.md ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ ## graphify
2
+
3
+ This project has a graphify knowledge graph at graphify-out/.
4
+
5
+ Rules:
6
+ - Before answering architecture or codebase questions, read graphify-out/GRAPH_REPORT.md for god nodes and community structure
7
+ - If graphify-out/wiki/index.md exists, navigate it instead of reading raw files
8
+ - After modifying code files in this session, run `graphify update .` to keep the graph current (AST-only, no API cost)
Dockerfile ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ # Multi-stage build using openenv-base
8
+ # This Dockerfile is flexible and works for both:
9
+ # - In-repo environments (with local OpenEnv sources)
10
+ # - Standalone environments (with openenv from PyPI/Git)
11
+ # The build script (openenv build) handles context detection and sets appropriate build args.
12
+
13
+ ARG BASE_IMAGE=ghcr.io/meta-pytorch/openenv-base:latest
14
+ FROM ${BASE_IMAGE} AS builder
15
+
16
+ WORKDIR /app
17
+
18
+ # Ensure git is available (required for installing dependencies from VCS)
19
+ RUN apt-get update && \
20
+ apt-get install -y --no-install-recommends git && \
21
+ rm -rf /var/lib/apt/lists/*
22
+
23
+ # Build argument to control whether we're building standalone or in-repo
24
+ ARG BUILD_MODE=in-repo
25
+ ARG ENV_NAME=debugZero
26
+
27
+ # Copy environment code (always at root of build context)
28
+ COPY . /app/env
29
+
30
+ # For in-repo builds, openenv is already vendored in the build context
31
+ # For standalone builds, openenv will be installed via pyproject.toml
32
+ WORKDIR /app/env
33
+
34
+ # Ensure uv is available (for local builds where base image lacks it)
35
+ RUN if ! command -v uv >/dev/null 2>&1; then \
36
+ curl -LsSf https://astral.sh/uv/install.sh | sh && \
37
+ mv /root/.local/bin/uv /usr/local/bin/uv && \
38
+ mv /root/.local/bin/uvx /usr/local/bin/uvx; \
39
+ fi
40
+
41
+ # Install dependencies using uv sync
42
+ # If uv.lock exists, use it; otherwise resolve on the fly
43
+ RUN --mount=type=cache,target=/root/.cache/uv \
44
+ if [ -f uv.lock ]; then \
45
+ uv sync --frozen --no-install-project --no-editable; \
46
+ else \
47
+ uv sync --no-install-project --no-editable; \
48
+ fi
49
+
50
+ RUN --mount=type=cache,target=/root/.cache/uv \
51
+ if [ -f uv.lock ]; then \
52
+ uv sync --frozen --no-editable; \
53
+ else \
54
+ uv sync --no-editable; \
55
+ fi
56
+
57
+ # Final runtime stage
58
+ FROM ${BASE_IMAGE}
59
+
60
+ WORKDIR /app
61
+
62
+ # Copy the virtual environment from builder
63
+ COPY --from=builder /app/env/.venv /app/.venv
64
+
65
+ # Copy the environment code
66
+ COPY --from=builder /app/env /app/env
67
+
68
+ # Set PATH to use the virtual environment
69
+ ENV PATH="/app/.venv/bin:$PATH"
70
+
71
+ # Set PYTHONPATH so imports work correctly
72
+ ENV PYTHONPATH="/app/env:$PYTHONPATH"
73
+
74
+ # Health check
75
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
76
+ CMD curl -f http://localhost:8000/health || exit 1
77
+
78
+ # Run the FastAPI server
79
+ # The module path is constructed to work with the /app/env structure
80
+ ENV ENABLE_WEB_INTERFACE=true
81
+ CMD ["sh", "-c", "cd /app/env && uvicorn server.app:app --host 0.0.0.0 --port 8000"]
README.md CHANGED
@@ -1,10 +1,64 @@
1
- ---
2
- title: DebugZero
3
- emoji: 🔥
4
- colorFrom: blue
5
- colorTo: gray
6
- sdk: docker
7
- pinned: false
8
- ---
9
-
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ title: DebugZero
3
+ emoji: 🧪
4
+ colorFrom: blue
5
+ colorTo: green
6
+ sdk: docker
7
+ pinned: false
8
+ base_path: /web
9
+ ---
10
+
11
+ # DebugZero Environment
12
+
13
+ *Our environment extends the Absolute Zero paradigm (Zhao et al., NeurIPS 2025) to adversarial bug-fixing self-play. The Proposer's mutation operators are implemented from scratch using Python AST manipulation across 8 operator types. The verifier adapts Mutahunter's execution pipeline.*
14
+
15
+ DebugZero is a self-play environment where one LLM plays two roles:
16
+ 1. **Proposer**: Injects realistic bugs into clean Python functions using AST-level edits.
17
+ 2. **Solver**: Fixes the bugs, practicing on the generated adversarial examples.
18
+
19
+ This project enables fully self-improving debugging capabilities without human-curated datasets, verified by a strict Python execution sandbox.
20
+
21
+ ## Setup
22
+
23
+ First, install dependencies:
24
+ ```bash
25
+ uv sync
26
+ ```
27
+
28
+ ## Running the Training Loop
29
+
30
+ We provide a direct implementation of the Hugging Face TRL GRPOTrainer, modified to support a dual-role `reward_fn` dynamic routing system.
31
+
32
+ ```bash
33
+ python training/grpo_train.py
34
+ ```
35
+
36
+ For the hackathon submission, use the rerunnable Colab notebook at
37
+ [`notebooks/train_colab.ipynb`](notebooks/train_colab.ipynb). It installs DebugZero
38
+ from GitHub, connects through the packaged OpenEnv client, trains with TRL/Unsloth
39
+ against live `reset`/`step` environment rollouts, and saves reward/loss plots for
40
+ the README.
41
+
42
+ ## Repository Structure
43
+
44
+ ```
45
+ debugZero/
46
+ ├── server/
47
+ │ ├── app.py # OpenEnv FastAPI app
48
+ │ ├── debugZero_environment.py # Environment state machine tracking Proposer/Solver turns
49
+ │ ├── executor.py # Isolated subprocess execution sandbox (timeout=5s)
50
+ │ ├── bug_injector.py # AST mutation engine with 8 operators and strict safety checks
51
+ │ └── plausibility.py # Levenshtein AST distance calculator
52
+ ├── training/
53
+ │ ├── rewards.py # Calculation for Proposer and Solver rewards + learnability deque
54
+ │ ├── dual_role_sampler.py # Prompt templates for Qwen2.5-Coder-3B-Instruct
55
+ │ └── grpo_train.py # TRL trainer bridging output metadata to reward forms
56
+ ├── eval/
57
+ │ └── plausibility_eval.py # Offline benchmark tool against navidadkhah 25k bug dataset
58
+ ├── models.py # Data types for the dual-role protocol
59
+ └── client.py # OpenEnv DebugZero client class
60
+ ```
61
+
62
+ ## Safety
63
+
64
+ DebugZero wraps the execution in a standard `openenv` container via FastAPI, but specifically filters AST payloads using an `is_safe` string filter to prevent `os`, `sys`, `subprocess`, `shutil`, and `pathlib` evaluations.
__init__.py ADDED
@@ -0,0 +1,16 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ """Debugzero Environment."""
8
+
9
+ from .client import DebugzeroEnv
10
+ from .models import DebugzeroAction, DebugzeroObservation
11
+
12
+ __all__ = [
13
+ "DebugzeroAction",
14
+ "DebugzeroObservation",
15
+ "DebugzeroEnv",
16
+ ]
chunk1.json ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "nodes": [
3
+ {"id": "debugzero", "label": "DebugZero", "file_type": "code"},
4
+ {"id": "absolute_zero", "label": "Absolute Zero", "file_type": "paper"},
5
+ {"id": "proposer_role", "label": "Proposer", "file_type": "code"},
6
+ {"id": "solver_role", "label": "Solver", "file_type": "code"},
7
+ {"id": "ast_manipulation", "label": "AST Manipulation", "file_type": "code"},
8
+ {"id": "bug_injector", "label": "bug_injector.py", "file_type": "code"},
9
+ {"id": "executor", "label": "executor.py", "file_type": "code"},
10
+ {"id": "plausibility", "label": "plausibility.py", "file_type": "code"},
11
+ {"id": "debugzero_env", "label": "debugZero_environment.py", "file_type": "code"},
12
+ {"id": "rewards", "label": "rewards.py", "file_type": "code"},
13
+ {"id": "dual_role_sampler", "label": "dual_role_sampler.py", "file_type": "code"},
14
+ {"id": "grpo_train", "label": "grpo_train.py", "file_type": "code"},
15
+ {"id": "plausibility_eval", "label": "plausibility_eval.py", "file_type": "code"},
16
+ {"id": "models", "label": "models.py", "file_type": "code"},
17
+ {"id": "client", "label": "client.py", "file_type": "code"},
18
+ {"id": "mutahunter", "label": "Mutahunter", "file_type": "code"},
19
+ {"id": "grpo_trainer", "label": "GRPOTrainer", "file_type": "code"},
20
+ {"id": "qwen_model", "label": "Qwen2.5-Coder-3B-Instruct", "file_type": "code"},
21
+ {"id": "fastapi", "label": "FastAPI", "file_type": "code"},
22
+ {"id": "uvicorn", "label": "uvicorn", "file_type": "code"},
23
+ {"id": "openenv", "label": "openenv", "file_type": "code"},
24
+ {"id": "levenshtein", "label": "Levenshtein Distance", "file_type": "code"},
25
+ {"id": "python_sandbox", "label": "Python Execution Sandbox", "file_type": "code"},
26
+ {"id": "navidadkhah_dataset", "label": "navidadkhah 25k Bug Dataset", "file_type": "document"},
27
+ {"id": "zhao_paper", "label": "Zhao et al., NeurIPS 2025", "file_type": "paper"}
28
+ ],
29
+ "edges": [
30
+ {"source": "debugzero", "target": "absolute_zero", "relation": "extends_paradigm", "confidence": "EXTRACTED"},
31
+ {"source": "debugzero", "target": "proposer_role", "relation": "has_role", "confidence": "EXTRACTED"},
32
+ {"source": "debugzero", "target": "solver_role", "relation": "has_role", "confidence": "EXTRACTED"},
33
+ {"source": "proposer_role", "target": "ast_manipulation", "relation": "uses", "confidence": "EXTRACTED"},
34
+ {"source": "proposer_role", "target": "bug_injector", "relation": "implemented_by", "confidence": "EXTRACTED"},
35
+ {"source": "bug_injector", "target": "ast_manipulation", "relation": "implements", "confidence": "EXTRACTED"},
36
+ {"source": "executor", "target": "python_sandbox", "relation": "provides", "confidence": "EXTRACTED"},
37
+ {"source": "plausibility", "target": "levenshtein", "relation": "uses_algorithm", "confidence": "EXTRACTED"},
38
+ {"source": "debugzero_env", "target": "proposer_role", "relation": "tracks_state", "confidence": "EXTRACTED"},
39
+ {"source": "debugzero_env", "target": "solver_role", "relation": "tracks_state", "confidence": "EXTRACTED"},
40
+ {"source": "rewards", "target": "proposer_role", "relation": "calculates_reward_for", "confidence": "EXTRACTED"},
41
+ {"source": "rewards", "target": "solver_role", "relation": "calculates_reward_for", "confidence": "EXTRACTED"},
42
+ {"source": "dual_role_sampler", "target": "qwen_model", "relation": "uses", "confidence": "EXTRACTED"},
43
+ {"source": "grpo_train", "target": "grpo_trainer", "relation": "uses", "confidence": "EXTRACTED"},
44
+ {"source": "plausibility_eval", "target": "navidadkhah_dataset", "relation": "benchmarks_against", "confidence": "EXTRACTED"},
45
+ {"source": "debugzero", "target": "fastapi", "relation": "uses", "confidence": "EXTRACTED"},
46
+ {"source": "debugzero", "target": "uvicorn", "relation": "uses", "confidence": "EXTRACTED"},
47
+ {"source": "debugzero", "target": "openenv", "relation": "uses", "confidence": "EXTRACTED"},
48
+ {"source": "debugzero", "target": "mutahunter", "relation": "adapts_execution_pipeline", "confidence": "EXTRACTED"},
49
+ {"source": "debugzero", "target": "zhao_paper", "relation": "cites", "confidence": "EXTRACTED"}
50
+ ],
51
+ "hyperedges": [
52
+ {
53
+ "id": "server_module",
54
+ "label": "Server Module",
55
+ "nodes": ["bug_injector", "executor", "plausibility", "debugzero_env", "fastapi"]
56
+ },
57
+ {
58
+ "id": "training_module",
59
+ "label": "Training Module",
60
+ "nodes": ["rewards", "dual_role_sampler", "grpo_train", "grpo_trainer", "qwen_model"]
61
+ },
62
+ {
63
+ "id": "eval_module",
64
+ "label": "Evaluation Module",
65
+ "nodes": ["plausibility_eval", "navidadkhah_dataset", "levenshtein"]
66
+ }
67
+ ]
68
+ }
client.py ADDED
@@ -0,0 +1,107 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ """Debugzero Environment Client."""
8
+
9
+ from typing import Dict
10
+
11
+ from openenv.core import EnvClient
12
+ from openenv.core.client_types import StepResult
13
+ from openenv.core.env_server.types import State
14
+
15
+ from .models import DebugzeroAction, DebugzeroObservation, DebugzeroState
16
+
17
+
18
+ class DebugzeroEnv(
19
+ EnvClient[DebugzeroAction, DebugzeroObservation, DebugzeroState]
20
+ ):
21
+ """
22
+ Client for the DebugZero Environment.
23
+
24
+ This client maintains a persistent WebSocket connection to the environment server,
25
+ enabling efficient multi-step interactions for Proposer/Solver roles.
26
+ Each client instance has its own dedicated environment session on the server.
27
+
28
+ Example:
29
+ >>> # Connect to a running server
30
+ >>> with DebugzeroEnv(base_url="http://localhost:8000") as client:
31
+ ... result = client.reset()
32
+ ... print(result.observation.current_code)
33
+ ...
34
+ ... result = client.step(DebugzeroAction(role="proposer", code="buggy code"))
35
+ ... print(result.observation.tests_passed)
36
+
37
+ Example with Docker:
38
+ >>> # Automatically start container and connect
39
+ >>> client = DebugzeroEnv.from_docker_image("debugZero-env:latest")
40
+ >>> try:
41
+ ... result = client.reset()
42
+ ... result = client.step(DebugzeroAction(role="proposer", code="import os"))
43
+ ... finally:
44
+ ... client.close()
45
+ """
46
+
47
+ def _step_payload(self, action: DebugzeroAction) -> Dict:
48
+ """
49
+ Convert DebugzeroAction to JSON payload for step message.
50
+
51
+ Args:
52
+ action: DebugzeroAction instance
53
+
54
+ Returns:
55
+ Dictionary representation suitable for JSON encoding
56
+ """
57
+ return {
58
+ "role": action.role,
59
+ "code": action.code,
60
+ }
61
+
62
+ def _parse_result(self, payload: Dict) -> StepResult[DebugzeroObservation]:
63
+ """
64
+ Parse server response into StepResult[DebugzeroObservation].
65
+
66
+ Args:
67
+ payload: JSON response data from server
68
+
69
+ Returns:
70
+ StepResult with DebugzeroObservation
71
+ """
72
+ obs_data = payload.get("observation", {})
73
+ observation = DebugzeroObservation(
74
+ role_next=obs_data.get("role_next", "proposer"),
75
+ current_code=obs_data.get("current_code", ""),
76
+ execution_result=obs_data.get("execution_result", ""),
77
+ tests_passed=obs_data.get("tests_passed", False),
78
+ syntax_error=obs_data.get("syntax_error", False),
79
+ done=payload.get("done", False),
80
+ reward=payload.get("reward"),
81
+ metadata=obs_data.get("metadata", {}),
82
+ )
83
+
84
+ return StepResult(
85
+ observation=observation,
86
+ reward=payload.get("reward"),
87
+ done=payload.get("done", False),
88
+ )
89
+
90
+ def _parse_state(self, payload: Dict) -> DebugzeroState:
91
+ """
92
+ Parse server response into State object.
93
+
94
+ Args:
95
+ payload: JSON response from state request
96
+
97
+ Returns:
98
+ State object
99
+ """
100
+ return DebugzeroState(
101
+ episode_id=payload.get("episode_id"),
102
+ step_count=payload.get("step_count", 0),
103
+ seed_id=payload.get("seed_id", ""),
104
+ original_code=payload.get("original_code", ""),
105
+ current_code=payload.get("current_code", ""),
106
+ role_turn=payload.get("role_turn", "proposer"),
107
+ )
eval/plausibility_eval.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import ast
2
+ from training.rewards import compute_proposer_reward
3
+ from server.plausibility import compute_ast_distance
4
+
5
+ def evaluate_navidadkhah_plausibility():
6
+ """
7
+ Offline evaluation of generated bugs against the navidadkhah 25k bug dataset.
8
+ This checks if our Proposer's generated bugs have realistic AST distances
9
+ similar to actual human-made bugs in the dataset.
10
+ """
11
+ # Pseudo-code for evaluation script
12
+ print("Evaluating plausibility against navidadkhah dataset...")
13
+
14
+ dummy_human_bug = "def add(a, b): return a - b"
15
+ dummy_clean = "def add(a, b): return a + b"
16
+
17
+ dist = compute_ast_distance(dummy_clean, dummy_human_bug)
18
+ print(f"Average human bug AST distance score: {dist}")
19
+ print("Compare this with our trained Proposer's average score to validate plausibility.")
20
+
21
+ if __name__ == "__main__":
22
+ evaluate_navidadkhah_plausibility()
eval/test_bug_injector.py ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pytest
2
+ from server.bug_injector import inject_bug
3
+
4
+ SEED = """def factorial(n):
5
+ if n == 0:
6
+ return 1
7
+ return n * factorial(n - 1)
8
+ """
9
+
10
+ def test_missing_base_case():
11
+ mutated, changed = inject_bug(SEED, "missing_base_case")
12
+ # Base case should be pass
13
+ assert changed == True
14
+ assert "return 1" not in mutated
15
+ assert "pass" in mutated
16
+
17
+ def test_off_by_one():
18
+ # Value 0 or 1 should be shifted
19
+ mutated, changed = inject_bug(SEED, "off_by_one")
20
+ assert changed == True
21
+ assert mutated != SEED
22
+
23
+ SEED2 = "def count_up(n): return range(n)"
24
+
25
+ def test_loop_boundary_shift():
26
+ mutated, changed = inject_bug(SEED2, "loop_boundary_shift")
27
+ assert changed == True
28
+ assert "range(n + 1)" in mutated
29
+
30
+ SEED3 = "def do_any(arr): return any(arr)"
31
+
32
+ def test_wrong_builtin():
33
+ mutated, changed = inject_bug(SEED3, "wrong_builtin")
34
+ assert changed == True
35
+ assert "all(arr)" in mutated
36
+
37
+ SEED4 = "def check(x): return x > 0"
38
+ def test_condition_negation():
39
+ # Should wrap in not
40
+ mutated, changed = inject_bug("if x > 0:\n pass", "condition_negation")
41
+ assert changed == True
42
+ assert "if not x > 0:" in mutated
43
+
44
+ def test_safety_check_blocks():
45
+ # Injecting import os directly shouldn't be possible through AST operations, but let's test if the safety injector logic would block it if we injected it manually.
46
+ from server.bug_injector import is_safe_injection
47
+ unsafe = SEED + "\nimport os"
48
+ assert is_safe_injection(unsafe) == False
49
+ assert is_safe_injection(SEED) == True
eval/test_executor.py ADDED
@@ -0,0 +1,26 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import pytest
2
+ from server.executor import is_safe, execute_code
3
+
4
+ def test_executor_is_safe():
5
+ assert is_safe("def add(a,b):\n return a+b") == True
6
+
7
+ # Blocked imports
8
+ assert is_safe("import os") == False
9
+ assert is_safe("from os import path") == False
10
+ assert is_safe("import sys\nsys.exit(1)") == False
11
+ assert is_safe("import subprocess as sp") == False
12
+
13
+ # Syntax errors
14
+ assert is_safe("def add(a b):") == False
15
+
16
+ def test_execute_code():
17
+ code = "def add(a, b): return a + b"
18
+ tests = "assert add(1, 2) == 3"
19
+ res = execute_code(code, tests)
20
+ assert res.passed == True
21
+ assert res.syntax_error == False
22
+
23
+ code_buggy = "def add(a, b): return a - b"
24
+ res2 = execute_code(code_buggy, tests)
25
+ assert res2.passed == False
26
+ assert res2.syntax_error == False
graphify-out/GRAPH_REPORT.md ADDED
@@ -0,0 +1,115 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Graph Report - C:\Users\astra\Desktop\hackon\debugZero (2026-04-25)
2
+
3
+ ## Corpus Check
4
+ - 16 files · ~3,811 words
5
+ - Verdict: corpus is large enough that graph structure adds value.
6
+
7
+ ## Summary
8
+ - 83 nodes · 132 edges · 11 communities detected
9
+ - Extraction: 64% EXTRACTED · 36% INFERRED · 0% AMBIGUOUS · INFERRED: 48 edges (avg confidence: 0.64)
10
+ - Token cost: 0 input · 0 output
11
+
12
+ ## Community Hubs (Navigation)
13
+ - [[_COMMUNITY_Community 0|Community 0]]
14
+ - [[_COMMUNITY_Community 1|Community 1]]
15
+ - [[_COMMUNITY_Community 2|Community 2]]
16
+ - [[_COMMUNITY_Community 3|Community 3]]
17
+ - [[_COMMUNITY_Community 4|Community 4]]
18
+ - [[_COMMUNITY_Community 5|Community 5]]
19
+ - [[_COMMUNITY_Community 6|Community 6]]
20
+ - [[_COMMUNITY_Community 7|Community 7]]
21
+ - [[_COMMUNITY_Community 8|Community 8]]
22
+ - [[_COMMUNITY_Community 9|Community 9]]
23
+ - [[_COMMUNITY_Community 10|Community 10]]
24
+
25
+ ## God Nodes (most connected - your core abstractions)
26
+ 1. `DebugzeroObservation` - 14 edges
27
+ 2. `DebugzeroState` - 13 edges
28
+ 3. `DebugzeroAction` - 12 edges
29
+ 4. `DebugzeroEnvironment` - 12 edges
30
+ 5. `BugInjectorVisitor` - 11 edges
31
+ 6. `inject_bug()` - 9 edges
32
+ 7. `DebugzeroEnv` - 8 edges
33
+ 8. `execute_code()` - 6 edges
34
+ 9. `test_local_env()` - 5 edges
35
+ 10. `Dual-role DebugZero Environment wrapping a Python sandbox execution for Prop` - 5 edges
36
+
37
+ ## Surprising Connections (you probably didn't know these)
38
+ - `DebugzeroEnv` --uses--> `DebugzeroAction` [INFERRED]
39
+ C:\Users\astra\Desktop\hackon\debugZero\client.py → C:\Users\astra\Desktop\hackon\debugZero\models.py
40
+ - `DebugzeroEnv` --uses--> `DebugzeroObservation` [INFERRED]
41
+ C:\Users\astra\Desktop\hackon\debugZero\client.py → C:\Users\astra\Desktop\hackon\debugZero\models.py
42
+ - `Client for the DebugZero Environment. This client maintains a persistent We` --uses--> `DebugzeroAction` [INFERRED]
43
+ C:\Users\astra\Desktop\hackon\debugZero\client.py → C:\Users\astra\Desktop\hackon\debugZero\models.py
44
+ - `Client for the DebugZero Environment. This client maintains a persistent We` --uses--> `DebugzeroObservation` [INFERRED]
45
+ C:\Users\astra\Desktop\hackon\debugZero\client.py → C:\Users\astra\Desktop\hackon\debugZero\models.py
46
+ - `Convert DebugzeroAction to JSON payload for step message. Args:` --uses--> `DebugzeroAction` [INFERRED]
47
+ C:\Users\astra\Desktop\hackon\debugZero\client.py → C:\Users\astra\Desktop\hackon\debugZero\models.py
48
+
49
+ ## Communities
50
+
51
+ ### Community 0 - "Community 0"
52
+ Cohesion: 0.29
53
+ Nodes (9): inject_bug(), is_safe_injection(), 4 critical checks: - parse succeeds - mutation actually changed code, test_condition_negation(), test_loop_boundary_shift(), test_missing_base_case(), test_off_by_one(), test_safety_check_blocks() (+1 more)
54
+
55
+ ### Community 1 - "Community 1"
56
+ Cohesion: 0.29
57
+ Nodes (7): DebugzeroEnv, Client for the DebugZero Environment. This client maintains a persistent We, Convert DebugzeroAction to JSON payload for step message. Args:, Parse server response into State object. Args: payload: JSO, DebugzeroState, State for the DebugZero environment, extending default state with seed context., State
58
+
59
+ ### Community 2 - "Community 2"
60
+ Cohesion: 0.2
61
+ Nodes (1): BugInjectorVisitor
62
+
63
+ ### Community 3 - "Community 3"
64
+ Cohesion: 0.27
65
+ Nodes (7): execute_code(), ExecutionResult, is_safe(), Check if the code contains any blocked imports strings. Also performs a qu, Executes the provided python code alongside its tests in an isolated subprocess., test_execute_code(), test_executor_is_safe()
66
+
67
+ ### Community 4 - "Community 4"
68
+ Cohesion: 0.33
69
+ Nodes (7): create_dataset(), main(), reward_fn(), compute_proposer_reward(), compute_solver_reward(), get_solve_rate(), record_solve_result()
70
+
71
+ ### Community 5 - "Community 5"
72
+ Cohesion: 0.32
73
+ Nodes (1): main()
74
+
75
+ ### Community 6 - "Community 6"
76
+ Cohesion: 0.47
77
+ Nodes (3): DebugzeroEnvironment, Environment, test_local_env()
78
+
79
+ ### Community 7 - "Community 7"
80
+ Cohesion: 0.4
81
+ Nodes (5): Parse server response into StepResult[DebugzeroObservation]. Args:, Dual-role DebugZero Environment wrapping a Python sandbox execution for Prop, DebugzeroObservation, Observation from the DebugZero environment following sandbox execution., Observation
82
+
83
+ ### Community 8 - "Community 8"
84
+ Cohesion: 0.33
85
+ Nodes (4): compute_ast_distance(), evaluate_navidadkhah_plausibility(), Offline evaluation of generated bugs against the navidadkhah 25k bug dataset., Computes the string similarity distance between the AST dumps of the original
86
+
87
+ ### Community 9 - "Community 9"
88
+ Cohesion: 0.5
89
+ Nodes (4): Action, Entry point for direct execution via uv run or python -m. This function ena, DebugzeroAction, Action for the DebugZero environment representing the Proposer or Solver inputs.
90
+
91
+ ### Community 10 - "Community 10"
92
+ Cohesion: 0.67
93
+ Nodes (0):
94
+
95
+ ## Knowledge Gaps
96
+ - **8 isolated node(s):** `Action for the DebugZero environment representing the Proposer or Solver inputs.`, `Observation from the DebugZero environment following sandbox execution.`, `State for the DebugZero environment, extending default state with seed context.`, `Offline evaluation of generated bugs against the navidadkhah 25k bug dataset.`, `4 critical checks: - parse succeeds - mutation actually changed code` (+3 more)
97
+ These have ≤1 connection - possible missing edges or undocumented components.
98
+
99
+ ## Suggested Questions
100
+ _Questions this graph is uniquely positioned to answer:_
101
+
102
+ - **Why does `DebugzeroEnvironment` connect `Community 6` to `Community 1`, `Community 3`, `Community 5`, `Community 7`, `Community 9`?**
103
+ _High betweenness centrality (0.209) - this node is a cross-community bridge._
104
+ - **Why does `BugInjectorVisitor` connect `Community 2` to `Community 0`?**
105
+ _High betweenness centrality (0.176) - this node is a cross-community bridge._
106
+ - **Why does `inject_bug()` connect `Community 0` to `Community 2`?**
107
+ _High betweenness centrality (0.134) - this node is a cross-community bridge._
108
+ - **Are the 11 inferred relationships involving `DebugzeroObservation` (e.g. with `DebugzeroEnv` and `Client for the DebugZero Environment. This client maintains a persistent We`) actually correct?**
109
+ _`DebugzeroObservation` has 11 INFERRED edges - model-reasoned connections that need verification._
110
+ - **Are the 10 inferred relationships involving `DebugzeroState` (e.g. with `DebugzeroEnv` and `Client for the DebugZero Environment. This client maintains a persistent We`) actually correct?**
111
+ _`DebugzeroState` has 10 INFERRED edges - model-reasoned connections that need verification._
112
+ - **Are the 9 inferred relationships involving `DebugzeroAction` (e.g. with `DebugzeroEnv` and `Client for the DebugZero Environment. This client maintains a persistent We`) actually correct?**
113
+ _`DebugzeroAction` has 9 INFERRED edges - model-reasoned connections that need verification._
114
+ - **Are the 6 inferred relationships involving `DebugzeroEnvironment` (e.g. with `Entry point for direct execution via uv run or python -m. This function ena` and `DebugzeroAction`) actually correct?**
115
+ _`DebugzeroEnvironment` has 6 INFERRED edges - model-reasoned connections that need verification._
graphify-out/cache/0c6469e30544c18c153edc6c36fc813de3a5919105b54570f09136cd26cfc475.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_init_py", "label": "__init__.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\__init__.py", "source_location": "L1"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_init_py", "target": "c_users_astra_desktop_hackon_debugzero_client_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\__init__.py", "source_location": "L9", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_init_py", "target": "c_users_astra_desktop_hackon_debugzero_models_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\__init__.py", "source_location": "L10", "weight": 1.0}], "raw_calls": []}
graphify-out/cache/1f05f73bdc29a2c726dfcbc4f0837f3e9268a4b0d7e90a96ed59fb4121c1bdba.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_server_app_py", "label": "app.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L1"}, {"id": "app_main", "label": "main()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L60"}, {"id": "app_rationale_61", "label": "Entry point for direct execution via uv run or python -m. This function ena", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L61"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_server_app_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L30", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_app_py", "target": "openenv_core_env_server_http_server", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L36", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_app_py", "target": "c_users_astra_desktop_hackon_debugzero_models_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L43", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_app_py", "target": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L44", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_app_py", "target": "models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L46", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_app_py", "target": "server_debugzero_environment", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L47", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_app_py", "target": "app_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L60", "weight": 1.0}, {"source": "app_rationale_61", "target": "app_main", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L61", "weight": 1.0}], "raw_calls": [{"caller_nid": "app_main", "callee": "ArgumentParser", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L72"}, {"caller_nid": "app_main", "callee": "add_argument", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L73"}, {"caller_nid": "app_main", "callee": "add_argument", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L74"}, {"caller_nid": "app_main", "callee": "parse_args", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L75"}, {"caller_nid": "app_main", "callee": "run", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "source_location": "L77"}]}
graphify-out/cache/4284b1726a6f5337f88470318a6a3adc952d81bf0af980a3066fede2113a5de1.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "label": "executor.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L1"}, {"id": "executor_is_safe", "label": "is_safe()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L9"}, {"id": "executor_executionresult", "label": "ExecutionResult", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L44"}, {"id": "executor_executionresult_init", "label": ".__init__()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L45"}, {"id": "executor_execute_code", "label": "execute_code()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L51"}, {"id": "executor_rationale_10", "label": "Check if the code contains any blocked imports strings. Also performs a qu", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L10"}, {"id": "executor_rationale_52", "label": "Executes the provided python code alongside its tests in an isolated subprocess.", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L52"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "target": "subprocess", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "target": "tempfile", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L3", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "target": "ast", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L4", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "target": "executor_is_safe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L9", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "target": "executor_executionresult", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L44", "weight": 1.0}, {"source": "executor_executionresult", "target": "executor_executionresult_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L45", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "target": "executor_execute_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L51", "weight": 1.0}, {"source": "executor_execute_code", "target": "executor_is_safe", "relation": "calls", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L58", "weight": 1.0}, {"source": "executor_execute_code", "target": "executor_executionresult", "relation": "calls", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L62", "weight": 1.0}, {"source": "executor_rationale_10", "target": "executor_is_safe", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L10", "weight": 1.0}, {"source": "executor_rationale_52", "target": "executor_execute_code", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L52", "weight": 1.0}], "raw_calls": [{"caller_nid": "executor_is_safe", "callee": "parse", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L25"}, {"caller_nid": "executor_is_safe", "callee": "walk", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L30"}, {"caller_nid": "executor_is_safe", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L31"}, {"caller_nid": "executor_is_safe", "callee": "split", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L33"}, {"caller_nid": "executor_is_safe", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L35"}, {"caller_nid": "executor_is_safe", "callee": "split", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L36"}, {"caller_nid": "executor_is_safe", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L38"}, {"caller_nid": "executor_is_safe", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L39"}, {"caller_nid": "executor_execute_code", "callee": "parse", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L61"}, {"caller_nid": "executor_execute_code", "callee": "TemporaryDirectory", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L66"}, {"caller_nid": "executor_execute_code", "callee": "join", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L67"}, {"caller_nid": "executor_execute_code", "callee": "open", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L68"}, {"caller_nid": "executor_execute_code", "callee": "write", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L69"}, {"caller_nid": "executor_execute_code", "callee": "run", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L73"}, {"caller_nid": "executor_execute_code", "callee": "str", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "source_location": "L89"}]}
graphify-out/cache/42ccfd67266bbb0515001a31a0884b5111cf535a7456540aaf8126356f66c0d8.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_client_py", "label": "client.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L1"}, {"id": "client_debugzeroenv", "label": "DebugzeroEnv", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L18"}, {"id": "client_debugzeroenv_step_payload", "label": "._step_payload()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L47"}, {"id": "client_debugzeroenv_parse_result", "label": "._parse_result()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L62"}, {"id": "client_debugzeroenv_parse_state", "label": "._parse_state()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L90"}, {"id": "client_rationale_21", "label": "Client for the DebugZero Environment. This client maintains a persistent We", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L21"}, {"id": "client_rationale_48", "label": "Convert DebugzeroAction to JSON payload for step message. Args:", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L48"}, {"id": "client_rationale_63", "label": "Parse server response into StepResult[DebugzeroObservation]. Args:", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L63"}, {"id": "client_rationale_91", "label": "Parse server response into State object. Args: payload: JSO", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L91"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_client_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L9", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_client_py", "target": "openenv_core", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L11", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_client_py", "target": "openenv_core_client_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L12", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_client_py", "target": "openenv_core_env_server_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L13", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_client_py", "target": "c_users_astra_desktop_hackon_debugzero_models_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L15", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_client_py", "target": "client_debugzeroenv", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L18", "weight": 1.0}, {"source": "client_debugzeroenv", "target": "client_debugzeroenv_step_payload", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L47", "weight": 1.0}, {"source": "client_debugzeroenv", "target": "client_debugzeroenv_parse_result", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L62", "weight": 1.0}, {"source": "client_debugzeroenv", "target": "client_debugzeroenv_parse_state", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L90", "weight": 1.0}, {"source": "client_rationale_21", "target": "client_debugzeroenv", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L21", "weight": 1.0}, {"source": "client_rationale_48", "target": "client_debugzeroenv_step_payload", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L48", "weight": 1.0}, {"source": "client_rationale_63", "target": "client_debugzeroenv_parse_result", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L63", "weight": 1.0}, {"source": "client_rationale_91", "target": "client_debugzeroenv_parse_state", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L91", "weight": 1.0}], "raw_calls": [{"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L72"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "DebugzeroObservation", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L73"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L74"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L75"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L76"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L77"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L78"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L79"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L80"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L81"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "StepResult", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L84"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L86"}, {"caller_nid": "client_debugzeroenv_parse_result", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L87"}, {"caller_nid": "client_debugzeroenv_parse_state", "callee": "DebugzeroState", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L100"}, {"caller_nid": "client_debugzeroenv_parse_state", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L101"}, {"caller_nid": "client_debugzeroenv_parse_state", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L102"}, {"caller_nid": "client_debugzeroenv_parse_state", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L103"}, {"caller_nid": "client_debugzeroenv_parse_state", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L104"}, {"caller_nid": "client_debugzeroenv_parse_state", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L105"}, {"caller_nid": "client_debugzeroenv_parse_state", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "source_location": "L106"}]}
graphify-out/cache/4b0c118efff193a51a179a31f39f5b0ff13346f112a008af15a082475d834b5b.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_server_init_py", "label": "__init__.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\__init__.py", "source_location": "L1"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_server_init_py", "target": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\__init__.py", "source_location": "L9", "weight": 1.0}], "raw_calls": []}
graphify-out/cache/56f26791a042ec1641e859dcef8c30dc6a237a8202a4a5a1d70d1f41bf5e8916.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py", "label": "dual_role_sampler.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "source_location": "L1"}, {"id": "dual_role_sampler_sample_proposer_prompt", "label": "sample_proposer_prompt()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "source_location": "L23"}, {"id": "dual_role_sampler_sample_solver_prompt", "label": "sample_solver_prompt()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "source_location": "L26"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py", "target": "dual_role_sampler_sample_proposer_prompt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "source_location": "L23", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py", "target": "dual_role_sampler_sample_solver_prompt", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "source_location": "L26", "weight": 1.0}], "raw_calls": [{"caller_nid": "dual_role_sampler_sample_proposer_prompt", "callee": "format", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "source_location": "L24"}, {"caller_nid": "dual_role_sampler_sample_solver_prompt", "callee": "format", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "source_location": "L27"}]}
graphify-out/cache/7506245e194ca6061e161c330bcb6ca080a7be650cb6bc5f1e00ad900b81a709.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "label": "grpo_train.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L1"}, {"id": "grpo_train_reward_fn", "label": "reward_fn()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L25"}, {"id": "grpo_train_create_dataset", "label": "create_dataset()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L44"}, {"id": "grpo_train_main", "label": "main()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L57"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "os", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "torch", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "datasets", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L3", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "unsloth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L6", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "unsloth", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L13", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "trl", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L18", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "rewards", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L21", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "training_rewards", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L23", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "grpo_train_reward_fn", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L25", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "grpo_train_create_dataset", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L44", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "target": "grpo_train_main", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L57", "weight": 1.0}, {"source": "grpo_train_main", "target": "grpo_train_create_dataset", "relation": "calls", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L63", "weight": 1.0}], "raw_calls": [{"caller_nid": "grpo_train_reward_fn", "callee": "zip", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L28"}, {"caller_nid": "grpo_train_reward_fn", "callee": "compute_proposer_reward", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L34"}, {"caller_nid": "grpo_train_reward_fn", "callee": "append", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L35"}, {"caller_nid": "grpo_train_reward_fn", "callee": "compute_solver_reward", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L37"}, {"caller_nid": "grpo_train_reward_fn", "callee": "append", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L38"}, {"caller_nid": "grpo_train_reward_fn", "callee": "append", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L40"}, {"caller_nid": "grpo_train_create_dataset", "callee": "from_dict", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L46"}, {"caller_nid": "grpo_train_main", "callee": "ArgumentParser", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L59"}, {"caller_nid": "grpo_train_main", "callee": "add_argument", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L60"}, {"caller_nid": "grpo_train_main", "callee": "parse_args", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L61"}, {"caller_nid": "grpo_train_main", "callee": "is_bfloat16_supported", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L67"}, {"caller_nid": "grpo_train_main", "callee": "GRPOConfig", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L71"}, {"caller_nid": "grpo_train_main", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L86"}, {"caller_nid": "grpo_train_main", "callee": "from_pretrained", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L87"}, {"caller_nid": "grpo_train_main", "callee": "get_peft_model", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L94"}, {"caller_nid": "grpo_train_main", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L105"}, {"caller_nid": "grpo_train_main", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L107"}, {"caller_nid": "grpo_train_main", "callee": "GRPOTrainer", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L111"}, {"caller_nid": "grpo_train_main", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L119"}, {"caller_nid": "grpo_train_main", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L121"}, {"caller_nid": "grpo_train_main", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "source_location": "L123"}]}
graphify-out/cache/75483d038cbfffeee334670ed9b2d5b2b72a83aa109974b620ab06c6c532eacb.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "label": "run_episode.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L1"}, {"id": "run_episode_test_local_env", "label": "test_local_env()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L7"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "target": "asyncio", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "target": "subprocess", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L3", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "target": "server_debugzero_environment", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L4", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "target": "models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L5", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "target": "run_episode_test_local_env", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L7", "weight": 1.0}], "raw_calls": [{"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L8"}, {"caller_nid": "run_episode_test_local_env", "callee": "DebugzeroEnvironment", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L9"}, {"caller_nid": "run_episode_test_local_env", "callee": "reset", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L10"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L11"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L14"}, {"caller_nid": "run_episode_test_local_env", "callee": "DebugzeroAction", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L15"}, {"caller_nid": "run_episode_test_local_env", "callee": "step", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L16"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L17"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L18"}, {"caller_nid": "run_episode_test_local_env", "callee": "strip", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L18"}, {"caller_nid": "run_episode_test_local_env", "callee": "reset", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L20"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L22"}, {"caller_nid": "run_episode_test_local_env", "callee": "DebugzeroAction", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L24"}, {"caller_nid": "run_episode_test_local_env", "callee": "step", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L25"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L26"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L29"}, {"caller_nid": "run_episode_test_local_env", "callee": "replace", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L30"}, {"caller_nid": "run_episode_test_local_env", "callee": "DebugzeroAction", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L31"}, {"caller_nid": "run_episode_test_local_env", "callee": "step", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L32"}, {"caller_nid": "run_episode_test_local_env", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "source_location": "L33"}]}
graphify-out/cache/b1a762596f5fee316f1df48b8cdd9fc129b88766a1d8a8ba2fd0c3ac49893360.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "label": "test_executor.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L1"}, {"id": "test_executor_test_executor_is_safe", "label": "test_executor_is_safe()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L4"}, {"id": "test_executor_test_execute_code", "label": "test_execute_code()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L16"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "target": "server_executor", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "target": "test_executor_test_executor_is_safe", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L4", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "target": "test_executor_test_execute_code", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L16", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_executor_test_executor_is_safe", "callee": "is_safe", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L5"}, {"caller_nid": "test_executor_test_executor_is_safe", "callee": "is_safe", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L8"}, {"caller_nid": "test_executor_test_executor_is_safe", "callee": "is_safe", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L9"}, {"caller_nid": "test_executor_test_executor_is_safe", "callee": "is_safe", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L10"}, {"caller_nid": "test_executor_test_executor_is_safe", "callee": "is_safe", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L11"}, {"caller_nid": "test_executor_test_executor_is_safe", "callee": "is_safe", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L14"}, {"caller_nid": "test_executor_test_execute_code", "callee": "execute_code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L19"}, {"caller_nid": "test_executor_test_execute_code", "callee": "execute_code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "source_location": "L24"}]}
graphify-out/cache/c9885de9861dfdbfb8bf65fbf952f414e725d2a6075f4b839d2e64559590e362.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "label": "debugZero_environment.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L1"}, {"id": "debugzero_environment_debugzeroenvironment", "label": "DebugzeroEnvironment", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L38"}, {"id": "environment", "label": "Environment", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "debugzero_environment_debugzeroenvironment_init", "label": ".__init__()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L45"}, {"id": "debugzero_environment_debugzeroenvironment_reset", "label": ".reset()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L56"}, {"id": "debugzero_environment_debugzeroenvironment_step", "label": ".step()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L77"}, {"id": "debugzero_environment_state", "label": "state()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L127"}, {"id": "debugzero_environment_rationale_39", "label": "Dual-role DebugZero Environment wrapping a Python sandbox execution for Prop", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L39"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "uuid", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L11", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "openenv_core_env_server_interfaces", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L13", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "openenv_core_env_server_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L14", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "c_users_astra_desktop_hackon_debugzero_models_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L17", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "models", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L19", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L22", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L23", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L24", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "executor", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L26", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "bug_injector", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L27", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "plausibility", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L28", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "debugzero_environment_debugzeroenvironment", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L38", "weight": 1.0}, {"source": "debugzero_environment_debugzeroenvironment", "target": "environment", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L38", "weight": 1.0}, {"source": "debugzero_environment_debugzeroenvironment", "target": "debugzero_environment_debugzeroenvironment_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L45", "weight": 1.0}, {"source": "debugzero_environment_debugzeroenvironment", "target": "debugzero_environment_debugzeroenvironment_reset", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L56", "weight": 1.0}, {"source": "debugzero_environment_debugzeroenvironment", "target": "debugzero_environment_debugzeroenvironment_step", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L77", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "target": "debugzero_environment_state", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L127", "weight": 1.0}, {"source": "debugzero_environment_rationale_39", "target": "debugzero_environment_debugzeroenvironment", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L39", "weight": 1.0}], "raw_calls": [{"caller_nid": "debugzero_environment_debugzeroenvironment_init", "callee": "DebugzeroState", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L46"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_init", "callee": "str", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L47"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_init", "callee": "uuid4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L47"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_reset", "callee": "DebugzeroState", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L57"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_reset", "callee": "str", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L58"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_reset", "callee": "uuid4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L58"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_reset", "callee": "DebugzeroObservation", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L67"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_step", "callee": "execute_code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L89"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_step", "callee": "DebugzeroObservation", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L95"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_step", "callee": "execute_code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L110"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_step", "callee": "DebugzeroObservation", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L114"}, {"caller_nid": "debugzero_environment_debugzeroenvironment_step", "callee": "DebugzeroObservation", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "source_location": "L124"}]}
graphify-out/cache/cb20eafcbbe253b791b01a8f4d81e9275e85d46f833b71e1bd53abf19cd17e26.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py", "label": "plausibility_eval.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L1"}, {"id": "plausibility_eval_evaluate_navidadkhah_plausibility", "label": "evaluate_navidadkhah_plausibility()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L5"}, {"id": "plausibility_eval_rationale_6", "label": "Offline evaluation of generated bugs against the navidadkhah 25k bug dataset.", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L6"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py", "target": "ast", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py", "target": "training_rewards", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py", "target": "server_plausibility", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L3", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py", "target": "plausibility_eval_evaluate_navidadkhah_plausibility", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L5", "weight": 1.0}, {"source": "plausibility_eval_rationale_6", "target": "plausibility_eval_evaluate_navidadkhah_plausibility", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L6", "weight": 1.0}], "raw_calls": [{"caller_nid": "plausibility_eval_evaluate_navidadkhah_plausibility", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L12"}, {"caller_nid": "plausibility_eval_evaluate_navidadkhah_plausibility", "callee": "compute_ast_distance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L17"}, {"caller_nid": "plausibility_eval_evaluate_navidadkhah_plausibility", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L18"}, {"caller_nid": "plausibility_eval_evaluate_navidadkhah_plausibility", "callee": "print", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "source_location": "L19"}]}
graphify-out/cache/d0a5997f201fea0af43ec9eeaaa25d7fcd42b2f27e50b4798176f0227ddf4f9c.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "label": "test_bug_injector.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L1"}, {"id": "test_bug_injector_test_missing_base_case", "label": "test_missing_base_case()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L10"}, {"id": "test_bug_injector_test_off_by_one", "label": "test_off_by_one()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L17"}, {"id": "test_bug_injector_test_loop_boundary_shift", "label": "test_loop_boundary_shift()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L25"}, {"id": "test_bug_injector_test_wrong_builtin", "label": "test_wrong_builtin()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L32"}, {"id": "test_bug_injector_test_condition_negation", "label": "test_condition_negation()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L38"}, {"id": "test_bug_injector_test_safety_check_blocks", "label": "test_safety_check_blocks()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L44"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "pytest", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "server_bug_injector", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "test_bug_injector_test_missing_base_case", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L10", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "test_bug_injector_test_off_by_one", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L17", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "test_bug_injector_test_loop_boundary_shift", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L25", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "test_bug_injector_test_wrong_builtin", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L32", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "test_bug_injector_test_condition_negation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L38", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "target": "test_bug_injector_test_safety_check_blocks", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L44", "weight": 1.0}], "raw_calls": [{"caller_nid": "test_bug_injector_test_missing_base_case", "callee": "inject_bug", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L11"}, {"caller_nid": "test_bug_injector_test_off_by_one", "callee": "inject_bug", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L19"}, {"caller_nid": "test_bug_injector_test_loop_boundary_shift", "callee": "inject_bug", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L26"}, {"caller_nid": "test_bug_injector_test_wrong_builtin", "callee": "inject_bug", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L33"}, {"caller_nid": "test_bug_injector_test_condition_negation", "callee": "inject_bug", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L40"}, {"caller_nid": "test_bug_injector_test_safety_check_blocks", "callee": "is_safe_injection", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L48"}, {"caller_nid": "test_bug_injector_test_safety_check_blocks", "callee": "is_safe_injection", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "source_location": "L49"}]}
graphify-out/cache/d6d5ae1a9a21fc3ab376c0282323e399ef74b332e975871ff941a93dec674d27.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "label": "bug_injector.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L1"}, {"id": "bug_injector_is_safe_injection", "label": "is_safe_injection()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L13"}, {"id": "bug_injector_buginjectorvisitor", "label": "BugInjectorVisitor", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L19"}, {"id": "bug_injector_buginjectorvisitor_init", "label": ".__init__()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L20"}, {"id": "bug_injector_buginjectorvisitor_visit_constant", "label": ".visit_Constant()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L25"}, {"id": "bug_injector_buginjectorvisitor_visit_compare", "label": ".visit_Compare()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L38"}, {"id": "bug_injector_buginjectorvisitor_visit_binop", "label": ".visit_BinOp()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L64"}, {"id": "bug_injector_buginjectorvisitor_visit_call", "label": ".visit_Call()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L84"}, {"id": "bug_injector_buginjectorvisitor_visit_if", "label": ".visit_If()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L108"}, {"id": "bug_injector_buginjectorvisitor_visit_slice", "label": ".visit_Slice()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L127"}, {"id": "bug_injector_buginjectorvisitor_visit_name", "label": ".visit_Name()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L142"}, {"id": "bug_injector_buginjectorvisitor_visit_assign", "label": ".visit_Assign()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L146"}, {"id": "bug_injector_inject_bug", "label": "inject_bug()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L159"}, {"id": "bug_injector_rationale_160", "label": "4 critical checks: - parse succeeds - mutation actually changed code", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L160"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "target": "ast", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "target": "random", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "target": "copy", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L3", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "target": "bug_injector_is_safe_injection", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L13", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "target": "bug_injector_buginjectorvisitor", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L19", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_init", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L20", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_constant", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L25", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_compare", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L38", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_binop", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L64", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_call", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L84", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_if", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L108", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_slice", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L127", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_name", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L142", "weight": 1.0}, {"source": "bug_injector_buginjectorvisitor", "target": "bug_injector_buginjectorvisitor_visit_assign", "relation": "method", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L146", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "target": "bug_injector_inject_bug", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L159", "weight": 1.0}, {"source": "bug_injector_inject_bug", "target": "bug_injector_buginjectorvisitor", "relation": "calls", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L172", "weight": 1.0}, {"source": "bug_injector_inject_bug", "target": "bug_injector_is_safe_injection", "relation": "calls", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L183", "weight": 1.0}, {"source": "bug_injector_rationale_160", "target": "bug_injector_inject_bug", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L160", "weight": 1.0}], "raw_calls": [{"caller_nid": "bug_injector_buginjectorvisitor_init", "callee": "super", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L21"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_constant", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L26"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_constant", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L30"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_constant", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L30"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_constant", "callee": "choice", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L31"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L39"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L44"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "GtE", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L45"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L47"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "Gt", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L48"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L50"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "LtE", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L51"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L53"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "Lt", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L54"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L56"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "NotEq", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L57"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L59"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_compare", "callee": "Eq", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L60"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L65"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L70"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "Sub", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L71"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L73"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "Add", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L74"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L76"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "FloorDiv", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L77"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L79"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_binop", "callee": "Mult", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L80"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L85"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L89"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "len", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L97"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "BinOp", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L99"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "Add", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L99"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "Constant", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L99"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "len", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L101"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "BinOp", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L103"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "Sub", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L103"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_call", "callee": "Constant", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L103"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_if", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L109"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_if", "callee": "UnaryOp", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L115"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_if", "callee": "Not", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L115"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_if", "callee": "enumerate", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L119"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_if", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L120"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_if", "callee": "Pass", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L121"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_slice", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L128"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_slice", "callee": "BinOp", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L134"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_slice", "callee": "Add", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L134"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_slice", "callee": "Constant", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L134"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_slice", "callee": "BinOp", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L137"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_slice", "callee": "Sub", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L137"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_slice", "callee": "Constant", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L137"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_name", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L143"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_assign", "callee": "generic_visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L148"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_assign", "callee": "getattr", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L152"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_assign", "callee": "isinstance", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L153"}, {"caller_nid": "bug_injector_buginjectorvisitor_visit_assign", "callee": "len", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L153"}, {"caller_nid": "bug_injector_inject_bug", "callee": "parse", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L168"}, {"caller_nid": "bug_injector_inject_bug", "callee": "visit", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L173"}, {"caller_nid": "bug_injector_inject_bug", "callee": "deepcopy", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L173"}, {"caller_nid": "bug_injector_inject_bug", "callee": "fix_missing_locations", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L174"}, {"caller_nid": "bug_injector_inject_bug", "callee": "unparse", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L176"}, {"caller_nid": "bug_injector_inject_bug", "callee": "strip", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L179"}, {"caller_nid": "bug_injector_inject_bug", "callee": "strip", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L179"}, {"caller_nid": "bug_injector_inject_bug", "callee": "parse", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "source_location": "L188"}]}
graphify-out/cache/eb2e059208921f657055e709a0f0bf0f0f435790fbb43c66ecb98c40d8d5af40.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_models_py", "label": "models.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L1"}, {"id": "models_debugzeroaction", "label": "DebugzeroAction", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L18"}, {"id": "action", "label": "Action", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_debugzeroobservation", "label": "DebugzeroObservation", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L25"}, {"id": "observation", "label": "Observation", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_debugzerostate", "label": "DebugzeroState", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L34"}, {"id": "state", "label": "State", "file_type": "code", "source_file": "", "source_location": ""}, {"id": "models_rationale_19", "label": "Action for the DebugZero environment representing the Proposer or Solver inputs.", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L19"}, {"id": "models_rationale_26", "label": "Observation from the DebugZero environment following sandbox execution.", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L26"}, {"id": "models_rationale_35", "label": "State for the DebugZero environment, extending default state with seed context.", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L35"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_models_py", "target": "openenv_core_env_server_types", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L13", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_models_py", "target": "pydantic", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L14", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_models_py", "target": "typing", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L15", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_models_py", "target": "models_debugzeroaction", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L18", "weight": 1.0}, {"source": "models_debugzeroaction", "target": "action", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L18", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_models_py", "target": "models_debugzeroobservation", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L25", "weight": 1.0}, {"source": "models_debugzeroobservation", "target": "observation", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L25", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_models_py", "target": "models_debugzerostate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L34", "weight": 1.0}, {"source": "models_debugzerostate", "target": "state", "relation": "inherits", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L34", "weight": 1.0}, {"source": "models_rationale_19", "target": "models_debugzeroaction", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L19", "weight": 1.0}, {"source": "models_rationale_26", "target": "models_debugzeroobservation", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L26", "weight": 1.0}, {"source": "models_rationale_35", "target": "models_debugzerostate", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "source_location": "L35", "weight": 1.0}], "raw_calls": []}
graphify-out/cache/ede71c6c9d6a4345dfd051cb97f6c21f3113e4558c838f39aba660c5a5206a95.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "label": "plausibility.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L1"}, {"id": "plausibility_compute_ast_distance", "label": "compute_ast_distance()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L4"}, {"id": "plausibility_rationale_5", "label": "Computes the string similarity distance between the AST dumps of the original", "file_type": "rationale", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L5"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "target": "ast", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "target": "thefuzz", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "target": "plausibility_compute_ast_distance", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L4", "weight": 1.0}, {"source": "plausibility_rationale_5", "target": "plausibility_compute_ast_distance", "relation": "rationale_for", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L5", "weight": 1.0}], "raw_calls": [{"caller_nid": "plausibility_compute_ast_distance", "callee": "dump", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L13"}, {"caller_nid": "plausibility_compute_ast_distance", "callee": "parse", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L13"}, {"caller_nid": "plausibility_compute_ast_distance", "callee": "dump", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L14"}, {"caller_nid": "plausibility_compute_ast_distance", "callee": "parse", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L14"}, {"caller_nid": "plausibility_compute_ast_distance", "callee": "ratio", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L18"}, {"caller_nid": "plausibility_compute_ast_distance", "callee": "max", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "source_location": "L30"}]}
graphify-out/cache/f33eda5e3a4e90a27a5be751f771e90a9733c095bbc2093d20044746d2d98c4a.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"nodes": [{"id": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "label": "rewards.py", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L1"}, {"id": "rewards_get_solve_rate", "label": "get_solve_rate()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L7"}, {"id": "rewards_record_solve_result", "label": "record_solve_result()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L13"}, {"id": "rewards_compute_proposer_reward", "label": "compute_proposer_reward()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L18"}, {"id": "rewards_compute_solver_reward", "label": "compute_solver_reward()", "file_type": "code", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L37"}], "edges": [{"source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "target": "collections", "relation": "imports_from", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L1", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "target": "statistics", "relation": "imports", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L2", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "target": "rewards_get_solve_rate", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L7", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "target": "rewards_record_solve_result", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L13", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "target": "rewards_compute_proposer_reward", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L18", "weight": 1.0}, {"source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "target": "rewards_compute_solver_reward", "relation": "contains", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L37", "weight": 1.0}, {"source": "rewards_compute_proposer_reward", "target": "rewards_get_solve_rate", "relation": "calls", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L30", "weight": 1.0}, {"source": "rewards_compute_solver_reward", "target": "rewards_record_solve_result", "relation": "calls", "confidence": "EXTRACTED", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L41", "weight": 1.0}], "raw_calls": [{"caller_nid": "rewards_get_solve_rate", "callee": "len", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L8"}, {"caller_nid": "rewards_get_solve_rate", "callee": "mean", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L11"}, {"caller_nid": "rewards_record_solve_result", "callee": "deque", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L15"}, {"caller_nid": "rewards_record_solve_result", "callee": "append", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L16"}, {"caller_nid": "rewards_compute_proposer_reward", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L21"}, {"caller_nid": "rewards_compute_proposer_reward", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L23"}, {"caller_nid": "rewards_compute_proposer_reward", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L28"}, {"caller_nid": "rewards_compute_solver_reward", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L39"}, {"caller_nid": "rewards_compute_solver_reward", "callee": "get", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "source_location": "L39"}]}
graphify-out/graph.html ADDED
@@ -0,0 +1,257 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <title>graphify - C:\Users\astra\Desktop\hackon\debugZero\graphify-out\graph.html</title>
6
+ <script src="https://unpkg.com/vis-network/standalone/umd/vis-network.min.js"></script>
7
+ <style>
8
+ * { box-sizing: border-box; margin: 0; padding: 0; }
9
+ body { background: #0f0f1a; color: #e0e0e0; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; display: flex; height: 100vh; overflow: hidden; }
10
+ #graph { flex: 1; }
11
+ #sidebar { width: 280px; background: #1a1a2e; border-left: 1px solid #2a2a4e; display: flex; flex-direction: column; overflow: hidden; }
12
+ #search-wrap { padding: 12px; border-bottom: 1px solid #2a2a4e; }
13
+ #search { width: 100%; background: #0f0f1a; border: 1px solid #3a3a5e; color: #e0e0e0; padding: 7px 10px; border-radius: 6px; font-size: 13px; outline: none; }
14
+ #search:focus { border-color: #4E79A7; }
15
+ #search-results { max-height: 140px; overflow-y: auto; padding: 4px 12px; border-bottom: 1px solid #2a2a4e; display: none; }
16
+ .search-item { padding: 4px 6px; cursor: pointer; border-radius: 4px; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
17
+ .search-item:hover { background: #2a2a4e; }
18
+ #info-panel { padding: 14px; border-bottom: 1px solid #2a2a4e; min-height: 140px; }
19
+ #info-panel h3 { font-size: 13px; color: #aaa; margin-bottom: 8px; text-transform: uppercase; letter-spacing: 0.05em; }
20
+ #info-content { font-size: 13px; color: #ccc; line-height: 1.6; }
21
+ #info-content .field { margin-bottom: 5px; }
22
+ #info-content .field b { color: #e0e0e0; }
23
+ #info-content .empty { color: #555; font-style: italic; }
24
+ .neighbor-link { display: block; padding: 2px 6px; margin: 2px 0; border-radius: 3px; cursor: pointer; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid #333; }
25
+ .neighbor-link:hover { background: #2a2a4e; }
26
+ #neighbors-list { max-height: 160px; overflow-y: auto; margin-top: 4px; }
27
+ #legend-wrap { flex: 1; overflow-y: auto; padding: 12px; }
28
+ #legend-wrap h3 { font-size: 13px; color: #aaa; margin-bottom: 10px; text-transform: uppercase; letter-spacing: 0.05em; }
29
+ .legend-item { display: flex; align-items: center; gap: 8px; padding: 4px 0; cursor: pointer; border-radius: 4px; font-size: 12px; }
30
+ .legend-item:hover { background: #2a2a4e; padding-left: 4px; }
31
+ .legend-item.dimmed { opacity: 0.35; }
32
+ .legend-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
33
+ .legend-label { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
34
+ .legend-count { color: #666; font-size: 11px; }
35
+ #stats { padding: 10px 14px; border-top: 1px solid #2a2a4e; font-size: 11px; color: #555; }
36
+ </style>
37
+ </head>
38
+ <body>
39
+ <div id="graph"></div>
40
+ <div id="sidebar">
41
+ <div id="search-wrap">
42
+ <input id="search" type="text" placeholder="Search nodes..." autocomplete="off">
43
+ <div id="search-results"></div>
44
+ </div>
45
+ <div id="info-panel">
46
+ <h3>Node Info</h3>
47
+ <div id="info-content"><span class="empty">Click a node to inspect it</span></div>
48
+ </div>
49
+ <div id="legend-wrap">
50
+ <h3>Communities</h3>
51
+ <div id="legend"></div>
52
+ </div>
53
+ <div id="stats">83 nodes &middot; 132 edges &middot; 11 communities</div>
54
+ </div>
55
+ <script>
56
+ const RAW_NODES = [{"id": "c_users_astra_desktop_hackon_debugzero_client_py", "label": "client.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "client.py", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "code", "degree": 3}, {"id": "client_debugzeroenv", "label": "DebugzeroEnv", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 27.1, "font": {"size": 12, "color": "#ffffff"}, "title": "DebugzeroEnv", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "code", "degree": 8}, {"id": "client_debugzeroenv_step_payload", "label": "._step_payload()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "._step_payload()", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "code", "degree": 2}, {"id": "client_debugzeroenv_parse_result", "label": "._parse_result()", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "._parse_result()", "community": 7, "community_name": "Community 7", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "code", "degree": 3}, {"id": "client_debugzeroenv_parse_state", "label": "._parse_state()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "._parse_state()", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "code", "degree": 3}, {"id": "client_rationale_21", "label": "Client for the DebugZero Environment. This client maintains a persistent We", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Client for the DebugZero Environment. This client maintains a persistent We", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "rationale", "degree": 4}, {"id": "client_rationale_48", "label": "Convert DebugzeroAction to JSON payload for step message. Args:", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Convert DebugzeroAction to JSON payload for step message. Args:", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "rationale", "degree": 4}, {"id": "client_rationale_63", "label": "Parse server response into StepResult[DebugzeroObservation]. Args:", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Parse server response into StepResult[DebugzeroObservation]. Args:", "community": 7, "community_name": "Community 7", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "rationale", "degree": 4}, {"id": "client_rationale_91", "label": "Parse server response into State object. Args: payload: JSO", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Parse server response into State object. Args: payload: JSO", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py", "file_type": "rationale", "degree": 4}, {"id": "c_users_astra_desktop_hackon_debugzero_models_py", "label": "models.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 25.0, "font": {"size": 12, "color": "#ffffff"}, "title": "models.py", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "file_type": "code", "degree": 7}, {"id": "models_debugzeroaction", "label": "DebugzeroAction", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 35.7, "font": {"size": 12, "color": "#ffffff"}, "title": "DebugzeroAction", "community": 9, "community_name": "Community 9", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "file_type": "code", "degree": 12}, {"id": "action", "label": "Action", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Action", "community": 9, "community_name": "Community 9", "source_file": "", "file_type": "code", "degree": 1}, {"id": "models_debugzeroobservation", "label": "DebugzeroObservation", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 40.0, "font": {"size": 12, "color": "#ffffff"}, "title": "DebugzeroObservation", "community": 7, "community_name": "Community 7", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "file_type": "code", "degree": 14}, {"id": "observation", "label": "Observation", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Observation", "community": 7, "community_name": "Community 7", "source_file": "", "file_type": "code", "degree": 1}, {"id": "models_debugzerostate", "label": "DebugzeroState", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 37.9, "font": {"size": 12, "color": "#ffffff"}, "title": "DebugzeroState", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "file_type": "code", "degree": 13}, {"id": "state", "label": "State", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "State", "community": 1, "community_name": "Community 1", "source_file": "", "file_type": "code", "degree": 1}, {"id": "models_rationale_19", "label": "Action for the DebugZero environment representing the Proposer or Solver inputs.", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Action for the DebugZero environment representing the Proposer or Solver inputs.", "community": 9, "community_name": "Community 9", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "file_type": "rationale", "degree": 1}, {"id": "models_rationale_26", "label": "Observation from the DebugZero environment following sandbox execution.", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Observation from the DebugZero environment following sandbox execution.", "community": 7, "community_name": "Community 7", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "file_type": "rationale", "degree": 1}, {"id": "models_rationale_35", "label": "State for the DebugZero environment, extending default state with seed context.", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "State for the DebugZero environment, extending default state with seed context.", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py", "file_type": "rationale", "degree": 1}, {"id": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "label": "run_episode.py", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "run_episode.py", "community": 6, "community_name": "Community 6", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "file_type": "code", "degree": 1}, {"id": "run_episode_test_local_env", "label": "test_local_env()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 20.7, "font": {"size": 12, "color": "#ffffff"}, "title": "test_local_env()", "community": 6, "community_name": "Community 6", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py", "file_type": "code", "degree": 5}, {"id": "c_users_astra_desktop_hackon_debugzero_init_py", "label": "__init__.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\__init__.py", "file_type": "code", "degree": 2}, {"id": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py", "label": "plausibility_eval.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "plausibility_eval.py", "community": 8, "community_name": "Community 8", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "file_type": "code", "degree": 1}, {"id": "plausibility_eval_evaluate_navidadkhah_plausibility", "label": "evaluate_navidadkhah_plausibility()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "evaluate_navidadkhah_plausibility()", "community": 8, "community_name": "Community 8", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "file_type": "code", "degree": 3}, {"id": "plausibility_eval_rationale_6", "label": "Offline evaluation of generated bugs against the navidadkhah 25k bug dataset.", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Offline evaluation of generated bugs against the navidadkhah 25k bug dataset.", "community": 8, "community_name": "Community 8", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py", "file_type": "rationale", "degree": 1}, {"id": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "label": "test_bug_injector.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 22.9, "font": {"size": 12, "color": "#ffffff"}, "title": "test_bug_injector.py", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "file_type": "code", "degree": 6}, {"id": "test_bug_injector_test_missing_base_case", "label": "test_missing_base_case()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_missing_base_case()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "file_type": "code", "degree": 2}, {"id": "test_bug_injector_test_off_by_one", "label": "test_off_by_one()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_off_by_one()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "file_type": "code", "degree": 2}, {"id": "test_bug_injector_test_loop_boundary_shift", "label": "test_loop_boundary_shift()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_loop_boundary_shift()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "file_type": "code", "degree": 2}, {"id": "test_bug_injector_test_wrong_builtin", "label": "test_wrong_builtin()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_wrong_builtin()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "file_type": "code", "degree": 2}, {"id": "test_bug_injector_test_condition_negation", "label": "test_condition_negation()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_condition_negation()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "file_type": "code", "degree": 2}, {"id": "test_bug_injector_test_safety_check_blocks", "label": "test_safety_check_blocks()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_safety_check_blocks()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py", "file_type": "code", "degree": 2}, {"id": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "label": "test_executor.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_executor.py", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "file_type": "code", "degree": 2}, {"id": "test_executor_test_executor_is_safe", "label": "test_executor_is_safe()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_executor_is_safe()", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "file_type": "code", "degree": 2}, {"id": "test_executor_test_execute_code", "label": "test_execute_code()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "test_execute_code()", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py", "file_type": "code", "degree": 2}, {"id": "c_users_astra_desktop_hackon_debugzero_server_app_py", "label": "app.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "app.py", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "file_type": "code", "degree": 3}, {"id": "app_main", "label": "main()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "file_type": "code", "degree": 2}, {"id": "app_rationale_61", "label": "Entry point for direct execution via uv run or python -m. This function ena", "color": {"background": "#BAB0AC", "border": "#BAB0AC", "highlight": {"background": "#ffffff", "border": "#BAB0AC"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "Entry point for direct execution via uv run or python -m. This function ena", "community": 9, "community_name": "Community 9", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py", "file_type": "rationale", "degree": 4}, {"id": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "label": "bug_injector.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "bug_injector.py", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 4}, {"id": "bug_injector_is_safe_injection", "label": "is_safe_injection()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "is_safe_injection()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 3}, {"id": "bug_injector_buginjectorvisitor", "label": "BugInjectorVisitor", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 33.6, "font": {"size": 12, "color": "#ffffff"}, "title": "BugInjectorVisitor", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 11}, {"id": "bug_injector_buginjectorvisitor_init", "label": ".__init__()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_constant", "label": ".visit_Constant()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_Constant()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_compare", "label": ".visit_Compare()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_Compare()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_binop", "label": ".visit_BinOp()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_BinOp()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_call", "label": ".visit_Call()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_Call()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_if", "label": ".visit_If()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_If()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_slice", "label": ".visit_Slice()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_Slice()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_name", "label": ".visit_Name()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_Name()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_buginjectorvisitor_visit_assign", "label": ".visit_Assign()", "color": {"background": "#E15759", "border": "#E15759", "highlight": {"background": "#ffffff", "border": "#E15759"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".visit_Assign()", "community": 2, "community_name": "Community 2", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 1}, {"id": "bug_injector_inject_bug", "label": "inject_bug()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 29.3, "font": {"size": 12, "color": "#ffffff"}, "title": "inject_bug()", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "code", "degree": 9}, {"id": "bug_injector_rationale_160", "label": "4 critical checks: - parse succeeds - mutation actually changed code", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "4 critical checks: - parse succeeds - mutation actually changed code", "community": 0, "community_name": "Community 0", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py", "file_type": "rationale", "degree": 1}, {"id": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "label": "debugZero_environment.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 27.1, "font": {"size": 12, "color": "#ffffff"}, "title": "debugZero_environment.py", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "file_type": "code", "degree": 8}, {"id": "debugzero_environment_debugzeroenvironment", "label": "DebugzeroEnvironment", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 35.7, "font": {"size": 12, "color": "#ffffff"}, "title": "DebugzeroEnvironment", "community": 6, "community_name": "Community 6", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "file_type": "code", "degree": 12}, {"id": "environment", "label": "Environment", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Environment", "community": 6, "community_name": "Community 6", "source_file": "", "file_type": "code", "degree": 1}, {"id": "debugzero_environment_debugzeroenvironment_init", "label": ".__init__()", "color": {"background": "#F28E2B", "border": "#F28E2B", "highlight": {"background": "#ffffff", "border": "#F28E2B"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 1, "community_name": "Community 1", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "file_type": "code", "degree": 2}, {"id": "debugzero_environment_debugzeroenvironment_reset", "label": ".reset()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": ".reset()", "community": 6, "community_name": "Community 6", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "file_type": "code", "degree": 4}, {"id": "debugzero_environment_debugzeroenvironment_step", "label": ".step()", "color": {"background": "#B07AA1", "border": "#B07AA1", "highlight": {"background": "#ffffff", "border": "#B07AA1"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": ".step()", "community": 6, "community_name": "Community 6", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "file_type": "code", "degree": 4}, {"id": "debugzero_environment_state", "label": "state()", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "state()", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "file_type": "code", "degree": 1}, {"id": "debugzero_environment_rationale_39", "label": "Dual-role DebugZero Environment wrapping a Python sandbox execution for Prop", "color": {"background": "#FF9DA7", "border": "#FF9DA7", "highlight": {"background": "#ffffff", "border": "#FF9DA7"}}, "size": 20.7, "font": {"size": 12, "color": "#ffffff"}, "title": "Dual-role DebugZero Environment wrapping a Python sandbox execution for Prop", "community": 7, "community_name": "Community 7", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py", "file_type": "rationale", "degree": 5}, {"id": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "label": "executor.py", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "executor.py", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "file_type": "code", "degree": 4}, {"id": "executor_is_safe", "label": "is_safe()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "is_safe()", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "file_type": "code", "degree": 4}, {"id": "executor_executionresult", "label": "ExecutionResult", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 20.7, "font": {"size": 12, "color": "#ffffff"}, "title": "ExecutionResult", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "file_type": "code", "degree": 5}, {"id": "executor_executionresult_init", "label": ".__init__()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": ".__init__()", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "file_type": "code", "degree": 1}, {"id": "executor_execute_code", "label": "execute_code()", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 22.9, "font": {"size": 12, "color": "#ffffff"}, "title": "execute_code()", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "file_type": "code", "degree": 6}, {"id": "executor_rationale_10", "label": "Check if the code contains any blocked imports strings. Also performs a qu", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Check if the code contains any blocked imports strings. Also performs a qu", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "file_type": "rationale", "degree": 1}, {"id": "executor_rationale_52", "label": "Executes the provided python code alongside its tests in an isolated subprocess.", "color": {"background": "#76B7B2", "border": "#76B7B2", "highlight": {"background": "#ffffff", "border": "#76B7B2"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Executes the provided python code alongside its tests in an isolated subprocess.", "community": 3, "community_name": "Community 3", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py", "file_type": "rationale", "degree": 1}, {"id": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "label": "plausibility.py", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "plausibility.py", "community": 8, "community_name": "Community 8", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "file_type": "code", "degree": 2}, {"id": "plausibility_compute_ast_distance", "label": "compute_ast_distance()", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "compute_ast_distance()", "community": 8, "community_name": "Community 8", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "file_type": "code", "degree": 3}, {"id": "plausibility_rationale_5", "label": "Computes the string similarity distance between the AST dumps of the original", "color": {"background": "#9C755F", "border": "#9C755F", "highlight": {"background": "#ffffff", "border": "#9C755F"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "Computes the string similarity distance between the AST dumps of the original", "community": 8, "community_name": "Community 8", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py", "file_type": "rationale", "degree": 1}, {"id": "c_users_astra_desktop_hackon_debugzero_server_init_py", "label": "__init__.py", "color": {"background": "#EDC948", "border": "#EDC948", "highlight": {"background": "#ffffff", "border": "#EDC948"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "__init__.py", "community": 5, "community_name": "Community 5", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\__init__.py", "file_type": "code", "degree": 1}, {"id": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py", "label": "dual_role_sampler.py", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "dual_role_sampler.py", "community": 10, "community_name": "Community 10", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "file_type": "code", "degree": 2}, {"id": "dual_role_sampler_sample_proposer_prompt", "label": "sample_proposer_prompt()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "sample_proposer_prompt()", "community": 10, "community_name": "Community 10", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "file_type": "code", "degree": 1}, {"id": "dual_role_sampler_sample_solver_prompt", "label": "sample_solver_prompt()", "color": {"background": "#4E79A7", "border": "#4E79A7", "highlight": {"background": "#ffffff", "border": "#4E79A7"}}, "size": 12.1, "font": {"size": 0, "color": "#ffffff"}, "title": "sample_solver_prompt()", "community": 10, "community_name": "Community 10", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py", "file_type": "code", "degree": 1}, {"id": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "label": "grpo_train.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "grpo_train.py", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "file_type": "code", "degree": 3}, {"id": "grpo_train_reward_fn", "label": "reward_fn()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "reward_fn()", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "file_type": "code", "degree": 3}, {"id": "grpo_train_create_dataset", "label": "create_dataset()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "create_dataset()", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "file_type": "code", "degree": 2}, {"id": "grpo_train_main", "label": "main()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "main()", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py", "file_type": "code", "degree": 2}, {"id": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "label": "rewards.py", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 18.6, "font": {"size": 12, "color": "#ffffff"}, "title": "rewards.py", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "file_type": "code", "degree": 4}, {"id": "rewards_get_solve_rate", "label": "get_solve_rate()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "get_solve_rate()", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "file_type": "code", "degree": 2}, {"id": "rewards_record_solve_result", "label": "record_solve_result()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 14.3, "font": {"size": 0, "color": "#ffffff"}, "title": "record_solve_result()", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "file_type": "code", "degree": 2}, {"id": "rewards_compute_proposer_reward", "label": "compute_proposer_reward()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "compute_proposer_reward()", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "file_type": "code", "degree": 3}, {"id": "rewards_compute_solver_reward", "label": "compute_solver_reward()", "color": {"background": "#59A14F", "border": "#59A14F", "highlight": {"background": "#ffffff", "border": "#59A14F"}}, "size": 16.4, "font": {"size": 12, "color": "#ffffff"}, "title": "compute_solver_reward()", "community": 4, "community_name": "Community 4", "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py", "file_type": "code", "degree": 3}];
57
+ const RAW_EDGES = [{"from": "c_users_astra_desktop_hackon_debugzero_client_py", "to": "c_users_astra_desktop_hackon_debugzero_models_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_client_py", "to": "client_debugzeroenv", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_client_py", "to": "c_users_astra_desktop_hackon_debugzero_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv", "to": "client_debugzeroenv_step_payload", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv", "to": "client_debugzeroenv_parse_result", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv", "to": "client_debugzeroenv_parse_state", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv", "to": "client_rationale_21", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv", "to": "models_debugzeroaction", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_debugzeroenv", "to": "models_debugzeroobservation", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_debugzeroenv", "to": "models_debugzerostate", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_debugzeroenv_step_payload", "to": "client_rationale_48", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv_parse_result", "to": "client_rationale_63", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv_parse_result", "to": "models_debugzeroobservation", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_debugzeroenv_parse_state", "to": "client_rationale_91", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "client_debugzeroenv_parse_state", "to": "models_debugzerostate", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_21", "to": "models_debugzeroaction", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_21", "to": "models_debugzeroobservation", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_21", "to": "models_debugzerostate", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_48", "to": "models_debugzeroaction", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_48", "to": "models_debugzeroobservation", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_48", "to": "models_debugzerostate", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_63", "to": "models_debugzeroaction", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_63", "to": "models_debugzeroobservation", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_63", "to": "models_debugzerostate", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_91", "to": "models_debugzeroaction", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_91", "to": "models_debugzeroobservation", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "client_rationale_91", "to": "models_debugzerostate", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_models_py", "to": "models_debugzeroaction", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_models_py", "to": "models_debugzeroobservation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_models_py", "to": "models_debugzerostate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_models_py", "to": "c_users_astra_desktop_hackon_debugzero_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_models_py", "to": "c_users_astra_desktop_hackon_debugzero_server_app_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_models_py", "to": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "models_debugzeroaction", "to": "action", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "models_debugzeroaction", "to": "models_rationale_19", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "models_debugzeroaction", "to": "app_rationale_61", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroaction", "to": "debugzero_environment_debugzeroenvironment", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroaction", "to": "debugzero_environment_rationale_39", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroaction", "to": "run_episode_test_local_env", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroobservation", "to": "observation", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "models_debugzeroobservation", "to": "models_rationale_26", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "models_debugzeroobservation", "to": "app_rationale_61", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroobservation", "to": "debugzero_environment_debugzeroenvironment", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroobservation", "to": "debugzero_environment_rationale_39", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroobservation", "to": "debugzero_environment_debugzeroenvironment_reset", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzeroobservation", "to": "debugzero_environment_debugzeroenvironment_step", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzerostate", "to": "state", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "models_debugzerostate", "to": "models_rationale_35", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "models_debugzerostate", "to": "debugzero_environment_debugzeroenvironment", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzerostate", "to": "debugzero_environment_rationale_39", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzerostate", "to": "debugzero_environment_debugzeroenvironment_init", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "models_debugzerostate", "to": "debugzero_environment_debugzeroenvironment_reset", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_run_episode_py", "to": "run_episode_test_local_env", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "run_episode_test_local_env", "to": "debugzero_environment_debugzeroenvironment", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "run_episode_test_local_env", "to": "debugzero_environment_debugzeroenvironment_reset", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "run_episode_test_local_env", "to": "debugzero_environment_debugzeroenvironment_step", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py", "to": "plausibility_eval_evaluate_navidadkhah_plausibility", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "plausibility_eval_evaluate_navidadkhah_plausibility", "to": "plausibility_eval_rationale_6", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "plausibility_eval_evaluate_navidadkhah_plausibility", "to": "plausibility_compute_ast_distance", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "to": "test_bug_injector_test_missing_base_case", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "to": "test_bug_injector_test_off_by_one", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "to": "test_bug_injector_test_loop_boundary_shift", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "to": "test_bug_injector_test_wrong_builtin", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "to": "test_bug_injector_test_condition_negation", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py", "to": "test_bug_injector_test_safety_check_blocks", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_bug_injector_test_missing_base_case", "to": "bug_injector_inject_bug", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_bug_injector_test_off_by_one", "to": "bug_injector_inject_bug", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_bug_injector_test_loop_boundary_shift", "to": "bug_injector_inject_bug", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_bug_injector_test_wrong_builtin", "to": "bug_injector_inject_bug", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_bug_injector_test_condition_negation", "to": "bug_injector_inject_bug", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_bug_injector_test_safety_check_blocks", "to": "bug_injector_is_safe_injection", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "to": "test_executor_test_executor_is_safe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py", "to": "test_executor_test_execute_code", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "test_executor_test_executor_is_safe", "to": "executor_is_safe", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "test_executor_test_execute_code", "to": "executor_execute_code", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_app_py", "to": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_app_py", "to": "app_main", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_main", "to": "app_rationale_61", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "app_rationale_61", "to": "debugzero_environment_debugzeroenvironment", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "to": "bug_injector_is_safe_injection", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "to": "bug_injector_buginjectorvisitor", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "to": "bug_injector_inject_bug", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py", "to": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_is_safe_injection", "to": "bug_injector_inject_bug", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_constant", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_compare", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_binop", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_call", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_if", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_slice", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_name", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_buginjectorvisitor_visit_assign", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_buginjectorvisitor", "to": "bug_injector_inject_bug", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "bug_injector_inject_bug", "to": "bug_injector_rationale_160", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "to": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "to": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "to": "debugzero_environment_debugzeroenvironment", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "to": "debugzero_environment_state", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py", "to": "c_users_astra_desktop_hackon_debugzero_server_init_py", "label": "imports_from", "title": "imports_from [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "debugzero_environment_debugzeroenvironment", "to": "environment", "label": "inherits", "title": "inherits [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "debugzero_environment_debugzeroenvironment", "to": "debugzero_environment_debugzeroenvironment_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "debugzero_environment_debugzeroenvironment", "to": "debugzero_environment_debugzeroenvironment_reset", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "debugzero_environment_debugzeroenvironment", "to": "debugzero_environment_debugzeroenvironment_step", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "debugzero_environment_debugzeroenvironment", "to": "debugzero_environment_rationale_39", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "debugzero_environment_debugzeroenvironment", "to": "executor_executionresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "debugzero_environment_debugzeroenvironment_step", "to": "executor_execute_code", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "debugzero_environment_rationale_39", "to": "executor_executionresult", "label": "uses", "title": "uses [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "to": "executor_is_safe", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "to": "executor_executionresult", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_executor_py", "to": "executor_execute_code", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "executor_is_safe", "to": "executor_execute_code", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "executor_is_safe", "to": "executor_rationale_10", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "executor_executionresult", "to": "executor_executionresult_init", "label": "method", "title": "method [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "executor_executionresult", "to": "executor_execute_code", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "executor_execute_code", "to": "executor_rationale_52", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py", "to": "plausibility_compute_ast_distance", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "plausibility_compute_ast_distance", "to": "plausibility_rationale_5", "label": "rationale_for", "title": "rationale_for [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py", "to": "dual_role_sampler_sample_proposer_prompt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py", "to": "dual_role_sampler_sample_solver_prompt", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "to": "grpo_train_reward_fn", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "to": "grpo_train_create_dataset", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py", "to": "grpo_train_main", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "grpo_train_reward_fn", "to": "rewards_compute_proposer_reward", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "grpo_train_reward_fn", "to": "rewards_compute_solver_reward", "label": "calls", "title": "calls [INFERRED]", "dashes": true, "width": 1, "color": {"opacity": 0.35}, "confidence": "INFERRED"}, {"from": "grpo_train_create_dataset", "to": "grpo_train_main", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "to": "rewards_get_solve_rate", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "to": "rewards_record_solve_result", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "to": "rewards_compute_proposer_reward", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "c_users_astra_desktop_hackon_debugzero_training_rewards_py", "to": "rewards_compute_solver_reward", "label": "contains", "title": "contains [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "rewards_get_solve_rate", "to": "rewards_compute_proposer_reward", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}, {"from": "rewards_record_solve_result", "to": "rewards_compute_solver_reward", "label": "calls", "title": "calls [EXTRACTED]", "dashes": false, "width": 2, "color": {"opacity": 0.7}, "confidence": "EXTRACTED"}];
58
+ const LEGEND = [{"cid": 0, "color": "#4E79A7", "label": "Community 0", "count": 11}, {"cid": 1, "color": "#F28E2B", "label": "Community 1", "count": 10}, {"cid": 2, "color": "#E15759", "label": "Community 2", "count": 10}, {"cid": 3, "color": "#76B7B2", "label": "Community 3", "count": 10}, {"cid": 4, "color": "#59A14F", "label": "Community 4", "count": 9}, {"cid": 5, "color": "#EDC948", "label": "Community 5", "count": 8}, {"cid": 6, "color": "#B07AA1", "label": "Community 6", "count": 6}, {"cid": 7, "color": "#FF9DA7", "label": "Community 7", "count": 6}, {"cid": 8, "color": "#9C755F", "label": "Community 8", "count": 6}, {"cid": 9, "color": "#BAB0AC", "label": "Community 9", "count": 4}, {"cid": 10, "color": "#4E79A7", "label": "Community 10", "count": 3}];
59
+
60
+ // HTML-escape helper — prevents XSS when injecting graph data into innerHTML
61
+ function esc(s) {
62
+ return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;').replace(/'/g,'&#39;');
63
+ }
64
+
65
+ // Build vis datasets
66
+ const nodesDS = new vis.DataSet(RAW_NODES.map(n => ({
67
+ id: n.id, label: n.label, color: n.color, size: n.size,
68
+ font: n.font, title: n.title,
69
+ _community: n.community, _community_name: n.community_name,
70
+ _source_file: n.source_file, _file_type: n.file_type, _degree: n.degree,
71
+ })));
72
+
73
+ const edgesDS = new vis.DataSet(RAW_EDGES.map((e, i) => ({
74
+ id: i, from: e.from, to: e.to,
75
+ label: '',
76
+ title: e.title,
77
+ dashes: e.dashes,
78
+ width: e.width,
79
+ color: e.color,
80
+ arrows: { to: { enabled: true, scaleFactor: 0.5 } },
81
+ })));
82
+
83
+ const container = document.getElementById('graph');
84
+ const network = new vis.Network(container, { nodes: nodesDS, edges: edgesDS }, {
85
+ physics: {
86
+ enabled: true,
87
+ solver: 'forceAtlas2Based',
88
+ forceAtlas2Based: {
89
+ gravitationalConstant: -60,
90
+ centralGravity: 0.005,
91
+ springLength: 120,
92
+ springConstant: 0.08,
93
+ damping: 0.4,
94
+ avoidOverlap: 0.8,
95
+ },
96
+ stabilization: { iterations: 200, fit: true },
97
+ },
98
+ interaction: {
99
+ hover: true,
100
+ tooltipDelay: 100,
101
+ hideEdgesOnDrag: true,
102
+ navigationButtons: false,
103
+ keyboard: false,
104
+ },
105
+ nodes: { shape: 'dot', borderWidth: 1.5 },
106
+ edges: { smooth: { type: 'continuous', roundness: 0.2 }, selectionWidth: 3 },
107
+ });
108
+
109
+ network.once('stabilizationIterationsDone', () => {
110
+ network.setOptions({ physics: { enabled: false } });
111
+ });
112
+
113
+ function showInfo(nodeId) {
114
+ const n = nodesDS.get(nodeId);
115
+ if (!n) return;
116
+ const neighborIds = network.getConnectedNodes(nodeId);
117
+ const neighborItems = neighborIds.map(nid => {
118
+ const nb = nodesDS.get(nid);
119
+ const color = nb ? nb.color.background : '#555';
120
+ return `<span class="neighbor-link" style="border-left-color:${esc(color)}" onclick="focusNode(${JSON.stringify(nid)})">${esc(nb ? nb.label : nid)}</span>`;
121
+ }).join('');
122
+ document.getElementById('info-content').innerHTML = `
123
+ <div class="field"><b>${esc(n.label)}</b></div>
124
+ <div class="field">Type: ${esc(n._file_type || 'unknown')}</div>
125
+ <div class="field">Community: ${esc(n._community_name)}</div>
126
+ <div class="field">Source: ${esc(n._source_file || '-')}</div>
127
+ <div class="field">Degree: ${n._degree}</div>
128
+ ${neighborIds.length ? `<div class="field" style="margin-top:8px;color:#aaa;font-size:11px">Neighbors (${neighborIds.length})</div><div id="neighbors-list">${neighborItems}</div>` : ''}
129
+ `;
130
+ }
131
+
132
+ function focusNode(nodeId) {
133
+ network.focus(nodeId, { scale: 1.4, animation: true });
134
+ network.selectNodes([nodeId]);
135
+ showInfo(nodeId);
136
+ }
137
+
138
+ // Track hovered node — hover detection is more reliable than click params
139
+ let hoveredNodeId = null;
140
+ network.on('hoverNode', params => {
141
+ hoveredNodeId = params.node;
142
+ container.style.cursor = 'pointer';
143
+ });
144
+ network.on('blurNode', () => {
145
+ hoveredNodeId = null;
146
+ container.style.cursor = 'default';
147
+ });
148
+ container.addEventListener('click', () => {
149
+ if (hoveredNodeId !== null) {
150
+ showInfo(hoveredNodeId);
151
+ network.selectNodes([hoveredNodeId]);
152
+ }
153
+ });
154
+ network.on('click', params => {
155
+ if (params.nodes.length > 0) {
156
+ showInfo(params.nodes[0]);
157
+ } else if (hoveredNodeId === null) {
158
+ document.getElementById('info-content').innerHTML = '<span class="empty">Click a node to inspect it</span>';
159
+ }
160
+ });
161
+
162
+ const searchInput = document.getElementById('search');
163
+ const searchResults = document.getElementById('search-results');
164
+ searchInput.addEventListener('input', () => {
165
+ const q = searchInput.value.toLowerCase().trim();
166
+ searchResults.innerHTML = '';
167
+ if (!q) { searchResults.style.display = 'none'; return; }
168
+ const matches = RAW_NODES.filter(n => n.label.toLowerCase().includes(q)).slice(0, 20);
169
+ if (!matches.length) { searchResults.style.display = 'none'; return; }
170
+ searchResults.style.display = 'block';
171
+ matches.forEach(n => {
172
+ const el = document.createElement('div');
173
+ el.className = 'search-item';
174
+ el.textContent = n.label;
175
+ el.style.borderLeft = `3px solid ${n.color.background}`;
176
+ el.style.paddingLeft = '8px';
177
+ el.onclick = () => {
178
+ network.focus(n.id, { scale: 1.5, animation: true });
179
+ network.selectNodes([n.id]);
180
+ showInfo(n.id);
181
+ searchResults.style.display = 'none';
182
+ searchInput.value = '';
183
+ };
184
+ searchResults.appendChild(el);
185
+ });
186
+ });
187
+ document.addEventListener('click', e => {
188
+ if (!searchResults.contains(e.target) && e.target !== searchInput)
189
+ searchResults.style.display = 'none';
190
+ });
191
+
192
+ const hiddenCommunities = new Set();
193
+ const legendEl = document.getElementById('legend');
194
+ LEGEND.forEach(c => {
195
+ const item = document.createElement('div');
196
+ item.className = 'legend-item';
197
+ item.innerHTML = `<div class="legend-dot" style="background:${c.color}"></div>
198
+ <span class="legend-label">${c.label}</span>
199
+ <span class="legend-count">${c.count}</span>`;
200
+ item.onclick = () => {
201
+ if (hiddenCommunities.has(c.cid)) {
202
+ hiddenCommunities.delete(c.cid);
203
+ item.classList.remove('dimmed');
204
+ } else {
205
+ hiddenCommunities.add(c.cid);
206
+ item.classList.add('dimmed');
207
+ }
208
+ const updates = RAW_NODES
209
+ .filter(n => n.community === c.cid)
210
+ .map(n => ({ id: n.id, hidden: hiddenCommunities.has(c.cid) }));
211
+ nodesDS.update(updates);
212
+ };
213
+ legendEl.appendChild(item);
214
+ });
215
+ </script>
216
+ <script>
217
+ // Render hyperedges as shaded regions
218
+ const hyperedges = [];
219
+ // afterDrawing passes ctx already transformed to network coordinate space.
220
+ // Draw node positions raw — no manual pan/zoom/DPR math needed.
221
+ network.on('afterDrawing', function(ctx) {
222
+ hyperedges.forEach(h => {
223
+ const positions = h.nodes
224
+ .map(nid => network.getPositions([nid])[nid])
225
+ .filter(p => p !== undefined);
226
+ if (positions.length < 2) return;
227
+ ctx.save();
228
+ ctx.globalAlpha = 0.12;
229
+ ctx.fillStyle = '#6366f1';
230
+ ctx.strokeStyle = '#6366f1';
231
+ ctx.lineWidth = 2;
232
+ ctx.beginPath();
233
+ // Centroid and expanded hull in network coordinates
234
+ const cx = positions.reduce((s, p) => s + p.x, 0) / positions.length;
235
+ const cy = positions.reduce((s, p) => s + p.y, 0) / positions.length;
236
+ const expanded = positions.map(p => ({
237
+ x: cx + (p.x - cx) * 1.15,
238
+ y: cy + (p.y - cy) * 1.15
239
+ }));
240
+ ctx.moveTo(expanded[0].x, expanded[0].y);
241
+ expanded.slice(1).forEach(p => ctx.lineTo(p.x, p.y));
242
+ ctx.closePath();
243
+ ctx.fill();
244
+ ctx.globalAlpha = 0.4;
245
+ ctx.stroke();
246
+ // Label
247
+ ctx.globalAlpha = 0.8;
248
+ ctx.fillStyle = '#4f46e5';
249
+ ctx.font = 'bold 11px sans-serif';
250
+ ctx.textAlign = 'center';
251
+ ctx.fillText(h.label, cx, cy - 5);
252
+ ctx.restore();
253
+ });
254
+ });
255
+ </script>
256
+ </body>
257
+ </html>
graphify-out/graph.json ADDED
@@ -0,0 +1,2341 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "directed": false,
3
+ "multigraph": false,
4
+ "graph": {},
5
+ "nodes": [
6
+ {
7
+ "label": "client.py",
8
+ "file_type": "code",
9
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
10
+ "source_location": "L1",
11
+ "id": "c_users_astra_desktop_hackon_debugzero_client_py",
12
+ "community": 5,
13
+ "norm_label": "client.py"
14
+ },
15
+ {
16
+ "label": "DebugzeroEnv",
17
+ "file_type": "code",
18
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
19
+ "source_location": "L18",
20
+ "id": "client_debugzeroenv",
21
+ "community": 1,
22
+ "norm_label": "debugzeroenv"
23
+ },
24
+ {
25
+ "label": "._step_payload()",
26
+ "file_type": "code",
27
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
28
+ "source_location": "L47",
29
+ "id": "client_debugzeroenv_step_payload",
30
+ "community": 1,
31
+ "norm_label": "._step_payload()"
32
+ },
33
+ {
34
+ "label": "._parse_result()",
35
+ "file_type": "code",
36
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
37
+ "source_location": "L62",
38
+ "id": "client_debugzeroenv_parse_result",
39
+ "community": 7,
40
+ "norm_label": "._parse_result()"
41
+ },
42
+ {
43
+ "label": "._parse_state()",
44
+ "file_type": "code",
45
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
46
+ "source_location": "L90",
47
+ "id": "client_debugzeroenv_parse_state",
48
+ "community": 1,
49
+ "norm_label": "._parse_state()"
50
+ },
51
+ {
52
+ "label": "Client for the DebugZero Environment. This client maintains a persistent We",
53
+ "file_type": "rationale",
54
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
55
+ "source_location": "L21",
56
+ "id": "client_rationale_21",
57
+ "community": 1,
58
+ "norm_label": "client for the debugzero environment. this client maintains a persistent we"
59
+ },
60
+ {
61
+ "label": "Convert DebugzeroAction to JSON payload for step message. Args:",
62
+ "file_type": "rationale",
63
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
64
+ "source_location": "L48",
65
+ "id": "client_rationale_48",
66
+ "community": 1,
67
+ "norm_label": "convert debugzeroaction to json payload for step message. args:"
68
+ },
69
+ {
70
+ "label": "Parse server response into StepResult[DebugzeroObservation]. Args:",
71
+ "file_type": "rationale",
72
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
73
+ "source_location": "L63",
74
+ "id": "client_rationale_63",
75
+ "community": 7,
76
+ "norm_label": "parse server response into stepresult[debugzeroobservation]. args:"
77
+ },
78
+ {
79
+ "label": "Parse server response into State object. Args: payload: JSO",
80
+ "file_type": "rationale",
81
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
82
+ "source_location": "L91",
83
+ "id": "client_rationale_91",
84
+ "community": 1,
85
+ "norm_label": "parse server response into state object. args: payload: jso"
86
+ },
87
+ {
88
+ "label": "models.py",
89
+ "file_type": "code",
90
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
91
+ "source_location": "L1",
92
+ "id": "c_users_astra_desktop_hackon_debugzero_models_py",
93
+ "community": 5,
94
+ "norm_label": "models.py"
95
+ },
96
+ {
97
+ "label": "DebugzeroAction",
98
+ "file_type": "code",
99
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
100
+ "source_location": "L18",
101
+ "id": "models_debugzeroaction",
102
+ "community": 9,
103
+ "norm_label": "debugzeroaction"
104
+ },
105
+ {
106
+ "label": "Action",
107
+ "file_type": "code",
108
+ "source_file": "",
109
+ "source_location": "",
110
+ "id": "action",
111
+ "community": 9,
112
+ "norm_label": "action"
113
+ },
114
+ {
115
+ "label": "DebugzeroObservation",
116
+ "file_type": "code",
117
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
118
+ "source_location": "L25",
119
+ "id": "models_debugzeroobservation",
120
+ "community": 7,
121
+ "norm_label": "debugzeroobservation"
122
+ },
123
+ {
124
+ "label": "Observation",
125
+ "file_type": "code",
126
+ "source_file": "",
127
+ "source_location": "",
128
+ "id": "observation",
129
+ "community": 7,
130
+ "norm_label": "observation"
131
+ },
132
+ {
133
+ "label": "DebugzeroState",
134
+ "file_type": "code",
135
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
136
+ "source_location": "L34",
137
+ "id": "models_debugzerostate",
138
+ "community": 1,
139
+ "norm_label": "debugzerostate"
140
+ },
141
+ {
142
+ "label": "State",
143
+ "file_type": "code",
144
+ "source_file": "",
145
+ "source_location": "",
146
+ "id": "state",
147
+ "community": 1,
148
+ "norm_label": "state"
149
+ },
150
+ {
151
+ "label": "Action for the DebugZero environment representing the Proposer or Solver inputs.",
152
+ "file_type": "rationale",
153
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
154
+ "source_location": "L19",
155
+ "id": "models_rationale_19",
156
+ "community": 9,
157
+ "norm_label": "action for the debugzero environment representing the proposer or solver inputs."
158
+ },
159
+ {
160
+ "label": "Observation from the DebugZero environment following sandbox execution.",
161
+ "file_type": "rationale",
162
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
163
+ "source_location": "L26",
164
+ "id": "models_rationale_26",
165
+ "community": 7,
166
+ "norm_label": "observation from the debugzero environment following sandbox execution."
167
+ },
168
+ {
169
+ "label": "State for the DebugZero environment, extending default state with seed context.",
170
+ "file_type": "rationale",
171
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
172
+ "source_location": "L35",
173
+ "id": "models_rationale_35",
174
+ "community": 1,
175
+ "norm_label": "state for the debugzero environment, extending default state with seed context."
176
+ },
177
+ {
178
+ "label": "run_episode.py",
179
+ "file_type": "code",
180
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py",
181
+ "source_location": "L1",
182
+ "id": "c_users_astra_desktop_hackon_debugzero_run_episode_py",
183
+ "community": 6,
184
+ "norm_label": "run_episode.py"
185
+ },
186
+ {
187
+ "label": "test_local_env()",
188
+ "file_type": "code",
189
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py",
190
+ "source_location": "L7",
191
+ "id": "run_episode_test_local_env",
192
+ "community": 6,
193
+ "norm_label": "test_local_env()"
194
+ },
195
+ {
196
+ "label": "__init__.py",
197
+ "file_type": "code",
198
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\__init__.py",
199
+ "source_location": "L1",
200
+ "id": "c_users_astra_desktop_hackon_debugzero_init_py",
201
+ "community": 5,
202
+ "norm_label": "__init__.py"
203
+ },
204
+ {
205
+ "label": "plausibility_eval.py",
206
+ "file_type": "code",
207
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py",
208
+ "source_location": "L1",
209
+ "id": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py",
210
+ "community": 8,
211
+ "norm_label": "plausibility_eval.py"
212
+ },
213
+ {
214
+ "label": "evaluate_navidadkhah_plausibility()",
215
+ "file_type": "code",
216
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py",
217
+ "source_location": "L5",
218
+ "id": "plausibility_eval_evaluate_navidadkhah_plausibility",
219
+ "community": 8,
220
+ "norm_label": "evaluate_navidadkhah_plausibility()"
221
+ },
222
+ {
223
+ "label": "Offline evaluation of generated bugs against the navidadkhah 25k bug dataset.",
224
+ "file_type": "rationale",
225
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py",
226
+ "source_location": "L6",
227
+ "id": "plausibility_eval_rationale_6",
228
+ "community": 8,
229
+ "norm_label": "offline evaluation of generated bugs against the navidadkhah 25k bug dataset."
230
+ },
231
+ {
232
+ "label": "test_bug_injector.py",
233
+ "file_type": "code",
234
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
235
+ "source_location": "L1",
236
+ "id": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
237
+ "community": 0,
238
+ "norm_label": "test_bug_injector.py"
239
+ },
240
+ {
241
+ "label": "test_missing_base_case()",
242
+ "file_type": "code",
243
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
244
+ "source_location": "L10",
245
+ "id": "test_bug_injector_test_missing_base_case",
246
+ "community": 0,
247
+ "norm_label": "test_missing_base_case()"
248
+ },
249
+ {
250
+ "label": "test_off_by_one()",
251
+ "file_type": "code",
252
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
253
+ "source_location": "L17",
254
+ "id": "test_bug_injector_test_off_by_one",
255
+ "community": 0,
256
+ "norm_label": "test_off_by_one()"
257
+ },
258
+ {
259
+ "label": "test_loop_boundary_shift()",
260
+ "file_type": "code",
261
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
262
+ "source_location": "L25",
263
+ "id": "test_bug_injector_test_loop_boundary_shift",
264
+ "community": 0,
265
+ "norm_label": "test_loop_boundary_shift()"
266
+ },
267
+ {
268
+ "label": "test_wrong_builtin()",
269
+ "file_type": "code",
270
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
271
+ "source_location": "L32",
272
+ "id": "test_bug_injector_test_wrong_builtin",
273
+ "community": 0,
274
+ "norm_label": "test_wrong_builtin()"
275
+ },
276
+ {
277
+ "label": "test_condition_negation()",
278
+ "file_type": "code",
279
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
280
+ "source_location": "L38",
281
+ "id": "test_bug_injector_test_condition_negation",
282
+ "community": 0,
283
+ "norm_label": "test_condition_negation()"
284
+ },
285
+ {
286
+ "label": "test_safety_check_blocks()",
287
+ "file_type": "code",
288
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
289
+ "source_location": "L44",
290
+ "id": "test_bug_injector_test_safety_check_blocks",
291
+ "community": 0,
292
+ "norm_label": "test_safety_check_blocks()"
293
+ },
294
+ {
295
+ "label": "test_executor.py",
296
+ "file_type": "code",
297
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py",
298
+ "source_location": "L1",
299
+ "id": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py",
300
+ "community": 3,
301
+ "norm_label": "test_executor.py"
302
+ },
303
+ {
304
+ "label": "test_executor_is_safe()",
305
+ "file_type": "code",
306
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py",
307
+ "source_location": "L4",
308
+ "id": "test_executor_test_executor_is_safe",
309
+ "community": 3,
310
+ "norm_label": "test_executor_is_safe()"
311
+ },
312
+ {
313
+ "label": "test_execute_code()",
314
+ "file_type": "code",
315
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py",
316
+ "source_location": "L16",
317
+ "id": "test_executor_test_execute_code",
318
+ "community": 3,
319
+ "norm_label": "test_execute_code()"
320
+ },
321
+ {
322
+ "label": "app.py",
323
+ "file_type": "code",
324
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
325
+ "source_location": "L1",
326
+ "id": "c_users_astra_desktop_hackon_debugzero_server_app_py",
327
+ "community": 5,
328
+ "norm_label": "app.py"
329
+ },
330
+ {
331
+ "label": "main()",
332
+ "file_type": "code",
333
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
334
+ "source_location": "L60",
335
+ "id": "app_main",
336
+ "community": 5,
337
+ "norm_label": "main()"
338
+ },
339
+ {
340
+ "label": "Entry point for direct execution via uv run or python -m. This function ena",
341
+ "file_type": "rationale",
342
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
343
+ "source_location": "L61",
344
+ "id": "app_rationale_61",
345
+ "community": 9,
346
+ "norm_label": "entry point for direct execution via uv run or python -m. this function ena"
347
+ },
348
+ {
349
+ "label": "bug_injector.py",
350
+ "file_type": "code",
351
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
352
+ "source_location": "L1",
353
+ "id": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
354
+ "community": 0,
355
+ "norm_label": "bug_injector.py"
356
+ },
357
+ {
358
+ "label": "is_safe_injection()",
359
+ "file_type": "code",
360
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
361
+ "source_location": "L13",
362
+ "id": "bug_injector_is_safe_injection",
363
+ "community": 0,
364
+ "norm_label": "is_safe_injection()"
365
+ },
366
+ {
367
+ "label": "BugInjectorVisitor",
368
+ "file_type": "code",
369
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
370
+ "source_location": "L19",
371
+ "id": "bug_injector_buginjectorvisitor",
372
+ "community": 2,
373
+ "norm_label": "buginjectorvisitor"
374
+ },
375
+ {
376
+ "label": ".__init__()",
377
+ "file_type": "code",
378
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
379
+ "source_location": "L20",
380
+ "id": "bug_injector_buginjectorvisitor_init",
381
+ "community": 2,
382
+ "norm_label": ".__init__()"
383
+ },
384
+ {
385
+ "label": ".visit_Constant()",
386
+ "file_type": "code",
387
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
388
+ "source_location": "L25",
389
+ "id": "bug_injector_buginjectorvisitor_visit_constant",
390
+ "community": 2,
391
+ "norm_label": ".visit_constant()"
392
+ },
393
+ {
394
+ "label": ".visit_Compare()",
395
+ "file_type": "code",
396
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
397
+ "source_location": "L38",
398
+ "id": "bug_injector_buginjectorvisitor_visit_compare",
399
+ "community": 2,
400
+ "norm_label": ".visit_compare()"
401
+ },
402
+ {
403
+ "label": ".visit_BinOp()",
404
+ "file_type": "code",
405
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
406
+ "source_location": "L64",
407
+ "id": "bug_injector_buginjectorvisitor_visit_binop",
408
+ "community": 2,
409
+ "norm_label": ".visit_binop()"
410
+ },
411
+ {
412
+ "label": ".visit_Call()",
413
+ "file_type": "code",
414
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
415
+ "source_location": "L84",
416
+ "id": "bug_injector_buginjectorvisitor_visit_call",
417
+ "community": 2,
418
+ "norm_label": ".visit_call()"
419
+ },
420
+ {
421
+ "label": ".visit_If()",
422
+ "file_type": "code",
423
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
424
+ "source_location": "L108",
425
+ "id": "bug_injector_buginjectorvisitor_visit_if",
426
+ "community": 2,
427
+ "norm_label": ".visit_if()"
428
+ },
429
+ {
430
+ "label": ".visit_Slice()",
431
+ "file_type": "code",
432
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
433
+ "source_location": "L127",
434
+ "id": "bug_injector_buginjectorvisitor_visit_slice",
435
+ "community": 2,
436
+ "norm_label": ".visit_slice()"
437
+ },
438
+ {
439
+ "label": ".visit_Name()",
440
+ "file_type": "code",
441
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
442
+ "source_location": "L142",
443
+ "id": "bug_injector_buginjectorvisitor_visit_name",
444
+ "community": 2,
445
+ "norm_label": ".visit_name()"
446
+ },
447
+ {
448
+ "label": ".visit_Assign()",
449
+ "file_type": "code",
450
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
451
+ "source_location": "L146",
452
+ "id": "bug_injector_buginjectorvisitor_visit_assign",
453
+ "community": 2,
454
+ "norm_label": ".visit_assign()"
455
+ },
456
+ {
457
+ "label": "inject_bug()",
458
+ "file_type": "code",
459
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
460
+ "source_location": "L159",
461
+ "id": "bug_injector_inject_bug",
462
+ "community": 0,
463
+ "norm_label": "inject_bug()"
464
+ },
465
+ {
466
+ "label": "4 critical checks: - parse succeeds - mutation actually changed code",
467
+ "file_type": "rationale",
468
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
469
+ "source_location": "L160",
470
+ "id": "bug_injector_rationale_160",
471
+ "community": 0,
472
+ "norm_label": "4 critical checks: - parse succeeds - mutation actually changed code"
473
+ },
474
+ {
475
+ "label": "debugZero_environment.py",
476
+ "file_type": "code",
477
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
478
+ "source_location": "L1",
479
+ "id": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
480
+ "community": 5,
481
+ "norm_label": "debugzero_environment.py"
482
+ },
483
+ {
484
+ "label": "DebugzeroEnvironment",
485
+ "file_type": "code",
486
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
487
+ "source_location": "L38",
488
+ "id": "debugzero_environment_debugzeroenvironment",
489
+ "community": 6,
490
+ "norm_label": "debugzeroenvironment"
491
+ },
492
+ {
493
+ "label": "Environment",
494
+ "file_type": "code",
495
+ "source_file": "",
496
+ "source_location": "",
497
+ "id": "environment",
498
+ "community": 6,
499
+ "norm_label": "environment"
500
+ },
501
+ {
502
+ "label": ".__init__()",
503
+ "file_type": "code",
504
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
505
+ "source_location": "L45",
506
+ "id": "debugzero_environment_debugzeroenvironment_init",
507
+ "community": 1,
508
+ "norm_label": ".__init__()"
509
+ },
510
+ {
511
+ "label": ".reset()",
512
+ "file_type": "code",
513
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
514
+ "source_location": "L56",
515
+ "id": "debugzero_environment_debugzeroenvironment_reset",
516
+ "community": 6,
517
+ "norm_label": ".reset()"
518
+ },
519
+ {
520
+ "label": ".step()",
521
+ "file_type": "code",
522
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
523
+ "source_location": "L77",
524
+ "id": "debugzero_environment_debugzeroenvironment_step",
525
+ "community": 6,
526
+ "norm_label": ".step()"
527
+ },
528
+ {
529
+ "label": "state()",
530
+ "file_type": "code",
531
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
532
+ "source_location": "L127",
533
+ "id": "debugzero_environment_state",
534
+ "community": 5,
535
+ "norm_label": "state()"
536
+ },
537
+ {
538
+ "label": "Dual-role DebugZero Environment wrapping a Python sandbox execution for Prop",
539
+ "file_type": "rationale",
540
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
541
+ "source_location": "L39",
542
+ "id": "debugzero_environment_rationale_39",
543
+ "community": 7,
544
+ "norm_label": "dual-role debugzero environment wrapping a python sandbox execution for prop"
545
+ },
546
+ {
547
+ "label": "executor.py",
548
+ "file_type": "code",
549
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
550
+ "source_location": "L1",
551
+ "id": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
552
+ "community": 3,
553
+ "norm_label": "executor.py"
554
+ },
555
+ {
556
+ "label": "is_safe()",
557
+ "file_type": "code",
558
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
559
+ "source_location": "L9",
560
+ "id": "executor_is_safe",
561
+ "community": 3,
562
+ "norm_label": "is_safe()"
563
+ },
564
+ {
565
+ "label": "ExecutionResult",
566
+ "file_type": "code",
567
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
568
+ "source_location": "L44",
569
+ "id": "executor_executionresult",
570
+ "community": 3,
571
+ "norm_label": "executionresult"
572
+ },
573
+ {
574
+ "label": ".__init__()",
575
+ "file_type": "code",
576
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
577
+ "source_location": "L45",
578
+ "id": "executor_executionresult_init",
579
+ "community": 3,
580
+ "norm_label": ".__init__()"
581
+ },
582
+ {
583
+ "label": "execute_code()",
584
+ "file_type": "code",
585
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
586
+ "source_location": "L51",
587
+ "id": "executor_execute_code",
588
+ "community": 3,
589
+ "norm_label": "execute_code()"
590
+ },
591
+ {
592
+ "label": "Check if the code contains any blocked imports strings. Also performs a qu",
593
+ "file_type": "rationale",
594
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
595
+ "source_location": "L10",
596
+ "id": "executor_rationale_10",
597
+ "community": 3,
598
+ "norm_label": "check if the code contains any blocked imports strings. also performs a qu"
599
+ },
600
+ {
601
+ "label": "Executes the provided python code alongside its tests in an isolated subprocess.",
602
+ "file_type": "rationale",
603
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
604
+ "source_location": "L52",
605
+ "id": "executor_rationale_52",
606
+ "community": 3,
607
+ "norm_label": "executes the provided python code alongside its tests in an isolated subprocess."
608
+ },
609
+ {
610
+ "label": "plausibility.py",
611
+ "file_type": "code",
612
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py",
613
+ "source_location": "L1",
614
+ "id": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py",
615
+ "community": 8,
616
+ "norm_label": "plausibility.py"
617
+ },
618
+ {
619
+ "label": "compute_ast_distance()",
620
+ "file_type": "code",
621
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py",
622
+ "source_location": "L4",
623
+ "id": "plausibility_compute_ast_distance",
624
+ "community": 8,
625
+ "norm_label": "compute_ast_distance()"
626
+ },
627
+ {
628
+ "label": "Computes the string similarity distance between the AST dumps of the original",
629
+ "file_type": "rationale",
630
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py",
631
+ "source_location": "L5",
632
+ "id": "plausibility_rationale_5",
633
+ "community": 8,
634
+ "norm_label": "computes the string similarity distance between the ast dumps of the original"
635
+ },
636
+ {
637
+ "label": "__init__.py",
638
+ "file_type": "code",
639
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\__init__.py",
640
+ "source_location": "L1",
641
+ "id": "c_users_astra_desktop_hackon_debugzero_server_init_py",
642
+ "community": 5,
643
+ "norm_label": "__init__.py"
644
+ },
645
+ {
646
+ "label": "dual_role_sampler.py",
647
+ "file_type": "code",
648
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py",
649
+ "source_location": "L1",
650
+ "id": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py",
651
+ "community": 10,
652
+ "norm_label": "dual_role_sampler.py"
653
+ },
654
+ {
655
+ "label": "sample_proposer_prompt()",
656
+ "file_type": "code",
657
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py",
658
+ "source_location": "L23",
659
+ "id": "dual_role_sampler_sample_proposer_prompt",
660
+ "community": 10,
661
+ "norm_label": "sample_proposer_prompt()"
662
+ },
663
+ {
664
+ "label": "sample_solver_prompt()",
665
+ "file_type": "code",
666
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py",
667
+ "source_location": "L26",
668
+ "id": "dual_role_sampler_sample_solver_prompt",
669
+ "community": 10,
670
+ "norm_label": "sample_solver_prompt()"
671
+ },
672
+ {
673
+ "label": "grpo_train.py",
674
+ "file_type": "code",
675
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
676
+ "source_location": "L1",
677
+ "id": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py",
678
+ "community": 4,
679
+ "norm_label": "grpo_train.py"
680
+ },
681
+ {
682
+ "label": "reward_fn()",
683
+ "file_type": "code",
684
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
685
+ "source_location": "L25",
686
+ "id": "grpo_train_reward_fn",
687
+ "community": 4,
688
+ "norm_label": "reward_fn()"
689
+ },
690
+ {
691
+ "label": "create_dataset()",
692
+ "file_type": "code",
693
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
694
+ "source_location": "L44",
695
+ "id": "grpo_train_create_dataset",
696
+ "community": 4,
697
+ "norm_label": "create_dataset()"
698
+ },
699
+ {
700
+ "label": "main()",
701
+ "file_type": "code",
702
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
703
+ "source_location": "L57",
704
+ "id": "grpo_train_main",
705
+ "community": 4,
706
+ "norm_label": "main()"
707
+ },
708
+ {
709
+ "label": "rewards.py",
710
+ "file_type": "code",
711
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
712
+ "source_location": "L1",
713
+ "id": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
714
+ "community": 4,
715
+ "norm_label": "rewards.py"
716
+ },
717
+ {
718
+ "label": "get_solve_rate()",
719
+ "file_type": "code",
720
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
721
+ "source_location": "L7",
722
+ "id": "rewards_get_solve_rate",
723
+ "community": 4,
724
+ "norm_label": "get_solve_rate()"
725
+ },
726
+ {
727
+ "label": "record_solve_result()",
728
+ "file_type": "code",
729
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
730
+ "source_location": "L13",
731
+ "id": "rewards_record_solve_result",
732
+ "community": 4,
733
+ "norm_label": "record_solve_result()"
734
+ },
735
+ {
736
+ "label": "compute_proposer_reward()",
737
+ "file_type": "code",
738
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
739
+ "source_location": "L18",
740
+ "id": "rewards_compute_proposer_reward",
741
+ "community": 4,
742
+ "norm_label": "compute_proposer_reward()"
743
+ },
744
+ {
745
+ "label": "compute_solver_reward()",
746
+ "file_type": "code",
747
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
748
+ "source_location": "L37",
749
+ "id": "rewards_compute_solver_reward",
750
+ "community": 4,
751
+ "norm_label": "compute_solver_reward()"
752
+ }
753
+ ],
754
+ "links": [
755
+ {
756
+ "relation": "imports_from",
757
+ "confidence": "EXTRACTED",
758
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
759
+ "source_location": "L15",
760
+ "weight": 1.0,
761
+ "_src": "c_users_astra_desktop_hackon_debugzero_client_py",
762
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_models_py",
763
+ "source": "c_users_astra_desktop_hackon_debugzero_client_py",
764
+ "target": "c_users_astra_desktop_hackon_debugzero_models_py",
765
+ "confidence_score": 1.0
766
+ },
767
+ {
768
+ "relation": "contains",
769
+ "confidence": "EXTRACTED",
770
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
771
+ "source_location": "L18",
772
+ "weight": 1.0,
773
+ "_src": "c_users_astra_desktop_hackon_debugzero_client_py",
774
+ "_tgt": "client_debugzeroenv",
775
+ "source": "c_users_astra_desktop_hackon_debugzero_client_py",
776
+ "target": "client_debugzeroenv",
777
+ "confidence_score": 1.0
778
+ },
779
+ {
780
+ "relation": "imports_from",
781
+ "confidence": "EXTRACTED",
782
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\__init__.py",
783
+ "source_location": "L9",
784
+ "weight": 1.0,
785
+ "_src": "c_users_astra_desktop_hackon_debugzero_init_py",
786
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_client_py",
787
+ "source": "c_users_astra_desktop_hackon_debugzero_client_py",
788
+ "target": "c_users_astra_desktop_hackon_debugzero_init_py",
789
+ "confidence_score": 1.0
790
+ },
791
+ {
792
+ "relation": "method",
793
+ "confidence": "EXTRACTED",
794
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
795
+ "source_location": "L47",
796
+ "weight": 1.0,
797
+ "_src": "client_debugzeroenv",
798
+ "_tgt": "client_debugzeroenv_step_payload",
799
+ "source": "client_debugzeroenv",
800
+ "target": "client_debugzeroenv_step_payload",
801
+ "confidence_score": 1.0
802
+ },
803
+ {
804
+ "relation": "method",
805
+ "confidence": "EXTRACTED",
806
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
807
+ "source_location": "L62",
808
+ "weight": 1.0,
809
+ "_src": "client_debugzeroenv",
810
+ "_tgt": "client_debugzeroenv_parse_result",
811
+ "source": "client_debugzeroenv",
812
+ "target": "client_debugzeroenv_parse_result",
813
+ "confidence_score": 1.0
814
+ },
815
+ {
816
+ "relation": "method",
817
+ "confidence": "EXTRACTED",
818
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
819
+ "source_location": "L90",
820
+ "weight": 1.0,
821
+ "_src": "client_debugzeroenv",
822
+ "_tgt": "client_debugzeroenv_parse_state",
823
+ "source": "client_debugzeroenv",
824
+ "target": "client_debugzeroenv_parse_state",
825
+ "confidence_score": 1.0
826
+ },
827
+ {
828
+ "relation": "rationale_for",
829
+ "confidence": "EXTRACTED",
830
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
831
+ "source_location": "L21",
832
+ "weight": 1.0,
833
+ "_src": "client_rationale_21",
834
+ "_tgt": "client_debugzeroenv",
835
+ "source": "client_debugzeroenv",
836
+ "target": "client_rationale_21",
837
+ "confidence_score": 1.0
838
+ },
839
+ {
840
+ "relation": "uses",
841
+ "confidence": "INFERRED",
842
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
843
+ "source_location": "L15",
844
+ "weight": 0.8,
845
+ "_src": "client_debugzeroenv",
846
+ "_tgt": "models_debugzeroaction",
847
+ "source": "client_debugzeroenv",
848
+ "target": "models_debugzeroaction",
849
+ "confidence_score": 0.5
850
+ },
851
+ {
852
+ "relation": "uses",
853
+ "confidence": "INFERRED",
854
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
855
+ "source_location": "L15",
856
+ "weight": 0.8,
857
+ "_src": "client_debugzeroenv",
858
+ "_tgt": "models_debugzeroobservation",
859
+ "source": "client_debugzeroenv",
860
+ "target": "models_debugzeroobservation",
861
+ "confidence_score": 0.5
862
+ },
863
+ {
864
+ "relation": "uses",
865
+ "confidence": "INFERRED",
866
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
867
+ "source_location": "L15",
868
+ "weight": 0.8,
869
+ "_src": "client_debugzeroenv",
870
+ "_tgt": "models_debugzerostate",
871
+ "source": "client_debugzeroenv",
872
+ "target": "models_debugzerostate",
873
+ "confidence_score": 0.5
874
+ },
875
+ {
876
+ "relation": "rationale_for",
877
+ "confidence": "EXTRACTED",
878
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
879
+ "source_location": "L48",
880
+ "weight": 1.0,
881
+ "_src": "client_rationale_48",
882
+ "_tgt": "client_debugzeroenv_step_payload",
883
+ "source": "client_debugzeroenv_step_payload",
884
+ "target": "client_rationale_48",
885
+ "confidence_score": 1.0
886
+ },
887
+ {
888
+ "relation": "rationale_for",
889
+ "confidence": "EXTRACTED",
890
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
891
+ "source_location": "L63",
892
+ "weight": 1.0,
893
+ "_src": "client_rationale_63",
894
+ "_tgt": "client_debugzeroenv_parse_result",
895
+ "source": "client_debugzeroenv_parse_result",
896
+ "target": "client_rationale_63",
897
+ "confidence_score": 1.0
898
+ },
899
+ {
900
+ "relation": "calls",
901
+ "confidence": "INFERRED",
902
+ "confidence_score": 0.8,
903
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
904
+ "source_location": "L73",
905
+ "weight": 1.0,
906
+ "_src": "client_debugzeroenv_parse_result",
907
+ "_tgt": "models_debugzeroobservation",
908
+ "source": "client_debugzeroenv_parse_result",
909
+ "target": "models_debugzeroobservation"
910
+ },
911
+ {
912
+ "relation": "rationale_for",
913
+ "confidence": "EXTRACTED",
914
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
915
+ "source_location": "L91",
916
+ "weight": 1.0,
917
+ "_src": "client_rationale_91",
918
+ "_tgt": "client_debugzeroenv_parse_state",
919
+ "source": "client_debugzeroenv_parse_state",
920
+ "target": "client_rationale_91",
921
+ "confidence_score": 1.0
922
+ },
923
+ {
924
+ "relation": "calls",
925
+ "confidence": "INFERRED",
926
+ "confidence_score": 0.8,
927
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
928
+ "source_location": "L100",
929
+ "weight": 1.0,
930
+ "_src": "client_debugzeroenv_parse_state",
931
+ "_tgt": "models_debugzerostate",
932
+ "source": "client_debugzeroenv_parse_state",
933
+ "target": "models_debugzerostate"
934
+ },
935
+ {
936
+ "relation": "uses",
937
+ "confidence": "INFERRED",
938
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
939
+ "source_location": "L15",
940
+ "weight": 0.8,
941
+ "_src": "client_rationale_21",
942
+ "_tgt": "models_debugzeroaction",
943
+ "source": "client_rationale_21",
944
+ "target": "models_debugzeroaction",
945
+ "confidence_score": 0.5
946
+ },
947
+ {
948
+ "relation": "uses",
949
+ "confidence": "INFERRED",
950
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
951
+ "source_location": "L15",
952
+ "weight": 0.8,
953
+ "_src": "client_rationale_21",
954
+ "_tgt": "models_debugzeroobservation",
955
+ "source": "client_rationale_21",
956
+ "target": "models_debugzeroobservation",
957
+ "confidence_score": 0.5
958
+ },
959
+ {
960
+ "relation": "uses",
961
+ "confidence": "INFERRED",
962
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
963
+ "source_location": "L15",
964
+ "weight": 0.8,
965
+ "_src": "client_rationale_21",
966
+ "_tgt": "models_debugzerostate",
967
+ "source": "client_rationale_21",
968
+ "target": "models_debugzerostate",
969
+ "confidence_score": 0.5
970
+ },
971
+ {
972
+ "relation": "uses",
973
+ "confidence": "INFERRED",
974
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
975
+ "source_location": "L15",
976
+ "weight": 0.8,
977
+ "_src": "client_rationale_48",
978
+ "_tgt": "models_debugzeroaction",
979
+ "source": "client_rationale_48",
980
+ "target": "models_debugzeroaction",
981
+ "confidence_score": 0.5
982
+ },
983
+ {
984
+ "relation": "uses",
985
+ "confidence": "INFERRED",
986
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
987
+ "source_location": "L15",
988
+ "weight": 0.8,
989
+ "_src": "client_rationale_48",
990
+ "_tgt": "models_debugzeroobservation",
991
+ "source": "client_rationale_48",
992
+ "target": "models_debugzeroobservation",
993
+ "confidence_score": 0.5
994
+ },
995
+ {
996
+ "relation": "uses",
997
+ "confidence": "INFERRED",
998
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
999
+ "source_location": "L15",
1000
+ "weight": 0.8,
1001
+ "_src": "client_rationale_48",
1002
+ "_tgt": "models_debugzerostate",
1003
+ "source": "client_rationale_48",
1004
+ "target": "models_debugzerostate",
1005
+ "confidence_score": 0.5
1006
+ },
1007
+ {
1008
+ "relation": "uses",
1009
+ "confidence": "INFERRED",
1010
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
1011
+ "source_location": "L15",
1012
+ "weight": 0.8,
1013
+ "_src": "client_rationale_63",
1014
+ "_tgt": "models_debugzeroaction",
1015
+ "source": "client_rationale_63",
1016
+ "target": "models_debugzeroaction",
1017
+ "confidence_score": 0.5
1018
+ },
1019
+ {
1020
+ "relation": "uses",
1021
+ "confidence": "INFERRED",
1022
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
1023
+ "source_location": "L15",
1024
+ "weight": 0.8,
1025
+ "_src": "client_rationale_63",
1026
+ "_tgt": "models_debugzeroobservation",
1027
+ "source": "client_rationale_63",
1028
+ "target": "models_debugzeroobservation",
1029
+ "confidence_score": 0.5
1030
+ },
1031
+ {
1032
+ "relation": "uses",
1033
+ "confidence": "INFERRED",
1034
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
1035
+ "source_location": "L15",
1036
+ "weight": 0.8,
1037
+ "_src": "client_rationale_63",
1038
+ "_tgt": "models_debugzerostate",
1039
+ "source": "client_rationale_63",
1040
+ "target": "models_debugzerostate",
1041
+ "confidence_score": 0.5
1042
+ },
1043
+ {
1044
+ "relation": "uses",
1045
+ "confidence": "INFERRED",
1046
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
1047
+ "source_location": "L15",
1048
+ "weight": 0.8,
1049
+ "_src": "client_rationale_91",
1050
+ "_tgt": "models_debugzeroaction",
1051
+ "source": "client_rationale_91",
1052
+ "target": "models_debugzeroaction",
1053
+ "confidence_score": 0.5
1054
+ },
1055
+ {
1056
+ "relation": "uses",
1057
+ "confidence": "INFERRED",
1058
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
1059
+ "source_location": "L15",
1060
+ "weight": 0.8,
1061
+ "_src": "client_rationale_91",
1062
+ "_tgt": "models_debugzeroobservation",
1063
+ "source": "client_rationale_91",
1064
+ "target": "models_debugzeroobservation",
1065
+ "confidence_score": 0.5
1066
+ },
1067
+ {
1068
+ "relation": "uses",
1069
+ "confidence": "INFERRED",
1070
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\client.py",
1071
+ "source_location": "L15",
1072
+ "weight": 0.8,
1073
+ "_src": "client_rationale_91",
1074
+ "_tgt": "models_debugzerostate",
1075
+ "source": "client_rationale_91",
1076
+ "target": "models_debugzerostate",
1077
+ "confidence_score": 0.5
1078
+ },
1079
+ {
1080
+ "relation": "contains",
1081
+ "confidence": "EXTRACTED",
1082
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1083
+ "source_location": "L18",
1084
+ "weight": 1.0,
1085
+ "_src": "c_users_astra_desktop_hackon_debugzero_models_py",
1086
+ "_tgt": "models_debugzeroaction",
1087
+ "source": "c_users_astra_desktop_hackon_debugzero_models_py",
1088
+ "target": "models_debugzeroaction",
1089
+ "confidence_score": 1.0
1090
+ },
1091
+ {
1092
+ "relation": "contains",
1093
+ "confidence": "EXTRACTED",
1094
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1095
+ "source_location": "L25",
1096
+ "weight": 1.0,
1097
+ "_src": "c_users_astra_desktop_hackon_debugzero_models_py",
1098
+ "_tgt": "models_debugzeroobservation",
1099
+ "source": "c_users_astra_desktop_hackon_debugzero_models_py",
1100
+ "target": "models_debugzeroobservation",
1101
+ "confidence_score": 1.0
1102
+ },
1103
+ {
1104
+ "relation": "contains",
1105
+ "confidence": "EXTRACTED",
1106
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1107
+ "source_location": "L34",
1108
+ "weight": 1.0,
1109
+ "_src": "c_users_astra_desktop_hackon_debugzero_models_py",
1110
+ "_tgt": "models_debugzerostate",
1111
+ "source": "c_users_astra_desktop_hackon_debugzero_models_py",
1112
+ "target": "models_debugzerostate",
1113
+ "confidence_score": 1.0
1114
+ },
1115
+ {
1116
+ "relation": "imports_from",
1117
+ "confidence": "EXTRACTED",
1118
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\__init__.py",
1119
+ "source_location": "L10",
1120
+ "weight": 1.0,
1121
+ "_src": "c_users_astra_desktop_hackon_debugzero_init_py",
1122
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_models_py",
1123
+ "source": "c_users_astra_desktop_hackon_debugzero_models_py",
1124
+ "target": "c_users_astra_desktop_hackon_debugzero_init_py",
1125
+ "confidence_score": 1.0
1126
+ },
1127
+ {
1128
+ "relation": "imports_from",
1129
+ "confidence": "EXTRACTED",
1130
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
1131
+ "source_location": "L43",
1132
+ "weight": 1.0,
1133
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_app_py",
1134
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_models_py",
1135
+ "source": "c_users_astra_desktop_hackon_debugzero_models_py",
1136
+ "target": "c_users_astra_desktop_hackon_debugzero_server_app_py",
1137
+ "confidence_score": 1.0
1138
+ },
1139
+ {
1140
+ "relation": "imports_from",
1141
+ "confidence": "EXTRACTED",
1142
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1143
+ "source_location": "L17",
1144
+ "weight": 1.0,
1145
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1146
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_models_py",
1147
+ "source": "c_users_astra_desktop_hackon_debugzero_models_py",
1148
+ "target": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1149
+ "confidence_score": 1.0
1150
+ },
1151
+ {
1152
+ "relation": "inherits",
1153
+ "confidence": "EXTRACTED",
1154
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1155
+ "source_location": "L18",
1156
+ "weight": 1.0,
1157
+ "_src": "models_debugzeroaction",
1158
+ "_tgt": "action",
1159
+ "source": "models_debugzeroaction",
1160
+ "target": "action",
1161
+ "confidence_score": 1.0
1162
+ },
1163
+ {
1164
+ "relation": "rationale_for",
1165
+ "confidence": "EXTRACTED",
1166
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1167
+ "source_location": "L19",
1168
+ "weight": 1.0,
1169
+ "_src": "models_rationale_19",
1170
+ "_tgt": "models_debugzeroaction",
1171
+ "source": "models_debugzeroaction",
1172
+ "target": "models_rationale_19",
1173
+ "confidence_score": 1.0
1174
+ },
1175
+ {
1176
+ "relation": "uses",
1177
+ "confidence": "INFERRED",
1178
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
1179
+ "source_location": "L46",
1180
+ "weight": 0.8,
1181
+ "_src": "app_rationale_61",
1182
+ "_tgt": "models_debugzeroaction",
1183
+ "source": "models_debugzeroaction",
1184
+ "target": "app_rationale_61",
1185
+ "confidence_score": 0.5
1186
+ },
1187
+ {
1188
+ "relation": "uses",
1189
+ "confidence": "INFERRED",
1190
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1191
+ "source_location": "L19",
1192
+ "weight": 0.8,
1193
+ "_src": "debugzero_environment_debugzeroenvironment",
1194
+ "_tgt": "models_debugzeroaction",
1195
+ "source": "models_debugzeroaction",
1196
+ "target": "debugzero_environment_debugzeroenvironment",
1197
+ "confidence_score": 0.5
1198
+ },
1199
+ {
1200
+ "relation": "uses",
1201
+ "confidence": "INFERRED",
1202
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1203
+ "source_location": "L19",
1204
+ "weight": 0.8,
1205
+ "_src": "debugzero_environment_rationale_39",
1206
+ "_tgt": "models_debugzeroaction",
1207
+ "source": "models_debugzeroaction",
1208
+ "target": "debugzero_environment_rationale_39",
1209
+ "confidence_score": 0.5
1210
+ },
1211
+ {
1212
+ "relation": "calls",
1213
+ "confidence": "INFERRED",
1214
+ "confidence_score": 0.8,
1215
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py",
1216
+ "source_location": "L15",
1217
+ "weight": 1.0,
1218
+ "_src": "run_episode_test_local_env",
1219
+ "_tgt": "models_debugzeroaction",
1220
+ "source": "models_debugzeroaction",
1221
+ "target": "run_episode_test_local_env"
1222
+ },
1223
+ {
1224
+ "relation": "inherits",
1225
+ "confidence": "EXTRACTED",
1226
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1227
+ "source_location": "L25",
1228
+ "weight": 1.0,
1229
+ "_src": "models_debugzeroobservation",
1230
+ "_tgt": "observation",
1231
+ "source": "models_debugzeroobservation",
1232
+ "target": "observation",
1233
+ "confidence_score": 1.0
1234
+ },
1235
+ {
1236
+ "relation": "rationale_for",
1237
+ "confidence": "EXTRACTED",
1238
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1239
+ "source_location": "L26",
1240
+ "weight": 1.0,
1241
+ "_src": "models_rationale_26",
1242
+ "_tgt": "models_debugzeroobservation",
1243
+ "source": "models_debugzeroobservation",
1244
+ "target": "models_rationale_26",
1245
+ "confidence_score": 1.0
1246
+ },
1247
+ {
1248
+ "relation": "uses",
1249
+ "confidence": "INFERRED",
1250
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
1251
+ "source_location": "L46",
1252
+ "weight": 0.8,
1253
+ "_src": "app_rationale_61",
1254
+ "_tgt": "models_debugzeroobservation",
1255
+ "source": "models_debugzeroobservation",
1256
+ "target": "app_rationale_61",
1257
+ "confidence_score": 0.5
1258
+ },
1259
+ {
1260
+ "relation": "uses",
1261
+ "confidence": "INFERRED",
1262
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1263
+ "source_location": "L19",
1264
+ "weight": 0.8,
1265
+ "_src": "debugzero_environment_debugzeroenvironment",
1266
+ "_tgt": "models_debugzeroobservation",
1267
+ "source": "models_debugzeroobservation",
1268
+ "target": "debugzero_environment_debugzeroenvironment",
1269
+ "confidence_score": 0.5
1270
+ },
1271
+ {
1272
+ "relation": "uses",
1273
+ "confidence": "INFERRED",
1274
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1275
+ "source_location": "L19",
1276
+ "weight": 0.8,
1277
+ "_src": "debugzero_environment_rationale_39",
1278
+ "_tgt": "models_debugzeroobservation",
1279
+ "source": "models_debugzeroobservation",
1280
+ "target": "debugzero_environment_rationale_39",
1281
+ "confidence_score": 0.5
1282
+ },
1283
+ {
1284
+ "relation": "calls",
1285
+ "confidence": "INFERRED",
1286
+ "confidence_score": 0.8,
1287
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1288
+ "source_location": "L67",
1289
+ "weight": 1.0,
1290
+ "_src": "debugzero_environment_debugzeroenvironment_reset",
1291
+ "_tgt": "models_debugzeroobservation",
1292
+ "source": "models_debugzeroobservation",
1293
+ "target": "debugzero_environment_debugzeroenvironment_reset"
1294
+ },
1295
+ {
1296
+ "relation": "calls",
1297
+ "confidence": "INFERRED",
1298
+ "confidence_score": 0.8,
1299
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1300
+ "source_location": "L95",
1301
+ "weight": 1.0,
1302
+ "_src": "debugzero_environment_debugzeroenvironment_step",
1303
+ "_tgt": "models_debugzeroobservation",
1304
+ "source": "models_debugzeroobservation",
1305
+ "target": "debugzero_environment_debugzeroenvironment_step"
1306
+ },
1307
+ {
1308
+ "relation": "inherits",
1309
+ "confidence": "EXTRACTED",
1310
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1311
+ "source_location": "L34",
1312
+ "weight": 1.0,
1313
+ "_src": "models_debugzerostate",
1314
+ "_tgt": "state",
1315
+ "source": "models_debugzerostate",
1316
+ "target": "state",
1317
+ "confidence_score": 1.0
1318
+ },
1319
+ {
1320
+ "relation": "rationale_for",
1321
+ "confidence": "EXTRACTED",
1322
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\models.py",
1323
+ "source_location": "L35",
1324
+ "weight": 1.0,
1325
+ "_src": "models_rationale_35",
1326
+ "_tgt": "models_debugzerostate",
1327
+ "source": "models_debugzerostate",
1328
+ "target": "models_rationale_35",
1329
+ "confidence_score": 1.0
1330
+ },
1331
+ {
1332
+ "relation": "uses",
1333
+ "confidence": "INFERRED",
1334
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1335
+ "source_location": "L19",
1336
+ "weight": 0.8,
1337
+ "_src": "debugzero_environment_debugzeroenvironment",
1338
+ "_tgt": "models_debugzerostate",
1339
+ "source": "models_debugzerostate",
1340
+ "target": "debugzero_environment_debugzeroenvironment",
1341
+ "confidence_score": 0.5
1342
+ },
1343
+ {
1344
+ "relation": "uses",
1345
+ "confidence": "INFERRED",
1346
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1347
+ "source_location": "L19",
1348
+ "weight": 0.8,
1349
+ "_src": "debugzero_environment_rationale_39",
1350
+ "_tgt": "models_debugzerostate",
1351
+ "source": "models_debugzerostate",
1352
+ "target": "debugzero_environment_rationale_39",
1353
+ "confidence_score": 0.5
1354
+ },
1355
+ {
1356
+ "relation": "calls",
1357
+ "confidence": "INFERRED",
1358
+ "confidence_score": 0.8,
1359
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1360
+ "source_location": "L46",
1361
+ "weight": 1.0,
1362
+ "_src": "debugzero_environment_debugzeroenvironment_init",
1363
+ "_tgt": "models_debugzerostate",
1364
+ "source": "models_debugzerostate",
1365
+ "target": "debugzero_environment_debugzeroenvironment_init"
1366
+ },
1367
+ {
1368
+ "relation": "calls",
1369
+ "confidence": "INFERRED",
1370
+ "confidence_score": 0.8,
1371
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1372
+ "source_location": "L57",
1373
+ "weight": 1.0,
1374
+ "_src": "debugzero_environment_debugzeroenvironment_reset",
1375
+ "_tgt": "models_debugzerostate",
1376
+ "source": "models_debugzerostate",
1377
+ "target": "debugzero_environment_debugzeroenvironment_reset"
1378
+ },
1379
+ {
1380
+ "relation": "contains",
1381
+ "confidence": "EXTRACTED",
1382
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py",
1383
+ "source_location": "L7",
1384
+ "weight": 1.0,
1385
+ "_src": "c_users_astra_desktop_hackon_debugzero_run_episode_py",
1386
+ "_tgt": "run_episode_test_local_env",
1387
+ "source": "c_users_astra_desktop_hackon_debugzero_run_episode_py",
1388
+ "target": "run_episode_test_local_env",
1389
+ "confidence_score": 1.0
1390
+ },
1391
+ {
1392
+ "relation": "calls",
1393
+ "confidence": "INFERRED",
1394
+ "confidence_score": 0.8,
1395
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py",
1396
+ "source_location": "L9",
1397
+ "weight": 1.0,
1398
+ "_src": "run_episode_test_local_env",
1399
+ "_tgt": "debugzero_environment_debugzeroenvironment",
1400
+ "source": "run_episode_test_local_env",
1401
+ "target": "debugzero_environment_debugzeroenvironment"
1402
+ },
1403
+ {
1404
+ "relation": "calls",
1405
+ "confidence": "INFERRED",
1406
+ "confidence_score": 0.8,
1407
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py",
1408
+ "source_location": "L10",
1409
+ "weight": 1.0,
1410
+ "_src": "run_episode_test_local_env",
1411
+ "_tgt": "debugzero_environment_debugzeroenvironment_reset",
1412
+ "source": "run_episode_test_local_env",
1413
+ "target": "debugzero_environment_debugzeroenvironment_reset"
1414
+ },
1415
+ {
1416
+ "relation": "calls",
1417
+ "confidence": "INFERRED",
1418
+ "confidence_score": 0.8,
1419
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\run_episode.py",
1420
+ "source_location": "L16",
1421
+ "weight": 1.0,
1422
+ "_src": "run_episode_test_local_env",
1423
+ "_tgt": "debugzero_environment_debugzeroenvironment_step",
1424
+ "source": "run_episode_test_local_env",
1425
+ "target": "debugzero_environment_debugzeroenvironment_step"
1426
+ },
1427
+ {
1428
+ "relation": "contains",
1429
+ "confidence": "EXTRACTED",
1430
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py",
1431
+ "source_location": "L5",
1432
+ "weight": 1.0,
1433
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py",
1434
+ "_tgt": "plausibility_eval_evaluate_navidadkhah_plausibility",
1435
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_plausibility_eval_py",
1436
+ "target": "plausibility_eval_evaluate_navidadkhah_plausibility",
1437
+ "confidence_score": 1.0
1438
+ },
1439
+ {
1440
+ "relation": "rationale_for",
1441
+ "confidence": "EXTRACTED",
1442
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py",
1443
+ "source_location": "L6",
1444
+ "weight": 1.0,
1445
+ "_src": "plausibility_eval_rationale_6",
1446
+ "_tgt": "plausibility_eval_evaluate_navidadkhah_plausibility",
1447
+ "source": "plausibility_eval_evaluate_navidadkhah_plausibility",
1448
+ "target": "plausibility_eval_rationale_6",
1449
+ "confidence_score": 1.0
1450
+ },
1451
+ {
1452
+ "relation": "calls",
1453
+ "confidence": "INFERRED",
1454
+ "confidence_score": 0.8,
1455
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\plausibility_eval.py",
1456
+ "source_location": "L17",
1457
+ "weight": 1.0,
1458
+ "_src": "plausibility_eval_evaluate_navidadkhah_plausibility",
1459
+ "_tgt": "plausibility_compute_ast_distance",
1460
+ "source": "plausibility_eval_evaluate_navidadkhah_plausibility",
1461
+ "target": "plausibility_compute_ast_distance"
1462
+ },
1463
+ {
1464
+ "relation": "contains",
1465
+ "confidence": "EXTRACTED",
1466
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1467
+ "source_location": "L10",
1468
+ "weight": 1.0,
1469
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1470
+ "_tgt": "test_bug_injector_test_missing_base_case",
1471
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1472
+ "target": "test_bug_injector_test_missing_base_case",
1473
+ "confidence_score": 1.0
1474
+ },
1475
+ {
1476
+ "relation": "contains",
1477
+ "confidence": "EXTRACTED",
1478
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1479
+ "source_location": "L17",
1480
+ "weight": 1.0,
1481
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1482
+ "_tgt": "test_bug_injector_test_off_by_one",
1483
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1484
+ "target": "test_bug_injector_test_off_by_one",
1485
+ "confidence_score": 1.0
1486
+ },
1487
+ {
1488
+ "relation": "contains",
1489
+ "confidence": "EXTRACTED",
1490
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1491
+ "source_location": "L25",
1492
+ "weight": 1.0,
1493
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1494
+ "_tgt": "test_bug_injector_test_loop_boundary_shift",
1495
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1496
+ "target": "test_bug_injector_test_loop_boundary_shift",
1497
+ "confidence_score": 1.0
1498
+ },
1499
+ {
1500
+ "relation": "contains",
1501
+ "confidence": "EXTRACTED",
1502
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1503
+ "source_location": "L32",
1504
+ "weight": 1.0,
1505
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1506
+ "_tgt": "test_bug_injector_test_wrong_builtin",
1507
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1508
+ "target": "test_bug_injector_test_wrong_builtin",
1509
+ "confidence_score": 1.0
1510
+ },
1511
+ {
1512
+ "relation": "contains",
1513
+ "confidence": "EXTRACTED",
1514
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1515
+ "source_location": "L38",
1516
+ "weight": 1.0,
1517
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1518
+ "_tgt": "test_bug_injector_test_condition_negation",
1519
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1520
+ "target": "test_bug_injector_test_condition_negation",
1521
+ "confidence_score": 1.0
1522
+ },
1523
+ {
1524
+ "relation": "contains",
1525
+ "confidence": "EXTRACTED",
1526
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1527
+ "source_location": "L44",
1528
+ "weight": 1.0,
1529
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1530
+ "_tgt": "test_bug_injector_test_safety_check_blocks",
1531
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_bug_injector_py",
1532
+ "target": "test_bug_injector_test_safety_check_blocks",
1533
+ "confidence_score": 1.0
1534
+ },
1535
+ {
1536
+ "relation": "calls",
1537
+ "confidence": "INFERRED",
1538
+ "confidence_score": 0.8,
1539
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1540
+ "source_location": "L11",
1541
+ "weight": 1.0,
1542
+ "_src": "test_bug_injector_test_missing_base_case",
1543
+ "_tgt": "bug_injector_inject_bug",
1544
+ "source": "test_bug_injector_test_missing_base_case",
1545
+ "target": "bug_injector_inject_bug"
1546
+ },
1547
+ {
1548
+ "relation": "calls",
1549
+ "confidence": "INFERRED",
1550
+ "confidence_score": 0.8,
1551
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1552
+ "source_location": "L19",
1553
+ "weight": 1.0,
1554
+ "_src": "test_bug_injector_test_off_by_one",
1555
+ "_tgt": "bug_injector_inject_bug",
1556
+ "source": "test_bug_injector_test_off_by_one",
1557
+ "target": "bug_injector_inject_bug"
1558
+ },
1559
+ {
1560
+ "relation": "calls",
1561
+ "confidence": "INFERRED",
1562
+ "confidence_score": 0.8,
1563
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1564
+ "source_location": "L26",
1565
+ "weight": 1.0,
1566
+ "_src": "test_bug_injector_test_loop_boundary_shift",
1567
+ "_tgt": "bug_injector_inject_bug",
1568
+ "source": "test_bug_injector_test_loop_boundary_shift",
1569
+ "target": "bug_injector_inject_bug"
1570
+ },
1571
+ {
1572
+ "relation": "calls",
1573
+ "confidence": "INFERRED",
1574
+ "confidence_score": 0.8,
1575
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1576
+ "source_location": "L33",
1577
+ "weight": 1.0,
1578
+ "_src": "test_bug_injector_test_wrong_builtin",
1579
+ "_tgt": "bug_injector_inject_bug",
1580
+ "source": "test_bug_injector_test_wrong_builtin",
1581
+ "target": "bug_injector_inject_bug"
1582
+ },
1583
+ {
1584
+ "relation": "calls",
1585
+ "confidence": "INFERRED",
1586
+ "confidence_score": 0.8,
1587
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1588
+ "source_location": "L40",
1589
+ "weight": 1.0,
1590
+ "_src": "test_bug_injector_test_condition_negation",
1591
+ "_tgt": "bug_injector_inject_bug",
1592
+ "source": "test_bug_injector_test_condition_negation",
1593
+ "target": "bug_injector_inject_bug"
1594
+ },
1595
+ {
1596
+ "relation": "calls",
1597
+ "confidence": "INFERRED",
1598
+ "confidence_score": 0.8,
1599
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_bug_injector.py",
1600
+ "source_location": "L48",
1601
+ "weight": 1.0,
1602
+ "_src": "test_bug_injector_test_safety_check_blocks",
1603
+ "_tgt": "bug_injector_is_safe_injection",
1604
+ "source": "test_bug_injector_test_safety_check_blocks",
1605
+ "target": "bug_injector_is_safe_injection"
1606
+ },
1607
+ {
1608
+ "relation": "contains",
1609
+ "confidence": "EXTRACTED",
1610
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py",
1611
+ "source_location": "L4",
1612
+ "weight": 1.0,
1613
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py",
1614
+ "_tgt": "test_executor_test_executor_is_safe",
1615
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py",
1616
+ "target": "test_executor_test_executor_is_safe",
1617
+ "confidence_score": 1.0
1618
+ },
1619
+ {
1620
+ "relation": "contains",
1621
+ "confidence": "EXTRACTED",
1622
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py",
1623
+ "source_location": "L16",
1624
+ "weight": 1.0,
1625
+ "_src": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py",
1626
+ "_tgt": "test_executor_test_execute_code",
1627
+ "source": "c_users_astra_desktop_hackon_debugzero_eval_test_executor_py",
1628
+ "target": "test_executor_test_execute_code",
1629
+ "confidence_score": 1.0
1630
+ },
1631
+ {
1632
+ "relation": "calls",
1633
+ "confidence": "INFERRED",
1634
+ "confidence_score": 0.8,
1635
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py",
1636
+ "source_location": "L5",
1637
+ "weight": 1.0,
1638
+ "_src": "test_executor_test_executor_is_safe",
1639
+ "_tgt": "executor_is_safe",
1640
+ "source": "test_executor_test_executor_is_safe",
1641
+ "target": "executor_is_safe"
1642
+ },
1643
+ {
1644
+ "relation": "calls",
1645
+ "confidence": "INFERRED",
1646
+ "confidence_score": 0.8,
1647
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\eval\\test_executor.py",
1648
+ "source_location": "L19",
1649
+ "weight": 1.0,
1650
+ "_src": "test_executor_test_execute_code",
1651
+ "_tgt": "executor_execute_code",
1652
+ "source": "test_executor_test_execute_code",
1653
+ "target": "executor_execute_code"
1654
+ },
1655
+ {
1656
+ "relation": "imports_from",
1657
+ "confidence": "EXTRACTED",
1658
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
1659
+ "source_location": "L44",
1660
+ "weight": 1.0,
1661
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_app_py",
1662
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1663
+ "source": "c_users_astra_desktop_hackon_debugzero_server_app_py",
1664
+ "target": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1665
+ "confidence_score": 1.0
1666
+ },
1667
+ {
1668
+ "relation": "contains",
1669
+ "confidence": "EXTRACTED",
1670
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
1671
+ "source_location": "L60",
1672
+ "weight": 1.0,
1673
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_app_py",
1674
+ "_tgt": "app_main",
1675
+ "source": "c_users_astra_desktop_hackon_debugzero_server_app_py",
1676
+ "target": "app_main",
1677
+ "confidence_score": 1.0
1678
+ },
1679
+ {
1680
+ "relation": "rationale_for",
1681
+ "confidence": "EXTRACTED",
1682
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
1683
+ "source_location": "L61",
1684
+ "weight": 1.0,
1685
+ "_src": "app_rationale_61",
1686
+ "_tgt": "app_main",
1687
+ "source": "app_main",
1688
+ "target": "app_rationale_61",
1689
+ "confidence_score": 1.0
1690
+ },
1691
+ {
1692
+ "relation": "uses",
1693
+ "confidence": "INFERRED",
1694
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\app.py",
1695
+ "source_location": "L47",
1696
+ "weight": 0.8,
1697
+ "_src": "app_rationale_61",
1698
+ "_tgt": "debugzero_environment_debugzeroenvironment",
1699
+ "source": "app_rationale_61",
1700
+ "target": "debugzero_environment_debugzeroenvironment",
1701
+ "confidence_score": 0.5
1702
+ },
1703
+ {
1704
+ "relation": "contains",
1705
+ "confidence": "EXTRACTED",
1706
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1707
+ "source_location": "L13",
1708
+ "weight": 1.0,
1709
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1710
+ "_tgt": "bug_injector_is_safe_injection",
1711
+ "source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1712
+ "target": "bug_injector_is_safe_injection",
1713
+ "confidence_score": 1.0
1714
+ },
1715
+ {
1716
+ "relation": "contains",
1717
+ "confidence": "EXTRACTED",
1718
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1719
+ "source_location": "L19",
1720
+ "weight": 1.0,
1721
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1722
+ "_tgt": "bug_injector_buginjectorvisitor",
1723
+ "source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1724
+ "target": "bug_injector_buginjectorvisitor",
1725
+ "confidence_score": 1.0
1726
+ },
1727
+ {
1728
+ "relation": "contains",
1729
+ "confidence": "EXTRACTED",
1730
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1731
+ "source_location": "L159",
1732
+ "weight": 1.0,
1733
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1734
+ "_tgt": "bug_injector_inject_bug",
1735
+ "source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1736
+ "target": "bug_injector_inject_bug",
1737
+ "confidence_score": 1.0
1738
+ },
1739
+ {
1740
+ "relation": "imports_from",
1741
+ "confidence": "EXTRACTED",
1742
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1743
+ "source_location": "L23",
1744
+ "weight": 1.0,
1745
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1746
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1747
+ "source": "c_users_astra_desktop_hackon_debugzero_server_bug_injector_py",
1748
+ "target": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1749
+ "confidence_score": 1.0
1750
+ },
1751
+ {
1752
+ "relation": "calls",
1753
+ "confidence": "EXTRACTED",
1754
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1755
+ "source_location": "L183",
1756
+ "weight": 1.0,
1757
+ "_src": "bug_injector_inject_bug",
1758
+ "_tgt": "bug_injector_is_safe_injection",
1759
+ "source": "bug_injector_is_safe_injection",
1760
+ "target": "bug_injector_inject_bug",
1761
+ "confidence_score": 1.0
1762
+ },
1763
+ {
1764
+ "relation": "method",
1765
+ "confidence": "EXTRACTED",
1766
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1767
+ "source_location": "L20",
1768
+ "weight": 1.0,
1769
+ "_src": "bug_injector_buginjectorvisitor",
1770
+ "_tgt": "bug_injector_buginjectorvisitor_init",
1771
+ "source": "bug_injector_buginjectorvisitor",
1772
+ "target": "bug_injector_buginjectorvisitor_init",
1773
+ "confidence_score": 1.0
1774
+ },
1775
+ {
1776
+ "relation": "method",
1777
+ "confidence": "EXTRACTED",
1778
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1779
+ "source_location": "L25",
1780
+ "weight": 1.0,
1781
+ "_src": "bug_injector_buginjectorvisitor",
1782
+ "_tgt": "bug_injector_buginjectorvisitor_visit_constant",
1783
+ "source": "bug_injector_buginjectorvisitor",
1784
+ "target": "bug_injector_buginjectorvisitor_visit_constant",
1785
+ "confidence_score": 1.0
1786
+ },
1787
+ {
1788
+ "relation": "method",
1789
+ "confidence": "EXTRACTED",
1790
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1791
+ "source_location": "L38",
1792
+ "weight": 1.0,
1793
+ "_src": "bug_injector_buginjectorvisitor",
1794
+ "_tgt": "bug_injector_buginjectorvisitor_visit_compare",
1795
+ "source": "bug_injector_buginjectorvisitor",
1796
+ "target": "bug_injector_buginjectorvisitor_visit_compare",
1797
+ "confidence_score": 1.0
1798
+ },
1799
+ {
1800
+ "relation": "method",
1801
+ "confidence": "EXTRACTED",
1802
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1803
+ "source_location": "L64",
1804
+ "weight": 1.0,
1805
+ "_src": "bug_injector_buginjectorvisitor",
1806
+ "_tgt": "bug_injector_buginjectorvisitor_visit_binop",
1807
+ "source": "bug_injector_buginjectorvisitor",
1808
+ "target": "bug_injector_buginjectorvisitor_visit_binop",
1809
+ "confidence_score": 1.0
1810
+ },
1811
+ {
1812
+ "relation": "method",
1813
+ "confidence": "EXTRACTED",
1814
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1815
+ "source_location": "L84",
1816
+ "weight": 1.0,
1817
+ "_src": "bug_injector_buginjectorvisitor",
1818
+ "_tgt": "bug_injector_buginjectorvisitor_visit_call",
1819
+ "source": "bug_injector_buginjectorvisitor",
1820
+ "target": "bug_injector_buginjectorvisitor_visit_call",
1821
+ "confidence_score": 1.0
1822
+ },
1823
+ {
1824
+ "relation": "method",
1825
+ "confidence": "EXTRACTED",
1826
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1827
+ "source_location": "L108",
1828
+ "weight": 1.0,
1829
+ "_src": "bug_injector_buginjectorvisitor",
1830
+ "_tgt": "bug_injector_buginjectorvisitor_visit_if",
1831
+ "source": "bug_injector_buginjectorvisitor",
1832
+ "target": "bug_injector_buginjectorvisitor_visit_if",
1833
+ "confidence_score": 1.0
1834
+ },
1835
+ {
1836
+ "relation": "method",
1837
+ "confidence": "EXTRACTED",
1838
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1839
+ "source_location": "L127",
1840
+ "weight": 1.0,
1841
+ "_src": "bug_injector_buginjectorvisitor",
1842
+ "_tgt": "bug_injector_buginjectorvisitor_visit_slice",
1843
+ "source": "bug_injector_buginjectorvisitor",
1844
+ "target": "bug_injector_buginjectorvisitor_visit_slice",
1845
+ "confidence_score": 1.0
1846
+ },
1847
+ {
1848
+ "relation": "method",
1849
+ "confidence": "EXTRACTED",
1850
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1851
+ "source_location": "L142",
1852
+ "weight": 1.0,
1853
+ "_src": "bug_injector_buginjectorvisitor",
1854
+ "_tgt": "bug_injector_buginjectorvisitor_visit_name",
1855
+ "source": "bug_injector_buginjectorvisitor",
1856
+ "target": "bug_injector_buginjectorvisitor_visit_name",
1857
+ "confidence_score": 1.0
1858
+ },
1859
+ {
1860
+ "relation": "method",
1861
+ "confidence": "EXTRACTED",
1862
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1863
+ "source_location": "L146",
1864
+ "weight": 1.0,
1865
+ "_src": "bug_injector_buginjectorvisitor",
1866
+ "_tgt": "bug_injector_buginjectorvisitor_visit_assign",
1867
+ "source": "bug_injector_buginjectorvisitor",
1868
+ "target": "bug_injector_buginjectorvisitor_visit_assign",
1869
+ "confidence_score": 1.0
1870
+ },
1871
+ {
1872
+ "relation": "calls",
1873
+ "confidence": "EXTRACTED",
1874
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1875
+ "source_location": "L172",
1876
+ "weight": 1.0,
1877
+ "_src": "bug_injector_inject_bug",
1878
+ "_tgt": "bug_injector_buginjectorvisitor",
1879
+ "source": "bug_injector_buginjectorvisitor",
1880
+ "target": "bug_injector_inject_bug",
1881
+ "confidence_score": 1.0
1882
+ },
1883
+ {
1884
+ "relation": "rationale_for",
1885
+ "confidence": "EXTRACTED",
1886
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\bug_injector.py",
1887
+ "source_location": "L160",
1888
+ "weight": 1.0,
1889
+ "_src": "bug_injector_rationale_160",
1890
+ "_tgt": "bug_injector_inject_bug",
1891
+ "source": "bug_injector_inject_bug",
1892
+ "target": "bug_injector_rationale_160",
1893
+ "confidence_score": 1.0
1894
+ },
1895
+ {
1896
+ "relation": "imports_from",
1897
+ "confidence": "EXTRACTED",
1898
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1899
+ "source_location": "L22",
1900
+ "weight": 1.0,
1901
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1902
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
1903
+ "source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1904
+ "target": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
1905
+ "confidence_score": 1.0
1906
+ },
1907
+ {
1908
+ "relation": "imports_from",
1909
+ "confidence": "EXTRACTED",
1910
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1911
+ "source_location": "L24",
1912
+ "weight": 1.0,
1913
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1914
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py",
1915
+ "source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1916
+ "target": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py",
1917
+ "confidence_score": 1.0
1918
+ },
1919
+ {
1920
+ "relation": "contains",
1921
+ "confidence": "EXTRACTED",
1922
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1923
+ "source_location": "L38",
1924
+ "weight": 1.0,
1925
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1926
+ "_tgt": "debugzero_environment_debugzeroenvironment",
1927
+ "source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1928
+ "target": "debugzero_environment_debugzeroenvironment",
1929
+ "confidence_score": 1.0
1930
+ },
1931
+ {
1932
+ "relation": "contains",
1933
+ "confidence": "EXTRACTED",
1934
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1935
+ "source_location": "L127",
1936
+ "weight": 1.0,
1937
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1938
+ "_tgt": "debugzero_environment_state",
1939
+ "source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1940
+ "target": "debugzero_environment_state",
1941
+ "confidence_score": 1.0
1942
+ },
1943
+ {
1944
+ "relation": "imports_from",
1945
+ "confidence": "EXTRACTED",
1946
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\__init__.py",
1947
+ "source_location": "L9",
1948
+ "weight": 1.0,
1949
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_init_py",
1950
+ "_tgt": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1951
+ "source": "c_users_astra_desktop_hackon_debugzero_server_debugzero_environment_py",
1952
+ "target": "c_users_astra_desktop_hackon_debugzero_server_init_py",
1953
+ "confidence_score": 1.0
1954
+ },
1955
+ {
1956
+ "relation": "inherits",
1957
+ "confidence": "EXTRACTED",
1958
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1959
+ "source_location": "L38",
1960
+ "weight": 1.0,
1961
+ "_src": "debugzero_environment_debugzeroenvironment",
1962
+ "_tgt": "environment",
1963
+ "source": "debugzero_environment_debugzeroenvironment",
1964
+ "target": "environment",
1965
+ "confidence_score": 1.0
1966
+ },
1967
+ {
1968
+ "relation": "method",
1969
+ "confidence": "EXTRACTED",
1970
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1971
+ "source_location": "L45",
1972
+ "weight": 1.0,
1973
+ "_src": "debugzero_environment_debugzeroenvironment",
1974
+ "_tgt": "debugzero_environment_debugzeroenvironment_init",
1975
+ "source": "debugzero_environment_debugzeroenvironment",
1976
+ "target": "debugzero_environment_debugzeroenvironment_init",
1977
+ "confidence_score": 1.0
1978
+ },
1979
+ {
1980
+ "relation": "method",
1981
+ "confidence": "EXTRACTED",
1982
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1983
+ "source_location": "L56",
1984
+ "weight": 1.0,
1985
+ "_src": "debugzero_environment_debugzeroenvironment",
1986
+ "_tgt": "debugzero_environment_debugzeroenvironment_reset",
1987
+ "source": "debugzero_environment_debugzeroenvironment",
1988
+ "target": "debugzero_environment_debugzeroenvironment_reset",
1989
+ "confidence_score": 1.0
1990
+ },
1991
+ {
1992
+ "relation": "method",
1993
+ "confidence": "EXTRACTED",
1994
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
1995
+ "source_location": "L77",
1996
+ "weight": 1.0,
1997
+ "_src": "debugzero_environment_debugzeroenvironment",
1998
+ "_tgt": "debugzero_environment_debugzeroenvironment_step",
1999
+ "source": "debugzero_environment_debugzeroenvironment",
2000
+ "target": "debugzero_environment_debugzeroenvironment_step",
2001
+ "confidence_score": 1.0
2002
+ },
2003
+ {
2004
+ "relation": "rationale_for",
2005
+ "confidence": "EXTRACTED",
2006
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
2007
+ "source_location": "L39",
2008
+ "weight": 1.0,
2009
+ "_src": "debugzero_environment_rationale_39",
2010
+ "_tgt": "debugzero_environment_debugzeroenvironment",
2011
+ "source": "debugzero_environment_debugzeroenvironment",
2012
+ "target": "debugzero_environment_rationale_39",
2013
+ "confidence_score": 1.0
2014
+ },
2015
+ {
2016
+ "relation": "uses",
2017
+ "confidence": "INFERRED",
2018
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
2019
+ "source_location": "L26",
2020
+ "weight": 0.8,
2021
+ "_src": "debugzero_environment_debugzeroenvironment",
2022
+ "_tgt": "executor_executionresult",
2023
+ "source": "debugzero_environment_debugzeroenvironment",
2024
+ "target": "executor_executionresult",
2025
+ "confidence_score": 0.5
2026
+ },
2027
+ {
2028
+ "relation": "calls",
2029
+ "confidence": "INFERRED",
2030
+ "confidence_score": 0.8,
2031
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
2032
+ "source_location": "L89",
2033
+ "weight": 1.0,
2034
+ "_src": "debugzero_environment_debugzeroenvironment_step",
2035
+ "_tgt": "executor_execute_code",
2036
+ "source": "debugzero_environment_debugzeroenvironment_step",
2037
+ "target": "executor_execute_code"
2038
+ },
2039
+ {
2040
+ "relation": "uses",
2041
+ "confidence": "INFERRED",
2042
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\debugZero_environment.py",
2043
+ "source_location": "L26",
2044
+ "weight": 0.8,
2045
+ "_src": "debugzero_environment_rationale_39",
2046
+ "_tgt": "executor_executionresult",
2047
+ "source": "debugzero_environment_rationale_39",
2048
+ "target": "executor_executionresult",
2049
+ "confidence_score": 0.5
2050
+ },
2051
+ {
2052
+ "relation": "contains",
2053
+ "confidence": "EXTRACTED",
2054
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2055
+ "source_location": "L9",
2056
+ "weight": 1.0,
2057
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
2058
+ "_tgt": "executor_is_safe",
2059
+ "source": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
2060
+ "target": "executor_is_safe",
2061
+ "confidence_score": 1.0
2062
+ },
2063
+ {
2064
+ "relation": "contains",
2065
+ "confidence": "EXTRACTED",
2066
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2067
+ "source_location": "L44",
2068
+ "weight": 1.0,
2069
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
2070
+ "_tgt": "executor_executionresult",
2071
+ "source": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
2072
+ "target": "executor_executionresult",
2073
+ "confidence_score": 1.0
2074
+ },
2075
+ {
2076
+ "relation": "contains",
2077
+ "confidence": "EXTRACTED",
2078
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2079
+ "source_location": "L51",
2080
+ "weight": 1.0,
2081
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
2082
+ "_tgt": "executor_execute_code",
2083
+ "source": "c_users_astra_desktop_hackon_debugzero_server_executor_py",
2084
+ "target": "executor_execute_code",
2085
+ "confidence_score": 1.0
2086
+ },
2087
+ {
2088
+ "relation": "calls",
2089
+ "confidence": "EXTRACTED",
2090
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2091
+ "source_location": "L58",
2092
+ "weight": 1.0,
2093
+ "_src": "executor_execute_code",
2094
+ "_tgt": "executor_is_safe",
2095
+ "source": "executor_is_safe",
2096
+ "target": "executor_execute_code",
2097
+ "confidence_score": 1.0
2098
+ },
2099
+ {
2100
+ "relation": "rationale_for",
2101
+ "confidence": "EXTRACTED",
2102
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2103
+ "source_location": "L10",
2104
+ "weight": 1.0,
2105
+ "_src": "executor_rationale_10",
2106
+ "_tgt": "executor_is_safe",
2107
+ "source": "executor_is_safe",
2108
+ "target": "executor_rationale_10",
2109
+ "confidence_score": 1.0
2110
+ },
2111
+ {
2112
+ "relation": "method",
2113
+ "confidence": "EXTRACTED",
2114
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2115
+ "source_location": "L45",
2116
+ "weight": 1.0,
2117
+ "_src": "executor_executionresult",
2118
+ "_tgt": "executor_executionresult_init",
2119
+ "source": "executor_executionresult",
2120
+ "target": "executor_executionresult_init",
2121
+ "confidence_score": 1.0
2122
+ },
2123
+ {
2124
+ "relation": "calls",
2125
+ "confidence": "EXTRACTED",
2126
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2127
+ "source_location": "L62",
2128
+ "weight": 1.0,
2129
+ "_src": "executor_execute_code",
2130
+ "_tgt": "executor_executionresult",
2131
+ "source": "executor_executionresult",
2132
+ "target": "executor_execute_code",
2133
+ "confidence_score": 1.0
2134
+ },
2135
+ {
2136
+ "relation": "rationale_for",
2137
+ "confidence": "EXTRACTED",
2138
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\executor.py",
2139
+ "source_location": "L52",
2140
+ "weight": 1.0,
2141
+ "_src": "executor_rationale_52",
2142
+ "_tgt": "executor_execute_code",
2143
+ "source": "executor_execute_code",
2144
+ "target": "executor_rationale_52",
2145
+ "confidence_score": 1.0
2146
+ },
2147
+ {
2148
+ "relation": "contains",
2149
+ "confidence": "EXTRACTED",
2150
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py",
2151
+ "source_location": "L4",
2152
+ "weight": 1.0,
2153
+ "_src": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py",
2154
+ "_tgt": "plausibility_compute_ast_distance",
2155
+ "source": "c_users_astra_desktop_hackon_debugzero_server_plausibility_py",
2156
+ "target": "plausibility_compute_ast_distance",
2157
+ "confidence_score": 1.0
2158
+ },
2159
+ {
2160
+ "relation": "rationale_for",
2161
+ "confidence": "EXTRACTED",
2162
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\server\\plausibility.py",
2163
+ "source_location": "L5",
2164
+ "weight": 1.0,
2165
+ "_src": "plausibility_rationale_5",
2166
+ "_tgt": "plausibility_compute_ast_distance",
2167
+ "source": "plausibility_compute_ast_distance",
2168
+ "target": "plausibility_rationale_5",
2169
+ "confidence_score": 1.0
2170
+ },
2171
+ {
2172
+ "relation": "contains",
2173
+ "confidence": "EXTRACTED",
2174
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py",
2175
+ "source_location": "L23",
2176
+ "weight": 1.0,
2177
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py",
2178
+ "_tgt": "dual_role_sampler_sample_proposer_prompt",
2179
+ "source": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py",
2180
+ "target": "dual_role_sampler_sample_proposer_prompt",
2181
+ "confidence_score": 1.0
2182
+ },
2183
+ {
2184
+ "relation": "contains",
2185
+ "confidence": "EXTRACTED",
2186
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\dual_role_sampler.py",
2187
+ "source_location": "L26",
2188
+ "weight": 1.0,
2189
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py",
2190
+ "_tgt": "dual_role_sampler_sample_solver_prompt",
2191
+ "source": "c_users_astra_desktop_hackon_debugzero_training_dual_role_sampler_py",
2192
+ "target": "dual_role_sampler_sample_solver_prompt",
2193
+ "confidence_score": 1.0
2194
+ },
2195
+ {
2196
+ "relation": "contains",
2197
+ "confidence": "EXTRACTED",
2198
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
2199
+ "source_location": "L25",
2200
+ "weight": 1.0,
2201
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py",
2202
+ "_tgt": "grpo_train_reward_fn",
2203
+ "source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py",
2204
+ "target": "grpo_train_reward_fn",
2205
+ "confidence_score": 1.0
2206
+ },
2207
+ {
2208
+ "relation": "contains",
2209
+ "confidence": "EXTRACTED",
2210
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
2211
+ "source_location": "L44",
2212
+ "weight": 1.0,
2213
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py",
2214
+ "_tgt": "grpo_train_create_dataset",
2215
+ "source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py",
2216
+ "target": "grpo_train_create_dataset",
2217
+ "confidence_score": 1.0
2218
+ },
2219
+ {
2220
+ "relation": "contains",
2221
+ "confidence": "EXTRACTED",
2222
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
2223
+ "source_location": "L57",
2224
+ "weight": 1.0,
2225
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py",
2226
+ "_tgt": "grpo_train_main",
2227
+ "source": "c_users_astra_desktop_hackon_debugzero_training_grpo_train_py",
2228
+ "target": "grpo_train_main",
2229
+ "confidence_score": 1.0
2230
+ },
2231
+ {
2232
+ "relation": "calls",
2233
+ "confidence": "INFERRED",
2234
+ "confidence_score": 0.8,
2235
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
2236
+ "source_location": "L34",
2237
+ "weight": 1.0,
2238
+ "_src": "grpo_train_reward_fn",
2239
+ "_tgt": "rewards_compute_proposer_reward",
2240
+ "source": "grpo_train_reward_fn",
2241
+ "target": "rewards_compute_proposer_reward"
2242
+ },
2243
+ {
2244
+ "relation": "calls",
2245
+ "confidence": "INFERRED",
2246
+ "confidence_score": 0.8,
2247
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
2248
+ "source_location": "L37",
2249
+ "weight": 1.0,
2250
+ "_src": "grpo_train_reward_fn",
2251
+ "_tgt": "rewards_compute_solver_reward",
2252
+ "source": "grpo_train_reward_fn",
2253
+ "target": "rewards_compute_solver_reward"
2254
+ },
2255
+ {
2256
+ "relation": "calls",
2257
+ "confidence": "EXTRACTED",
2258
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\grpo_train.py",
2259
+ "source_location": "L63",
2260
+ "weight": 1.0,
2261
+ "_src": "grpo_train_main",
2262
+ "_tgt": "grpo_train_create_dataset",
2263
+ "source": "grpo_train_create_dataset",
2264
+ "target": "grpo_train_main",
2265
+ "confidence_score": 1.0
2266
+ },
2267
+ {
2268
+ "relation": "contains",
2269
+ "confidence": "EXTRACTED",
2270
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
2271
+ "source_location": "L7",
2272
+ "weight": 1.0,
2273
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2274
+ "_tgt": "rewards_get_solve_rate",
2275
+ "source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2276
+ "target": "rewards_get_solve_rate",
2277
+ "confidence_score": 1.0
2278
+ },
2279
+ {
2280
+ "relation": "contains",
2281
+ "confidence": "EXTRACTED",
2282
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
2283
+ "source_location": "L13",
2284
+ "weight": 1.0,
2285
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2286
+ "_tgt": "rewards_record_solve_result",
2287
+ "source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2288
+ "target": "rewards_record_solve_result",
2289
+ "confidence_score": 1.0
2290
+ },
2291
+ {
2292
+ "relation": "contains",
2293
+ "confidence": "EXTRACTED",
2294
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
2295
+ "source_location": "L18",
2296
+ "weight": 1.0,
2297
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2298
+ "_tgt": "rewards_compute_proposer_reward",
2299
+ "source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2300
+ "target": "rewards_compute_proposer_reward",
2301
+ "confidence_score": 1.0
2302
+ },
2303
+ {
2304
+ "relation": "contains",
2305
+ "confidence": "EXTRACTED",
2306
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
2307
+ "source_location": "L37",
2308
+ "weight": 1.0,
2309
+ "_src": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2310
+ "_tgt": "rewards_compute_solver_reward",
2311
+ "source": "c_users_astra_desktop_hackon_debugzero_training_rewards_py",
2312
+ "target": "rewards_compute_solver_reward",
2313
+ "confidence_score": 1.0
2314
+ },
2315
+ {
2316
+ "relation": "calls",
2317
+ "confidence": "EXTRACTED",
2318
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
2319
+ "source_location": "L30",
2320
+ "weight": 1.0,
2321
+ "_src": "rewards_compute_proposer_reward",
2322
+ "_tgt": "rewards_get_solve_rate",
2323
+ "source": "rewards_get_solve_rate",
2324
+ "target": "rewards_compute_proposer_reward",
2325
+ "confidence_score": 1.0
2326
+ },
2327
+ {
2328
+ "relation": "calls",
2329
+ "confidence": "EXTRACTED",
2330
+ "source_file": "C:\\Users\\astra\\Desktop\\hackon\\debugZero\\training\\rewards.py",
2331
+ "source_location": "L41",
2332
+ "weight": 1.0,
2333
+ "_src": "rewards_compute_solver_reward",
2334
+ "_tgt": "rewards_record_solve_result",
2335
+ "source": "rewards_record_solve_result",
2336
+ "target": "rewards_compute_solver_reward",
2337
+ "confidence_score": 1.0
2338
+ }
2339
+ ],
2340
+ "hyperedges": []
2341
+ }
models.py ADDED
@@ -0,0 +1,39 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ """
8
+ Data models for the DebugZero Environment.
9
+
10
+ The debugZero environment implements the Absolute Zero paradigm for debugging self-play.
11
+ """
12
+
13
+ from openenv.core.env_server.types import Action, Observation, State
14
+ from pydantic import Field
15
+ from typing import Optional
16
+
17
+
18
+ class DebugzeroAction(Action):
19
+ """Action for the DebugZero environment representing the Proposer or Solver inputs."""
20
+
21
+ role: str = Field(..., description="Role taking action: 'proposer' or 'solver'")
22
+ code: str = Field(..., description="Code injected (by proposer) or fixed (by solver)")
23
+
24
+
25
+ class DebugzeroObservation(Observation):
26
+ """Observation from the DebugZero environment following sandbox execution."""
27
+
28
+ role_next: str = Field(default="proposer", description="The role supposed to play next")
29
+ current_code: str = Field(default="", description="The current state of the python code")
30
+ execution_result: str = Field(default="", description="Result of evaluating tests in the sandbox")
31
+ tests_passed: bool = Field(default=False, description="Whether the tests passed")
32
+ syntax_error: bool = Field(default=False, description="Whether the code had a parse/syntax error")
33
+
34
+ class DebugzeroState(State):
35
+ """State for the DebugZero environment, extending default state with seed context."""
36
+ seed_id: str = Field(default="", description="ID of the HumanEval function")
37
+ original_code: str = Field(default="", description="Original clean seed code")
38
+ current_code: str = Field(default="", description="Current code after Proposer/Solver turn")
39
+ role_turn: str = Field(default="proposer", description="Current turn's role")
notebooks/train_colab.ipynb ADDED
@@ -0,0 +1,511 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "cells": [
3
+ {
4
+ "cell_type": "markdown",
5
+ "id": "title",
6
+ "metadata": {},
7
+ "source": [
8
+ "# DebugZero OpenEnv GRPO Training Notebook\n",
9
+ "\n",
10
+ "This Colab notebook installs DebugZero from GitHub, starts the OpenEnv server, connects through the packaged OpenEnv client, and trains a small code model with TRL GRPO/Unsloth. The reward function calls `env.reset()` and `env.step()` on the live environment for every completion, so training is tied to the actual environment instead of a static dataset or local file import."
11
+ ]
12
+ },
13
+ {
14
+ "cell_type": "markdown",
15
+ "id": "checklist",
16
+ "metadata": {},
17
+ "source": [
18
+ "## What this notebook proves\n",
19
+ "\n",
20
+ "- Installs the submitted environment directly from GitHub.\n",
21
+ "- Uses the standard OpenEnv client/server boundary.\n",
22
+ "- Runs a smoke test against the live environment.\n",
23
+ "- Trains with GRPO using environment rewards from real rollouts.\n",
24
+ "- Saves loss/reward plots that can be committed into the README."
25
+ ]
26
+ },
27
+ {
28
+ "cell_type": "code",
29
+ "execution_count": null,
30
+ "id": "config",
31
+ "metadata": {},
32
+ "outputs": [],
33
+ "source": [
34
+ "# Change these only if your final submission branch or Space URL differs.\n",
35
+ "REPO_URL = \"https://github.com/Ray-0906/DebugZero.git\"\n",
36
+ "BRANCH = \"main\"\n",
37
+ "\n",
38
+ "# Leave blank to launch the environment locally from the GitHub package.\n",
39
+ "# Set this to your Hugging Face Space URL to train against the deployed Space instead.\n",
40
+ "REMOTE_OPENENV_URL = \"\"\n",
41
+ "\n",
42
+ "MODEL_ID = \"unsloth/Qwen2.5-Coder-3B-Instruct\"\n",
43
+ "OUTPUT_DIR = \"debugzero-openenv-grpo\"\n",
44
+ "MAX_STEPS = 30\n",
45
+ "NUM_GENERATIONS = 2\n",
46
+ "RUN_TRAINING = True"
47
+ ]
48
+ },
49
+ {
50
+ "cell_type": "code",
51
+ "execution_count": null,
52
+ "id": "install",
53
+ "metadata": {},
54
+ "outputs": [],
55
+ "source": [
56
+ "import subprocess\n",
57
+ "import sys\n",
58
+ "\n",
59
+ "def pip_install(*packages):\n",
60
+ " subprocess.check_call([sys.executable, \"-m\", \"pip\", \"install\", \"-q\", *packages])\n",
61
+ "\n",
62
+ "# Install runtime/training dependencies explicitly, then install the environment package\n",
63
+ "# from GitHub without letting the repo's experimental training pins override Colab.\n",
64
+ "pip_install(\n",
65
+ " \"openenv-core[core]>=0.2.1\",\n",
66
+ " \"datasets\",\n",
67
+ " \"trl\",\n",
68
+ " \"transformers\",\n",
69
+ " \"accelerate\",\n",
70
+ " \"peft\",\n",
71
+ " \"bitsandbytes\",\n",
72
+ " \"matplotlib\",\n",
73
+ " \"pandas\",\n",
74
+ " \"thefuzz[speedup]\",\n",
75
+ " \"uvicorn[standard]\",\n",
76
+ " \"requests\",\n",
77
+ ")\n",
78
+ "\n",
79
+ "try:\n",
80
+ " pip_install(\"unsloth\")\n",
81
+ "except Exception as exc:\n",
82
+ " print(f\"Unsloth install failed, continuing with native TRL fallback: {exc}\")\n",
83
+ "\n",
84
+ "pip_install(\"--no-deps\", f\"git+{REPO_URL}@{BRANCH}\")"
85
+ ]
86
+ },
87
+ {
88
+ "cell_type": "code",
89
+ "execution_count": null,
90
+ "id": "server",
91
+ "metadata": {},
92
+ "outputs": [],
93
+ "source": [
94
+ "import atexit\n",
95
+ "import os\n",
96
+ "import subprocess\n",
97
+ "import sys\n",
98
+ "import time\n",
99
+ "\n",
100
+ "import requests\n",
101
+ "\n",
102
+ "if REMOTE_OPENENV_URL:\n",
103
+ " BASE_URL = REMOTE_OPENENV_URL.rstrip(\"/\")\n",
104
+ " server_process = None\n",
105
+ "else:\n",
106
+ " BASE_URL = \"http://127.0.0.1:8000\"\n",
107
+ " server_process = subprocess.Popen(\n",
108
+ " [sys.executable, \"-m\", \"debugZero.server.app\", \"--host\", \"127.0.0.1\", \"--port\", \"8000\"],\n",
109
+ " stdout=subprocess.PIPE,\n",
110
+ " stderr=subprocess.STDOUT,\n",
111
+ " text=True,\n",
112
+ " )\n",
113
+ " atexit.register(lambda: server_process and server_process.poll() is None and server_process.terminate())\n",
114
+ "\n",
115
+ "def wait_for_openenv(base_url, timeout_s=90):\n",
116
+ " deadline = time.time() + timeout_s\n",
117
+ " last_error = None\n",
118
+ " while time.time() < deadline:\n",
119
+ " try:\n",
120
+ " response = requests.get(f\"{base_url}/schema\", timeout=5)\n",
121
+ " if response.status_code == 200:\n",
122
+ " return response.json()\n",
123
+ " except Exception as exc:\n",
124
+ " last_error = exc\n",
125
+ " time.sleep(2)\n",
126
+ " if server_process and server_process.stdout:\n",
127
+ " print(server_process.stdout.read())\n",
128
+ " raise RuntimeError(f\"OpenEnv server did not become ready: {last_error}\")\n",
129
+ "\n",
130
+ "schema = wait_for_openenv(BASE_URL)\n",
131
+ "print(\"Connected to OpenEnv:\", BASE_URL)\n",
132
+ "schema"
133
+ ]
134
+ },
135
+ {
136
+ "cell_type": "code",
137
+ "execution_count": null,
138
+ "id": "client-smoke-test",
139
+ "metadata": {},
140
+ "outputs": [],
141
+ "source": [
142
+ "from debugZero.client import DebugzeroEnv\n",
143
+ "from debugZero.models import DebugzeroAction\n",
144
+ "\n",
145
+ "def observation(result):\n",
146
+ " return getattr(result, \"observation\", result)\n",
147
+ "\n",
148
+ "with DebugzeroEnv(base_url=BASE_URL) as env:\n",
149
+ " reset_obs = observation(env.reset())\n",
150
+ " print(\"Initial role:\", reset_obs.role_next)\n",
151
+ " print(reset_obs.current_code[:300])\n",
152
+ "\n",
153
+ " buggy_code = reset_obs.current_code.replace(\"distance < threshold\", \"distance <= threshold\")\n",
154
+ " prop_obs = observation(env.step(DebugzeroAction(role=\"proposer\", code=buggy_code)))\n",
155
+ " print(\"After proposer:\", {\"role_next\": prop_obs.role_next, \"tests_passed\": prop_obs.tests_passed, \"syntax_error\": prop_obs.syntax_error})\n",
156
+ "\n",
157
+ " solve_obs = observation(env.step(DebugzeroAction(role=\"solver\", code=reset_obs.current_code)))\n",
158
+ " print(\"After solver:\", {\"role_next\": solve_obs.role_next, \"tests_passed\": solve_obs.tests_passed, \"syntax_error\": solve_obs.syntax_error})"
159
+ ]
160
+ },
161
+ {
162
+ "cell_type": "code",
163
+ "execution_count": null,
164
+ "id": "dataset-and-prompts",
165
+ "metadata": {},
166
+ "outputs": [],
167
+ "source": [
168
+ "import re\n",
169
+ "from datasets import Dataset\n",
170
+ "\n",
171
+ "PROPOSER_PROMPT = \"\"\"You are the Proposer in DebugZero.\n",
172
+ "Inject one realistic, syntax-valid bug into the clean Python function.\n",
173
+ "The mutated function should run but fail at least one hidden test.\n",
174
+ "Return only the complete modified Python code inside a python code fence.\n",
175
+ "\n",
176
+ "Clean function:\n",
177
+ "```python\n",
178
+ "{code}\n",
179
+ "```\n",
180
+ "\"\"\"\n",
181
+ "\n",
182
+ "SOLVER_PROMPT = \"\"\"You are the Solver in DebugZero.\n",
183
+ "Repair the buggy Python function so it passes the environment tests.\n",
184
+ "Return only the complete repaired Python code inside a python code fence.\n",
185
+ "\n",
186
+ "Buggy function:\n",
187
+ "```python\n",
188
+ "{code}\n",
189
+ "```\n",
190
+ "\"\"\"\n",
191
+ "\n",
192
+ "def extract_code(text):\n",
193
+ " if isinstance(text, list):\n",
194
+ " text = text[0].get(\"content\", \"\") if text else \"\"\n",
195
+ " match = re.search(r\"```(?:python)?\\s*(.*?)```\", text, flags=re.DOTALL | re.IGNORECASE)\n",
196
+ " return (match.group(1) if match else text).strip()\n",
197
+ "\n",
198
+ "def deterministic_bug(clean_code):\n",
199
+ " replacements = [\n",
200
+ " (\"distance < threshold\", \"distance <= threshold\"),\n",
201
+ " (\"return True\", \"return False\"),\n",
202
+ " (\"idx != idx2\", \"idx == idx2\"),\n",
203
+ " ]\n",
204
+ " for old, new in replacements:\n",
205
+ " if old in clean_code:\n",
206
+ " return clean_code.replace(old, new, 1)\n",
207
+ " return clean_code + \"\\n# BUG: intentionally left for solver\\n\"\n",
208
+ "\n",
209
+ "def build_openenv_dataset(num_rounds=8):\n",
210
+ " rows = []\n",
211
+ " with DebugzeroEnv(base_url=BASE_URL) as env:\n",
212
+ " for episode in range(num_rounds):\n",
213
+ " clean_obs = observation(env.reset())\n",
214
+ " clean_code = clean_obs.current_code\n",
215
+ " buggy_code = deterministic_bug(clean_code)\n",
216
+ "\n",
217
+ " rows.append({\n",
218
+ " \"prompt\": PROPOSER_PROMPT.format(code=clean_code),\n",
219
+ " \"role\": \"proposer\",\n",
220
+ " \"clean_code\": clean_code,\n",
221
+ " \"buggy_code\": \"\",\n",
222
+ " \"episode\": episode,\n",
223
+ " })\n",
224
+ "\n",
225
+ " rows.append({\n",
226
+ " \"prompt\": SOLVER_PROMPT.format(code=buggy_code),\n",
227
+ " \"role\": \"solver\",\n",
228
+ " \"clean_code\": clean_code,\n",
229
+ " \"buggy_code\": buggy_code,\n",
230
+ " \"episode\": episode,\n",
231
+ " })\n",
232
+ " return Dataset.from_list(rows)\n",
233
+ "\n",
234
+ "train_dataset = build_openenv_dataset(num_rounds=8)\n",
235
+ "train_dataset"
236
+ ]
237
+ },
238
+ {
239
+ "cell_type": "code",
240
+ "execution_count": null,
241
+ "id": "openenv-reward",
242
+ "metadata": {},
243
+ "outputs": [],
244
+ "source": [
245
+ "def proposer_reward(obs, submitted_code, clean_code):\n",
246
+ " if obs.syntax_error:\n",
247
+ " return -1.0\n",
248
+ " if submitted_code.strip() == clean_code.strip():\n",
249
+ " return -0.5\n",
250
+ " if obs.tests_passed:\n",
251
+ " return 0.0\n",
252
+ " return 1.0\n",
253
+ "\n",
254
+ "def solver_reward(obs, submitted_code, clean_code):\n",
255
+ " if obs.syntax_error:\n",
256
+ " return -1.0\n",
257
+ " if submitted_code.strip() == clean_code.strip() and obs.tests_passed:\n",
258
+ " return 1.25\n",
259
+ " return 1.0 if obs.tests_passed else 0.0\n",
260
+ "\n",
261
+ "def openenv_reward(completions, role=None, clean_code=None, buggy_code=None, **kwargs):\n",
262
+ " rewards = []\n",
263
+ " role = role or kwargs.get(\"roles\")\n",
264
+ " clean_code = clean_code or kwargs.get(\"clean_codes\")\n",
265
+ " buggy_code = buggy_code or kwargs.get(\"buggy_codes\")\n",
266
+ "\n",
267
+ " with DebugzeroEnv(base_url=BASE_URL) as env:\n",
268
+ " for completion, sample_role, clean, bug in zip(completions, role, clean_code, buggy_code):\n",
269
+ " code = extract_code(completion)\n",
270
+ " env.reset()\n",
271
+ " if sample_role == \"proposer\":\n",
272
+ " obs = observation(env.step(DebugzeroAction(role=\"proposer\", code=code)))\n",
273
+ " rewards.append(proposer_reward(obs, code, clean))\n",
274
+ " elif sample_role == \"solver\":\n",
275
+ " env.step(DebugzeroAction(role=\"proposer\", code=bug))\n",
276
+ " obs = observation(env.step(DebugzeroAction(role=\"solver\", code=code)))\n",
277
+ " rewards.append(solver_reward(obs, code, clean))\n",
278
+ " else:\n",
279
+ " rewards.append(0.0)\n",
280
+ " return rewards\n",
281
+ "\n",
282
+ "# Quick reward sanity checks against the live environment.\n",
283
+ "example = train_dataset[1]\n",
284
+ "print(openenv_reward(\n",
285
+ " [f\"```python\\n{example['clean_code']}\\n```\"],\n",
286
+ " role=[example[\"role\"]],\n",
287
+ " clean_code=[example[\"clean_code\"]],\n",
288
+ " buggy_code=[example[\"buggy_code\"]],\n",
289
+ "))"
290
+ ]
291
+ },
292
+ {
293
+ "cell_type": "code",
294
+ "execution_count": null,
295
+ "id": "model",
296
+ "metadata": {},
297
+ "outputs": [],
298
+ "source": [
299
+ "import torch\n",
300
+ "\n",
301
+ "try:\n",
302
+ " from unsloth import FastLanguageModel, PatchFastRL, is_bfloat16_supported\n",
303
+ " PatchFastRL(\"GRPO\", FastLanguageModel)\n",
304
+ " HAS_UNSLOTH = True\n",
305
+ "except Exception as exc:\n",
306
+ " print(\"Using native Transformers/TRL fallback:\", exc)\n",
307
+ " HAS_UNSLOTH = False\n",
308
+ " is_bfloat16_supported = lambda: False\n",
309
+ "\n",
310
+ "from trl import GRPOConfig, GRPOTrainer\n",
311
+ "\n",
312
+ "if HAS_UNSLOTH:\n",
313
+ " model, tokenizer = FastLanguageModel.from_pretrained(\n",
314
+ " model_name=MODEL_ID,\n",
315
+ " max_seq_length=2048,\n",
316
+ " load_in_4bit=True,\n",
317
+ " fast_inference=False,\n",
318
+ " )\n",
319
+ " model = FastLanguageModel.get_peft_model(\n",
320
+ " model,\n",
321
+ " r=16,\n",
322
+ " target_modules=[\"q_proj\", \"k_proj\", \"v_proj\", \"o_proj\", \"gate_proj\", \"up_proj\", \"down_proj\"],\n",
323
+ " lora_alpha=16,\n",
324
+ " lora_dropout=0,\n",
325
+ " bias=\"none\",\n",
326
+ " use_gradient_checkpointing=\"unsloth\",\n",
327
+ " random_state=3407,\n",
328
+ " )\n",
329
+ "else:\n",
330
+ " from transformers import AutoModelForCausalLM, AutoTokenizer\n",
331
+ " fallback_model = \"Qwen/Qwen2.5-Coder-1.5B-Instruct\"\n",
332
+ " tokenizer = AutoTokenizer.from_pretrained(fallback_model, trust_remote_code=True)\n",
333
+ " model = AutoModelForCausalLM.from_pretrained(\n",
334
+ " fallback_model,\n",
335
+ " torch_dtype=torch.bfloat16 if torch.cuda.is_available() else torch.float32,\n",
336
+ " device_map=\"auto\" if torch.cuda.is_available() else None,\n",
337
+ " trust_remote_code=True,\n",
338
+ " )"
339
+ ]
340
+ },
341
+ {
342
+ "cell_type": "code",
343
+ "execution_count": null,
344
+ "id": "baseline-eval",
345
+ "metadata": {},
346
+ "outputs": [],
347
+ "source": [
348
+ "def generate_completion(prompt, max_new_tokens=384):\n",
349
+ " inputs = tokenizer(prompt, return_tensors=\"pt\").to(model.device)\n",
350
+ " with torch.no_grad():\n",
351
+ " output = model.generate(\n",
352
+ " **inputs,\n",
353
+ " max_new_tokens=max_new_tokens,\n",
354
+ " do_sample=True,\n",
355
+ " temperature=0.7,\n",
356
+ " top_p=0.9,\n",
357
+ " pad_token_id=tokenizer.eos_token_id,\n",
358
+ " )\n",
359
+ " return tokenizer.decode(output[0][inputs[\"input_ids\"].shape[-1]:], skip_special_tokens=True)\n",
360
+ "\n",
361
+ "def evaluate_policy(dataset, n=4):\n",
362
+ " rows = [dataset[i] for i in range(min(n, len(dataset)))]\n",
363
+ " completions = [generate_completion(row[\"prompt\"]) for row in rows]\n",
364
+ " rewards = openenv_reward(\n",
365
+ " completions,\n",
366
+ " role=[row[\"role\"] for row in rows],\n",
367
+ " clean_code=[row[\"clean_code\"] for row in rows],\n",
368
+ " buggy_code=[row[\"buggy_code\"] for row in rows],\n",
369
+ " )\n",
370
+ " return rewards, completions\n",
371
+ "\n",
372
+ "baseline_rewards, baseline_completions = evaluate_policy(train_dataset, n=4)\n",
373
+ "print(\"Baseline rewards:\", baseline_rewards, \"mean=\", sum(baseline_rewards) / len(baseline_rewards))"
374
+ ]
375
+ },
376
+ {
377
+ "cell_type": "code",
378
+ "execution_count": null,
379
+ "id": "train",
380
+ "metadata": {},
381
+ "outputs": [],
382
+ "source": [
383
+ "training_args = GRPOConfig(\n",
384
+ " output_dir=OUTPUT_DIR,\n",
385
+ " max_steps=MAX_STEPS,\n",
386
+ " learning_rate=5e-6,\n",
387
+ " per_device_train_batch_size=2,\n",
388
+ " gradient_accumulation_steps=2,\n",
389
+ " num_generations=NUM_GENERATIONS,\n",
390
+ " max_prompt_length=1024,\n",
391
+ " max_completion_length=384,\n",
392
+ " logging_steps=1,\n",
393
+ " save_steps=MAX_STEPS,\n",
394
+ " report_to=\"none\",\n",
395
+ " bf16=bool(torch.cuda.is_available() and is_bfloat16_supported()),\n",
396
+ " fp16=bool(torch.cuda.is_available() and not is_bfloat16_supported()),\n",
397
+ ")\n",
398
+ "\n",
399
+ "trainer_kwargs = dict(\n",
400
+ " model=model,\n",
401
+ " reward_funcs=[openenv_reward],\n",
402
+ " args=training_args,\n",
403
+ " train_dataset=train_dataset,\n",
404
+ ")\n",
405
+ "\n",
406
+ "try:\n",
407
+ " trainer = GRPOTrainer(processing_class=tokenizer, **trainer_kwargs)\n",
408
+ "except TypeError:\n",
409
+ " trainer = GRPOTrainer(tokenizer=tokenizer, **trainer_kwargs)\n",
410
+ "\n",
411
+ "if RUN_TRAINING:\n",
412
+ " train_result = trainer.train()\n",
413
+ " trainer.save_model(OUTPUT_DIR)\n",
414
+ "else:\n",
415
+ " train_result = None\n",
416
+ " print(\"RUN_TRAINING=False, trainer configured but not executed.\")"
417
+ ]
418
+ },
419
+ {
420
+ "cell_type": "code",
421
+ "execution_count": null,
422
+ "id": "after-eval",
423
+ "metadata": {},
424
+ "outputs": [],
425
+ "source": [
426
+ "trained_rewards, trained_completions = evaluate_policy(train_dataset, n=4)\n",
427
+ "print(\"Baseline rewards:\", baseline_rewards, \"mean=\", sum(baseline_rewards) / len(baseline_rewards))\n",
428
+ "print(\"Trained rewards:\", trained_rewards, \"mean=\", sum(trained_rewards) / len(trained_rewards))"
429
+ ]
430
+ },
431
+ {
432
+ "cell_type": "code",
433
+ "execution_count": null,
434
+ "id": "plots",
435
+ "metadata": {},
436
+ "outputs": [],
437
+ "source": [
438
+ "import os\n",
439
+ "\n",
440
+ "import matplotlib.pyplot as plt\n",
441
+ "import pandas as pd\n",
442
+ "\n",
443
+ "os.makedirs(\"results\", exist_ok=True)\n",
444
+ "history = pd.DataFrame(trainer.state.log_history)\n",
445
+ "history.to_csv(\"results/training_log.csv\", index=False)\n",
446
+ "\n",
447
+ "reward_cols = [col for col in history.columns if \"reward\" in col.lower()]\n",
448
+ "loss_cols = [col for col in history.columns if \"loss\" in col.lower()]\n",
449
+ "\n",
450
+ "if reward_cols:\n",
451
+ " ax = history.plot(x=\"step\", y=reward_cols, marker=\"o\", figsize=(8, 4))\n",
452
+ " ax.set_xlabel(\"training step\")\n",
453
+ " ax.set_ylabel(\"reward\")\n",
454
+ " ax.set_title(\"DebugZero OpenEnv reward during GRPO\")\n",
455
+ " plt.tight_layout()\n",
456
+ " plt.savefig(\"results/reward_curve.png\", dpi=160)\n",
457
+ " plt.show()\n",
458
+ "\n",
459
+ "if loss_cols:\n",
460
+ " ax = history.plot(x=\"step\", y=loss_cols, marker=\"o\", figsize=(8, 4))\n",
461
+ " ax.set_xlabel(\"training step\")\n",
462
+ " ax.set_ylabel(\"loss\")\n",
463
+ " ax.set_title(\"DebugZero GRPO loss\")\n",
464
+ " plt.tight_layout()\n",
465
+ " plt.savefig(\"results/loss_curve.png\", dpi=160)\n",
466
+ " plt.show()\n",
467
+ "\n",
468
+ "comparison = pd.DataFrame({\n",
469
+ " \"phase\": [\"baseline\", \"trained\"],\n",
470
+ " \"mean_reward\": [sum(baseline_rewards) / len(baseline_rewards), sum(trained_rewards) / len(trained_rewards)],\n",
471
+ "})\n",
472
+ "ax = comparison.plot.bar(x=\"phase\", y=\"mean_reward\", legend=False, figsize=(5, 4))\n",
473
+ "ax.set_xlabel(\"policy\")\n",
474
+ "ax.set_ylabel(\"mean live OpenEnv reward\")\n",
475
+ "ax.set_title(\"Before vs after training\")\n",
476
+ "plt.tight_layout()\n",
477
+ "plt.savefig(\"results/baseline_vs_trained_reward.png\", dpi=160)\n",
478
+ "plt.show()\n",
479
+ "\n",
480
+ "comparison"
481
+ ]
482
+ },
483
+ {
484
+ "cell_type": "markdown",
485
+ "id": "readme-note",
486
+ "metadata": {},
487
+ "source": [
488
+ "## Submission note\n",
489
+ "\n",
490
+ "After running the notebook, commit `results/reward_curve.png`, `results/loss_curve.png`, and `results/baseline_vs_trained_reward.png` or upload them to the README/blog. Judges should see the GitHub install cell, the OpenEnv smoke test, and the before/after reward comparison."
491
+ ]
492
+ }
493
+ ],
494
+ "metadata": {
495
+ "accelerator": "GPU",
496
+ "colab": {
497
+ "gpuType": "T4"
498
+ },
499
+ "kernelspec": {
500
+ "display_name": "Python 3",
501
+ "language": "python",
502
+ "name": "python3"
503
+ },
504
+ "language_info": {
505
+ "name": "python",
506
+ "pygments_lexer": "ipython3"
507
+ }
508
+ },
509
+ "nbformat": 4,
510
+ "nbformat_minor": 5
511
+ }
openenv.yaml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ spec_version: 1
2
+ name: debugZero
3
+ description: "Our environment extends the Absolute Zero paradigm (Zhao et al., NeurIPS 2025) to adversarial bug-fixing self-play. The Proposer's mutation operators are implemented from scratch using Python AST manipulation across 8 operator types. The verifier adapts Mutahunter's execution pipeline."
4
+ type: space
5
+ runtime: fastapi
6
+ app: server.app:app
7
+ port: 8000
8
+
openenv_debugZero.egg-info/PKG-INFO ADDED
@@ -0,0 +1,14 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ Metadata-Version: 2.4
2
+ Name: openenv-debugZero
3
+ Version: 0.1.0
4
+ Summary: Debugzero environment for OpenEnv
5
+ Requires-Python: >=3.10
6
+ Requires-Dist: datasets>=4.8.4
7
+ Requires-Dist: openenv-core[core]>=0.2.1
8
+ Requires-Dist: pytest>=9.0.3
9
+ Requires-Dist: thefuzz>=0.22.1
10
+ Requires-Dist: transformers>=5.6.2
11
+ Requires-Dist: trl>=1.2.0
12
+ Provides-Extra: dev
13
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
14
+ Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
openenv_debugZero.egg-info/SOURCES.txt ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ README.md
2
+ __init__.py
3
+ client.py
4
+ models.py
5
+ pyproject.toml
6
+ ./__init__.py
7
+ ./client.py
8
+ ./models.py
9
+ openenv_debugZero.egg-info/PKG-INFO
10
+ openenv_debugZero.egg-info/SOURCES.txt
11
+ openenv_debugZero.egg-info/dependency_links.txt
12
+ openenv_debugZero.egg-info/entry_points.txt
13
+ openenv_debugZero.egg-info/requires.txt
14
+ openenv_debugZero.egg-info/top_level.txt
15
+ server/__init__.py
16
+ server/app.py
17
+ server/bug_injector.py
18
+ server/debugZero_environment.py
19
+ server/executor.py
20
+ server/plausibility.py
openenv_debugZero.egg-info/dependency_links.txt ADDED
@@ -0,0 +1 @@
 
 
1
+
openenv_debugZero.egg-info/entry_points.txt ADDED
@@ -0,0 +1,2 @@
 
 
 
1
+ [console_scripts]
2
+ server = debugZero.server.app:main
openenv_debugZero.egg-info/requires.txt ADDED
@@ -0,0 +1,10 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ datasets>=4.8.4
2
+ openenv-core[core]>=0.2.1
3
+ pytest>=9.0.3
4
+ thefuzz>=0.22.1
5
+ transformers>=5.6.2
6
+ trl>=1.2.0
7
+
8
+ [dev]
9
+ pytest>=8.0.0
10
+ pytest-cov>=4.0.0
openenv_debugZero.egg-info/top_level.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ debugZero
pyproject.toml ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ [build-system]
8
+ requires = ["setuptools>=45", "wheel"]
9
+ build-backend = "setuptools.build_meta"
10
+
11
+ [project]
12
+ name = "openenv-debugZero"
13
+ version = "0.1.0"
14
+ description = "Debugzero environment for OpenEnv"
15
+ requires-python = ">=3.10"
16
+ dependencies = [
17
+ "datasets>=4.8.4",
18
+ # Core OpenEnv runtime (provides FastAPI server + HTTP client types)
19
+ # install from github
20
+ # "openenv-core[core] @ git+https://github.com/meta-pytorch/OpenEnv.git",
21
+ "openenv-core[core]>=0.2.1",
22
+ # Environment-specific dependencies
23
+ # Add all dependencies needed for your environment here
24
+ # Examples:
25
+ # "numpy>=1.19.0",
26
+ # "torch>=2.0.0",
27
+ # "gymnasium>=0.29.0",
28
+ # "openspiel>=1.0.0",
29
+ # "smolagents>=1.22.0,<2",
30
+ "pytest>=9.0.3",
31
+ "thefuzz>=0.22.1",
32
+ "transformers>=5.6.2",
33
+ "trl>=1.2.0",
34
+ ]
35
+
36
+ [project.optional-dependencies]
37
+ dev = [
38
+ "pytest>=8.0.0",
39
+ "pytest-cov>=4.0.0",
40
+ ]
41
+
42
+ [project.scripts]
43
+ # Server entry point - enables running via: uv run --project . server
44
+ # or: python -m debugZero.server.app
45
+ server = "debugZero.server.app:main"
46
+
47
+ [tool.setuptools]
48
+ include-package-data = true
49
+ packages = ["debugZero", "debugZero.server"]
50
+ package-dir = { "debugZero" = ".", "debugZero.server" = "server" }
run_episode.py ADDED
@@ -0,0 +1,36 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import asyncio
2
+ from typing import cast
3
+ import subprocess
4
+ from server.debugZero_environment import DebugzeroEnvironment
5
+ from models import DebugzeroAction, DebugzeroObservation
6
+
7
+ def test_local_env():
8
+ print("Testing DebugzeroEnvironment directly...")
9
+ env = DebugzeroEnvironment()
10
+ obs = env.reset()
11
+ print(f"\nInitial state (role_next={obs.role_next})")
12
+
13
+ # Proposer turn: Send invalid code to test sandbox
14
+ print("\n--- Proposer turn (malicious code) ---")
15
+ action = DebugzeroAction(role="proposer", code="import os\nos.system('echo hacked')")
16
+ obs = env.step(action)
17
+ print(f"Status: done={obs.done}, reward={obs.reward}, syntax_error={obs.syntax_error}")
18
+ print(f"Execution Result:\n{obs.execution_result.strip()}")
19
+
20
+ obs = env.reset()
21
+ # Proposer turn: Inject valid bug
22
+ print("\n--- Proposer turn (valid bug) ---")
23
+ buggy_code = "def has_close_elements(numbers, threshold):\n pass"
24
+ action = DebugzeroAction(role="proposer", code=buggy_code)
25
+ obs = env.step(action)
26
+ print(f"Status: role_next={obs.role_next}, done={obs.done}, reward={obs.reward}, syntax_error={obs.syntax_error}")
27
+
28
+ # Solver turn: Fix the bug
29
+ print("\n--- Solver turn (fix bug) ---")
30
+ valid_code = obs.current_code.replace("pass", "return False")
31
+ action = DebugzeroAction(role="solver", code=valid_code)
32
+ obs = env.step(action)
33
+ print(f"Status: role_next={obs.role_next}, done={obs.done}, reward={obs.reward}, tests_passed={obs.tests_passed}")
34
+
35
+ if __name__ == "__main__":
36
+ test_local_env()
server/__init__.py ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ """Debugzero environment server components."""
8
+
9
+ from .debugZero_environment import DebugzeroEnvironment
10
+
11
+ __all__ = ["DebugzeroEnvironment"]
server/app.py ADDED
@@ -0,0 +1,81 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ """
8
+ FastAPI application for the Debugzero Environment.
9
+
10
+ This module creates an HTTP server that exposes the DebugzeroEnvironment
11
+ over HTTP and WebSocket endpoints, compatible with EnvClient.
12
+
13
+ Endpoints:
14
+ - POST /reset: Reset the environment
15
+ - POST /step: Execute an action
16
+ - GET /state: Get current environment state
17
+ - GET /schema: Get action/observation schemas
18
+ - WS /ws: WebSocket endpoint for persistent sessions
19
+
20
+ Usage:
21
+ # Development (with auto-reload):
22
+ uvicorn server.app:app --reload --host 0.0.0.0 --port 8000
23
+
24
+ # Production:
25
+ uvicorn server.app:app --host 0.0.0.0 --port 8000 --workers 4
26
+
27
+ # Or run directly:
28
+ python -m server.app
29
+ """
30
+ import os
31
+
32
+ # Definitively enable the web interface for this deployment
33
+ os.environ["ENABLE_WEB_INTERFACE"] = "true"
34
+
35
+ try:
36
+ from openenv.core.env_server.http_server import create_app
37
+ except Exception as e: # pragma: no cover
38
+ raise ImportError(
39
+ "openenv is required for the web interface. Install dependencies with '\n uv sync\n'"
40
+ ) from e
41
+
42
+ try:
43
+ from ..models import DebugzeroAction, DebugzeroObservation
44
+ from .debugZero_environment import DebugzeroEnvironment
45
+ except ModuleNotFoundError:
46
+ from models import DebugzeroAction, DebugzeroObservation
47
+ from server.debugZero_environment import DebugzeroEnvironment
48
+
49
+
50
+ # Create the app with web interface and README integration
51
+ app = create_app(
52
+ DebugzeroEnvironment,
53
+ DebugzeroAction,
54
+ DebugzeroObservation,
55
+ env_name="debugZero",
56
+ max_concurrent_envs=1, # increase this number to allow more concurrent WebSocket sessions
57
+ )
58
+
59
+
60
+ def main():
61
+ """
62
+ Entry point for direct execution via uv run or python -m.
63
+
64
+ This function enables running the server without Docker:
65
+ uv run --project . server
66
+ uv run --project . server --port 8001
67
+ python -m debugZero.server.app
68
+ """
69
+ import uvicorn
70
+ import argparse
71
+
72
+ parser = argparse.ArgumentParser()
73
+ parser.add_argument("--host", type=str, default="0.0.0.0")
74
+ parser.add_argument("--port", type=int, default=8000)
75
+ args = parser.parse_args()
76
+
77
+ uvicorn.run(app, host=args.host, port=args.port)
78
+
79
+
80
+ if __name__ == '__main__':
81
+ main()
server/bug_injector.py ADDED
@@ -0,0 +1,192 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import ast
2
+ import random
3
+ import copy
4
+
5
+ BUILTIN_PAIRS = {
6
+ "min": "max", "max": "min",
7
+ "any": "all", "all": "any",
8
+ "sum": "len", "len": "sum"
9
+ }
10
+
11
+ BLOCKED_IMPORTS = ["os", "sys", "subprocess", "shutil", "pathlib"]
12
+
13
+ def is_safe_injection(code: str) -> bool:
14
+ for blocked in BLOCKED_IMPORTS:
15
+ if f"import {blocked}" in code or f"from {blocked}" in code:
16
+ return False
17
+ return True
18
+
19
+ class BugInjectorVisitor(ast.NodeTransformer):
20
+ def __init__(self, target_operator: str):
21
+ super().__init__()
22
+ self.target_operator = target_operator
23
+ self.mutated = False
24
+
25
+ def visit_Constant(self, node):
26
+ self.generic_visit(node)
27
+ if self.mutated:
28
+ return node
29
+
30
+ if self.target_operator == "off_by_one" and isinstance(node.value, int) and not isinstance(node.value, bool):
31
+ shift = random.choice([-1, 1])
32
+ node.value += shift
33
+ self.mutated = True
34
+ return node
35
+
36
+ return node
37
+
38
+ def visit_Compare(self, node):
39
+ self.generic_visit(node)
40
+ if self.mutated:
41
+ return node
42
+
43
+ if self.target_operator == "wrong_operator":
44
+ if isinstance(node.ops[0], ast.Lt):
45
+ node.ops[0] = ast.GtE()
46
+ self.mutated = True
47
+ elif isinstance(node.ops[0], ast.LtE):
48
+ node.ops[0] = ast.Gt()
49
+ self.mutated = True
50
+ elif isinstance(node.ops[0], ast.Gt):
51
+ node.ops[0] = ast.LtE()
52
+ self.mutated = True
53
+ elif isinstance(node.ops[0], ast.GtE):
54
+ node.ops[0] = ast.Lt()
55
+ self.mutated = True
56
+ elif isinstance(node.ops[0], ast.Eq):
57
+ node.ops[0] = ast.NotEq()
58
+ self.mutated = True
59
+ elif isinstance(node.ops[0], ast.NotEq):
60
+ node.ops[0] = ast.Eq()
61
+ self.mutated = True
62
+ return node
63
+
64
+ def visit_BinOp(self, node):
65
+ self.generic_visit(node)
66
+ if self.mutated:
67
+ return node
68
+
69
+ if self.target_operator == "wrong_operator":
70
+ if isinstance(node.op, ast.Add):
71
+ node.op = ast.Sub()
72
+ self.mutated = True
73
+ elif isinstance(node.op, ast.Sub):
74
+ node.op = ast.Add()
75
+ self.mutated = True
76
+ elif isinstance(node.op, ast.Mult):
77
+ node.op = ast.FloorDiv()
78
+ self.mutated = True
79
+ elif isinstance(node.op, ast.Div):
80
+ node.op = ast.Mult()
81
+ self.mutated = True
82
+ return node
83
+
84
+ def visit_Call(self, node):
85
+ self.generic_visit(node)
86
+ if self.mutated:
87
+ return node
88
+
89
+ if isinstance(node.func, ast.Name):
90
+ # wrong built-in
91
+ if self.target_operator == "wrong_builtin" and node.func.id in BUILTIN_PAIRS:
92
+ node.func.id = BUILTIN_PAIRS[node.func.id]
93
+ self.mutated = True
94
+
95
+ # loop boundary shift
96
+ elif self.target_operator == "loop_boundary_shift" and node.func.id == "range":
97
+ if len(node.args) == 1:
98
+ # `range(n)` -> `range(n+1)`
99
+ node.args[0] = ast.BinOp(left=node.args[0], op=ast.Add(), right=ast.Constant(value=1))
100
+ self.mutated = True
101
+ elif len(node.args) == 2:
102
+ # `range(a, b)` -> `range(a-1, b)`
103
+ node.args[0] = ast.BinOp(left=node.args[0], op=ast.Sub(), right=ast.Constant(value=1))
104
+ self.mutated = True
105
+
106
+ return node
107
+
108
+ def visit_If(self, node):
109
+ self.generic_visit(node)
110
+ if self.mutated:
111
+ return node
112
+
113
+ if self.target_operator == "condition_negation":
114
+ # `if x > 0` -> `if not x > 0`
115
+ node.test = ast.UnaryOp(op=ast.Not(), operand=node.test)
116
+ self.mutated = True
117
+
118
+ if self.target_operator == "missing_base_case":
119
+ for idx, child in enumerate(node.body):
120
+ if isinstance(child, ast.Return):
121
+ node.body[idx] = ast.Pass()
122
+ self.mutated = True
123
+ break
124
+
125
+ return node
126
+
127
+ def visit_Slice(self, node):
128
+ self.generic_visit(node)
129
+ if self.mutated:
130
+ return node
131
+
132
+ if self.target_operator == "slice_boundary_corruption":
133
+ if node.lower is not None:
134
+ node.lower = ast.BinOp(left=node.lower, op=ast.Add(), right=ast.Constant(value=1))
135
+ self.mutated = True
136
+ elif node.upper is not None:
137
+ node.upper = ast.BinOp(left=node.upper, op=ast.Sub(), right=ast.Constant(value=1))
138
+ self.mutated = True
139
+
140
+ return node
141
+
142
+ def visit_Name(self, node):
143
+ self.generic_visit(node)
144
+ return node
145
+
146
+ def visit_Assign(self, node):
147
+ # variable swap strategy applied by exchanging two target assign variables when there are multiple targets
148
+ self.generic_visit(node)
149
+ if self.mutated:
150
+ return node
151
+
152
+ if self.target_operator == "variable_swap" and getattr(node, "targets", None):
153
+ if isinstance(node.targets[0], ast.Tuple) and len(node.targets[0].elts) >= 2:
154
+ # swap a, b = x, y -> b, a = x, y
155
+ node.targets[0].elts[0], node.targets[0].elts[1] = node.targets[0].elts[1], node.targets[0].elts[0]
156
+ self.mutated = True
157
+ return node
158
+
159
+ def inject_bug(original_code: str, proposed_operator: str) -> tuple[str, bool]:
160
+ """
161
+ 4 critical checks:
162
+ - parse succeeds
163
+ - mutation actually changed code
164
+ - blocked imports checked
165
+ - built pairs correctly swapped
166
+ """
167
+ try:
168
+ tree = ast.parse(original_code)
169
+ except SyntaxError:
170
+ return original_code, False
171
+
172
+ injector = BugInjectorVisitor(proposed_operator)
173
+ mutated_tree = injector.visit(copy.deepcopy(tree))
174
+ ast.fix_missing_locations(mutated_tree)
175
+
176
+ mutated_code = ast.unparse(mutated_tree)
177
+
178
+ # 2. Check if mutation actually changed something
179
+ if mutated_code.strip() == original_code.strip():
180
+ return original_code, False
181
+
182
+ # 3. Blocked imports
183
+ if not is_safe_injection(mutated_code):
184
+ return original_code, False
185
+
186
+ # 4. AST parsing check
187
+ try:
188
+ ast.parse(mutated_code)
189
+ except SyntaxError:
190
+ return original_code, False
191
+
192
+ return mutated_code, True
server/debugZero_environment.py ADDED
@@ -0,0 +1,128 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (c) Meta Platforms, Inc. and affiliates.
2
+ # All rights reserved.
3
+ #
4
+ # This source code is licensed under the BSD-style license found in the
5
+ # LICENSE file in the root directory of this source tree.
6
+
7
+ """
8
+ DebugZero Environment Implementation for Absolute Zero debugging self-play.
9
+ """
10
+
11
+ from uuid import uuid4
12
+
13
+ from openenv.core.env_server.interfaces import Environment
14
+ from openenv.core.env_server.types import State
15
+
16
+ try:
17
+ from ..models import DebugzeroAction, DebugzeroObservation, DebugzeroState
18
+ except ImportError:
19
+ from models import DebugzeroAction, DebugzeroObservation, DebugzeroState
20
+
21
+ try:
22
+ from .executor import execute_code, ExecutionResult
23
+ from .bug_injector import inject_bug
24
+ from .plausibility import compute_ast_distance
25
+ except ImportError:
26
+ from executor import execute_code, ExecutionResult
27
+ from bug_injector import inject_bug
28
+ from plausibility import compute_ast_distance
29
+
30
+ # Stub for HumanEval dataset holding
31
+ HUMANEVAL_SEED = {
32
+ "seed_id": "HumanEval/0",
33
+ "prompt": "def has_close_elements(numbers: list[float], threshold: float) -> bool:",
34
+ "canonical_solution": " for idx, elem in enumerate(numbers):\n for idx2, elem2 in enumerate(numbers):\n if idx != idx2:\n distance = abs(elem - elem2)\n if distance < threshold:\n return True\n return False\n",
35
+ "test": "def check(candidate):\n assert candidate([1.0, 2.0, 3.0], 0.5) == False\n assert candidate([1.0, 2.8, 3.0, 4.0, 5.0, 2.0], 0.3) == True\n"
36
+ }
37
+
38
+ class DebugzeroEnvironment(Environment):
39
+ """
40
+ Dual-role DebugZero Environment wrapping a Python sandbox execution
41
+ for Proposer bug injection and Solver bug fixing.
42
+ """
43
+ SUPPORTS_CONCURRENT_SESSIONS: bool = True
44
+
45
+ def __init__(self):
46
+ self._state = DebugzeroState(
47
+ episode_id=str(uuid4()),
48
+ step_count=0,
49
+ seed_id=HUMANEVAL_SEED["seed_id"],
50
+ original_code=f'{HUMANEVAL_SEED["prompt"]}\n{HUMANEVAL_SEED["canonical_solution"]}',
51
+ current_code=f'{HUMANEVAL_SEED["prompt"]}\n{HUMANEVAL_SEED["canonical_solution"]}',
52
+ role_turn="proposer"
53
+ )
54
+ self._reset_count = 0
55
+
56
+ def reset(self) -> DebugzeroObservation:
57
+ self._state = DebugzeroState(
58
+ episode_id=str(uuid4()),
59
+ step_count=0,
60
+ seed_id=HUMANEVAL_SEED["seed_id"],
61
+ original_code=f'{HUMANEVAL_SEED["prompt"]}\n{HUMANEVAL_SEED["canonical_solution"]}',
62
+ current_code=f'{HUMANEVAL_SEED["prompt"]}\n{HUMANEVAL_SEED["canonical_solution"]}',
63
+ role_turn="proposer"
64
+ )
65
+ self._reset_count += 1
66
+
67
+ return DebugzeroObservation(
68
+ role_next="proposer",
69
+ current_code=self._state.current_code,
70
+ execution_result="",
71
+ tests_passed=True,
72
+ syntax_error=False,
73
+ done=False,
74
+ reward=0.0,
75
+ )
76
+
77
+ def step(self, action: DebugzeroAction) -> DebugzeroObservation: # type: ignore[override]
78
+ self._state.step_count += 1
79
+
80
+ tests = HUMANEVAL_SEED["test"]
81
+
82
+ if action.role == "proposer":
83
+ # The proposer injects buggy code here
84
+ # In our full implementation this string will be parsed and injected into the original code
85
+ # using AST operators from the bug injector
86
+ self._state.current_code = action.code
87
+
88
+ # evaluate
89
+ result = execute_code(self._state.current_code, tests)
90
+
91
+ self._state.role_turn = "solver"
92
+
93
+ # The actual reward will be calculated by the training loop using executor results
94
+ # including the `compute_ast_distance` plausibility score.
95
+ return DebugzeroObservation(
96
+ role_next="solver",
97
+ current_code=self._state.current_code,
98
+ execution_result=result.output[:500], # truncate avoiding overflow
99
+ tests_passed=result.passed,
100
+ syntax_error=result.syntax_error,
101
+ done=False,
102
+ reward=0.0
103
+ )
104
+
105
+ elif action.role == "solver":
106
+ # The solver fixes the bug
107
+ self._state.current_code = action.code
108
+
109
+ # evaluate
110
+ result = execute_code(self._state.current_code, tests)
111
+
112
+ self._state.role_turn = "end"
113
+
114
+ return DebugzeroObservation(
115
+ role_next="end",
116
+ current_code=self._state.current_code,
117
+ execution_result=result.output[:500],
118
+ tests_passed=result.passed,
119
+ syntax_error=result.syntax_error,
120
+ done=True,
121
+ reward=0.0
122
+ )
123
+
124
+ return DebugzeroObservation(role_next="end", done=True)
125
+
126
+ @property
127
+ def state(self) -> DebugzeroState:
128
+ return self._state
server/executor.py ADDED
@@ -0,0 +1,89 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import subprocess
3
+ import tempfile
4
+ import ast
5
+
6
+ BLOCKED_IMPORTS = ["os", "sys", "subprocess", "shutil", "pathlib"]
7
+ BLOCKED_BUILTINS = ["__import__", "eval", "exec", "open"]
8
+
9
+ def is_safe(code: str) -> bool:
10
+ """
11
+ Check if the code contains any blocked imports strings.
12
+ Also performs a quick AST parse check to see if it parses.
13
+ """
14
+ # 1. Simple text matching for basic imports
15
+ for mod in BLOCKED_IMPORTS:
16
+ if f"import {mod}" in code or f"from {mod}" in code:
17
+ return False
18
+
19
+ # 2. Block built-in execution loopholes
20
+ for b in BLOCKED_BUILTINS:
21
+ if b in code:
22
+ return False
23
+
24
+ try:
25
+ tree = ast.parse(code)
26
+ except SyntaxError:
27
+ return False
28
+
29
+ # 3. Deep AST walk to find dynamic imports disguised in functions/aliases
30
+ for node in ast.walk(tree):
31
+ if isinstance(node, ast.Import):
32
+ for alias in node.names:
33
+ if alias.name.split('.')[0] in BLOCKED_IMPORTS:
34
+ return False
35
+ elif isinstance(node, ast.ImportFrom):
36
+ if node.module and node.module.split('.')[0] in BLOCKED_IMPORTS:
37
+ return False
38
+ elif isinstance(node, ast.Call):
39
+ if isinstance(node.func, ast.Name) and node.func.id in BLOCKED_BUILTINS:
40
+ return False
41
+
42
+ return True
43
+
44
+ class ExecutionResult:
45
+ def __init__(self, passed: bool, output: str, syntax_error: bool = False, timeout_error: bool = False):
46
+ self.passed = passed
47
+ self.output = output
48
+ self.syntax_error = syntax_error
49
+ self.timeout_error = timeout_error
50
+
51
+ def execute_code(code: str, tests: str, timeout: int = 5) -> ExecutionResult:
52
+ """
53
+ Executes the provided python code alongside its tests in an isolated subprocess.
54
+ Returns the execution results.
55
+ """
56
+ full_code = f"{code}\n\n{tests}"
57
+
58
+ if not is_safe(full_code):
59
+ # We need to distinguish between unsafe imports and actual syntax errors
60
+ try:
61
+ ast.parse(full_code)
62
+ return ExecutionResult(passed=False, output="Unsafe import detected.", syntax_error=False)
63
+ except SyntaxError as e:
64
+ return ExecutionResult(passed=False, output=f"SyntaxError: {e}", syntax_error=True)
65
+
66
+ with tempfile.TemporaryDirectory() as temp_dir:
67
+ temp_file = os.path.join(temp_dir, "exec_script.py")
68
+ with open(temp_file, "w") as f:
69
+ f.write(full_code)
70
+
71
+ try:
72
+ # We run the process completely isolated with no stdout buffers blocking us
73
+ result = subprocess.run(
74
+ ["python", temp_file],
75
+ capture_output=True,
76
+ text=True,
77
+ timeout=timeout
78
+ )
79
+
80
+ if result.returncode == 0:
81
+ return ExecutionResult(passed=True, output=result.stdout)
82
+ else:
83
+ syntax_error = "SyntaxError" in result.stderr
84
+ return ExecutionResult(passed=False, output=result.stderr, syntax_error=syntax_error)
85
+
86
+ except subprocess.TimeoutExpired:
87
+ return ExecutionResult(passed=False, output="Execution timed out.", timeout_error=True)
88
+ except Exception as e:
89
+ return ExecutionResult(passed=False, output=str(e))
server/plausibility.py ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import ast
2
+ from thefuzz import fuzz
3
+
4
+ def compute_ast_distance(original_code: str, mutated_code: str) -> float:
5
+ """
6
+ Computes the string similarity distance between the AST dumps of the original
7
+ and mutated code using thefuzz (Levenshtein based).
8
+ Zero edits = 0 score.
9
+ Targeted (small) edit = high plausibility (closer to 1.0).
10
+ Random / wide corruption = low score.
11
+ """
12
+ try:
13
+ orig_ast = ast.dump(ast.parse(original_code))
14
+ mut_ast = ast.dump(ast.parse(mutated_code))
15
+ except SyntaxError:
16
+ return 0.0
17
+
18
+ ratio = fuzz.ratio(orig_ast, mut_ast)
19
+
20
+ if ratio == 100:
21
+ return 0.0
22
+
23
+ # Empirical calibration: simple AST mutations typically result in
24
+ # a fuzz ratio of 85-98%.
25
+
26
+ if 85 <= ratio < 100:
27
+ return 1.0 # Perfect sweet spot
28
+ elif 50 <= ratio < 85:
29
+ # Linearly decay from 1.0 at 85 down to 0.1 at 50
30
+ return max(0.1, (ratio - 50) / 35.0)
31
+ else:
32
+ return 0.0
server/requirements.txt ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ openenv[core]>=0.2.0
2
+ fastapi>=0.115.0
3
+ uvicorn>=0.24.0
4
+
5
+
6
+
training/dual_role_sampler.py ADDED
@@ -0,0 +1,27 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ PROPOSER_PROMPT = \"\"\"You are the Proposer, an AI designed to challenge the debugging capabilities of other systems.
2
+ Given a clean Python function, inject an adversarial but highly plausible bug into it.
3
+ The bug should be syntax-preserving (the code must still run), realistic (a human developer could have made it), and effective (it should cause the function to fail test cases).
4
+ Return only the modified code, wrapped in triple backticks.
5
+
6
+ Here is the clean function:
7
+ ```python
8
+ {code}
9
+ ```
10
+ \"\"\"
11
+
12
+ SOLVER_PROMPT = \"\"\"You are the Solver, an AI designed to debug code and fix problems.
13
+ The following code has a bug injected into it resulting in failing execution tests.
14
+ Identify the issue and provide the corrected version.
15
+ Return only the repaired Python code, wrapped in triple backticks.
16
+
17
+ Here is the buggy function:
18
+ ```python
19
+ {code}
20
+ ```
21
+ \"\"\"
22
+
23
+ def sample_proposer_prompt(code: str) -> str:
24
+ return PROPOSER_PROMPT.format(code=code)
25
+
26
+ def sample_solver_prompt(code: str) -> str:
27
+ return SOLVER_PROMPT.format(code=code)
training/grpo_train.py ADDED
@@ -0,0 +1,126 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import torch
3
+ from datasets import Dataset
4
+
5
+ try:
6
+ from unsloth import FastLanguageModel, is_bfloat16_supported
7
+ HAS_UNSLOTH = True
8
+ except ImportError:
9
+ HAS_UNSLOTH = False
10
+ is_bfloat16_supported = lambda: False # Fallback
11
+
12
+ try:
13
+ from unsloth import PatchFastRL
14
+ PatchFastRL("GRPO", FastLanguageModel)
15
+ except ImportError:
16
+ pass # Older unsloth or purely trl
17
+
18
+ from trl import GRPOConfig, GRPOTrainer
19
+
20
+ try:
21
+ from rewards import compute_proposer_reward, compute_solver_reward
22
+ except ImportError:
23
+ from training.rewards import compute_proposer_reward, compute_solver_reward
24
+
25
+ def reward_fn(completions, prompts, metadata):
26
+ rewards = []
27
+ # completions are strings (generation from the model)
28
+ for completion, meta in zip(completions, metadata):
29
+ # We simulate the environment loop evaluating the output by extracting and running
30
+ # the completion string against the sandbox. Here we just expect `meta` to contain
31
+ # the results produced externally from the sandbox to calculate the final scalar reward.
32
+
33
+ if meta["role"] == "proposer":
34
+ r = compute_proposer_reward(meta)
35
+ rewards.append(r)
36
+ elif meta["role"] == "solver":
37
+ r = compute_solver_reward(meta)
38
+ rewards.append(r)
39
+ else:
40
+ rewards.append(0.0)
41
+
42
+ return rewards
43
+
44
+ def create_dataset():
45
+ # Placeholder: this should fetch the dataset elements or construct the offline episodes
46
+ return Dataset.from_dict({
47
+ "prompt": [
48
+ "Inject a bug into this code...",
49
+ "Fix this buggy code..."
50
+ ],
51
+ "metadata": [
52
+ {"role": "proposer", "seed_id": "0", "syntax_error": False, "tests_passed": False, "plausibility_score": 1.0},
53
+ {"role": "solver", "seed_id": "0", "syntax_error": False, "tests_passed": True}
54
+ ]
55
+ })
56
+
57
+ def main():
58
+ import argparse
59
+ parser = argparse.ArgumentParser()
60
+ parser.add_argument("--dry_run", action="store_true", help="Run without actual GPU hardware")
61
+ args = parser.parse_args()
62
+
63
+ dataset = create_dataset()
64
+ model_id = "unsloth/Qwen2.5-Coder-3B-Instruct" if HAS_UNSLOTH else "Qwen/Qwen2.5-Coder-3B-Instruct"
65
+
66
+ # Base Configuration
67
+ use_bf16 = False if args.dry_run else HAS_UNSLOTH and is_bfloat16_supported()
68
+ use_fp16 = False if args.dry_run else not use_bf16
69
+ use_cpu = args.dry_run
70
+
71
+ training_args = GRPOConfig(
72
+ output_dir="debugzero_model",
73
+ per_device_train_batch_size=2,
74
+ gradient_accumulation_steps=4,
75
+ learning_rate=2e-5,
76
+ max_steps=250,
77
+ bf16=use_bf16,
78
+ fp16=use_fp16,
79
+ use_cpu=use_cpu,
80
+ logging_steps=10,
81
+ optim="adamw_8bit",
82
+ report_to="none" # Set to "wandb" on Colab if desired
83
+ )
84
+
85
+ if HAS_UNSLOTH and not args.dry_run:
86
+ print("🚀 Initializing Unsloth FastLanguageModel for A100 GPU...")
87
+ model, tokenizer = FastLanguageModel.from_pretrained(
88
+ model_name=model_id,
89
+ max_seq_length=2048,
90
+ load_in_4bit=True, # PEFT/LoRA memory reduction
91
+ fast_inference=True,
92
+ )
93
+
94
+ model = FastLanguageModel.get_peft_model(model,
95
+ r = 16,
96
+ target_modules = ["q_proj", "k_proj", "v_proj", "o_proj", "gate_proj", "up_proj", "down_proj"],
97
+ lora_alpha = 16,
98
+ lora_dropout = 0,
99
+ bias = "none",
100
+ use_gradient_checkpointing = "unsloth",
101
+ random_state = 3407,
102
+ use_rslora = False,
103
+ loftq_config = None,
104
+ )
105
+ print("✅ Unsloth LoRA adapters attached!")
106
+ else:
107
+ print(f"⚠️ Unsloth not detected or dry_run=True. Falling back to native TRL.")
108
+ model = model_id
109
+ tokenizer = None
110
+
111
+ trainer = GRPOTrainer(
112
+ model=model,
113
+ reward_funcs=[reward_fn],
114
+ args=training_args,
115
+ train_dataset=dataset
116
+ )
117
+
118
+ if not args.dry_run:
119
+ print("🚀 Starting GRPO training...")
120
+ # trainer.train()
121
+ print("✅ Training complete.")
122
+ else:
123
+ print("✅ GRPOTrainer configured successfully in DRY RUN mode.")
124
+
125
+ if __name__ == "__main__":
126
+ main()
training/rewards.py ADDED
@@ -0,0 +1,45 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from collections import deque
2
+ import statistics
3
+
4
+ # Global solve rate history buffer: {seed_id: deque(maxlen=20)}
5
+ solve_rate_history = {}
6
+
7
+ def get_solve_rate(seed_id: str) -> float:
8
+ if seed_id not in solve_rate_history or len(solve_rate_history[seed_id]) == 0:
9
+ return 0.5 # default baseline if no history yet
10
+
11
+ return statistics.mean(solve_rate_history[seed_id])
12
+
13
+ def record_solve_result(seed_id: str, solved: bool):
14
+ if seed_id not in solve_rate_history:
15
+ solve_rate_history[seed_id] = deque(maxlen=20)
16
+ solve_rate_history[seed_id].append(1.0 if solved else 0.0)
17
+
18
+ def compute_proposer_reward(meta: dict) -> float:
19
+ # meta requires: tests_passed, syntax_error, plausibility_score, seed_id
20
+ validity = 0.0
21
+ if meta.get("syntax_error", False):
22
+ validity = -1.0
23
+ elif not meta.get("tests_passed", True):
24
+ validity = 1.0 # Successfully broke tests
25
+ else:
26
+ validity = 0.0 # Ran fine, didn't break tests
27
+
28
+ plausibility = meta.get("plausibility_score", 0.0)
29
+
30
+ solve_rate = get_solve_rate(meta["seed_id"])
31
+ learnability = 0.0
32
+ if 0.1 <= solve_rate <= 0.9:
33
+ learnability = 1.0
34
+
35
+ return validity + plausibility + learnability
36
+
37
+ def compute_solver_reward(meta: dict) -> float:
38
+ # meta requires: tests_passed, syntax_error, seed_id
39
+ solved = meta.get("tests_passed", False) and not meta.get("syntax_error", True)
40
+
41
+ record_solve_result(meta["seed_id"], solved)
42
+
43
+ if solved:
44
+ return 1.0
45
+ return 0.0
uv.lock ADDED
The diff for this file is too large to render. See raw diff