{ "project_name": "hcie-rust-v4", "generated_at": "2026-06-12T22:52:00+03:00", "semantic_mapping_version": "1.0.0", "total_crates": 29, "files": [ { "file_path": "hcie-engine-api/src/lib.rs", "description": "Public ENGINE API (~20 functions). Sole boundary between engine and GUI/AI. staticlib output.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-ai/src/lib.rs", "impact_description": "AI executor calls engine API functions to modify document state. Changing Engine method signatures or semantics breaks AI agent actions." }, { "target_file": "hcie-vision/src/lib.rs", "impact_description": "Vision module sends processed images into engine via open_image or layer pixel injection. API contract changes break vision pipeline." }, { "target_file": "hcie-egui-app/crates/hcie-gui-egui/src/app/mod.rs", "impact_description": "Main app holds Engine instance and calls nearly every public method. Signature changes require massive GUI refactoring." }, { "target_file": "hcie-egui-app/crates/hcie-gui-egui/src/canvas/render.rs", "impact_description": "Canvas render calls render_composite_region/get_composite_pixels. Render pipeline changes break viewport updates." }, { "target_file": "hcie-egui-app/crates/egui-panel-adapter/src/lib.rs", "impact_description": "Adapter bridges Engine API outputs (ModulePanel, WidgetDescription) to egui widgets. Engine API output format changes break adapter rendering." } ] }, { "file_path": "hcie-blend/src/lib.rs", "description": "30+ blend mode pixel compositing engine. Core hot path for every visible pixel.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-draw/src/lib.rs", "impact_description": "draw_brush_stamp, draw_filled_circle, and all draw ops call blend_pixels. Changing blend math silently changes every brush stroke appearance." }, { "target_file": "hcie-composite/src/lib.rs", "impact_description": "Composite pipeline calls blend_pixels per pixel for every visible layer. Blend correctness changes alter final image globally." }, { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "Engine API compositing pipelines rely on blend_pixels for all canvas output. No alternative blend path exists." } ] }, { "file_path": "hcie-color/src/lib.rs", "description": "Color space conversions: gamma encode/decode, sRGB linearity, HSL conversions.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-blend/src/lib.rs", "impact_description": "Every blend mode calls gamma_encode/gamma_decode. Changing gamma curves or removing clamp behavior shifts the entire color output of the compositor." }, { "target_file": "hcie-filter/src/lib.rs", "impact_description": "Brightness/contrast and hue/saturation filters depend on srgb_to_linear and linear_to_srgb. Any color math change produces different filter results." }, { "target_file": "hcie-draw/src/lib.rs", "impact_description": "Drawing engine alpha blending assumptions about linearity must match color crate; otherwise anti-aliased edges look wrong." }, { "target_file": "hcie-composite/src/lib.rs", "impact_description": "Compositing uses blend_pixels which internally delegates to color crate gamma functions; gamma changes shift final canvas colors." } ] }, { "file_path": "hcie-document/src/lib.rs", "description": "Document state manager: layers, active layer, history, dirty bounds, selection, zoom/pan.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "Engine API contains a Document instance and forwards nearly all ops to it. Changing Document semantics breaks engine render correctness." }, { "target_file": "hcie-history/src/lib.rs", "impact_description": "Document pushes concrete UndoableAction implementations into HistoryManager. Trait or action struct changes break undo/redo." }, { "target_file": "hcie-io/src/lib.rs", "impact_description": "IO save_native serializes Document.layers. Changing Vec structure or adding fields requires IO schema migration." }, { "target_file": "hcie-selection/src/lib.rs", "impact_description": "Document stores selection_mask and uses selection crate ops. Mask lifecycle changes cause selection desync." }, { "target_file": "hcie-tile/src/lib.rs", "impact_description": "Document resize_canvas and crop change layer dimensions. If tile caches are not invalidated after dimension changes, TiledLayer reads stale width/height causing index out-of-bounds." } ] }, { "file_path": "hcie-draw/src/lib.rs", "description": "Low-level pixel drawing: brush stamp application, line, circle, rect, ellipse, flood fill.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "Engine API delegates all raster drawing (brush strokes, lines, rects, ellipses, flood fill) to this crate. Any pixel-level bug corrupts user content silently." }, { "target_file": "hcie-brush-engine/src/lib.rs", "impact_description": "draw_brush_stroke generates stamps via generate_brush_stamp. Changing stamp algorithm changes brush silhouette globally." }, { "target_file": "hcie-egui-app/crates/hcie-gui-egui/src/canvas/render.rs", "impact_description": "Canvas texture is the direct output of draw+composite pipeline. Draw math changes reflect immediately in viewport." } ] }, { "file_path": "hcie-brush-engine/src/lib.rs", "description": "Procedural brush stamp generation and specialized brush implementations (oil, charcoal, watercolor, spray, etc.).", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-draw/src/lib.rs", "impact_description": "draw_brush_stroke generates stamps via generate_brush_stamp and uses brush_spacing_pixels and jitter_offset. Changing stamp algorithm changes brush silhouette globally." }, { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "Engine stroke_to / draw_stroke dispatch to draw_specialized_stroke and draw_brush_stroke. Brush algorithm changes affect all user drawing tools." }, { "target_file": "hcie-egui-app/crates/hcie-gui-egui/src/app/brushes_panel.rs", "impact_description": "Brush panel presets must match brush-engine defaults; mismatch causes UI preview vs actual brush divergence." }, { "target_file": "hcie-brush-engine/src/dynamics.rs", "impact_description": "draw_specialized_stroke passes RAW pressure to each specialized brush function. If dynamics.rs changes pressure mapping curves, all specialized brush appearances shift silently." } ] }, { "file_path": "hcie-fx/src/shadow.rs", "description": "Layer effects: drop shadow, inner shadow, outer glow, inner glow, bevel emboss, satin, color overlay, gradient overlay, pattern overlay, stroke.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-filter/src/lib.rs", "impact_description": "Layer effects depend on filter primitives (blur, color adjustments). Effects pipeline changes break filter contracts." }, { "target_file": "hcie-vector/src/lib.rs", "impact_description": "Bevel emboss uses vector shape edges. Edge softness depends on exact blend math." }, { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "Engine apply_layer_effects calls the effects pipeline. API changes affect all layer style UI." } ] }, { "file_path": "hcie-fx/src/stroke.rs", "description": "Layer style stroke effect: generates stroke pixels around shape boundaries using EDT distance transform.", "blast_radius": "MEDIUM", "semantic_dependencies": [ { "target_file": "hcie-fx/src/shadow.rs", "impact_description": "Stroke effect is called from apply_layer_effects in shadow.rs. Stroke positioning logic changes affect all layer styles." } ] }, { "file_path": "hcie-ai/src/lib.rs", "description": "AI action executor and Ollama/LMStudio client. Translates AI-generated JSON actions to Engine commands.", "blast_radius": "MEDIUM", "semantic_dependencies": [ { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "AI actions are translated into EngineCommand JSON and executed via Engine API. If Engine API changes command schema, AI actions silently fail." }, { "target_file": "hcie-egui-app/crates/egui-panel-ai-chat/src/lib.rs", "impact_description": "AI chat UI displays AI responses and triggers AI actions. Changing AI response format breaks chat rendering and action parsing." }, { "target_file": "hcie-ai/src/tools.rs", "impact_description": "AI executor dispatches AI actions by matching hardcoded strings against tool schema names. Schema name changes break executor dispatch with silent no-ops." } ] }, { "file_path": "hcie-ai/src/tools.rs", "description": "Canvas tool schemas exported to the LLM as JSON function definitions. Defines the ENTIRE AI→Canvas API contract.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "execute_ai_actions parses hardcoded JSON keys ('CreateLayer', 'PaintStroke', 'set_brush', etc.) that originate from tool schemas here. Any parameter name change causes silent 'Unknown AI action variant' failures at runtime." }, { "target_file": "hcie-protocol/src/lib.rs", "impact_description": "Tool schemas reference protocol enums (BlendMode, BrushStyle, VectorShape, LayerType) by name. Protocol enum variant renames break AI-generated JSON without compile-time errors." } ] }, { "file_path": "hcie-egui-app/crates/hcie-gui-egui/src/app/mod.rs", "description": "Main App state machine: event handling, engine command dispatch, update loop.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "App sends EngineCommand variants to Engine and handles EngineEvent responses. Adding a new command variant without app handling makes the feature unreachable from UI." }, { "target_file": "hcie-egui-app/crates/hcie-gui-egui/src/app/toolbox.rs", "impact_description": "Toolbox sets current Tool in App state; App then configures Engine brush/vector/text mode. Tool enum changes desync toolbox and engine." }, { "target_file": "hcie-egui-app/crates/egui-panel-ai-chat/src/lib.rs", "impact_description": "AI chat module sends async AI events to App. App must handle AiActionCompleted/AiActionFailed events and update UI state." } ] }, { "file_path": "hcie-egui-app/crates/hcie-gui-egui/src/canvas/render.rs", "description": "Canvas rendering: composites engine output into egui texture, handles zoom/pan/viewport.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "Calls render_composite_region / get_composite_pixels. If engine pixel output format changes (e.g., premultiplied alpha), canvas displays corrupted colors." } ] }, { "file_path": "hcie-egui-app/crates/hcie-gui-egui/src/canvas/mod.rs", "description": "Canvas input event routing (mouse, tablet, pressure), tool dispatch, coordinate transformation.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-engine-api/src/lib.rs", "impact_description": "Canvas input translates to engine stroke_to, begin_stroke, end_stroke. Coordinate mapping (zoom, pan, dpi) must match engine pixel space exactly or strokes land in wrong locations." } ] }, { "file_path": "hcie-io/src/lib.rs", "description": "Document serialization: PSD, KRA, native format import/export.", "blast_radius": "HIGH", "semantic_dependencies": [ { "target_file": "hcie-document/src/lib.rs", "impact_description": "IO save_native serializes Document.layers. Changing Vec structure or adding fields requires IO schema migration." }, { "target_file": "hcie-protocol/src/lib.rs", "impact_description": "Layer struct definition determines serialization format. Adding Layer fields without IO updates causes data loss on save." } ] } ] }