AI가 쓴 한글을 사람 글처럼 윤문하는 Claude 스킬 — Korean AI-text humanizer: detects and rewrites translationese, mechanical parallelism, and 71 other AI tells
This report summarizes scanner evidence for epoko77-ai/im-not-ai, a Python project with 5,934 GitHub stars. SynthScan examined 25,138 lines of code across 132 source files, recording 584 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 40.8 (High 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? 332 finding(s).
Are imports declared and package/API names verified? 69 finding(s).
Are wrappers, guards, and repeated structures necessary? 495 finding(s).
Which changes need focused human review? 584 finding(s).
Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.
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 584 distinct pattern matches across 10 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 |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_eval_compare.py | 24 | # ── pooled == 0 (K=1이었거나 두 스냅샷 모두 완전히 결정적) ────────── | COMMENT |
| MEDIUM⚡ | tests/test_eval_compare.py | 31 | # ── delta가 잡음 바닥(threshold * pooled) 이내면 잡음 ─────────────── | COMMENT |
| MEDIUM⚡ | tests/test_verify_gates.py | 124 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_verify_gates.py | 126 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_verify_gates.py | 34 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_verify_gates.py | 36 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_verify_gates.py | 100 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_verify_gates.py | 102 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_verify_gates.py | 225 | # =========================================================================== | COMMENT |
| MEDIUM | tests/test_verify_gates.py | 227 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 30 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 32 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 43 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 45 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 63 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 65 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 81 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 83 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 93 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 95 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 110 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 112 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 126 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 128 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 207 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM⚡ | tests/test_metrics.py | 209 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | tests/test_chunking.py | 37 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_chunking.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_chunking.py | 98 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_chunking.py | 100 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_install_smoke.sh | 44 | # ── 1. 심링크 설치: 스킬 3종 + references 층이 실제로 도달 가능한가 ────────── | COMMENT |
| MEDIUM | tests/test_install_smoke.sh | 79 | # ── 2. #71 — 상대 --run-dir 은 cwd 기준이어야 한다 ────────────────────────── | COMMENT |
| MEDIUM | tests/test_install_smoke.sh | 99 | # ── 3. #59 — tests/ 없는 선별 배포에서 게이트 전 축이 살아있는가 ───────────── | COMMENT |
| MEDIUM | tests/test_install_smoke.sh | 127 | # ── 4. --copy 설치: references 심링크가 실체화되는가 ──────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_golden_commit.py | 95 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_golden_commit.py | 97 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 53 | # ── 2. 제로폭·BOM·소프트하이픈·워드조이너 제거 ──────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 61 | # ── 3. 이모지 ZWJ 보존 / 한글 사이 ZWJ 제거 ─────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 73 | # ── 4. bidi 제어 문자 ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 80 | # ── 5. 태그 문자(숨은 텍스트) ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 87 | # ── 6. 한글 NFD → NFC ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 97 | # ── 7. 특수 공백 (전각공백은 기본 보존) ─────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 110 | # ── 8. 줄바꿈·줄 끝 공백 (빈 줄은 기본 보존) ────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 124 | # ── 9. 멱등성 ───────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 137 | # ── 10. 옵션 개별 off ───────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 147 | # ── 11. 보호 대상 — 철칙 #1 (의미 불변) ─────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 164 | # ── 12. inspect 는 원본을 바꾸지 않는다 ─────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 171 | # ── 13. 빈 입력 ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_sanitize.py | 178 | # ── 14. 소스 자체에 리터럴 비가시 문자가 없어야 한다 ────────────── | COMMENT |
| MEDIUM | tests/test_sanitize.py | 36 | # ── 1. 정상 한국어는 건드리지 않는다 (가장 중요) ────────────────── | COMMENT |
| MEDIUM | tests/test_install_flags.sh | 88 | # ── 구버전 링크 정리 (#73) ───────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/test_install_flags.sh | 113 | # ── 실설치 절 — 심링크 사후 검증 (M20) ──────────────────────────────── | COMMENT |
| MEDIUM⚡ | tests/test_metrics_v2.py | 38 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_metrics_v2.py | 40 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_metrics_v2.py | 146 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_metrics_v2.py | 148 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_golden.py | 44 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_golden.py | 46 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_golden.py | 101 | # =========================================================================== | COMMENT |
| MEDIUM⚡ | tests/test_golden.py | 103 | # =========================================================================== | COMMENT |
| 102 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_quick_rules_build.py | 34 | def test_every_pattern_has_quick_meta(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 41 | def test_quick_rules_is_up_to_date(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 53 | def test_generated_ids_are_subset_of_taxonomy(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 80 | def test_every_quick_meta_line_is_attributed(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 96 | def test_every_pattern_heading_uses_three_hashes(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 119 | def test_current_count_is_within_budget(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 132 | def test_guard_matches_taxonomy_policy(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 149 | def test_ceiling_derives_from_policy(self) -> None: | CODE |
| LOW | tests/test_quick_rules_build.py | 158 | def test_policy_parser_rejects_missing_sentence(self) -> None: | CODE |
| LOW⚡ | tests/test_eval_compare.py | 25 | def test_pooled_zero_delta_zero_is_identical(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 28 | def test_pooled_zero_delta_nonzero_is_undecidable(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 32 | def test_delta_within_noise_floor_is_noise(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 37 | def test_delta_beyond_noise_floor_is_significant(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 41 | def test_threshold_is_configurable(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 51 | def test_returns_none_when_metric_missing_or_not_dict(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 57 | def test_lower_is_better_metric_flags_direction(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 72 | def test_direction_agnostic_metric_never_labels_direction(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 81 | def test_noise_range_change_has_no_direction_even_for_directional_metric(self): | CODE |
| LOW⚡ | tests/test_eval_compare.py | 89 | def test_delta_and_noise_floor_rounding(self): | CODE |
| LOW⚡ | tests/test_version_sync.py | 50 | def test_claude_plugin_json_matches_skill(self) -> None: | CODE |
| LOW⚡ | tests/test_version_sync.py | 59 | def test_copilot_plugin_json_matches_skill(self) -> None: | CODE |
| LOW⚡ | tests/test_version_sync.py | 68 | def test_marketplace_metadata_matches_skill(self) -> None: | CODE |
| LOW⚡ | tests/test_version_sync.py | 76 | def test_marketplace_entry_matches_skill(self) -> None: | CODE |
| LOW | tests/test_version_sync.py | 107 | def test_no_retired_architecture_terms(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 58 | def test_overcorrected_is_warn(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 63 | def test_partial_improvement_passes(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 68 | def test_after_none_is_undecidable_not_warn(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 73 | def test_no_anchor_when_before_below_threshold(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 81 | def test_lexical_diversity_never_selected(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 88 | def test_multiple_anchors_reported(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 113 | def test_partial_touch_counted(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 120 | def test_empty_before_is_safe(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 263 | def test_deontic_to_assertion_drops_marker(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 270 | def test_hedge_to_assertion_drops_marker(self) -> None: | CODE |
| LOW⚡ | tests/test_verify_gates.py | 276 | def test_hedge_inventory_covers_observation_endings(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 164 | def test_annihilation_skipped_when_before_sparse(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 179 | def test_korean_unit_swap_not_injected(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 200 | def test_summary_block_stripped_before_judging(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 204 | def test_json_flag_emits_parseable_report(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 238 | def test_counts_deontic_and_hedge(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 245 | def test_move_preserves_markers(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 298 | def test_deontic_inventory_covers_closing_obligation(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 321 | def test_deontic_inventory_excludes_copula_and_demonstratives(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 347 | def test_hedge_inventory_excludes_catalog_removal_targets(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 365 | def test_hedge_inventory_excludes_perception_and_compound_nouns(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 376 | def test_gate_warns_on_modality_loss(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 384 | def test_pairwise_catches_loss_masked_by_offsetting_gain(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 403 | def test_pairwise_ignores_deleted_cliche_sentence(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 423 | def test_gate_ok_when_modality_kept(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 445 | def test_deontic_inventory_covers_haeyo_forms(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 467 | def test_deontic_excludes_noun_plus_hae_word(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 491 | def test_deontic_covers_contracted_stems(self) -> None: | CODE |
| LOW | tests/test_verify_gates.py | 508 | def test_deontic_inventory_excludes_copula_iya_with_haeyo(self) -> None: | CODE |
| LOW⚡ | tests/test_restore_modality.py | 19 | def test_restores_hedge_flattened_to_assertion(self) -> None: | CODE |
| LOW⚡ | tests/test_restore_modality.py | 27 | def test_restores_deontic_flattened_to_fact(self) -> None: | CODE |
| LOW⚡ | tests/test_restore_modality.py | 35 | def test_keeps_output_when_modality_preserved(self) -> None: | CODE |
| LOW⚡ | tests/test_restore_modality.py | 43 | def test_skips_when_sentences_merged(self) -> None: | CODE |
| LOW | tests/test_restore_modality.py | 57 | def test_skips_when_single_sentence_absorbs_new_content(self) -> None: | CODE |
| LOW | tests/test_restore_modality.py | 68 | def test_skips_when_sentence_split_in_two(self) -> None: | CODE |
| LOW | tests/test_restore_modality.py | 81 | def test_summary_block_does_not_hide_loss(self) -> None: | CODE |
| 251 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/humanize_asserts.py | 7 | CODE | |
| LOW | tests/test_quick_rules_build.py | 10 | CODE | |
| LOW | tests/test_metrics_v2_import.py | 12 | CODE | |
| LOW | tests/test_eval_compare.py | 12 | CODE | |
| LOW | tests/test_version_sync.py | 13 | CODE | |
| LOW | tests/test_verify_gates.py | 9 | CODE | |
| LOW | tests/test_verify_gates.py | 14 | CODE | |
| LOW | tests/test_restore_modality.py | 7 | CODE | |
| LOW | tests/test_humanize_scan.py | 9 | CODE | |
| LOW | tests/test_metrics.py | 7 | CODE | |
| LOW | tests/test_humanize_live.py | 14 | CODE | |
| LOW | tests/test_route_hint.py | 17 | CODE | |
| LOW | tests/test_strip_injected_commas.py | 3 | CODE | |
| LOW | tests/test_plugin_manifests.py | 3 | CODE | |
| LOW | tests/test_console_encoding.py | 17 | CODE | |
| LOW | tests/test_chunking.py | 12 | CODE | |
| LOW | tests/test_commit_msg_lint.py | 12 | CODE | |
| LOW | tests/test_corruption_engine.py | 2 | CODE | |
| LOW | tests/test_runtime_boundary.py | 14 | CODE | |
| LOW | tests/test_runtime_boundary.py | 16 | CODE | |
| LOW | tests/test_runtime_boundary.py | 17 | CODE | |
| LOW | tests/humanize_runner.py | 8 | CODE | |
| LOW | tests/test_humanize_e2e.py | 9 | CODE | |
| LOW | tests/test_diagnosis_rules_build.py | 12 | CODE | |
| LOW | tests/test_golden_commit.py | 16 | CODE | |
| LOW | tests/test_agent_inventory.py | 9 | CODE | |
| LOW | tests/generate_fixtures.py | 14 | CODE | |
| LOW | tests/test_sanitize.py | 9 | CODE | |
| LOW | tests/test_pr94_residual.py | 8 | CODE | |
| LOW | tests/test_run_dir_resolution.py | 12 | CODE | |
| LOW | tests/test_run_dir_resolution.py | 14 | CODE | |
| LOW | tests/test_content_anchor_contract.py | 14 | CODE | |
| LOW | tests/test_humanize_asserts.py | 6 | CODE | |
| LOW | tests/test_commit_lexicon_ids.py | 12 | CODE | |
| LOW | tests/test_metrics_v2.py | 12 | CODE | |
| LOW | tests/test_run_dir_allocation.py | 11 | CODE | |
| LOW | tests/test_golden.py | 16 | CODE | |
| LOW | tests/test_codex_package.py | 3 | CODE | |
| LOW | tests/golden_commit/commit_checks.py | 33 | CODE | |
| LOW | scripts/build_diagnosis_rules.py | 28 | CODE | |
| LOW | scripts/console.py | 22 | CODE | |
| LOW | scripts/build_social_preview_v2_3.py | 9 | CODE | |
| LOW | scripts/checks.py | 40 | CODE | |
| LOW | scripts/build_social_preview_v2.py | 8 | CODE | |
| LOW | scripts/build_social_preview_v2.py | 10 | CODE | |
| LOW | scripts/build_calibration.py | 34 | CODE | |
| LOW | scripts/check_commit_lexicon_ids.py | 24 | CODE | |
| LOW | scripts/verify_change_rate.py | 27 | CODE | |
| LOW | scripts/prepare_monolith_input.py | 36 | CODE | |
| LOW | scripts/prepare_monolith_input.py | 41 | CODE | |
| LOW | scripts/eval_baseline.py | 36 | CODE | |
| LOW | scripts/eval_baseline.py | 40 | CODE | |
| LOW | scripts/build_quick_rules.py | 26 | CODE | |
| LOW | scripts/eval_compare.py | 30 | CODE | |
| LOW | scripts/strip_injected_commas.py | 21 | CODE | |
| LOW | scripts/corruption_engine.py | 35 | CODE | |
| LOW | scripts/reassemble_chunks.py | 24 | CODE | |
| LOW | scripts/verify_gates.py | 40 | CODE | |
| LOW | scripts/sanitize_text.py | 34 | CODE | |
| LOW | scripts/commit_msg_lint.py | 23 | CODE | |
| 8 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …x/skills/humanize-korean/scripts/verify_change_rate.py | 0 | development/symlink-install launcher for the shared runtime script. | STRING |
| HIGH | …ills/humanize-korean/scripts/prepare_monolith_input.py | 0 | development/symlink-install launcher for the shared runtime script. | STRING |
| HIGH | …ex/skills/humanize-korean/scripts/reassemble_chunks.py | 0 | development/symlink-install launcher for the shared runtime script. | STRING |
| HIGH | codex/skills/humanize-korean/scripts/verify_gates.py | 0 | development/symlink-install launcher for the shared runtime script. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/console.py | 41 | except (ValueError, OSError): | CODE |
| HIGH | scripts/checks.py | 336 | except ValueError: | CODE |
| HIGH | scripts/prepare_monolith_input.py | 980 | except OSError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/prepare_monolith_input.py | 64 | except Exception: # pragma: no cover | CODE |
| LOW⚡ | scripts/prepare_monolith_input.py | 67 | except Exception: | CODE |
| LOW | scripts/prepare_monolith_input.py | 150 | except Exception: # noqa: BLE001 — 위생 처리 실패는 파이프라인을 막지 않는다. | CODE |
| LOW | scripts/prepare_monolith_input.py | 161 | except Exception: # noqa: BLE001 — graceful degrade. | CODE |
| LOW | scripts/prepare_monolith_input.py | 770 | except Exception: # noqa: BLE001 — 권고 산출 실패는 치명 아님. | CODE |
| LOW | scripts/prepare_monolith_input.py | 834 | except Exception as exc: # noqa: BLE001 — graceful degrade. | CODE |
| LOW | scripts/prepare_monolith_input.py | 982 | except Exception as exc: # noqa: BLE001 — graceful degrade is the point. | CODE |
| LOW | scripts/eval_baseline.py | 58 | except Exception: # noqa: BLE001 | CODE |
| LOW | scripts/eval_baseline.py | 86 | except Exception: # noqa: BLE001 | CODE |
| LOW | scripts/eval_baseline.py | 93 | except Exception: # noqa: BLE001 | CODE |
| LOW | scripts/eval_baseline.py | 107 | except Exception: # noqa: BLE001 | CODE |
| LOW | scripts/eval_baseline.py | 221 | except Exception as exc: # noqa: BLE001 | CODE |
| MEDIUM | scripts/eval_baseline.py | 77 | def _git_commit() -> str: | CODE |
| LOW | scripts/verify_gates.py | 312 | except Exception as e: # graceful degrade — 이 축만 판정 불가 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 101 | elif [ -e "$dest" ]; then | COMMENT |
| LOW | tests/test_install_smoke.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/prepare_monolith_input.py | 181 | # 함께 산출해 오케스트레이터가 경로를 정하게 한다. route_hint 는 **권고**다 — | COMMENT |
| LOW | scripts/prepare_monolith_input.py | 481 | # 1. 헤딩 줄 앞 강제 컷 — 헤딩은 반드시 다음 청크의 첫 줄이 된다. | COMMENT |
| LOW | scripts/verify_gates.py | 121 | # | COMMENT |
| LOW | scripts/verify_gates.py | 161 | r"|했어요|했어|해요|해서|해도|하지요|하죠|해)" | COMMENT |
| LOW | scripts/verify_gates.py | 181 | r"|촉구한다|당부한다" | COMMENT |
| LOW | scripts/verify_gates.py | 361 | f"(문장 병합·표기 통합이면 정상 — exit 미반영, 확인 요망)") | COMMENT |
| LOW | .github/workflows/test.yml | 21 | # quick-rules.md가 taxonomy(SSOT)에서 재생성한 것과 일치하는지 검사. | COMMENT |
| LOW | skills/humanize-korean/references/metrics_v2.py | 121 | # 어미는 NFC 결합형(된다=된+다)으로 표면화되므로 음절 단위로 열거하고, | COMMENT |
| LOW | skills/humanize-korean/references/metrics_v2.py | 141 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/prepare_monolith_input.py | 611 | CODE | |
| LOW | scripts/prepare_monolith_input.py | 748 | CODE | |
| LOW | scripts/prepare_monolith_input.py | 893 | CODE | |
| LOW | scripts/eval_baseline.py | 165 | CODE | |
| LOW | scripts/eval_compare.py | 96 | CODE | |
| LOW | scripts/corruption_engine.py | 274 | CODE | |
| LOW | scripts/reassemble_chunks.py | 41 | CODE | |
| LOW | scripts/verify_gates.py | 227 | CODE | |
| LOW | skills/humanize-korean/references/metrics_v2.py | 519 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/generate_fixtures.py | 7 | python3 generate_fixtures.py # output_text 없는(null) fixture만 생성 | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_route_hint.py | 44 | CODE |