{"candidate_reason": "python scope discovery", "chunk_end": 63, "chunk_start": 1, "chunk_summary": "No actionable findings; the file defines a canonical enum and performs exact string validation without natural-language pattern matching.", "duration_ms": 3962, "findings": [], "path": "backend/app/core/framing_scale.py", "scan_kind": "python", "sha256": "a48840fd0a5c37397cb26a10a57d4bd4333071aa55ad4bae0f6db74f786ca4e3"}
{"candidate_reason": "python scope discovery", "chunk_end": 213, "chunk_start": 1, "chunk_summary": "The file defines centralized vocabularies for background states and location space keys that are used to validate LLM outputs via exact string matching, creating a manual synchronization requirement with prompts.", "duration_ms": 19084, "findings": [{"category": "schema_or_enum_drift", "evidence": "STATE_CLASS_ENUM = frozenset({...}) ... LOCATION_SPACE_KEY_VOCAB = frozenset({...})", "line_end": 136, "line_start": 26, "recommended_fix": "Consolidate these vocabularies into a shared schema definition or registry that is used to both generate the LLM prompt and perform validation, reducing the risk of manual synchronization errors.", "severity": "P2", "why_problematic": "These constants define scenario-specific semantic categories (e.g., 'ransacked', 'blood_scene', 'kitchen', 'rooftop') that must be manually synchronized with LLM prompts. The code enforces these exact strings during validation (lines 51, 195), which can lead to fail-fast errors if the prompt and code drift apart. The docstring at line 126 explicitly acknowledges this manual synchronization requirement."}], "path": "backend/app/core/bg_state_vocab.py", "scan_kind": "python", "sha256": "d6c2d1fccafa20ba72e40e90ca8a76f14d4225eebe57c37a205c010e50e9aafd"}
{"candidate_reason": "python scope discovery", "chunk_end": 454, "chunk_start": 1, "chunk_summary": "The file implements deterministic detectors for gaze patterns and off-screen status by parsing natural language descriptions and camera directions using extensive Korean/English lexicons and proximity heuristics.", "duration_ms": 20581, "findings": [{"category": "semantic_string_judgment", "evidence": "_KOREAN_GAZE_STEMS, _KOREAN_FRAMING_NOUNS, detect_gaze_pattern_exclusions", "line_end": 304, "line_start": 37, "recommended_fix": "Deprecate natural language parsing in favor of structured LLM outputs for gaze targets and framing subjects (e.g., a dedicated 'gaze_target_id' field).", "severity": "P1", "why_problematic": "The code uses a complex set of Korean lexicons and regex patterns to infer gaze targets and subjects from natural language shot descriptions. This result is used to mutate the visible entity list, making visibility logic dependent on brittle linguistic patterns."}, {"category": "semantic_string_judgment", "evidence": "_OFFSCREEN_PHRASES, _PROXIMITY_PRE, detect_offscreen_drift", "line_end": 445, "line_start": 85, "recommended_fix": "Enforce structured 'is_offscreen' or 'visibility_status' flags in the character_angles schema and remove the proximity-based natural language fallback.", "severity": "P1", "why_problematic": "The drift detection logic uses regex for off-screen phrases combined with character-count proximity windows to identify characters mentioned as being off-camera. This heuristic-based classification of open-world text can trigger validation failures (VisibleStagingDriftError)."}], "path": "backend/app/modules/pipeline/shot_visibility.py", "scan_kind": "python", "sha256": "1b551eb799e33ae1cd96ed94b561fda2b0921cd0a2f8d77e4f2ba515d2af15db"}
{"candidate_reason": "python scope discovery", "chunk_end": 457, "chunk_start": 1, "chunk_summary": "The file implements a reference contract validator that uses keyword-based heuristics to parse natural language prompts and enforce metadata consistency.", "duration_ms": 24201, "findings": [{"category": "semantic_string_judgment", "evidence": "Keyword lists _CHARACTER_TOKENS (line 49) and _GENERIC_VERB_TOKENS (line 87) used by classify_from_the_reference (line 156) to drive fail-fast logic in validate_attached_refs (line 426).", "line_end": 457, "line_start": 49, "recommended_fix": "Transition from natural-language keyword inference to structured reference markers. The LLM or prompt-building logic should provide explicit metadata or tags (e.g., <ref:character_id>) that the validator can check without heuristic parsing of prose.", "severity": "P1", "why_problematic": "The 'phantom guard' mechanism uses brittle string patterns and keyword proximity to infer the semantic meaning of 'from the reference' phrases in natural-language prompts. This inference directly controls whether the validator raises a RefContractError, which blocks image generation."}], "path": "backend/app/core/ref_contract_validator.py", "scan_kind": "python", "sha256": "93a34075f568486f74bd384f96f18208bab54f8e5777726c6d7beef955a7b504"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 25, "chunk_start": 1, "chunk_summary": "The prompt is a technical validator for PDF rendering quality and layout, containing no scenario-specific pollution or semantic string classifiers.", "duration_ms": 4525, "findings": [], "path": "prompts/_base/pdf_validation/v1/validate.md", "scan_kind": "prompt", "sha256": "9d9d162a76c35ddaa16838e139091f919d987a92e1182e122eb4df0cdabe6035"}
{"candidate_reason": "python scope discovery", "chunk_end": 70, "chunk_start": 1, "chunk_summary": "The file provides technical infrastructure for generating and mapping short identifiers (e.g., C01, L01) for entities and contains no actionable semantic string debt or scenario pollution.", "duration_ms": 6489, "findings": [], "path": "backend/app/modules/short_id.py", "scan_kind": "python", "sha256": "a12da612ad174a03abd3fc704048950edc892d574fbad599ae73f53b5b9a325e"}
{"candidate_reason": "python scope discovery", "chunk_end": 779, "chunk_start": 1, "chunk_summary": "The file implements a scene consistency step that uses regex and keyword matching to infer visual framing from natural language, and relies on string prefixes in LLM-generated summaries to drive retry logic.", "duration_ms": 26639, "findings": [{"category": "semantic_string_judgment", "evidence": "_ELEMENT_ID_CLOSE_REGEX = re.compile(...) and _DESCRIPTION_CLOSE_KEYWORDS = (...)", "line_end": 80, "line_start": 65, "recommended_fix": "Update the LLM schema for fixed_elements to include an explicit 'framing' or 'visual_scope' enum field so the model declares its intent structurally rather than relying on downstream string inference.", "severity": "P1", "why_problematic": "The code uses regex patterns on element IDs and keyword matching on natural-language descriptions to classify visual framing (close-up vs. full-body). This classification is used to detect conflicts and trigger validation failures (STATUS_VALIDATOR_VIOLATIONS), directly affecting the pipeline's fail-fast and routing behavior based on brittle string heuristics."}, {"category": "semantic_string_judgment", "evidence": "if summary.startswith(\"분석 실패\") or summary.startswith(\"분석 차단\")", "line_end": 356, "line_start": 355, "recommended_fix": "Rely exclusively on the structured 'status' field for routing decisions. For backward compatibility with old checkpoints, perform a one-time migration to populate the status field based on the summary text.", "severity": "P1", "why_problematic": "The logic for resuming or retrying scenes depends on checking specific Korean string prefixes within the 'analysis_summary' field, which is a natural-language output. This is brittle and couples the pipeline's execution state to the specific phrasing of LLM-generated text."}, {"category": "scenario_dependent_prompt", "evidence": "- 사망/부상/의식불명 인물의 자세와 위치\\n- 환경 상태 (깨진 창문, 열린 문, 혈흔 등)", "line_end": 752, "line_start": 748, "recommended_fix": "Replace concrete tropes with abstract categories such as 'character physical posture', 'static environmental states', and 'fixed prop placement'.", "severity": "P2", "why_problematic": "The prompt contains concrete, scenario-specific examples of character states (death, injury, unconsciousness) and environmental props (broken windows, bloodstains). These specific tropes can bias the LLM's extraction logic toward dark or violent themes even when they are not present in the input scenario."}], "path": "backend/app/core/steps/scene_consistency_step.py", "scan_kind": "python", "sha256": "a07ea382bb71f5f22aa07c2f67ccd3ca32b598675d75e6e1b8731e0664ec9267"}
{"candidate_reason": "python scope discovery", "chunk_end": 454, "chunk_start": 1, "chunk_summary": "The file implements a T2I prompt review pipeline that uses an LLM to identify issues and suggest fixes, which are then applied using blind substring replacement.", "duration_ms": 26069, "findings": [{"category": "blind_string_mutation", "evidence": "old.replace(target, suggestion) / old_prompt.replace(target, suggestion)", "line_end": 454, "line_start": 383, "recommended_fix": "Instead of blind substring replacement, the LLM should return the full corrected prompt, or the system should use a more robust templating/token-based approach to update specific semantic components of the prompt.", "severity": "P1", "why_problematic": "The functions _apply_entity_fixes and _apply_scene_fixes perform blind substring replacement on generated T2I prompt text using LLM-provided 'target' and 'suggestion' strings. This is brittle as it can lead to unintended mutations if the target string appears multiple times or as part of another word, potentially corrupting the prompt."}], "path": "backend/app/modules/pipeline/t2i_review.py", "scan_kind": "python", "sha256": "e5323a52576aa62eafcd92d24ae73f9667641d7fc4d92cc1e588b23e2239b5b8"}
{"candidate_reason": "python scope discovery", "chunk_end": 953, "chunk_start": 1, "chunk_summary": "The validator uses regex patterns, phrase-based substring matching, and character name searches over generated prompt text to classify visual framing and enforce character ID proximity rules.", "duration_ms": 35519, "findings": [{"category": "semantic_string_judgment", "evidence": "_FACE_CLOSE_UP_PATTERNS and _is_face_close_up(prompt)", "line_end": 161, "line_start": 139, "recommended_fix": "Move visual framing classification (e.g., 'is_face_closeup') to a structured field in the shot metadata or render card produced by the LLM, rather than inferring it via regex in the validator.", "severity": "P1", "why_problematic": "Uses a hardcoded list of English keywords (face, eye, gaze, expression) and regex patterns to classify visual framing from generated prompt prose. This classification directly controls whether character ID enforcement is mandatory or exempt, making the validation logic brittle to phrasing variations."}, {"category": "semantic_string_judgment", "evidence": "t.lower() in prompt_lower for trigger_phrases", "line_end": 230, "line_start": 214, "recommended_fix": "Replace phrase-based triggers with a boolean flag or enum in the id_policy (e.g., 'is_body_part_focus') that explicitly signals the exemption.", "severity": "P1", "why_problematic": "Uses a list of natural language phrases (from body_part_focus_rule.trigger_phrases) to detect a 'body part focus' state within the prompt text. This substring matching determines if the validator skips character ID enforcement, coupling validation logic to specific natural language tokens."}, {"category": "semantic_string_judgment", "evidence": "pos = prompt_lower.find(name_lower, offset) and _entity_specific_id_in_window", "line_end": 572, "line_start": 544, "recommended_fix": "Rely on the presence of IDs alone (Rule X-2) for character enforcement, or have the LLM emit a structured mapping of names to IDs if proximity validation is required.", "severity": "P1", "why_problematic": "Searches for natural-language character names (entity_canon.name) within the prompt to trigger a mandatory ID-proximity check. This couples validation success to the presence of specific name tokens and uses a brittle character-window heuristic (±60 chars) to enforce semantic correctness."}], "path": "backend/app/core/visible_entities_validator.py", "scan_kind": "python", "sha256": "366e2185c5df853112075146a74dc8d81d4c36e5fe4441689b7cc81833b80485"}
{"candidate_reason": "python scope discovery", "chunk_end": 280, "chunk_start": 1, "chunk_summary": "The file manages background prompt generation and validation, including a brittle ASCII-based semantic check on generated object lists that causes hard pipeline failures.", "duration_ms": 36778, "findings": [{"category": "semantic_string_judgment", "evidence": "item.encode(\"ascii\") ... owned MUST be English canonical common nouns", "line_end": 210, "line_start": 199, "recommended_fix": "Remove the hard ASCII check and rely on prompt instructions for language control. If character set restriction is necessary for downstream systems, handle it during normalization (e.g., by stripping or transliterating) rather than failing the entire validation step.", "severity": "P1", "why_problematic": "The code uses a technical ASCII encoding check to enforce a semantic requirement that generated background objects must be English common nouns. This is a brittle pattern-based judgment that causes hard validation failures for valid semantic content that might include non-ASCII characters (like accented letters or smart quotes) or when the LLM fails to strictly adhere to the language constraint, rather than using a more robust semantic validation or allowing the downstream normalization to handle character sets."}], "path": "backend/app/modules/pipeline/background_prompt.py", "scan_kind": "python", "sha256": "de5f48a96c5a19b9b07b12506ddaa30556c2053f398f2284c175be142c76a3b2"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 16, "chunk_start": 1, "chunk_summary": "No actionable findings; the file is a clean structural template for prompt assembly without scenario pollution or semantic classifiers.", "duration_ms": 2661, "findings": [], "path": "prompts/_base/t2i_composer/v1/user.md", "scan_kind": "prompt", "sha256": "81af21682d5f98b7f21ae45575b86c796400e419ed0d7465df66c1757c212882"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 68, "chunk_start": 1, "chunk_summary": "The prompt defines several brittle linguistic patterns and phrase lists for the LLM to use as semantic classifiers for determining entity visibility in a shot.", "duration_ms": 14316, "findings": [{"category": "llm_closed_list_instruction", "evidence": "다음 패턴은 모두 off-camera 신호입니다: ... Gaze-target close-up 패턴 ... 명시적 off-camera/off-screen phrase ... 차단(blocking) 패턴 ... Reaction-only 패턴", "line_end": 49, "line_start": 31, "recommended_fix": "Define the visibility rules using high-level physical and cinematic principles (e.g., 'exclude entities that are only mentioned as the target of a gaze in a close-up shot') rather than providing specific string patterns or keyword lists.", "severity": "P1", "why_problematic": "The prompt defines specific linguistic templates (including regex-like Korean particles and verb stems) and keyword lists to classify whether an entity is 'off-camera'. This forces the LLM to act as a pattern-matcher rather than a semantic reasoner, leading to brittle visibility logic that fails if the input description uses synonymous but unlisted phrasing."}], "path": "prompts/_base/shot_director/5.202605131800/system.md", "scan_kind": "prompt", "sha256": "95ea6973e6cdc22d2e6442dffe5405333a24d9b5e3fb354a82586cec7d09b041"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 21, "chunk_start": 1, "chunk_summary": "No actionable findings; the file is a standard JSON schema defining a structured interface with enums for semantic classification.", "duration_ms": 19086, "findings": [], "path": "prompts/_base/scene_detail_owned_judge/3.202605051746/schema.json", "scan_kind": "prompt", "sha256": "2ceaa86e4bda0aec69b371fce33acf8f39965e993a82a7a29e0bc21aa6c25967"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 19, "chunk_start": 1, "chunk_summary": "No actionable findings; the prompt provides generic instructions for cleaning up PDF extraction artifacts and maintaining standard screenplay formatting without scenario-specific pollution.", "duration_ms": 3580, "findings": [], "path": "prompts/_base/text_cleanup/1.202603231200/system.md", "scan_kind": "prompt", "sha256": "1f0e6a5f8a2b730e03543b26f06b0115d2d33a901754bd22a90a556e69aed4a5"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 77, "chunk_start": 1, "chunk_summary": "The prompt defines closed lists of verbs and spatial phrases to classify open-world visual intent and enforces brittle exact string matching for object identification.", "duration_ms": 22582, "findings": [{"category": "llm_closed_list_instruction", "evidence": "redraw 동사 화이트리스트 (이 동사가 owned 객체를 직접 받을 때만 redraw): - 생성: create, render, draw, generate, paint, build, furnish - 추가/배치: add, place (a / a new), put, insert, hang, mount, install, set up", "line_end": 21, "line_start": 18, "recommended_fix": "Allow the LLM to use general semantic reasoning to determine 'redraw' intent based on the context of the prompt rather than a hardcoded verb list.", "severity": "P1", "why_problematic": "The prompt instructs the LLM to use a closed whitelist of verbs to determine if an object is being redrawn. This is a brittle semantic classifier that fails to account for the open-world variety of natural language expressions for 'creation' or 'modification' in T2I prompts."}, {"category": "llm_closed_list_instruction", "evidence": "leaning into the doorway... framed together between the tall shelves... center on the wallpaper... against the wall by the window", "line_end": 45, "line_start": 42, "recommended_fix": "Provide these as non-exhaustive examples of 'referencing' behavior rather than a definitive classification list.", "severity": "P1", "why_problematic": "These spatial and framing phrases are used as a closed list of patterns to classify mentions as 'anchor_reference'. This restricts the LLM's ability to recognize other valid spatial relationships that imply referencing rather than redrawing, leading to brittle classification."}, {"category": "semantic_string_judgment", "evidence": "owned 어휘는 t2i_prompt 의 English token 과 정확히 매칭되어야 한다 (semantic gloss / 번역 매칭 금지).", "line_end": 7, "line_start": 7, "recommended_fix": "Allow semantic matching or normalization so the LLM can correctly identify objects even when the prompt uses slightly different terminology.", "severity": "P1", "why_problematic": "This instruction explicitly forbids semantic understanding and forces brittle exact string matching between the canonical object list and the natural language prompt. This will cause false negatives when the prompt uses synonyms, plurals, or natural variations (e.g., 'doorway' vs 'door')."}], "path": "prompts/_base/scene_detail_owned_judge/3.202605051746/system.md", "scan_kind": "prompt", "sha256": "954aaf54f2737cc38b337e7db7e60d54282fe0d8d0887ab71bf0a8c0fa29a1bc"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 108, "chunk_start": 1, "chunk_summary": "The schema defines shot staging structures with several unenforced enums and an overloaded semantic channel for character gaze targets.", "duration_ms": 19072, "findings": [{"category": "semantic_string_judgment", "evidence": "\"gaze_target\": {\"type\": \"string\", \"description\": \"Where the character's eyes are looking: ... 'unconscious', 'dead', 'severely_injured'\"}", "line_end": 30, "line_start": 30, "recommended_fix": "Separate physical state into a dedicated field (e.g., 'physical_state') and keep 'gaze_target' for spatial coordinates or entities.", "severity": "P1", "why_problematic": "The gaze_target field is used as an overloaded semantic channel, mixing spatial targets (names, 'camera') with physical/medical states ('unconscious', 'dead', 'severely_injured'). This forces downstream logic to infer character status from a field intended for gaze direction, creating brittle dependencies where physical state is hidden inside a spatial attribute."}, {"category": "schema_or_enum_drift", "evidence": "\"perspective\": {\"type\": \"string\", ...}, \"perception_mode\": {\"type\": \"string\", ...}, \"angle\": {\"type\": \"string\", ...}", "line_end": 28, "line_start": 16, "recommended_fix": "Convert these fields to JSON enums to match the values listed in their descriptions, ensuring the schema enforces the contract.", "severity": "P2", "why_problematic": "The fields 'perspective', 'perception_mode', and 'angle' list specific allowed values in their descriptions but are defined as open strings in the schema. This creates a drift between the documentation and the validation layer, risking invalid values reaching downstream consumers that expect exact matches for routing or visual treatment."}], "path": "prompts/_base/shot_staging/11.202605150319/schema.json", "scan_kind": "prompt", "sha256": "563bb3a1f8e2fa6ff7915841c59e1a92c848206f06a407e58c093531aaa3ef1b"}
{"candidate_reason": "python scope discovery", "chunk_end": 363, "chunk_start": 1, "chunk_summary": "The file defines a structured Frame Spatial Contract (FSC) system for validating and preparing spatial constraints, using technical ID patterns and enum-like validation that does not rely on brittle natural-language scenario parsing for core routing.", "duration_ms": 49596, "findings": [], "path": "backend/app/core/frame_spatial_contract.py", "scan_kind": "python", "sha256": "dc8cd3121d7ca06ba098541ab7a40a722f0c79326fa6c4f65ed6b0ded2483f80"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 38, "chunk_start": 1, "chunk_summary": "The file defines a JSON schema for a shot validator, specifying fields for shot indices, change status, revised descriptions, and character identification without scenario-specific pollution or brittle string-based routing.", "duration_ms": 14877, "findings": [], "path": "prompts/_base/shot_validator/5.202605081700/validator_schema.json", "scan_kind": "prompt", "sha256": "0d269a0576fdd7f1b9eb1cf590b1b4ee71ba3fb68d1af49309fd1ff4ba9cfdc8"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 101, "chunk_start": 1, "chunk_summary": "This prompt file defines a T2I review system that uses brittle natural-language phrase patterns for semantic validation and establishes a contract for blind substring mutation of generated prompts.", "duration_ms": 17690, "findings": [{"category": "blind_string_mutation", "evidence": "target/suggestion 형태로 치환 정보를 제공하면 시스템이 자동으로 적용합니다. ... target: T2I 프롬프트 원문에서 정확히 찾을 수 있는 문자열 (sub-string 매치)", "line_end": 92, "line_start": 3, "recommended_fix": "Instead of substring replacement, have the LLM return a structured list of semantic corrections or rewrite the entire prompt section using a template-based approach.", "severity": "P1", "why_problematic": "The prompt establishes a contract for automated, blind substring replacement of generated T2I prompt text. This is brittle as it relies on the LLM identifying and returning exact substrings for mutation without structural awareness of the prompt's composition."}, {"category": "semantic_string_judgment", "evidence": "\"the existing X\" / \"the reference X\" / \"low at ground/floor/quay level\" + 묘사 \"<surface> visible behind subject's hands\"", "line_end": 55, "line_start": 34, "recommended_fix": "Use structured metadata for camera height and object placement (e.g., Z-axis coordinates or relative depth enums) rather than searching for specific English phrases in the prompt text.", "severity": "P1", "why_problematic": "The prompt instructs the LLM to use specific natural-language phrase patterns as triggers for semantic validation (framing and physical consistency). This relies on brittle string matching of open-world visual descriptions to decide if a prompt is physically or logically valid."}], "path": "prompts/_base/t2i_review/4.202605150957/scene_system.md", "scan_kind": "prompt", "sha256": "04722eef9c00a2548c604fff074d849a8b04cfd358ed8dd74d1ff385df58789e"}
{"candidate_reason": "prompt scope discovery", "chunk_end": 597, "chunk_start": 1, "chunk_summary": "The prompt defines several semantic routing and validation rules based on natural-language phrase matching and keyword lists, particularly for ID policy, silhouette rendering, and motion re-framing.", "duration_ms": 39582, "findings": [{"category": "semantic_string_judgment", "evidence": "body_part_focus_rule.trigger_phrases ('focus on / close on / tight on / detail on' + 신체부위) 패턴이 등장하면 얼굴·비얼굴 가리지 않고 C##O## 사용 금지", "line_end": 44, "line_start": 41, "recommended_fix": "Pass a structured 'is_body_part_focus' boolean in the RenderPromptCard instead of relying on phrase matching over natural-language input.", "severity": "P1", "why_problematic": "The prompt instructs the LLM to change its ID usage policy (routing) based on the presence of specific natural-language phrase patterns in the input description, which is a brittle semantic classifier."}, {"category": "semantic_string_judgment", "evidence": "fixed_elements[i].description 안 보통명사 인물 (\"an adult figure\" / \"the seated person\" 류) 이 ... 조건을 만족 시 해당 보통명사를 C##/C##O## 로 치환", "line_end": 119, "line_start": 119, "recommended_fix": "Provide explicit entity mapping in the structured input (e.g., fixed_elements[i].entity_id) rather than asking the LLM to infer identity from prose descriptions.", "severity": "P1", "why_problematic": "This requires the LLM to perform semantic identity resolution by matching generic natural-language nouns to specific character IDs and then performing a blind string substitution."}, {"category": "semantic_string_judgment", "evidence": "trait 가 \"face fully obscured\" / \"no visible facial features\" / \"face hidden in shadow\" 같은 face-obscured 표현을 포함하면, face / jaw / feature 묘사 표현 금지", "line_end": 222, "line_start": 219, "recommended_fix": "Use a structured boolean flag or enum (e.g., visibility_state: 'obscured') in the entity traits schema instead of parsing prose strings.", "severity": "P1", "why_problematic": "The prompt uses a closed list of natural-language phrases within the 'stable_traits' field to trigger a behavioral change (forbidding facial descriptions). This is a brittle semantic classifier."}, {"category": "semantic_string_judgment", "evidence": "running / riding / walking / moving / chasing / pedaling / rowing 류 ... 묘사하면, 그 상태의 mid-action 정지 ... 로 re-frame 가능", "line_end": 369, "line_start": 369, "recommended_fix": "Include a structured 'motion_type' or 'is_dynamic' flag in the shot staging data to drive re-framing logic.", "severity": "P1", "why_problematic": "The prompt defines a list of motion verbs to classify the input scenario and trigger a 're-frame' strategy. This is a brittle string-based classifier for open-world motion semantics."}, {"category": "semantic_string_judgment", "evidence": "entity_canon.name 이 prompt 안에 등장하면 그 specific entity 의 ID ... 가 같은 sentence + ±60 char window 안에 있어야 한다", "line_end": 516, "line_start": 511, "recommended_fix": "Use a structured output format where entities are explicitly linked to their descriptions (e.g., a JSON array of entity-description pairs) rather than relying on proximity in a flat string.", "severity": "P1", "why_problematic": "This defines a brittle validation rule based on character-count windows and sentence boundaries to enforce semantic association between names and IDs in natural-language output."}], "path": "prompts/_base/scene_detail/24.202605151451/system.md", "scan_kind": "prompt", "sha256": "d35e50e1332ba5226384543fa6532ba0dc98f7c38b3d86f5cd3e88b578bdd47a"}
