Agent Skill for generating 2D sprite sheets and map, transparent PNG frames, and animated GIFs from prompts.
This report summarizes scanner evidence for 0x0funky/agent-sprite-forge, a Python project with 4,380 GitHub stars. SynthScan examined 173,763 lines of code across 273 source files, recording 3360 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 43.9 (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? 1993 finding(s).
Are imports declared and package/API names verified? 335 finding(s).
Are wrappers, guards, and repeated structures necessary? 2783 finding(s).
Which changes need focused human review? 3360 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 3360 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 |
|---|---|---|---|---|
| HIGH | tests/test_scene_lights.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_validate_layout.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_motion_mask.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_hd2d_stage.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_scene_motion.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_export_godot.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_edit_locality.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_validate_chunks.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests (d33). | STRING |
| HIGH | tests/test_validate_parallax.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests. | STRING |
| HIGH | tests/test_compose_layered_preview.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests. | STRING |
| HIGH | tests/test_conform_background.py | 0 | errors against the vendored generate2dmap schemas, which hold this module's section 5 requests. | STRING |
| HIGH | shared/forge_palette.py | 0 | shared oklab palette library for the agent sprite forge skills (api version 1). colour discipline for pixel art made by | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | shared oklab palette library for the agent sprite forge skills (api version 1). colour discipline for pixel art made by | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | shared oklab palette library for the agent sprite forge skills (api version 1). colour discipline for pixel art made by | STRING |
| HIGH | shared/forge_palette.py | 0 | a bad palette, palette file, lock or index map. messages are ascii and user-facing. | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | a bad palette, palette file, lock or index map. messages are ascii and user-facing. | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | a bad palette, palette file, lock or index map. messages are ascii and user-facing. | STRING |
| HIGH | shared/forge_palette.py | 0 | srgb 0..255 (any shape ``... x 3``) to oklab (ottosson 2020), float32. operation for operation the same as forge_matte's | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | srgb 0..255 (any shape ``... x 3``) to oklab (ottosson 2020), float32. operation for operation the same as forge_matte's | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | srgb 0..255 (any shape ``... x 3``) to oklab (ottosson 2020), float32. operation for operation the same as forge_matte's | STRING |
| HIGH | shared/forge_palette.py | 0 | oklab (any shape ``... x 3``) to 8-bit srgb, uint8. out-of-gamut colours are clipped in linear rgb; channels round half- | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | oklab (any shape ``... x 3``) to 8-bit srgb, uint8. out-of-gamut colours are clipped in linear rgb; channels round half- | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | oklab (any shape ``... x 3``) to 8-bit srgb, uint8. out-of-gamut colours are clipped in linear rgb; channels round half- | STRING |
| HIGH | shared/forge_palette.py | 0 | read ``#rrggbb``, ``rrggbb``, ``#rgb``, opaque ``#rrggbbff`` or an ``[r, g, b]`` triple. palette colours are opaque: any | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | read ``#rrggbb``, ``rrggbb``, ``#rgb``, opaque ``#rrggbbff`` or an ``[r, g, b]`` triple. palette colours are opaque: any | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | read ``#rrggbb``, ``rrggbb``, ``#rgb``, opaque ``#rrggbbff`` or an ``[r, g, b]`` triple. palette colours are opaque: any | STRING |
| HIGH | shared/forge_palette.py | 0 | an ordered palette: colour ``i`` is index ``i`` of indexed exports (palette.v1). ``transparent_index`` is the index tran | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | an ordered palette: colour ``i`` is index ``i`` of indexed exports (palette.v1). ``transparent_index`` is the index tran | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | an ordered palette: colour ``i`` is index ``i`` of indexed exports (palette.v1). ``transparent_index`` is the index tran | STRING |
| HIGH | shared/forge_palette.py | 0 | indices opaque pixels may use: every colour slot except a transparent one. | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | indices opaque pixels may use: every colour slot except a transparent one. | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | indices opaque pixels may use: every colour slot except a transparent one. | STRING |
| HIGH | shared/forge_palette.py | 0 | a copy with some fields changed (``dataclasses.replace``). | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | a copy with some fields changed (``dataclasses.replace``). | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | a copy with some fields changed (``dataclasses.replace``). | STRING |
| HIGH | shared/forge_palette.py | 0 | the palette.v1 document (``generate2dsprite.palette.v1``). | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | the palette.v1 document (``generate2dsprite.palette.v1``). | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | the palette.v1 document (``generate2dsprite.palette.v1``). | STRING |
| HIGH | shared/forge_palette.py | 0 | palette.v1, ``{"colors": [...] | {...}}``, ``{"palette": {...}}`` (pixelspec) or ``{name: colour}``. | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | palette.v1, ``{"colors": [...] | {...}}``, ``{"palette": {...}}`` (pixelspec) or ``{name: colour}``. | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | palette.v1, ``{"colors": [...] | {...}}``, ``{"palette": {...}}`` (pixelspec) or ``{name: colour}``. | STRING |
| HIGH | shared/forge_palette.py | 0 | coerce a palette, palette file path, palette.v1 (or similar) mapping, or a colour list. | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | coerce a palette, palette file path, palette.v1 (or similar) mapping, or a colour list. | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | coerce a palette, palette file path, palette.v1 (or similar) mapping, or a colour list. | STRING |
| HIGH | shared/forge_palette.py | 0 | read a palette file: palette.v1 ``.json`` (or another colour json), gimp ``.gpl``, lospec ``.hex``, jasc ``.pal``, or a | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | read a palette file: palette.v1 ``.json`` (or another colour json), gimp ``.gpl``, lospec ``.hex``, jasc ``.pal``, or a | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | read a palette file: palette.v1 ``.json`` (or another colour json), gimp ``.gpl``, lospec ``.hex``, jasc ``.pal``, or a | STRING |
| HIGH | shared/forge_palette.py | 0 | the text of a palette file in ``fmt`` (json, gpl, hex or pal). | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | the text of a palette file in ``fmt`` (json, gpl, hex or pal). | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | the text of a palette file in ``fmt`` (json, gpl, hex or pal). | STRING |
| HIGH | shared/forge_palette.py | 0 | write a palette file, never replacing an existing one (fileexistserror). ``fmt`` is json (palette.v1, the only format th | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | write a palette file, never replacing an existing one (fileexistserror). ``fmt`` is json (palette.v1, the only format th | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | write a palette file, never replacing an existing one (fileexistserror). ``fmt`` is json (palette.v1, the only format th | STRING |
| HIGH | shared/forge_palette.py | 0 | a fresh ``(h, w, 4)`` uint8 rgba copy of an array, pillow image or image path. | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | a fresh ``(h, w, 4)`` uint8 rgba copy of an array, pillow image or image path. | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | a fresh ``(h, w, 4)`` uint8 rgba copy of an array, pillow image or image path. | STRING |
| HIGH | shared/forge_palette.py | 0 | ``(..., 3)`` uint8 colours of an image, image path or colour array (alpha dropped). | STRING |
| HIGH | skills/generate2dsprite/scripts/forge_palette.py | 0 | ``(..., 3)`` uint8 colours of an image, image path or colour array (alpha dropped). | STRING |
| HIGH | skills/video2dsprite/scripts/forge_palette.py | 0 | ``(..., 3)`` uint8 colours of an image, image path or colour array (alpha dropped). | STRING |
| HIGH | shared/forge_palette.py | 0 | nearest usable palette index, squared oklab distance and exact-match flag of ``(m, 3)`` colours. an exact palette colour | STRING |
| 925 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_scene_lights.py | 103 | def test_light_colour_is_the_glow_hue_not_the_white_core_or_the_sky(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 111 | def test_distractors_need_another_hue_setting(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 134 | def test_broad_bright_areas_are_not_lights(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 153 | def test_a_blob_whose_glow_is_not_warm_is_rejected(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 166 | def test_stage_ground_and_water_reject_reflections(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 192 | def test_expect_mismatch_fails_and_strict_publishes_nothing(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 202 | def test_cookie_pools_sit_on_the_lights_and_bytes_repeat(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 217 | def test_cookie_pools_are_round_on_the_plate(): | CODE |
| LOW | tests/test_scene_lights.py | 227 | def test_flicker_phases_are_staggered_and_fast_flicker_warns(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 241 | def test_cookie_verb_rebakes_edited_lights(plate_path, tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 278 | def test_parse_lights_reads_the_contract_fixture(): | CODE |
| LOW | tests/test_scene_lights.py | 301 | def test_atmosphere_examples_pass(tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 331 | def test_atmosphere_values_fail_or_warn(tmp_path, capsys, change, check_id, status): | CODE |
| LOW | tests/test_scene_lights.py | 344 | def test_atmosphere_structure_errors(tmp_path, capsys): | CODE |
| LOW | tests/test_scene_lights.py | 360 | def test_help_is_ascii_under_legacy_consoles(): | CODE |
| LOW | tests/test_scene_lights.py | 368 | def test_existing_output_is_refused(plate_path, tmp_path): | CODE |
| LOW | tests/test_scene_lights.py | 382 | def test_strict_failure_publishes_nothing(plate_path, tmp_path): | CODE |
| LOW | tests/test_validate_layout.py | 29 | def requested_contract_errors(document, name="layout_validation_v1"): | CODE |
| LOW | tests/test_validate_layout.py | 95 | def test_jump_reach_follows_the_parabola(self): | CODE |
| LOW | tests/test_validate_layout.py | 103 | def test_three_row_deck_fails(self): | CODE |
| LOW | tests/test_validate_layout.py | 117 | def test_unjumpable_gap_fails(self): | CODE |
| LOW | tests/test_validate_layout.py | 131 | def test_gap_to_higher_ground_uses_the_falling_branch(self): | CODE |
| LOW | tests/test_validate_layout.py | 142 | def test_deck_bridges_a_gap_too_wide_to_jump(self): | CODE |
| LOW | tests/test_validate_layout.py | 171 | def test_prop_straddling_a_slope_edge_floats(self): | CODE |
| LOW | tests/test_validate_layout.py | 180 | def test_slope_and_step_limits(self): | CODE |
| LOW⚡ | tests/test_validate_layout.py | 212 | def test_spawn_off_the_ground_fails(self): | CODE |
| LOW⚡ | tests/test_validate_layout.py | 217 | def test_short_kind_names_and_custom_kinds(self): | CODE |
| LOW⚡ | tests/test_validate_layout.py | 226 | def test_report_and_debug_png(self): | CODE |
| LOW⚡ | tests/test_validate_layout.py | 241 | def test_reference_doc_example_passes(self): | CODE |
| LOW⚡ | tests/test_validate_layout.py | 249 | def test_bad_input_is_an_error(self): | CODE |
| LOW⚡ | tests/test_validate_layout.py | 258 | def test_extent_cap_refuses_a_huge_level_before_allocating(self): | CODE |
| LOW | tests/test_validate_layout.py | 284 | def test_debug_image_of_a_wide_level_is_drawn_small(self): | CODE |
| LOW | tests/test_validate_layout.py | 305 | def test_refuses_an_existing_output_dir(self): | CODE |
| LOW | tests/test_validate_layout.py | 313 | def test_strict_qc_failure_publishes_nothing(self): | CODE |
| LOW | tests/test_colour_lock.py | 65 | def test_master_colours_are_learned_per_height_band(master): | CODE |
| LOW | tests/test_colour_lock.py | 76 | def test_lock_brings_drifting_boots_back_and_keeps_lightness(master): | CODE |
| LOW | tests/test_colour_lock.py | 95 | def test_lock_leaves_greys_and_far_colours_alone(master): | CODE |
| LOW | tests/test_colour_lock.py | 106 | def test_temporal_smoothing_holds_still_pixels_without_ghosting(master): | CODE |
| LOW | tests/test_colour_lock.py | 124 | def test_foreign_drift_reports_bleed_and_region_drift(master): | CODE |
| LOW | tests/test_colour_lock.py | 134 | def test_cli_measure_prints_one_ascii_json_line(tmp_path, master): | CODE |
| LOW | tests/test_contracts.py | 106 | def test_document_ids_follow_the_domain_prefixes(): | CODE |
| LOW | tests/test_contracts.py | 122 | def test_vendored_schemas_are_self_contained(schema_dir): | CODE |
| LOW | tests/test_contracts.py | 142 | def test_every_contract_fixture_names_a_contract(): | CODE |
| LOW | tests/test_contracts.py | 158 | def test_variant_examples_validate(path): | CODE |
| LOW | tests/test_contracts.py | 167 | def test_invalid_examples_fail(contract): | CODE |
| LOW | tests/test_contracts.py | 195 | def test_mandated_legacy_documents_exist(): | CODE |
| LOW | tests/test_contracts.py | 202 | def test_real_fixture_provenance(): | CODE |
| LOW | tests/test_contracts.py | 218 | def test_meadow_crop_matches_its_tracked_source(): | CODE |
| LOW | tests/test_contracts.py | 232 | def test_magenta_sheet_is_deterministic_and_reports_boxes(): | CODE |
| LOW | tests/test_contracts.py | 245 | def test_load_script_reuses_one_module_unless_fresh(): | CODE |
| LOW | tests/test_contracts.py | 260 | def test_load_shared_imports_a_shared_module_by_path(tmp_path, monkeypatch): | CODE |
| LOW | tests/test_contracts.py | 296 | def test_load_shared_loads_each_landed_canonical(canonical, monkeypatch): | CODE |
| LOW | tests/test_contracts.py | 311 | def test_run_cli_reproduces_a_narrow_console(): | CODE |
| LOW | tests/test_forge_av.py | 124 | def test_run_raises_ascii_errors_for_failure_timeout_and_missing_tool(tmp_path): | CODE |
| LOW | tests/test_forge_av.py | 138 | def test_capabilities_functional(tmp_path, monkeypatch): | CODE |
| LOW | tests/test_forge_av.py | 157 | def test_probe_reports_audio_stream(tmp_path): | CODE |
| LOW | tests/test_forge_av.py | 221 | def test_alpha_modes_and_decode_limits(tmp_path): | CODE |
| LOW | tests/test_forge_av.py | 239 | def test_extract_frames_timing_and_no_clobber(tmp_path): | CODE |
| LOW | tests/test_forge_av.py | 263 | def test_display_rotation_swaps_probe_and_decode_size(tmp_path): | CODE |
| LOW | tests/test_forge_av.py | 278 | def test_packed_geometry_pads_each_half_to_even(): | CODE |
| 1681 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_map_runtime_js.py | 254 | nodes.push(rt.cellValid(world, k) ? 1 : 0); | CODE |
| HIGH⚡ | tests/test_map_runtime_js.py | 257 | if (i + 1 < nav.cols && rt.moveOpen(world, k, k + 1)) bits |= 1; | CODE |
| HIGH⚡ | tests/test_map_runtime_js.py | 258 | if (k + nav.cols < total && rt.moveOpen(world, k, k + nav.cols)) bits |= 2; | CODE |
| HIGH⚡ | tests/test_map_runtime_js.py | 259 | if (i > 0 && rt.moveOpen(world, k, k - 1)) bits |= 4; | CODE |
| HIGH⚡ | tests/test_map_runtime_js.py | 260 | if (k >= nav.cols && rt.moveOpen(world, k, k - nav.cols)) bits |= 8; | CODE |
| HIGH⚡ | tests/test_map_runtime_js.py | 261 | moves.push(bits); | CODE |
| HIGH | tests/test_map_runtime_js.py | 276 | job.bundle.material_map, job.bundle.world.width, job.bundle.world.height) : null; | CODE |
| HIGH | tests/test_codeart2d_svg.py | 319 | code, stdout, _ = svg_cli(capsys, "lint", "--svg", undefined, "--compile") | CODE |
| HIGH | tests/test_sprite_geometry_v2.py | 48 | frame's ``source_rect`` is null).""" | STRING |
| HIGH⚡ | tests/test_sprite_geometry_v2.py | 469 | """An empty frame has no subject box: ``source_rect`` is null, which the integrated schema allows | STRING |
| HIGH⚡ | tests/test_sprite_geometry_v2.py | 470 | (handoff/B01 section 5, ``anyOf [box, null]``; per D33) while a box stays a 4-number array.""" | STRING |
| HIGH⚡ | tests/test_runtime_js.py | 236 | const a = (x > 1 && x < 11 && y > 1 && y < 8) ? 255 : levels[(x + 2 * y) % levels.length]; | CODE |
| HIGH⚡ | tests/test_runtime_js.py | 246 | canvases.push(canvas); | CODE |
| HIGH⚡ | tests/test_runtime_js.py | 252 | const lose = canvases.find(c => c.getContext('2d') === null).getContext('webgl').getExtension('WEBGL_lose_context'); | CODE |
| HIGH⚡ | tests/test_runtime_js.py | 276 | for (let i = 0; i < ring.length; i += 4) if (expected[i + 3] === 0 && ring[i + 3] > 0) grown++; | CODE |
| HIGH⚡ | tests/test_runtime_js.py | 281 | out.textContent = JSON.stringify({error: String(error && error.stack || error)}); | CODE |
| HIGH⚡ | tests/test_runtime_js.py | 281 | out.textContent = JSON.stringify({error: String(error && error.stack || error)}); | CODE |
| HIGH⚡ | tests/test_collision_parity.py | 414 | if (i + 1 < nav.cols && rt.moveOpen(world, k, k + 1)) m |= 1; | CODE |
| HIGH⚡ | tests/test_collision_parity.py | 415 | if (k + nav.cols < total && rt.moveOpen(world, k, k + nav.cols)) m |= 2; | CODE |
| HIGH⚡ | tests/test_collision_parity.py | 416 | if (i > 0 && rt.moveOpen(world, k, k - 1)) m |= 4; | CODE |
| HIGH⚡ | tests/test_collision_parity.py | 417 | if (k >= nav.cols && rt.moveOpen(world, k, k - nav.cols)) m |= 8; | CODE |
| HIGH⚡ | tests/test_collision_parity.py | 425 | targets[`interaction:${item.id}`] = [answer.node, null]; | CODE |
| HIGH⚡ | tests/test_collision_parity.py | 429 | targets[`slot:${anchor.name}/${k}`] = [rt.pointTarget(world, field, x, y).node, null]; | CODE |
| HIGH⚡ | tests/test_collision_parity.py | 432 | targets[`approach:${anchor.name}/${k}`] = [rt.pointTarget(world, field, x, y).node, null]; | CODE |
| HIGH | tests/test_forge_core_promotions.py | 387 | '{"a": 1, "b": [1.5, "x", null, true]}', '\ufeff{"bom": "PowerShell 5.1"}', '[]', '"\u00e9t\u00e9"', | CODE |
| HIGH⚡ | tests/test_scene_preview.py | 500 | page = self.skeleton(script="if (k < portal.radius && a.x < source.y) image.src = 'data' + mime;", | CODE |
| HIGH⚡ | tests/test_video2dsprite_matte.py | 664 | assert np.array_equal(oracle.push(alpha), fast.push(alpha)) | CODE |
| HIGH⚡ | tests/test_video2dsprite_matte.py | 673 | assert np.array_equal(oracle.push(frame), fast.push(frame)) | CODE |
| HIGH | tests/test_video2dsprite_matte.py | 446 | assert np.array_equal(stream.push(frame), reference) | CODE |
| HIGH⚡ | tests/test_video2dsprite_matte.py | 353 | """#rrggbb is used as given: no border estimate (key_estimate null), every frame keyed with it.""" | STRING |
| HIGH | shared/forge_nav.py | 111 | the tileset's tile size tw x th; -1 (or null) is an empty cell. A placed tile blocks | STRING |
| HIGH | skills/generate2dmap/scripts/validate_chunks.py | 10 | rows [["a", "b"], ["c", null]] a layout grid; widths agree per column and | STRING |
| HIGH | skills/generate2dmap/scripts/forge_nav.py | 111 | the tileset's tile size tw x th; -1 (or null) is an empty cell. A placed tile blocks | STRING |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 140 | ready: false, error: null, tick: 0, debug: false, grid: false, props: true, actorVisible: true, | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 141 | keys: new Set(), events: [], exitsFired: [], reached: new Set(), routes: null, message: "", | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 142 | waiters: [], assets: {total: 0, loaded: 0, failed: []}, gridCanvas: null, materialCanvas: null, | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 144 | let world = null, actor = null, startSpawn = null; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 152 | state.events.push({tick: state.tick, ...event}); | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 159 | state.error = String((error && error.message) || error); | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 479 | if (actor.latched.size) parts.push("latched " + [...actor.latched].join(",")); | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 481 | if (near.length) parts.push("in reach " + near.map((item) => item.id).join(",") + " (E)"); | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 482 | if (state.message) parts.push(state.message); | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 559 | if (world === null || actor === null) return {schema: SNAPSHOT_SCHEMA, runtime: {name: "map-runtime", version: RUNTIME | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 559 | if (world === null || actor === null) return {schema: SNAPSHOT_SCHEMA, runtime: {name: "map-runtime", version: RUNTIME | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 564 | control("snapshot").value = JSON.stringify(snapshot(), null, 2); | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 599 | actor.path = path && path.length ? path : null; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 599 | actor.path = path && path.length ? path : null; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 601 | return path !== null; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 648 | if (state.ready) actor.path = null; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 650 | } else if (key === "e" && !event.repeat && state.ready) { | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 657 | if (!state.ready || event.button > 0) return; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 673 | let last = null, accumulated = 0; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 676 | if (last === null) last = time; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 680 | while (accumulated >= 1 / TICK_HZ && ticks < 8) { | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 770 | const message = (error) => String((error && error.message) || error).split("\n")[0]; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 771 | let playwright = null; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 777 | if (!error || error.code !== "MODULE_NOT_FOUND") throw error; | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 781 | if (playwright === null) { | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 795 | page.on("pageerror", (error) => result.pageErrors.push(message(error))); | CODE |
| HIGH⚡ | skills/generate2dmap/scripts/build_scene_preview.py | 796 | page.on("console", (entry) => { if (entry.type() === "error") result.consoleErrors.push(entry.text()); }); | CODE |
| 27 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/check_links.py | 63 | CODE | |
| LOW | tools/vendor_sync.py | 123 | CODE | |
| LOW | tools/install_skills.py | 137 | CODE | |
| LOW | tests/test_extract_prop_pack.py | 135 | CODE | |
| LOW | tests/test_extract_prop_pack.py | 207 | CODE | |
| LOW | tests/test_extract_prop_pack.py | 228 | CODE | |
| LOW | tests/test_validate_animation.py | 162 | CODE | |
| LOW | tests/test_export_godot.py | 142 | CODE | |
| LOW | tests/test_retime.py | 286 | CODE | |
| LOW | tests/test_forge_core.py | 421 | CODE | |
| LOW | tests/test_export_tiled.py | 39 | CODE | |
| LOW | tests/test_extract_platform_strip.py | 606 | CODE | |
| LOW | tests/test_extract_platform_strip.py | 661 | CODE | |
| LOW | tests/test_map_nav.py | 260 | CODE | |
| LOW | tests/test_compose_layered_preview.py | 432 | CODE | |
| LOW | tests/test_engine_export_v3.py | 316 | CODE | |
| LOW | tests/test_codeart2d_pixelspec.py | 564 | CODE | |
| LOW | tests/test_forge_matte.py | 70 | CODE | |
| LOW | tests/test_forge_matte.py | 212 | CODE | |
| LOW | tests/test_generate2dmap_terrain.py | 436 | CODE | |
| LOW | tests/test_animation_review.py | 239 | CODE | |
| LOW | tests/test_forge_nav.py | 215 | CODE | |
| LOW | tests/test_forge_nav.py | 539 | CODE | |
| LOW | tests/test_forge_nav.py | 791 | CODE | |
| LOW | tests/test_generate2dsprite.py | 894 | CODE | |
| LOW | tests/test_generate2dsprite.py | 1447 | CODE | |
| LOW | tests/test_e2e_smoke.py | 62 | CODE | |
| LOW | tests/test_e2e_smoke.py | 83 | CODE | |
| LOW | tests/test_e2e_smoke.py | 127 | CODE | |
| LOW | tests/test_collision_parity.py | 553 | CODE | |
| LOW | shared/forge_palette.py | 268 | CODE | |
| LOW | shared/forge_palette.py | 1201 | CODE | |
| LOW | shared/forge_av.py | 919 | CODE | |
| LOW | shared/forge_nav.py | 1287 | CODE | |
| LOW | shared/forge_nav.py | 395 | CODE | |
| LOW | shared/forge_nav.py | 412 | CODE | |
| LOW | shared/forge_nav.py | 1583 | CODE | |
| LOW | shared/forge_nav.py | 1642 | CODE | |
| LOW | shared/forge_nav.py | 1671 | CODE | |
| LOW | shared/forge_matte.py | 1225 | CODE | |
| LOW | shared/forge_schema.py | 172 | CODE | |
| LOW | shared/forge_schema.py | 195 | CODE | |
| LOW | shared/forge_schema.py | 176 | CODE | |
| LOW | shared/forge_schema.py | 199 | CODE | |
| LOW | shared/forge_schema.py | 331 | CODE | |
| LOW | shared/forge_schema.py | 459 | CODE | |
| LOW | shared/forge_core.py | 1615 | CODE | |
| LOW | skills/generate2dmap/scripts/compose_layered_preview.py | 158 | CODE | |
| LOW | skills/generate2dmap/scripts/compose_layered_preview.py | 434 | CODE | |
| LOW | skills/generate2dmap/scripts/compose_layered_preview.py | 717 | CODE | |
| LOW | skills/generate2dmap/scripts/compose_layered_preview.py | 1104 | CODE | |
| LOW | skills/generate2dmap/scripts/compose_layered_preview.py | 1457 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 135 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 190 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 258 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 348 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 389 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 416 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 602 | CODE | |
| LOW | skills/generate2dmap/scripts/validate_chunks.py | 652 | CODE | |
| 178 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/check_links.py | 11 | CODE | |
| LOW | tools/check_links.py | 15 | CODE | |
| LOW | tools/vendor_sync.py | 17 | CODE | |
| LOW | tools/install_skills.py | 27 | CODE | |
| LOW | tests/test_scene_lights.py | 3 | CODE | |
| LOW | tests/test_validate_layout.py | 7 | CODE | |
| LOW | tests/test_colour_lock.py | 7 | CODE | |
| LOW | tests/test_contracts.py | 13 | CODE | |
| LOW | tests/test_forge_av.py | 6 | CODE | |
| LOW | tests/test_palette_tool.py | 8 | CODE | |
| LOW | tests/test_map_runtime_js.py | 12 | CODE | |
| LOW | tests/test_motion_mask.py | 2 | CODE | |
| LOW | tests/test_pixel_reduce.py | 6 | CODE | |
| LOW | tests/test_codeart2d_svg.py | 7 | CODE | |
| LOW | tests/test_cli_media.py | 11 | CODE | |
| LOW | tests/test_engine_export.py | 7 | CODE | |
| LOW | tests/test_media_providers_fal.py | 9 | CODE | |
| LOW | tests/test_media_providers_fal.py | 19 | CODE | |
| LOW | tests/forge_testutils.py | 11 | CODE | |
| LOW | tests/test_assemble_frames.py | 10 | CODE | |
| LOW | tests/test_extract_prop_pack.py | 9 | CODE | |
| LOW | tests/test_validate_animation.py | 14 | CODE | |
| LOW | tests/test_make_anchor_layout.py | 1 | CODE | |
| LOW | tests/test_media_providers_byteplus.py | 8 | CODE | |
| LOW | tests/test_media_providers_byteplus.py | 16 | CODE | |
| LOW | tests/test_hd2d_stage.py | 3 | CODE | |
| LOW | tests/test_media_providers_openai.py | 6 | CODE | |
| LOW | tests/test_media_providers_openai.py | 13 | CODE | |
| LOW | tests/test_install_skills.py | 7 | CODE | |
| LOW | tests/test_codeart2d_layout.py | 11 | CODE | |
| LOW | tests/test_forge_schema.py | 10 | CODE | |
| LOW | tests/test_scene_motion.py | 7 | CODE | |
| LOW | tests/test_media_providers_common.py | 11 | CODE | |
| LOW | tests/test_codeart2d_fx.py | 5 | CODE | |
| LOW | tests/test_forge_doctor.py | 7 | CODE | |
| LOW | tests/test_export_godot.py | 7 | CODE | |
| LOW | tests/test_validate_parallax.py | 2 | CODE | |
| LOW | tests/test_codeart2d_core.py | 7 | CODE | |
| LOW | tests/test_master_still.py | 9 | CODE | |
| LOW | tests/test_gait_loop.py | 8 | CODE | |
| LOW | tests/test_fx_verify_js.py | 8 | CODE | |
| LOW | tests/test_key_still_regions.py | 21 | CODE | |
| LOW | tests/test_retime.py | 8 | CODE | |
| LOW | tests/test_forge_core.py | 7 | CODE | |
| LOW | tests/test_forge_palette.py | 6 | CODE | |
| LOW | tests/test_export_tiled.py | 6 | CODE | |
| LOW | tests/test_extract_platform_strip.py | 10 | CODE | |
| LOW | tests/test_sheet_qc.py | 8 | CODE | |
| LOW | tests/test_map_nav.py | 5 | CODE | |
| LOW | tests/test_compose_layered_preview.py | 2 | CODE | |
| LOW | tests/test_map_bundle.py | 10 | CODE | |
| LOW | tests/test_vendored_sync.py | 3 | CODE | |
| LOW | tests/test_media_providers_xai.py | 7 | CODE | |
| LOW | tests/test_media_providers_xai.py | 15 | CODE | |
| LOW | tests/test_export_ldtk.py | 6 | CODE | |
| LOW | tests/test_conform_background.py | 2 | CODE | |
| LOW | tests/test_scale_frames.py | 6 | CODE | |
| LOW | tests/test_route_media.py | 7 | CODE | |
| LOW | tests/test_forge_av_core.py | 5 | CODE | |
| LOW | tests/test_video_registration.py | 8 | CODE | |
| 124 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/test_cli_media.py | 389 | except (OSError, NotImplementedError): | CODE |
| HIGH | tests/test_cli_media.py | 396 | except (ImportError, OSError, AttributeError): | CODE |
| HIGH | shared/forge_av.py | 168 | except OSError: | CODE |
| HIGH | shared/forge_av.py | 144 | except OSError: | CODE |
| HIGH | shared/forge_nav.py | 1534 | except ValueError: | CODE |
| HIGH | shared/forge_matte.py | 148 | except ValueError: | CODE |
| HIGH | skills/generate2dmap/scripts/forge_av.py | 168 | except OSError: | CODE |
| HIGH | skills/generate2dmap/scripts/forge_av.py | 144 | except OSError: | CODE |
| HIGH | skills/generate2dmap/scripts/map_nav.py | 429 | except (OSError, ValueError, KeyError): | CODE |
| HIGH | skills/generate2dmap/scripts/forge_nav.py | 1534 | except ValueError: | CODE |
| HIGH | skills/generate2dmap/scripts/forge_matte.py | 148 | except ValueError: | CODE |
| HIGH | skills/generate2dmedia/scripts/generate_media.py | 891 | except OSError: | CODE |
| HIGH | skills/generate2dmedia/scripts/generate_media.py | 985 | except (media_ledger.LedgerError, OSError): | CODE |
| HIGH | skills/generate2dmedia/scripts/media_ledger.py | 552 | except (OSError, ValueError): | CODE |
| HIGH | skills/generate2dsprite/scripts/forge_matte.py | 148 | except ValueError: | CODE |
| HIGH | skills/generate2dsprite/scripts/master_still.py | 881 | except (OSError, ValueError): | CODE |
| HIGH | skills/generate2dsprite/scripts/master_still.py | 890 | except (OSError, ValueError): | CODE |
| HIGH | skills/generate2dsprite/scripts/master_still.py | 912 | except OSError: | CODE |
| HIGH | skills/video2dsprite/scripts/forge_av.py | 168 | except OSError: | CODE |
| HIGH | skills/video2dsprite/scripts/forge_av.py | 144 | except OSError: | CODE |
| HIGH | skills/video2dsprite/scripts/forge_matte.py | 148 | except ValueError: | CODE |
| HIGH | skills/video2dsprite/scripts/register_clip.py | 234 | except argparse.ArgumentTypeError: | CODE |
| HIGH | skills/video2dsprite/scripts/gait_loop.py | 440 | except ImportError: | CODE |
| HIGH | skills/codeart2d/scripts/forge_nav.py | 1534 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/test_extract_prop_pack.py | 476 | assert bush["status"] == "accepted" and nothing["status"] == "placeholder" | CODE |
| LOW | tests/test_extract_prop_pack.py | 761 | assert PROPS.read_manifest(tmp_path / "v1.json")["accepted"][1]["status"] == "placeholder" | CODE |
| LOW | tests/test_codeart2d_layout.py | 485 | assert bundle["art_source"] == "code" and bundle["placeholder"] is True # flat-colour ground, no tileset | CODE |
| LOW | tests/test_codeart2d_layout.py | 486 | assert out["codeart-meta.json"]["placeholder"] is True | CODE |
| LOW | tests/test_codeart2d_layout.py | 648 | assert bundle["placeholder"] is True # the tree kind is a placeholder sprite | CODE |
| LOW⚡ | tests/test_codeart2d_core.py | 978 | assert plain["placeholder"] is False and stand_in["placeholder"] is True | CODE |
| LOW⚡ | tests/test_codeart2d_core.py | 979 | assert {key: value for key, value in stand_in.items() if key != "placeholder"} == \ | CODE |
| LOW⚡ | tests/test_codeart2d_core.py | 980 | {key: value for key, value in plain.items() if key != "placeholder"} | CODE |
| LOW⚡ | tests/test_map_bundle.py | 1140 | pack["accepted"][0]["status"] = "placeholder" | CODE |
| LOW⚡ | tests/test_build_animation_clips.py | 573 | contract.update({"art_source": "code", "placeholder": True, "pixel_art": True, "sampling": "nearest"}) | CODE |
| LOW⚡ | tests/test_build_animation_clips.py | 578 | self.assertEqual({key: result[key] for key in ("art_source", "placeholder", "pixel_art", "sampling")}, | CODE |
| LOW⚡ | tests/test_build_animation_clips.py | 579 | {"art_source": "code", "placeholder": True, "pixel_art": True, "sampling": "nearest"}) | CODE |
| LOW | tests/test_export_engine.py | 287 | clips_path = hero(tmp_path, top={"pixel_art": True, "art_source": "code", "placeholder": False}) | CODE |
| LOW | shared/schemas/sprite.schema.json | 105 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | shared/schemas/sprite.schema.json | 293 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | shared/schemas/sprite.schema.json | 480 | "placeholder": {"type": "boolean"} | CODE |
| LOW | shared/schemas/map.schema.json | 63 | "status": {"enum": ["accepted", "placeholder"]}, | CODE |
| LOW | shared/schemas/map.schema.json | 64 | "anchor_source": {"enum": ["measured", "authored", "placeholder", "derived-v1"]}, | CODE |
| LOW | shared/schemas/map.schema.json | 89 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | shared/schemas/map.schema.json | 427 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | shared/schemas/video.schema.json | 601 | "placeholder": {"type": "boolean"} | CODE |
| LOW | shared/schemas/codeart.schema.json | 277 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/generate2dmap/references/schemas/map.schema.json | 63 | "status": {"enum": ["accepted", "placeholder"]}, | CODE |
| LOW | skills/generate2dmap/references/schemas/map.schema.json | 64 | "anchor_source": {"enum": ["measured", "authored", "placeholder", "derived-v1"]}, | CODE |
| LOW | skills/generate2dmap/references/schemas/map.schema.json | 89 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/generate2dmap/references/schemas/map.schema.json | 427 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/generate2dmap/scripts/map_bundle.py | 70 | "atmosphere", "lights", "qa", "provenance", "art_source", "placeholder", | CODE |
| LOW | skills/generate2dmap/scripts/map_bundle.py | 965 | if item.get("status") == "placeholder": | CODE |
| LOW⚡ | skills/generate2dmap/scripts/extract_prop_pack.py | 642 | "status": "placeholder", "output_size": [size_w, size_h], | CODE |
| LOW⚡ | skills/generate2dmap/scripts/extract_prop_pack.py | 645 | "anchor_source": "placeholder", "kept_area": 0, "edge_touch": False, | CODE |
| LOW⚡ | skills/generate2dmap/scripts/extract_prop_pack.py | 647 | return CellResult(spec, "placeholder", image, record, visible_px) | CODE |
| LOW | skills/generate2dmap/scripts/extract_prop_pack.py | 817 | view.update({"status": "placeholder", "padding": [0, 0, 0, 0], "anchor_px": [0, 1], | CODE |
| LOW | skills/generate2dmap/scripts/extract_prop_pack.py | 1196 | "accepted": statuses.count("accepted"), "placeholders": statuses.count("placeholder"), | CODE |
| LOW | …generate2dsprite/references/schemas/sprite.schema.json | 105 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | …generate2dsprite/references/schemas/sprite.schema.json | 293 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | …generate2dsprite/references/schemas/sprite.schema.json | 480 | "placeholder": {"type": "boolean"} | CODE |
| LOW | …ills/generate2dsprite/scripts/build_animation_clips.py | 106 | V2_TOP_FIELDS = ("sampling", "pixel_art", "palette_ref", "art_source", "placeholder", "body_height_px", "shadow") | CODE |
| LOW | …ills/generate2dsprite/scripts/build_animation_clips.py | 108 | V1_HONOURED_TOP_FIELDS = ("art_source", "placeholder", "pixel_art", "sampling") | CODE |
| LOW | …ills/generate2dsprite/scripts/build_animation_clips.py | 217 | for flag in ("pixel_art", "placeholder"): | CODE |
| LOW | skills/generate2dsprite/scripts/export_engine.py | 75 | TOP_LEVEL_EXTRAS = ("sampling", "pixel_art", "body_height_px", "art_source", "placeholder", "shadow") | CODE |
| LOW | skills/generate2dsprite/scripts/export_engine.py | 1096 | **{key: sprite.top[key] for key in ("pixel_art", "art_source", "placeholder", "shadow") if key in sprite.top}, | CODE |
| LOW | …lls/video2dsprite/references/schemas/video.schema.json | 601 | "placeholder": {"type": "boolean"} | CODE |
| LOW | skills/video2dsprite/scripts/engine_export.py | 394 | art_source=art_source, placeholder=bool(get("placeholder", False)), | CODE |
| LOW | skills/video2dsprite/scripts/engine_export.py | 1565 | "placeholder": opts.placeholder}) | CODE |
| LOW | skills/codeart2d/references/style-envelope.md | 32 | `"placeholder": false` and `"disclosure": "code-drawn, no image model"`, plus the sha256 | CODE |
| LOW | skills/codeart2d/references/schemas/sprite.schema.json | 105 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/codeart2d/references/schemas/sprite.schema.json | 293 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/codeart2d/references/schemas/sprite.schema.json | 480 | "placeholder": {"type": "boolean"} | CODE |
| LOW | skills/codeart2d/references/schemas/map.schema.json | 63 | "status": {"enum": ["accepted", "placeholder"]}, | CODE |
| LOW | skills/codeart2d/references/schemas/map.schema.json | 64 | "anchor_source": {"enum": ["measured", "authored", "placeholder", "derived-v1"]}, | CODE |
| LOW | skills/codeart2d/references/schemas/map.schema.json | 89 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/codeart2d/references/schemas/map.schema.json | 427 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/codeart2d/references/schemas/codeart.schema.json | 277 | "placeholder": {"type": "boolean"}, | CODE |
| LOW | skills/codeart2d/scripts/fx_build.py | 761 | "pixel_art": args.route == "pixel", "art_source": "code", "placeholder": False} | CODE |
| LOW | skills/codeart2d/scripts/codeart_core.py | 2283 | "placeholder": placeholder, | CODE |
| LOW | skills/codeart2d/scripts/layout_build.py | 255 | origin: str # "image", "pixelspec", "pack" or "placeholder" | CODE |
| LOW | skills/codeart2d/scripts/layout_build.py | 272 | return any(variant.origin == "placeholder" for variant in self.variants) | CODE |
| LOW | skills/codeart2d/scripts/layout_build.py | 457 | return PropVariant(prop_id, np.zeros((1, 1, 4), np.uint8), (0.0, 0.0), "placeholder"), {} | CODE |
| LOW | skills/codeart2d/scripts/layout_build.py | 552 | if variants[0].origin == "placeholder": | CODE |
| LOW | skills/codeart2d/scripts/layout_build.py | 563 | variants[0] = PropVariant(name, image, anchor, "placeholder") | CODE |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/install_skills.py | 269 | except Exception as exc: # noqa: BLE001 (D27: tracebacks are never user-facing) | CODE |
| MEDIUM | tests/test_route_media.py | 360 | " sys.exit(0)\nsys.stdin.read()\nprint('Error: 401 Unauthorized: please sign in', " | CODE |
| LOW | skills/generate2dmedia/scripts/generate_media.py | 1268 | except Exception as exc: | CODE |
| LOW | skills/generate2dmedia/scripts/generate_media.py | 1449 | except Exception as exc: # D27: never a traceback; the message is scrubbed (secrets, URLs, blobs) | CODE |
| MEDIUM | skills/generate2dmedia/scripts/generate_media.py | 306 | def _error_body(exc): | CODE |
| LOW | skills/generate2dmedia/scripts/forge_doctor.py | 743 | except Exception as exc: # noqa: BLE001 (a diagnostic must not crash on a damaged sibling) | CODE |
| LOW | skills/generate2dmedia/scripts/forge_doctor.py | 784 | except Exception as exc: # noqa: BLE001 (a diagnostic must not crash on a damaged sibling) | CODE |
| LOW | skills/generate2dmedia/scripts/forge_doctor.py | 1292 | except Exception as exc: # noqa: BLE001 (D27: a diagnostic never ends in a traceback) | CODE |
| LOW | skills/generate2dmedia/scripts/cli_media.py | 593 | except Exception as exc: # noqa: BLE001 (a malformed event must not leave the CLI running) | CODE |
| LOW | skills/generate2dmedia/scripts/cli_media.py | 1622 | except Exception as exc: | CODE |
| LOW | skills/generate2dmedia/scripts/cli_media.py | 2125 | except Exception as exc: # noqa: BLE001 (D27: tracebacks are never user-facing; the message is scrubbed) | CODE |
| LOW | skills/generate2dmedia/scripts/media_ledger.py | 588 | except Exception as exc: # noqa: BLE001 (D27: tracebacks are never user-facing) | CODE |
| LOW | skills/generate2dmedia/scripts/route_media.py | 795 | except Exception as exc: # noqa: BLE001 (D27: tracebacks are never user-facing) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/forge_testutils.py | 37 | __all__ = [ | CODE |
| LOW | shared/forge_nav.py | 246 | __all__ = [ | CODE |
| LOW | shared/forge_schema.py | 82 | __all__ = [ | CODE |
| LOW | skills/generate2dmap/scripts/map_nav.py | 74 | __all__ = [ | CODE |
| LOW | skills/generate2dmap/scripts/forge_nav.py | 246 | __all__ = [ | CODE |
| LOW | skills/generate2dmap/scripts/forge_schema.py | 82 | __all__ = [ | CODE |
| LOW | …ills/generate2dsprite/scripts/build_animation_clips.py | 675 | def _set_native_webp_loop(path: Path, count: int) -> None: | CODE |
| LOW | skills/video2dsprite/scripts/forge_schema.py | 82 | __all__ = [ | CODE |
| LOW | skills/codeart2d/scripts/forge_nav.py | 246 | __all__ = [ | CODE |
| LOW | skills/codeart2d/scripts/forge_schema.py | 82 | __all__ = [ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/forge_testutils.py | 153 | CODE | |
| LOW | tests/test_scene_motion.py | 69 | CODE | |
| LOW | shared/forge_palette.py | 905 | CODE | |
| LOW | skills/generate2dmap/scripts/extract_scene_lights.py | 126 | CODE | |
| LOW | skills/generate2dsprite/scripts/sheet_qc.py | 728 | CODE | |
| LOW | skills/generate2dsprite/scripts/forge_palette.py | 905 | CODE | |
| LOW | skills/video2dsprite/scripts/forge_palette.py | 905 | CODE | |
| LOW | skills/video2dsprite/scripts/finish_frames.py | 952 | CODE | |
| LOW | skills/codeart2d/scripts/codeart_core.py | 1452 | CODE | |
| LOW | skills/codeart2d/scripts/codeart_core.py | 1892 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/test_forge_core.py | 873 | """MAP-14 / repro_16: normalised seam metric separates seamless loops, wrap pops and held duplicates.""" | STRING |
| MEDIUM | tests/test_engine_export_v3.py | 73 | """Antialiased disc circling the centre (orbit radius ``orbit * size``): frame ``k`` of a seamless loop.""" | STRING |
| MEDIUM | skills/generate2dmap/scripts/extract_terrain_tiles.py | 341 | """Opaque fills resize in RGB exactly as before (wrap-aware when seamless); RGBA tiles premultiplied.""" | STRING |
| MEDIUM | skills/video2dsprite/scripts/gait_loop.py | 333 | ground[index] = np.percentile(ys, 99.0) + 1.0 # robust ground line: bottom edge of the p99 row | CODE |