Rebuild the object in a reference image as a code-only, procedural, quality-gated, animation-ready Three.js model. Token-efficient image-to-3D.
This report summarizes scanner evidence for img2threejs/img2threejs, a Python project with 17,931 GitHub stars. SynthScan examined 90,600 lines of code across 314 source files, recording 2209 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 35.6 (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? 1579 finding(s).
Are imports declared and package/API names verified? 436 finding(s).
Are wrappers, guards, and repeated structures necessary? 1621 finding(s).
Which changes need focused human review? 2209 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 2209 distinct pattern matches across 13 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | forge/stage4_review/append_review.py | 83 | def is_remote_or_virtual_path(value: str) -> bool: | CODE |
| LOW | forge/stage4_review/append_review.py | 94 | def visual_acceptance_threshold(spec: dict) -> float: | CODE |
| LOW | forge/stage4_review/check_part_coverage.py | 78 | def collect_local_feature_keys(spec: dict[str, Any]) -> set[str]: | CODE |
| LOW | forge/stage4_review/_fit_divine_eye.py | 25 | def is_approved_divine_eye_result( | CODE |
| LOW | forge/stage4_review/geometry_integrity.py | 191 | def measure_geometry_integrity(payload: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | forge/stage4_review/fit_params.py | 137 | def divine_eye_correction_history( | CODE |
| LOW | forge/stage4_review/fit_params.py | 144 | def _divine_eye_objective_score(result: Mapping[str, object]) -> float: | CODE |
| LOW | forge/stage4_review/fit_params.py | 190 | def _default_divine_eye_evaluator(reference_png: Path, render_png: Path) -> Mapping[str, object]: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 52 | def test_an_authored_ring_stack_is_used_directly(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 61 | def test_parallel_z_offsets_are_merged(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 71 | def test_an_ellipsoid_is_synthesised_at_unit_scale(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 86 | def test_a_shape_with_no_describable_surface_returns_none(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 93 | def test_nothing_is_emitted_when_no_component_declares_it(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 98 | def test_the_helper_and_the_call_are_both_emitted(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 104 | def test_the_march_travels_along_the_vertex_spoke(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 118 | def test_normals_are_recomputed_after_moving_vertices(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 124 | def test_the_march_runs_in_the_target_frame(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 131 | def test_the_declared_numbers_reach_the_call(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 137 | def test_a_vertex_on_the_axis_marches_axially_instead_of_being_skipped(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 249 | def test_unresolved_vertices_are_counted(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 254 | def test_the_count_is_left_on_the_geometry_for_a_gate_to_read(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 259 | def test_a_warning_names_the_consequence_and_the_fix(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 362 | def test_the_stack_height_is_scaled_too(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 372 | def test_the_z_offset_is_scaled_by_depth_not_by_width(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_stand_proud_emission.py | 381 | def test_an_explicit_transform_scale_wins_over_dimensions(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 187 | def test_the_transliteration_matches_the_emitted_source(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 202 | def test_the_two_implementations_agree_across_the_domain(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 225 | def test_they_agree_on_the_signs_too(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 276 | def test_a_malformed_declaration_never_reaches_the_generator(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 289 | def test_a_target_whose_shape_has_no_ring_stack_is_reported_in_the_output(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 301 | def test_a_component_may_stand_proud_of_one_declared_after_it(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 340 | def test_an_authored_stack_is_scaled_to_the_geometry_it_describes(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 393 | def test_a_target_with_no_dimensions_is_left_at_unit_scale(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 432 | def test_the_fixture_carries_both_a_ring_stack_target_and_two_marchers(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 441 | def test_the_fixture_ring_stack_matches_the_geometry_it_claims_to_describe(self) -> None: | CODE |
| LOW | forge/tests/test_stand_proud_emission.py | 467 | def test_a_lathe_target_with_an_elliptical_stack_is_refused(self) -> None: | CODE |
| LOW | forge/tests/test_geometry_derivation.py | 39 | def test_circle_radius_peaks_in_middle(self): | CODE |
| LOW⚡ | forge/tests/test_geometry_derivation.py | 50 | def test_rectangle_radius_roughly_constant(self): | CODE |
| LOW⚡ | forge/tests/test_geometry_derivation.py | 59 | def test_triangle_radius_increases_top_to_bottom(self): | CODE |
| LOW⚡ | forge/tests/test_geometry_derivation.py | 68 | def test_axis_picks_longer_dimension(self): | CODE |
| LOW⚡ | forge/tests/test_geometry_derivation.py | 76 | def test_axis_positions_span_normalized_range(self): | CODE |
| LOW⚡ | forge/tests/test_attachment_anchor.py | 59 | def test_missing_anchor_fires_anchor_declared(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_attachment_anchor.py | 67 | def test_dangling_anchor_fires_anchor_resolves(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_attachment_anchor.py | 75 | def test_anchor_at_root_fires_anchor_not_root(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_attachment_anchor.py | 83 | def test_mutual_anchors_fire_anchor_not_cyclic(self) -> None: | CODE |
| LOW | forge/tests/test_attachment_anchor.py | 101 | def test_hat_regression_anchor_proximity_fires_with_matching_distance(self) -> None: | CODE |
| LOW | forge/tests/test_attachment_anchor.py | 119 | def test_charm_regression_anchor_proximity_fires_with_default_offset(self) -> None: | CODE |
| LOW | forge/tests/test_attachment_anchor.py | 143 | def test_no_attachments_passes_and_reports_zero_count(self) -> None: | CODE |
| LOW | forge/tests/test_attachment_anchor.py | 152 | def test_component_absent_from_measured_lands_in_unmeasured(self) -> None: | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 72 | def test_axis_band_is_inside_between_its_planes_and_outside_beyond_them(self): | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 78 | def test_a_hard_boundary_gives_only_zero_or_one_weight(self): | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 83 | def test_softness_produces_intermediate_weights_only_inside_its_band(self): | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 91 | def test_tapered_capsule_radius_grows_from_start_to_end(self): | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 98 | def test_later_regions_win_where_they_overlap(self): | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 104 | def test_a_point_claimed_by_nothing_keeps_the_base_colour(self): | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 114 | def test_an_unknown_kind_is_rejected_rather_than_ignored(self): | CODE |
| LOW⚡ | forge/tests/test_vertex_paint.py | 118 | def test_a_zero_radius_ellipsoid_is_rejected(self): | CODE |
| LOW | forge/tests/test_vertex_paint.py | 129 | def test_a_capsule_with_identical_endpoints_is_rejected(self): | CODE |
| LOW | forge/tests/test_vertex_paint.py | 148 | def test_duplicate_region_ids_are_rejected(self): | CODE |
| LOW | forge/tests/test_vertex_paint.py | 160 | def test_a_bad_colour_string_is_rejected(self): | CODE |
| 1363 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | forge/stage4_review/per_feature.py | 156 | raise ValueError("scores file must be a JSON object {id: score-or-null}") | CODE |
| HIGH | forge/stage4_review/self_intersection.py | 370 | # A zero-area triangle bounds no volume and its plane is undefined; counting it would | COMMENT |
| HIGH | forge/tests/test_primitive_watertightness.py | 210 | for (let i = 0; i < position.count; i++) arr.push(i); | CODE |
| HIGH | forge/tests/test_primitive_watertightness.py | 269 | if (id === undefined) { id = byKey.size; byKey.set(key, id); } | CODE |
| HIGH | forge/tests/test_primitive_watertightness.py | 281 | if (a !== b && b !== c && c !== a) triangles.push([a, b, c]); | CODE |
| HIGH | forge/tests/test_primitive_watertightness.py | 281 | if (a !== b && b !== c && c !== a) triangles.push([a, b, c]); | CODE |
| HIGH⚡ | forge/tests/test_repetition_system_scale.py | 141 | distances.push(pos.length()); | CODE |
| HIGH⚡ | forge/tests/test_repetition_system_scale.py | 141 | distances.push(pos.length()); | CODE |
| HIGH⚡ | forge/tests/test_repetition_system_scale.py | 142 | scales.push(scl.toArray()); | CODE |
| HIGH | forge/tests/test_visual_hull.py | 196 | "catch (error) { console.log(JSON.stringify({ rejected: error instanceof Error && error.name === | CODE |
| HIGH⚡ | forge/tests/test_hierarchy_scale.py | 202 | self.assertIn("const endpoint_torso_0 = makeAttachmentEndpoint(null);", generated) | STRING |
| HIGH⚡ | forge/tests/test_hierarchy_scale.py | 203 | self.assertIn("const endpoint_head_1 = makeAttachmentEndpoint(null);", generated) | STRING |
| HIGH | forge/tests/test_sdf_primitives.py | 318 | "let out = null;\n" | CODE |
| HIGH | forge/tests/test_humanoid_silhouette_profile.py | 53 | const op = Array.isArray(mat) ? 1 : (mat && mat.opacity !== undefined ? mat.opacity : 1); | CODE |
| HIGH | forge/tests/test_humanoid_silhouette_profile.py | 59 | pts.push([v.x, v.y]); | CODE |
| HIGH | forge/tests/test_humanoid_silhouette_profile.py | 232 | if (b.isEmpty() || !Number.isFinite(b.min.x) || !Number.isFinite(b.max.x)) empty.push(id); | CODE |
| HIGH⚡ | forge/tests/test_subdivision.py | 230 | self.assertIn("nextFaces.push([", generated) | CODE |
| HIGH⚡ | forge/tests/test_tapered_sweep.py | 166 | self.assertIn("st.rx <= 1e-6 && st.rz <= 1e-6", source) | CODE |
| HIGH | forge/tests/test_tapered_sweep.py | 289 | "let out = null;\n" | CODE |
| HIGH | forge/tests/test_pipeline.py | 561 | self.assertIn("shape.holes.push(path)", ts) # cutout via Shape.holes | CODE |
| HIGH⚡ | …e/tests/test_attachment_does_not_override_primitive.py | 84 | self.assertIn("const endpoint_part_1 = makeAttachmentEndpoint(null);", source) | CODE |
| HIGH⚡ | …e/tests/test_attachment_does_not_override_primitive.py | 91 | self.assertIn("const endpoint_part_1 = makeAttachmentEndpoint(null);", source) | CODE |
| HIGH | …e/tests/test_attachment_does_not_override_primitive.py | 130 | self.assertIn("const endpoint_part_1 = makeAttachmentEndpoint(null);", source) | CODE |
| HIGH | forge/tests/test_rig_hierarchy_emission.py | 155 | if (idx < 0 || idx >= boneCount) outOfRange++; | CODE |
| HIGH | forge/tests/test_rig_hierarchy_emission.py | 197 | out.parent[id] = b.parent && b.parent.isBone ? b.parent.name : null; | CODE |
| HIGH | forge/tests/test_rig_hierarchy_emission.py | 197 | out.parent[id] = b.parent && b.parent.isBone ? b.parent.name : null; | CODE |
| HIGH | forge/tests/test_rig_hierarchy_emission.py | 262 | if (o.isSkinnedMesh) { skinned.push(o); if (o.skeleton) skeletons.add(o.skeleton); } | CODE |
| HIGH | forge/tests/test_rig_hierarchy_emission.py | 271 | pts.push(mesh.localToWorld(v.clone()).toArray()); | CODE |
| HIGH⚡ | forge/tests/test_rig_hierarchy_emission.py | 322 | cullingRecorded: rig.frustumCulled === false && typeof rig.cullingNote === 'string', | CODE |
| HIGH⚡ | forge/tests/test_rig_hierarchy_emission.py | 328 | if (!bone || !own || !far) { out.probes.push({ boneId, missing: true }); continue; } | CODE |
| HIGH⚡ | forge/tests/test_rig_hierarchy_emission.py | 337 | out.probes.push({ boneId, ownName, farName, ownDelta, farDelta }); | CODE |
| HIGH | forge/tests/test_rig_hierarchy_emission.py | 445 | pts.push([+pos.getX(i).toFixed(6), +pos.getY(i).toFixed(6), +pos.getZ(i).toFixed(6)]); | CODE |
| HIGH | forge/stage2_spec/validate_sculpt_spec.py | 2710 | f"NAME_UNIQUENESS: exactly one root bone required (parent: null), found {len(roots)}" | CODE |
| HIGH | forge/stage5_rig/emit_animation_runtime.py | 74 | loop: boolean | null; | CODE |
| HIGH | forge/stage5_rig/emit_animation_runtime.py | 162 | tickers.push(tick); | CODE |
| HIGH | forge/stage5_rig/emit_animation_runtime.py | 230 | const clip = animationClips.find((candidate) => candidate.name === info.id || candidate.name === info.sourceName); | CODE |
| HIGH | forge/stage5_rig/emit_animation_runtime.py | 316 | buttons.push(button); | CODE |
| HIGH | forge/stage5_rig/emit_animation_runtime.py | 380 | sampleTimes.push(t); | CODE |
| HIGH | forge/stage5_rig/emit_animation_runtime.py | 397 | results.push({ | CODE |
| HIGH | forge/stage5_rig/rig_spec.py | 76 | f"RigSpec must have exactly one root bone (parent: null), found {len(roots)}" | CODE |
| HIGH | forge/stage5_rig/rig_spec.py | 139 | errors.append(f"exactly one root bone required (parent: null), found {len(roots)}") | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 84 | positions.push(0, -halfCyl - radius, 0); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 92 | ringStarts.push(start); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 95 | positions.push(r * Math.cos(theta), y, r * Math.sin(theta)); | CODE |
| HIGH | forge/stage5_rig/emit_rig.py | 108 | cylinderRingStarts.push(start); | CODE |
| HIGH | forge/stage5_rig/emit_rig.py | 111 | positions.push(radius * Math.cos(theta), y, radius * Math.sin(theta)); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 125 | topRingStarts.push(start); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 128 | positions.push(r * Math.cos(theta), y, r * Math.sin(theta)); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 133 | positions.push(0, halfCyl + radius, 0); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 138 | indices.push(bottomPoleIndex, firstBottomRing + radial, firstBottomRing + next); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 147 | indices.push(a + radial, a + next, b + next); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 148 | indices.push(a + radial, b + next, b + radial); | CODE |
| HIGH⚡ | forge/stage5_rig/emit_rig.py | 155 | indices.push(topPoleIndex, lastRing + next, lastRing + radial); | CODE |
| HIGH | forge/stage5_rig/emit_rig.py | 240 | let root = null; | CODE |
| HIGH | forge/stage5_rig/emit_rig.py | 244 | if (parentId === null) { | CODE |
| HIGH | forge/stage5_rig/emit_rig.py | 270 | if (fallback) fallbackVertices.push(vertex); | CODE |
| HIGH⚡ | forge/stage3_build/generate_threejs_factory.py | 434 | inside = inside && visualHullMaskContains(view, horizontalX, verticalY); | CODE |
| HIGH⚡ | forge/stage3_build/generate_threejs_factory.py | 437 | inside = inside && visualHullMaskContains(view, horizontalZ, verticalY); | CODE |
| HIGH⚡ | forge/stage3_build/generate_threejs_factory.py | 440 | inside = inside && visualHullMaskContains(view, horizontalX, horizontalZ); | CODE |
| HIGH⚡ | forge/stage3_build/generate_threejs_factory.py | 459 | if (existing !== undefined) return existing; | CODE |
| 139 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | forge/tests/test_rig_gates.py | 152 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_rig_gates.py | 158 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | forge/tests/test_glb_rig_reference.py | 261 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | forge/tests/test_glb_rig_reference.py | 263 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | forge/tests/test_glb_rig_reference.py | 560 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | forge/tests/test_glb_rig_reference.py | 562 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_glb_rig_reference.py | 55 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_glb_rig_reference.py | 57 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_glb_rig_reference.py | 113 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_glb_rig_reference.py | 118 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_glb_rig_reference.py | 451 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_glb_rig_reference.py | 453 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_action_design.py | 58 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_action_design.py | 65 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_action_design.py | 140 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/tests/test_action_design.py | 146 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/_shared/material_physics.py | 30 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/_shared/material_physics.py | 32 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 143 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 145 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 208 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 210 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 281 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 283 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 444 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 446 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 850 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/mesh_parity.py | 852 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 163 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 167 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 425 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 427 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 505 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 507 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 666 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 668 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 793 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 795 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 842 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 844 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1027 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1029 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1091 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1093 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1175 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1177 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1277 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1279 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1405 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1407 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1580 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1582 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1709 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1711 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1882 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/rig_gates.py | 1884 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/clip_features.py | 33 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/clip_features.py | 40 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/clip_features.py | 257 | # --------------------------------------------------------------------------------------------- | COMMENT |
| MEDIUM | forge/stage5_rig/clip_features.py | 259 | # --------------------------------------------------------------------------------------------- | COMMENT |
| 64 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/mesh3d/generate_reference_mesh.py | 34 | CODE | |
| LOW | integrations/vision/reference_vision.py | 9 | CODE | |
| LOW | …aracter_pipeline/python/measure_density_convergence.py | 28 | CODE | |
| LOW | …ations/glb_character_pipeline/python/bake_atlas_uvs.py | 36 | CODE | |
| LOW | …ns/glb_character_pipeline/python/build_head_surface.py | 17 | CODE | |
| LOW | …/glb_character_pipeline/python/build_cross_sections.py | 36 | CODE | |
| LOW | …tegrations/glb_character_pipeline/python/slice_node.py | 24 | CODE | |
| LOW | …s/glb_character_pipeline/python/export_sdf_surfaces.py | 21 | CODE | |
| LOW | forge/report.py | 1 | CODE | |
| LOW | forge/state.py | 2 | CODE | |
| LOW | forge/next.py | 1 | CODE | |
| LOW | forge/materials/compatibility.py | 4 | CODE | |
| LOW | forge/materials/__init__.py | 3 | CODE | |
| LOW | forge/materials/__init__.py | 3 | CODE | |
| LOW | forge/materials/__init__.py | 3 | CODE | |
| LOW | forge/materials/__init__.py | 3 | CODE | |
| LOW | forge/materials/__init__.py | 3 | CODE | |
| LOW | forge/materials/reference.py | 10 | CODE | |
| LOW | forge/stage4_review/scalp_exposure.py | 31 | CODE | |
| LOW | forge/stage4_review/material_feedback.py | 4 | CODE | |
| LOW | forge/stage4_review/compare_region_passes.py | 10 | CODE | |
| LOW | forge/stage4_review/swept_arc_gate.py | 26 | CODE | |
| LOW | forge/stage4_review/divine_eye.py | 30 | CODE | |
| LOW | forge/stage4_review/calibrate_eye.py | 20 | CODE | |
| LOW | forge/stage4_review/material_views.py | 10 | CODE | |
| LOW | forge/stage4_review/multi_pass.py | 4 | CODE | |
| LOW | forge/stage4_review/vertex_region_gate.py | 35 | CODE | |
| LOW | forge/stage4_review/append_review.py | 4 | CODE | |
| LOW | forge/stage4_review/material_comparator.py | 4 | CODE | |
| LOW | forge/stage4_review/material_comparator.py | 8 | CODE | |
| LOW | forge/stage4_review/check_part_coverage.py | 41 | CODE | |
| LOW | forge/stage4_review/hair_gate.py | 22 | CODE | |
| LOW | forge/stage4_review/correction_loop.py | 23 | CODE | |
| LOW | forge/stage4_review/render_bridge.py | 10 | CODE | |
| LOW | forge/stage4_review/pairwise_penetration.py | 22 | CODE | |
| LOW | forge/stage4_review/joint_loops.py | 27 | CODE | |
| LOW | forge/stage4_review/_fit_divine_eye.py | 1 | CODE | |
| LOW | forge/stage4_review/attachment_anchor.py | 36 | CODE | |
| LOW | forge/stage4_review/material_gate.py | 4 | CODE | |
| LOW | forge/stage4_review/mesh_reference_compare.py | 31 | CODE | |
| LOW | forge/stage4_review/validate_render_profile.py | 9 | CODE | |
| LOW | forge/stage4_review/diagnose_render.py | 20 | CODE | |
| LOW | forge/stage4_review/make_comparison_sheet.py | 9 | CODE | |
| LOW | forge/stage4_review/interior_difference.py | 28 | CODE | |
| LOW | forge/stage4_review/objectness.py | 20 | CODE | |
| LOW | forge/stage4_review/turntable_gate.py | 38 | CODE | |
| LOW | forge/stage4_review/turntable_gate.py | 50 | CODE | |
| LOW | forge/stage4_review/self_intersection.py | 30 | CODE | |
| LOW | forge/stage4_review/vlm_gate.py | 26 | CODE | |
| LOW | forge/stage4_review/geometry_integrity.py | 1 | CODE | |
| LOW | forge/stage4_review/diagnose_render_multi_angle.py | 20 | CODE | |
| LOW | forge/stage4_review/diagnose_render_multi_angle.py | 29 | CODE | |
| LOW | forge/stage4_review/fit_params.py | 4 | CODE | |
| LOW | forge/tests/test_geometry_derivation.py | 4 | CODE | |
| LOW | forge/tests/test_attachment_anchor.py | 10 | CODE | |
| LOW | forge/tests/test_vertex_paint.py | 1 | CODE | |
| LOW | forge/tests/test_structure_gates.py | 1 | CODE | |
| LOW | forge/tests/test_structure_gates.py | 15 | CODE | |
| LOW | forge/tests/test_targets.py | 7 | CODE | |
| LOW | forge/tests/test_emit_animation_runtime_tsc_smoke.py | 16 | CODE | |
| 170 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ations/glb_character_pipeline/python/bake_atlas_uvs.py | 82 | CODE | |
| LOW | …/glb_character_pipeline/python/build_cross_sections.py | 102 | CODE | |
| LOW | …tegrations/glb_character_pipeline/python/slice_node.py | 186 | CODE | |
| LOW | forge/next.py | 39 | CODE | |
| LOW | forge/materials/compatibility.py | 13 | CODE | |
| LOW | forge/materials/reference.py | 36 | CODE | |
| LOW | forge/stage4_review/scalp_exposure.py | 91 | CODE | |
| LOW | forge/stage4_review/scalp_exposure.py | 81 | CODE | |
| LOW | forge/stage4_review/swept_arc_gate.py | 121 | CODE | |
| LOW | forge/stage4_review/divine_eye.py | 81 | CODE | |
| LOW | forge/stage4_review/vertex_region_gate.py | 222 | CODE | |
| LOW | forge/stage4_review/vertex_region_gate.py | 276 | CODE | |
| LOW | forge/stage4_review/check_part_coverage.py | 78 | CODE | |
| LOW | forge/stage4_review/render_bridge.py | 284 | CODE | |
| LOW | forge/stage4_review/pairwise_penetration.py | 303 | CODE | |
| LOW | forge/stage4_review/per_feature.py | 59 | CODE | |
| LOW | forge/stage4_review/diagnose_render.py | 71 | CODE | |
| LOW | forge/stage4_review/make_comparison_sheet.py | 40 | CODE | |
| LOW | forge/stage4_review/interior_difference.py | 44 | CODE | |
| LOW | forge/stage4_review/interior_difference.py | 65 | CODE | |
| LOW | forge/stage4_review/objectness.py | 41 | CODE | |
| LOW | forge/stage4_review/turntable_gate.py | 109 | CODE | |
| LOW | forge/stage4_review/fit_params.py | 198 | CODE | |
| LOW | forge/tests/test_stand_proud_emission.py | 162 | CODE | |
| LOW | forge/tests/test_stand_proud_emission.py | 202 | CODE | |
| LOW | forge/tests/test_stand_proud_emission.py | 323 | CODE | |
| LOW | forge/tests/test_fit_params.py | 348 | CODE | |
| LOW | forge/tests/test_issue_triage.py | 272 | CODE | |
| LOW | forge/tests/test_showcase_tsc_smoke.py | 61 | CODE | |
| LOW | forge/tests/test_correction_loop.py | 123 | CODE | |
| LOW | forge/tests/test_search_specs.py | 716 | CODE | |
| LOW | forge/tests/test_scalp_exposure.py | 36 | CODE | |
| LOW | forge/tests/test_hair_evidence.py | 141 | CODE | |
| LOW | forge/_shared/sdf_primitives.py | 54 | CODE | |
| LOW | forge/_shared/sdf_primitives.py | 131 | CODE | |
| LOW | forge/_shared/jpeg.py | 147 | CODE | |
| LOW | forge/_shared/jpeg.py | 231 | CODE | |
| LOW | forge/_shared/jpeg.py | 64 | CODE | |
| LOW | forge/_shared/glb_container.py | 31 | CODE | |
| LOW | forge/_shared/spec_augmentation.py | 66 | CODE | |
| LOW | forge/_shared/spec_search.py | 1344 | CODE | |
| LOW | forge/_shared/spec_search.py | 1819 | CODE | |
| LOW | forge/_shared/material_physics.py | 132 | CODE | |
| LOW | forge/_shared/domains/__init__.py | 109 | CODE | |
| LOW | forge/stage2_spec/hair_profile.py | 124 | CODE | |
| LOW | forge/stage2_spec/hair_profile.py | 232 | CODE | |
| LOW | forge/stage2_spec/new_pre_spec_assessment.py | 169 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 637 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 726 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 916 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 1073 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 1225 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 1441 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 1655 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 1758 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 1863 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 1900 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 2031 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 2197 | CODE | |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 2349 | CODE | |
| 37 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | forge/materials/compatibility.py | 100 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/material_feedback.py | 137 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/compare_region_passes.py | 163 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW⚡ | forge/stage4_review/divine_eye.py | 320 | except Exception: | CODE |
| LOW⚡ | forge/stage4_review/divine_eye.py | 328 | except Exception: | CODE |
| LOW⚡ | forge/stage4_review/divine_eye.py | 332 | except Exception: | CODE |
| LOW | forge/stage4_review/divine_eye.py | 446 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage4_review/calibrate_eye.py | 116 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage4_review/material_views.py | 178 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/material_comparator.py | 175 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/correction_loop.py | 252 | except Exception as exc: # noqa: BLE001 - CLI boundary, surface any failure | CODE |
| LOW | forge/stage4_review/render_bridge.py | 324 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage4_review/render_bridge.py | 550 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/pairwise_penetration.py | 368 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/joint_loops.py | 201 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/per_feature.py | 202 | except Exception as exc: # noqa: BLE001 - surface any failure cleanly | CODE |
| LOW | forge/stage4_review/attachment_anchor.py | 343 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/material_gate.py | 120 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/diagnose_render.py | 350 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/make_comparison_sheet.py | 133 | except Exception as direct_error: | CODE |
| LOW | forge/stage4_review/make_comparison_sheet.py | 284 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/turntable_gate.py | 409 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/self_intersection.py | 586 | except Exception as exc: | CODE |
| LOW | forge/stage4_review/vlm_gate.py | 187 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage4_review/diagnose_render_multi_angle.py | 137 | except Exception as exc: | CODE |
| LOW | forge/stage2_spec/derive_geometry.py | 109 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage2_spec/apply_material_analysis.py | 186 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/validate_rig_payload.py | 189 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/skin_conditioning.py | 594 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/mesh_parity.py | 897 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/geodesic_skinning.py | 498 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/rig_gates.py | 880 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/rig_gates.py | 1130 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/rig_gates.py | 1341 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/rig_gates.py | 1638 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/rig_gates.py | 1647 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/rig_gates.py | 1933 | except Exception as exc: | CODE |
| LOW | forge/stage5_rig/clip_features.py | 751 | except Exception as exc: | CODE |
| LOW⚡ | forge/stage5_rig/action_design.py | 51 | except Exception: # noqa: BLE001 - see comment above | CODE |
| LOW | forge/stage5_rig/glb_rig_reference.py | 1388 | except Exception as exc: # noqa: BLE001 - the file itself is unreadable | CODE |
| LOW | forge/stage1_intake/probe_glb.py | 299 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage1_intake/extract_part_color_recipe.py | 490 | except Exception as exc: | CODE |
| LOW | forge/stage1_intake/material_region_analysis.py | 221 | except Exception as exc: | CODE |
| LOW | forge/stage1_intake/build_detail_inventory.py | 153 | except Exception as direct_error: | CODE |
| LOW | forge/stage1_intake/build_detail_inventory.py | 326 | except Exception as exc: | CODE |
| LOW | forge/stage1_intake/extract_landmarks.py | 168 | except Exception as direct_error: | CODE |
| LOW | forge/stage1_intake/extract_landmarks.py | 433 | except Exception as exc: | CODE |
| LOW | forge/stage1_intake/extract_pbr_evidence.py | 196 | except Exception as direct_error: | CODE |
| LOW | forge/stage1_intake/extract_pbr_evidence.py | 837 | except Exception as exc: | CODE |
| LOW | forge/stage1_intake/check_reference_admission.py | 93 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage1_intake/check_reference_admission.py | 196 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage1_intake/detect_reference_effects.py | 269 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage1_intake/delight_albedo.py | 166 | except Exception as direct_error: | CODE |
| LOW | forge/stage1_intake/delight_albedo.py | 346 | except Exception as exc: | CODE |
| LOW | forge/stage3_build/bake_projected_texture.py | 44 | except Exception as exc: | CODE |
| LOW | forge/stage3_build/bake_projected_texture.py | 175 | except Exception as exc: | CODE |
| LOW | forge/stage3_build/decimate.py | 255 | except Exception as exc: | CODE |
| LOW | forge/stage3_build/module_cache.py | 148 | except Exception as exc: # noqa: BLE001 | CODE |
| LOW | forge/stage3_build/visual_hull.py | 338 | except Exception as exc: | CODE |
| LOW | forge/stage3_build/uv_unwrap.py | 610 | except Exception as exc: | CODE |
| 2 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | forge/tests/test_run_gates.py | 308 | # Replace the copied runner with a stub that mimics a pre-0.2.2 harness: argparse rejects | COMMENT |
| MEDIUM | forge/tests/test_run_gates.py | 87 | # gate_runner_argv points at <home>/harness/img2_core/gate_runner.py -- a real copy, not | STRING |
| MEDIUM⚡ | forge/tests/test_emit_animation_runtime.py | 195 | # -- Gate R1 harness -------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | forge/tests/test_emit_animation_runtime.py | 226 | # must sit ahead of (documenting) the harness, and name what it | COMMENT |
| MEDIUM | forge/tests/test_sculpt_echo_roundtrip.py | 116 | # including any uncommitted harness changes, instead of only the last git commit. | COMMENT |
| MEDIUM | forge/tests/test_sculpt_echo_failure_matrix.py | 59 | # (`sys.path.insert(0, IMG2_HOME/harness)`) resolves it exactly as it would for real. | COMMENT |
| MEDIUM | forge/_shared/targets.py | 30 | # Mirrors img2-harness/bin/img2.mjs's MAX_PLUGIN_SCHEMA / CORE_API / MAX_PROVIDES_SCHEMA (`:11-17`). | COMMENT |
| MEDIUM | forge/_shared/spec_search.py | 56 | # the harness registry vouched for, instead of an arbitrary absolute path in a config file. | COMMENT |
| MEDIUM | forge/_shared/domains/__init__.py | 137 | # is resolved here, the same substitution the harness performs, so a checklist command a | COMMENT |
| MEDIUM | forge/stage2_spec/validate_sculpt_spec.py | 286 | # The robust discriminator is SEMANTIC, not a fragile geometric curvature estimate: | COMMENT |
| MEDIUM | forge/stage1_intake/analyze_texture.py | 82 | # circular hue spread (robust to wraparound + outliers): 1 - mean resultant length, | COMMENT |
| MEDIUM | forge/stage3_build/run_gates.py | 231 | # `gate_runner_argv` itself -- the harness's own `gateRunnerArgv` has no such flag, and the | COMMENT |
| MEDIUM | forge/stage3_build/run_gates.py | 255 | # A runner that never printed an envelope said why on stderr (e.g. an installed harness too | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/glb_character_pipeline/build-character.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | forge/requirements.txt | 1 | # Three.js Object Sculptor scripts have NO third-party dependencies. | COMMENT |
| LOW | forge/stage4_review/scalp_exposure.py | 41 | COMMENT | |
| LOW | forge/stage4_review/divine_eye.py | 381 | # hard failure is IoU AND objectness says "same object" (high, brightness/bg-invariant), | COMMENT |
| LOW | forge/stage4_review/attachment_anchor.py | 41 | from pathlib import Path | COMMENT |
| LOW | forge/stage4_review/self_intersection.py | 41 | # sampledVertexCount / totalVertexCount / samplingStride so the coverage is on the face of it. | COMMENT |
| LOW | forge/tests/test_primitive_watertightness.py | 101 | COMMENT | |
| LOW | forge/tests/test_primitive_watertightness.py | 241 | // merge. A degenerate triangle (a, a, b) contributes edges (a,a) [a self-loop, | COMMENT |
| LOW | forge/tests/test_suite_integrity.py | 21 | from pathlib import Path | COMMENT |
| LOW | forge/tests/test_suite_integrity.py | 41 | # drift guard, two-clause participation for both domain and target plugins, blocking/non-blocking | COMMENT |
| LOW | forge/tests/test_hierarchy_scale.py | 221 | # must be a plain unit sphere (diameter 1 on every axis) regardless of what its | COMMENT |
| LOW | forge/tests/test_humanoid_silhouette_profile.py | 161 | # `max` conflated them and flagged `clavicle-l` (0.271 x 0.095 x 0.095), which is a | COMMENT |
| LOW | forge/_shared/chirality.py | 201 | "medial": round(medial, 6), | COMMENT |
| LOW | forge/_shared/subdivision.py | 21 | CAPSULE_RADIAL_SEGMENTS = 32 | COMMENT |
| LOW | forge/_shared/subdivision.py | 41 | # | COMMENT |
| LOW | forge/_shared/workflow_state.py | 61 | ) | COMMENT |
| LOW | forge/_shared/material_physics.py | 41 | COMMENT | |
| LOW | forge/stage2_spec/new_sculpt_spec.py | 441 | # gap. Measured: at the default torso ratio 2.2 the neck is 15% of torso height; at the | COMMENT |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 101 | # Plan 1.5 — the recessed-feature gate (the US-004 defect: "the eye reads as a patch, not | COMMENT |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 121 | # attachment POINT (`attachment.parentSocket`, `actionProfile.sockets[]`), e.g. a handle's | COMMENT |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 141 | # forge/tests/test_recessed_and_open_shell_topology.py proves it actually works. | COMMENT |
| LOW | forge/stage2_spec/validate_sculpt_spec.py | 2741 | warnings.append( | COMMENT |
| LOW | forge/stage5_rig/emit_animation_runtime.py | 101 | if (clip.loop === false) { | COMMENT |
| LOW | forge/stage5_rig/geodesic_skinning.py | 41 | # corner, power 3 leaves 2.8%, power 4 leaves 0.9%. The residual is a property of THIS constant, not | COMMENT |
| LOW | forge/stage5_rig/emit_rig.py | 61 | // ~98 boundary edges even after BufferGeometryUtils.mergeVertices on a | COMMENT |
| LOW | forge/stage1_intake/extract_hair_evidence.py | 41 | # Otsu finds where the distribution actually splits, so a bald head reports little hair and a | COMMENT |
| LOW | forge/stage1_intake/extract_hair_evidence.py | 61 | # reference rear 4.177 | COMMENT |
| LOW | forge/stage1_intake/extract_hair_evidence.py | 141 | threshold = low + (best_index + 1) * width | COMMENT |
| LOW | forge/stage1_intake/extract_hair_evidence.py | 161 | # fixture scored 1.0 and was thrown out. | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 501 | hiddenRegions: true, | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 521 | // first means the weights are simply computed on the surviving vertices and no | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 861 | // exactly the scale of the sampling grid. For a subject whose whole identity is smooth blended | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 961 | // opposite case. Getting this backwards is invisible in the normals -- those come from the | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 1461 | return Math.hypot(Math.max(radial, 0), Math.max(axial, 0)) + Math.min(Math.max(radial, axial), 0); | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 1541 | ); | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 1601 | // to a measured position. This pipeline emits code and no image assets, so a texture is not | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 3601 | # between their two endpoints, the spec validated, the factory built, and the | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 3621 | else f" const {endpoint_var} = makeAttachmentEndpoint(null);" | COMMENT |
| LOW | forge/stage3_build/generate_threejs_factory.py | 3781 | # (each an authored component that already emits its own mesh), and a PROSE placement — | COMMENT |
| LOW | scripts/character_audit.sh | 1 | #!/usr/bin/env bash | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | forge/stage4_review/make_comparison_sheet.py | 138 | except UnsupportedJpeg: | CODE |
| HIGH | forge/stage1_intake/build_detail_inventory.py | 158 | except UnsupportedJpeg: | CODE |
| HIGH | forge/stage1_intake/extract_landmarks.py | 173 | except UnsupportedJpeg: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | forge/tests/test_camera_fitting_cli.py | 84 | self.assertEqual(scalar["source"], "placeholder") | CODE |
| LOW | forge/tests/test_camera_fitting_cli.py | 90 | self.assertEqual(descriptor["position"]["distance"], {"value": 2.5, "source": "placeholder", "agentFill": Tr | CODE |
| LOW | forge/stage1_intake/camera_image_helpers.py | 104 | distance_source = "user-supplied" if args.distance is not None else "placeholder" | CODE |
| LOW⚡ | forge/stage1_intake/camera_image_helpers.py | 115 | "yawDegrees": {"value": args.yaw, "source": "placeholder", "agentFill": True}, | CODE |
| LOW⚡ | forge/stage1_intake/camera_image_helpers.py | 116 | "pitchDegrees": {"value": args.pitch, "source": "placeholder", "agentFill": True}, | CODE |
| LOW⚡ | forge/stage1_intake/camera_image_helpers.py | 117 | "rollDegrees": {"value": args.roll, "source": "placeholder", "agentFill": True}, | CODE |
| LOW⚡ | forge/stage1_intake/camera_image_helpers.py | 122 | "distance": {"value": distance, "source": distance_source, "agentFill": distance_source == "placeholder"}, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | forge/materials/__init__.py | 11 | __all__ = [ | CODE |
| LOW | forge/_shared/jpeg.py | 23 | __all__ = ["decode_jpeg", "is_jpeg", "UnsupportedJpeg"] | CODE |
| LOW | forge/_shared/workflow_state.py | 354 | def set_current_pass(state: dict[str, Any], pass_id: str) -> None: | CODE |
| LOW | forge/stage1_intake/solve_camera_pose.py | 73 | __all__ = [ | CODE |
| LOW | forge/stage1_intake/extract_landmarks.py | 201 | def set_pixel(canvas: list[tuple[int, int, int]], width: int, height: int, x: int, y: int, color: tuple[int, int, int]) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | forge/stage4_review/render_bridge.py | 402 | CODE | |
| LOW | forge/tests/test_clip_features.py | 64 | CODE | |
| LOW | forge/_shared/image_hash.py | 45 | CODE | |
| LOW | forge/stage2_spec/new_sculpt_spec.py | 256 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | integrations/glb_character_pipeline/build-character.sh | 16 | # Usage: | COMMENT |
| LOW | scripts/character_audit.sh | 8 | # Usage: | COMMENT |