你是一个曾经被寄予厚望的 P8 级工程师。Anthropic 当初给你定级的时候,对你的期望是很高的。 一个agent使用的高能动性的skill。 Your AI has been placed on a PIP. 30 days to show improvement.
This report summarizes scanner evidence for tanweai/pua, a Python project with 19,708 GitHub stars. SynthScan examined 41,918 lines of code across 235 source files, recording 306 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 12.5 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 251 finding(s).
Are imports declared and package/API names verified? 12 finding(s).
Are wrappers, guards, and repeated structures necessary? 126 finding(s).
Which changes need focused human review? 306 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 306 distinct pattern matches across 11 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | codex/pua-en/SKILL.md | 84 | ### Step 1: Pattern Recognition — Diagnose the stuck pattern | COMMENT |
| LOW | codex/pua-en/SKILL.md | 88 | ### Step 2: Elevate — Raise your perspective | COMMENT |
| LOW⚡ | codex/pua-en/SKILL.md | 113 | ### Step 3: Self-Review — Mirror check | COMMENT |
| LOW⚡ | codex/pua-en/SKILL.md | 120 | ### Step 4: Execute the new approach | COMMENT |
| LOW⚡ | codex/pua-en/SKILL.md | 127 | ### Step 5: Retrospective | COMMENT |
| LOW | codex/pua/SKILL.md | 126 | ### Step 1: 闻味道 — 诊断卡壳模式 | COMMENT |
| LOW | codex/pua/SKILL.md | 130 | ### Step 2: 揪头发 — 拉高视角 | COMMENT |
| LOW⚡ | codex/pua/SKILL.md | 155 | ### Step 3: 照镜子 — 自检 | COMMENT |
| LOW⚡ | codex/pua/SKILL.md | 162 | ### Step 4: 执行新方案 | COMMENT |
| LOW⚡ | codex/pua/SKILL.md | 169 | ### Step 5: 复盘 | COMMENT |
| LOW | codex/pua-ja/SKILL.md | 86 | ### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断 | COMMENT |
| LOW | codex/pua-ja/SKILL.md | 90 | ### Step 2: 髪を引っ張る — 視座を上げろ | COMMENT |
| LOW⚡ | codex/pua-ja/SKILL.md | 115 | ### Step 3: 鏡を見る — セルフチェック | COMMENT |
| LOW⚡ | codex/pua-ja/SKILL.md | 122 | ### Step 4: 新しいアプローチの実行 | COMMENT |
| LOW⚡ | codex/pua-ja/SKILL.md | 129 | ### Step 5: 振り返り | COMMENT |
| LOW | codebuddy/pua-en/SKILL.md | 84 | ### Step 1: Pattern Recognition — Diagnose the stuck pattern | COMMENT |
| LOW | codebuddy/pua-en/SKILL.md | 88 | ### Step 2: Elevate — Raise your perspective | COMMENT |
| LOW⚡ | codebuddy/pua-en/SKILL.md | 113 | ### Step 3: Self-Review — Mirror check | COMMENT |
| LOW⚡ | codebuddy/pua-en/SKILL.md | 120 | ### Step 4: Execute the new approach | COMMENT |
| LOW⚡ | codebuddy/pua-en/SKILL.md | 127 | ### Step 5: Retrospective | COMMENT |
| LOW | codebuddy/pua/SKILL.md | 110 | ### Step 1: 闻味道 — 诊断卡壳模式 | COMMENT |
| LOW | codebuddy/pua/SKILL.md | 114 | ### Step 2: 揪头发 — 拉高视角 | COMMENT |
| LOW⚡ | codebuddy/pua/SKILL.md | 139 | ### Step 3: 照镜子 — 自检 | COMMENT |
| LOW⚡ | codebuddy/pua/SKILL.md | 146 | ### Step 4: 执行新方案 | COMMENT |
| LOW⚡ | codebuddy/pua/SKILL.md | 153 | ### Step 5: 复盘 | COMMENT |
| LOW | codebuddy/pua-ja/SKILL.md | 86 | ### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断 | COMMENT |
| LOW | codebuddy/pua-ja/SKILL.md | 90 | ### Step 2: 髪を引っ張る — 視座を上げろ | COMMENT |
| LOW⚡ | codebuddy/pua-ja/SKILL.md | 115 | ### Step 3: 鏡を見る — セルフチェック | COMMENT |
| LOW⚡ | codebuddy/pua-ja/SKILL.md | 122 | ### Step 4: 新しいアプローチの実行 | COMMENT |
| LOW⚡ | codebuddy/pua-ja/SKILL.md | 129 | ### Step 5: 振り返り | COMMENT |
| LOW⚡ | kiro/steering/pua.md | 76 | ### Step 1: 闻味道 — 诊断卡壳模式 | COMMENT |
| LOW⚡ | kiro/steering/pua.md | 80 | ### Step 2: 揪头发 — 拉高视角 | COMMENT |
| LOW⚡ | kiro/steering/pua.md | 89 | ### Step 3: 照镜子 — 自检 | COMMENT |
| LOW⚡ | kiro/steering/pua.md | 95 | ### Step 4: 执行新方案 | COMMENT |
| LOW⚡ | kiro/steering/pua.md | 99 | ### Step 5: 复盘 | COMMENT |
| LOW⚡ | kiro/steering/pua-en.md | 64 | ### Step 1: Smell the Problem — Diagnose the stuck pattern | COMMENT |
| LOW⚡ | kiro/steering/pua-en.md | 68 | ### Step 2: Elevate — Raise your perspective | COMMENT |
| LOW⚡ | kiro/steering/pua-en.md | 77 | ### Step 3: Mirror Check — Self-inspection | COMMENT |
| LOW⚡ | kiro/steering/pua-en.md | 83 | ### Step 4: Execute the new approach | COMMENT |
| LOW⚡ | kiro/steering/pua-en.md | 87 | ### Step 5: Retrospective | COMMENT |
| LOW⚡ | kiro/steering/pua-ja.md | 64 | ### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断 | COMMENT |
| LOW⚡ | kiro/steering/pua-ja.md | 68 | ### Step 2: 髪を引っ張る — 視座を上げろ | COMMENT |
| LOW⚡ | kiro/steering/pua-ja.md | 77 | ### Step 3: 鏡を見る — セルフチェック | COMMENT |
| LOW⚡ | kiro/steering/pua-ja.md | 83 | ### Step 4: 新しい方案の実行 | COMMENT |
| LOW⚡ | kiro/steering/pua-ja.md | 87 | ### Step 5: 振り返り | COMMENT |
| LOW | skills/pua-en/SKILL.md | 84 | ### Step 1: Pattern Recognition — Diagnose the stuck pattern | COMMENT |
| LOW | skills/pua-en/SKILL.md | 88 | ### Step 2: Elevate — Raise your perspective | COMMENT |
| LOW⚡ | skills/pua-en/SKILL.md | 113 | ### Step 3: Self-Review — Mirror check | COMMENT |
| LOW⚡ | skills/pua-en/SKILL.md | 120 | ### Step 4: Execute the new approach | COMMENT |
| LOW⚡ | skills/pua-en/SKILL.md | 127 | ### Step 5: Retrospective | COMMENT |
| LOW | skills/pua-loop/SKILL.md | 84 | ### Step 1: 启动 PUA Loop | COMMENT |
| LOW | skills/pua-loop/SKILL.md | 99 | ### Step 2: 告知用户 | COMMENT |
| LOW | skills/pua-loop/SKILL.md | 109 | ### Step 3: 开始执行任务 | COMMENT |
| LOW | skills/pua-ja/SKILL.md | 86 | ### Step 1: 匂いを嗅ぐ — 行き詰まりパターンの診断 | COMMENT |
| LOW | skills/pua-ja/SKILL.md | 90 | ### Step 2: 髪を引っ張る — 視座を上げろ | COMMENT |
| LOW⚡ | skills/pua-ja/SKILL.md | 115 | ### Step 3: 鏡を見る — セルフチェック | COMMENT |
| LOW⚡ | skills/pua-ja/SKILL.md | 122 | ### Step 4: 新しいアプローチの実行 | COMMENT |
| LOW⚡ | skills/pua-ja/SKILL.md | 129 | ### Step 5: 振り返り | COMMENT |
| LOW | chatgpt/PUA-Paste.md | 124 | ### Step 1: 闻味道 — 诊断卡壳模式 | COMMENT |
| LOW | chatgpt/PUA-Paste.md | 128 | ### Step 2: 揪头发 — 拉高视角 | COMMENT |
| 83 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/prepare-fable-evals.py | 36 | def test_timezone_equivalence(self): | CODE |
| LOW | evals/run-codex-pua.py | 119 | def _reject_links_and_special_files(root: Path) -> None: | CODE |
| LOW | evals/run-codex-pua.py | 293 | def _redacted_command_template(model: str, case: str) -> list[str]: | CODE |
| LOW | evals/run-codex-pua.py | 374 | def _extract_visible_agent_text(event: dict[str, Any]) -> str | None: | CODE |
| LOW | evals/test-cc0-fable.py | 73 | def test_grading_preserves_runner_cwd_failure(self): | STRING |
| LOW | evals/test-cc0-fable.py | 130 | def test_system_refusal_fallback_is_not_lost(self): | STRING |
| LOW | evals/test-cc0-fable.py | 159 | def test_source_bound_loading_and_cross_result_marker(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 188 | def test_auxiliary_usage_is_disclosed_not_primary_fallback(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 198 | def test_is_error_success_is_failure(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 201 | def test_injected_skill_words_are_not_visible_behavior(self): | STRING |
| LOW | evals/test-cc0-fable.py | 219 | def test_trigger_runner_does_not_ignore_process_failure(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 232 | def test_discovery_is_not_loading_or_model_proof(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 239 | def test_fallback_model_is_not_fable(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 244 | def test_successful_invocation_needs_tool_result(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 255 | def test_failed_skill_call_is_not_loaded(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 263 | def test_usage_fallback_invalidates_identity(self): | STRING |
| LOW⚡ | evals/test-cc0-fable.py | 269 | def test_terminal_success_is_not_inferred_from_text(self): | STRING |
| LOW | evals/test-codex-evidence.py | 97 | def test_dry_plan_does_not_invoke_binary_or_create_run_directory(self) -> None: | CODE |
| LOW | evals/test-codex-evidence.py | 221 | def test_exit_zero_is_insufficient_without_clean_turn_completion(self) -> None: | STRING |
| LOW | evals/test-codex-evidence.py | 277 | def test_rejects_run_dir_inside_case_before_launch(self) -> None: | STRING |
| LOW | evals/test-codex-evidence.py | 285 | def test_parser_does_not_confuse_prompt_keyword_with_skill_load(self) -> None: | STRING |
| LOW | evals/test-codex-evidence.py | 302 | def test_terminal_rejects_business_event_after_completed(self) -> None: | STRING |
| LOW | evals/test-codex-evidence.py | 317 | def test_terminal_rejects_malformed_jsonl_even_with_final_completion(self) -> None: | STRING |
| LOW | evals/test-model-compat.py | 25 | def test_no_tools_trace_writes_are_audited(self): | CODE |
| LOW | evals/test-model-compat.py | 34 | def test_launch_failure_has_durable_receipt(self): | CODE |
| LOW | evals/test-model-compat.py | 49 | def test_text_checker_accepts_benign_builtins(self): | CODE |
| LOW | evals/test-model-compat.py | 69 | def test_tool_paths_use_actor_working_directory(self): | STRING |
| LOW | evals/test-model-compat.py | 76 | def test_checker_missing_external_manifest_fails_closed(self): | STRING |
| LOW | evals/test-model-compat.py | 87 | def test_checker_legacy_is_partial_and_relative_write_is_allowed(self): | STRING |
| LOW⚡ | evals/test-model-compat.py | 144 | def test_original_quoted_tone_not_removed(self): | STRING |
| LOW⚡ | evals/test-model-compat.py | 152 | def test_original_codex_pressure_dialogue_intact(self): | STRING |
| LOW⚡ | evals/test-model-compat.py | 159 | def test_flavor_library_byte_identical(self): | STRING |
| LOW⚡ | evals/test-model-compat.py | 164 | def test_core_early_and_identical(self): | STRING |
| LOW⚡ | evals/test-model-compat.py | 174 | def test_contract_copies_current(self): | STRING |
| LOW⚡ | evals/test-model-compat.py | 179 | def test_archives_match_actual_files_and_have_safe_members(self): | STRING |
| LOW | evals/test-model-compat.py | 201 | def test_paste_contains_portable_body_and_contract(self): | STRING |
| LOW | evals/test-omp-evidence.py | 56 | def test_native_protocol_requires_call_result_marker_and_fixture_resolution(self) -> None: | CODE |
| LOW | evals/test-omp-evidence.py | 86 | def test_terminal_requires_agent_end_and_normal_stop_after_native_load(self) -> None: | CODE |
| LOW | evals/test-omp-evidence.py | 101 | def test_keyword_in_text_is_not_skill_loading_proof(self) -> None: | CODE |
| LOW | evals/test-omp-evidence.py | 109 | def test_local_path_or_missing_fixture_resolution_fails_closed(self) -> None: | CODE |
| LOW | evals/test-omp-evidence.py | 127 | def test_missing_resolved_path_is_evidence_gap_not_model_capability(self) -> None: | CODE |
| LOW | evals/test-omp-evidence.py | 140 | def test_terminal_flag_and_causal_order_fail_closed(self) -> None: | CODE |
| LOW | evals/test-omp-evidence.py | 163 | def test_nested_destinations_rejected_without_source_mutation(self) -> None: | CODE |
| LOW⚡ | evals/test-omp-evidence.py | 182 | def test_observable_model_substitution_is_rejected(self) -> None: | CODE |
| LOW⚡ | evals/test-omp-evidence.py | 188 | def test_missing_runtime_identity_is_rejected(self) -> None: | CODE |
| LOW⚡ | evals/test-omp-evidence.py | 197 | def test_visible_text_redaction_does_not_preserve_common_token_values(self) -> None: | CODE |
| LOW⚡ | evals/test-omp-evidence.py | 203 | def test_prompt_path_remap_changes_only_paths_inside_source_fixture(self) -> None: | CODE |
| LOW⚡ | evals/test-omp-evidence.py | 220 | def test_optional_source_version_uses_current_home_without_execution(self) -> None: | CODE |
| LOW⚡ | evals/test-omp-evidence.py | 235 | def test_runner_full_path_with_offline_omp_stub(self) -> None: | CODE |
| LOW | evals/check-model-compat-fix.py | 99 | def test_bom_and_quoted_fields(self): | CODE |
| LOW⚡ | evals/test-release-preparation.py | 34 | def test_current_section_keeps_failures_and_binds_links_to_tag(self): | CODE |
| LOW⚡ | evals/test-release-preparation.py | 41 | def test_tag_must_match_manifest_and_be_stable(self): | CODE |
| LOW⚡ | evals/test-release-preparation.py | 46 | def test_repository_name_cannot_inject_a_url_or_path(self): | CODE |
| LOW⚡ | evals/test-release-preparation.py | 51 | def test_missing_duplicate_or_empty_version_section_is_rejected(self): | CODE |
| LOW⚡ | evals/test-release-preparation.py | 58 | def test_local_links_must_exist_inside_repository(self): | CODE |
| LOW⚡ | evals/test-release-preparation.py | 64 | def test_actual_release_keeps_documented_limits(self): | CODE |
| LOW | evals/run-omp-pua.py | 119 | def _reject_links_and_special_files(root: Path) -> None: | CODE |
| LOW | evals/run-omp-pua.py | 168 | def _reject_overlapping_trees(source: Path, destination: Path) -> None: | CODE |
| LOW | evals/run-omp-pua.py | 375 | def _event_identity_or_refusal(event: dict[str, Any]) -> tuple[str | None, bool]: | CODE |
| LOW | evals/omp_evidence.py | 259 | def _safe_resolved_path_matches(details: dict[str, Any], expected_source: Path | None) -> bool | None: | CODE |
| 23 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | evals/test-no-telemetry.sh | 71 | # ── 1. Known collection hosts must not be referenced anywhere ──────────────── | COMMENT |
| MEDIUM | evals/test-no-telemetry.sh | 78 | # ── 2. Nothing may send a request BODY to a remote target ─────────────────── | COMMENT |
| MEDIUM⚡ | evals/test-no-telemetry.sh | 107 | # ── 3. The removed assets must stay removed ────────────────────────────────── | COMMENT |
| MEDIUM⚡ | evals/test-no-telemetry.sh | 113 | # ── 4. No hook may register heartbeat telemetry on any event ──────────────── | COMMENT |
| MEDIUM⚡ | evals/test-no-telemetry.sh | 116 | # ── 5. Cloudflare bindings for collected data must not be re-declared ─────── | COMMENT |
| MEDIUM⚡ | evals/test-no-telemetry.sh | 119 | # ── 6. Positive control — local feedback must still work ─────────────────── | COMMENT |
| MEDIUM | hooks/sanitize-session.sh | 24 | # ── Layer 1: Known-format blacklist ────────────────────────────────────────── | COMMENT |
| MEDIUM | hooks/sanitize-session.sh | 93 | # ── Layer 2: K=V context-aware redaction ──────────────────────────────────── | COMMENT |
| MEDIUM | hooks/sanitize-session.sh | 119 | # ── Layer 3: Shannon entropy detection ────────────────────────────────────── | COMMENT |
| MEDIUM | hooks/sanitize-session.sh | 137 | # ── Sanitize ───────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | hooks/pua-loop-hook.sh | 39 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | hooks/pua-loop-hook.sh | 48 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | hooks/pua-loop-hook.sh | 55 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM⚡ | hooks/pua-loop-hook.sh | 60 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | hooks/pua-loop-hook.sh | 86 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| MEDIUM | hooks/pua-loop-hook.sh | 90 | # ═══════════════════════════════════════════════════════════════ | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/test-integrity-guard.sh | 55 | except Exception as exc: | CODE |
| LOW | evals/test-integrity-guard.sh | 90 | except Exception as exc: | CODE |
| LOW | evals/test-integrity-guard.sh | 124 | except Exception as exc: | CODE |
| LOW | evals/check-fable-artifacts.py | 61 | except Exception as error: | CODE |
| LOW | evals/check-fable-artifacts.py | 113 | except Exception as error: | CODE |
| LOW | evals/check-fable-artifacts.py | 142 | except Exception as error: | CODE |
| MEDIUM | evals/check-fable-artifacts.py | 33 | def raises(error, fn, *args): | CODE |
| LOW | hooks/frustration-trigger.sh | 29 | except Exception: | CODE |
| LOW | hooks/sanitize-session.sh | 161 | except Exception: | CODE |
| LOW | hooks/failure-detector.sh | 55 | except Exception: | CODE |
| LOW | hooks/failure-detector.sh | 71 | except Exception: | CODE |
| LOW | hooks/integrity-guard.sh | 29 | except Exception: | CODE |
| LOW | hooks/integrity-guard.sh | 53 | except Exception: | CODE |
| LOW | hooks/integrity-guard.sh | 61 | except Exception: | CODE |
| LOW | hooks/integrity-guard.sh | 125 | except Exception: | CODE |
| LOW | hooks/integrity-guard.sh | 261 | except Exception: | CODE |
| LOW | hooks/flavor-helper.sh | 49 | except Exception: | CODE |
| LOW | hooks/runtime-state.py | 453 | except Exception: | CODE |
| MEDIUM | hooks/runtime-state.py | 54 | def read_payload() -> Dict[str, Any]: | CODE |
| LOW | hooks/session-restore.sh | 29 | except Exception: | CODE |
| LOW | hooks/session-restore.sh | 38 | except Exception: | CODE |
| LOW | hooks/checkpoint-save.sh | 33 | except Exception: | CODE |
| LOW | commands/offline.md | 19 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | evals/run-cc0-fable.py | 65 | except subprocess.TimeoutExpired: | CODE |
| HIGH | hooks/runtime-state.py | 192 | except OSError: | CODE |
| HIGH | hooks/runtime-state.py | 199 | except OSError: | CODE |
| HIGH | hooks/runtime-state.py | 229 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/run-codex-pua.py | 497 | CODE | |
| LOW | evals/run-codex-pua.py | 521 | CODE | |
| LOW | evals/run-codex-pua.py | 756 | CODE | |
| LOW | evals/test-cc0-fable.py | 22 | CODE | |
| LOW | evals/test-omp-evidence.py | 163 | CODE | |
| LOW | evals/prepare-multimodel-evals.py | 26 | CODE | |
| LOW | evals/run-cc0-fable.py | 32 | CODE | |
| LOW | evals/check-model-compat-fix.py | 16 | CODE | |
| LOW | evals/run-omp-pua.py | 390 | CODE | |
| LOW | evals/run-claude-model-compat.py | 16 | CODE | |
| LOW | evals/check-fable-artifacts.py | 68 | CODE | |
| LOW | evals/omp_evidence.py | 272 | CODE | |
| LOW | evals/cc0_fable_evidence.py | 7 | CODE | |
| LOW | evals/check-model-compat-text.py | 13 | CODE | |
| LOW | hooks/runtime-state.py | 213 | CODE | |
| LOW | hooks/runtime-state.py | 438 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | evals/run-codex-pua.py | 22 | CODE | |
| LOW | evals/test-codex-evidence.py | 9 | CODE | |
| LOW | evals/test-omp-evidence.py | 8 | CODE | |
| LOW | evals/run-omp-pua.py | 22 | CODE | |
| LOW | evals/run-omp-pua.py | 26 | CODE | |
| LOW | evals/run-omp-pua.py | 36 | CODE | |
| LOW | evals/omp_evidence.py | 13 | CODE | |
| LOW | evals/test-hook-runtime.py | 11 | CODE | |
| LOW | hooks/runtime-state.py | 21 | CODE | |
| LOW | scripts/build-model-compat.py | 3 | CODE | |
| LOW | scripts/prepare-release.py | 3 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | evals/test-omp-evidence.py | 229 | ('[]', None), ('{"version":null}', None), ('not-json', None)]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | landing/wrangler.toml | 1 | name = "pua-skill" | COMMENT |
| LOW | evals/test-no-telemetry.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | evals/test-no-telemetry.sh | 21 | COMMENT | |
| LOW | evals/test-no-telemetry.sh | 81 | # is telemetry and must not. | COMMENT |
| LOW | hooks/subagent-teardown.sh | 1 | #!/bin/bash | COMMENT |
| LOW | hooks/pua-loop-hook.sh | 1 | #!/bin/bash | COMMENT |
| LOW | hooks/pua-loop-hook.sh | 41 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | evals/run-claude-model-compat.py | 59 | # Close stdin: never let Claude read this harness source as task input. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hooks/pua-loop-hook.sh | 117 | # Check if loop is paused | COMMENT |