{
  "version": 1,
  "kind": "hwanse-map-animation-static-frontier-review",
  "sourceArtifacts": [
    "out/map_animation_tile_review.json",
    "out/map_animation_redraw_consumer_review.json",
    "out/map_animation_draw_tile_transform_review.json",
    "out/map_animation_resource_binding_probe.json",
    "out/map_animation_live_buffer_writer_review.json",
    "out/map_animation_active_object_script_tile_write_review.json",
    "out/map_animation_frame_script_tile_write_review.json",
    "out/map_animation_non_object_tile_write_root_review.json",
    "out/map_animation_specialized_loop_boundary_review.json",
    "out/map_animation_shift_hypothesis_review.json",
    "out/map_animation_execution_boundary_review.json"
  ],
  "summary": {
    "animatedMapCount": 5,
    "animatedCellCount": 1200,
    "surfaceCount": 9,
    "consumerGrounded": true,
    "drawTimeTransformFound": false,
    "resourceRootsUnbound": true,
    "activeObjectProducerFound": false,
    "frameScriptProducerFound": false,
    "specializedProducerFound": false,
    "visibleMotionExecutionBindingProven": false,
    "promotedProducerCount": 0,
    "decision": "The 0x40 redraw consumer is grounded, but no static producer has been promoted for visible fire/waterfall motion. Current evidence excludes draw-time source transform, animated resource roots, active-object scripts, frame scripts, non-object roots, specialized tick/draw loops, and pure offset-shift visuals as sufficient proof."
  },
  "surfaces": [
    {
      "surface": "layer1 0x40 flagged cells",
      "status": "consumer-grounded",
      "confidence": "high",
      "evidence": "animated maps=5; cells=1200; redraw path=True; flag consumer=True",
      "decision": "0x40 marks cells that participate in redraw/animation handling, but it is not itself the frame sequence."
    },
    {
      "surface": "draw-time tile source transform",
      "status": "not-found",
      "confidence": "high-negative",
      "evidence": "tile rect formula=sourceX=(tileId % columns) * tileWidth; sourceY=(tileId / columns) * tileHeight; uses 0x40=False; uses frame counter=False; visible motion transform=False",
      "decision": "The inspected renderer draws the current live layer0 tile id normally; it does not shift source rects at draw time."
    },
    {
      "surface": "animated map resource roots",
      "status": "resource-grounded-animation-command-unbound",
      "confidence": "high",
      "evidence": "maps with exact root=4/5; palette inside roots=0; tile-write inside roots=0",
      "decision": "Map resource package roots are not the visible animation loop roots."
    },
    {
      "surface": "live layer0/layer1 tile write handlers",
      "status": "handler-grounded-producer-unbound",
      "confidence": "medium-high",
      "evidence": "candidate VM write refs=6; inside animated resource roots=0; handler opcodes=3",
      "decision": "Tile-write handlers exist, but the static pass has not connected them to animated-map execution."
    },
    {
      "surface": "active-object +0xec scripts",
      "status": "negative-command-boundary",
      "confidence": "high-negative",
      "evidence": "strict scripts=722; command-boundary tile writes=0; raw candidates=445",
      "decision": "Raw byte coincidences exist but no strict active-object script decodes to a promoted live tile-write producer."
    },
    {
      "surface": "runtime +0x64 frame scripts",
      "status": "negative-command-boundary",
      "confidence": "high-negative",
      "evidence": "opcode20 targets=138; opcode18 state entries=855; tile-write producer found=False",
      "decision": "Runtime-installed frame scripts are grounded, but they do not contain promoted tile-write animation commands."
    },
    {
      "surface": "non-object aligned tile-write roots",
      "status": "unpromoted",
      "confidence": "medium-high-negative",
      "evidence": "aligned commands=166; roots=95; direct animated evidence=3; promoted=0",
      "decision": "Aligned VM-shaped tile writes exist, but none both binds to an animated map and writes the animated cells/tiles."
    },
    {
      "surface": "specialized tick/draw loop",
      "status": "not-found",
      "confidence": "medium-high-negative",
      "evidence": "inspected windows=10; direct callees=30; strong candidates=0",
      "decision": "No separate specialized visible-motion producer was exposed in the inspected tick/draw windows."
    },
    {
      "surface": "offset/row shift visual hypothesis",
      "status": "visual-aid-not-producer",
      "confidence": "manual-review-only",
      "evidence": "classes={'offset-shift-unproven': 1, 'rectangular-offset-plausible': 1, 'row-offset-or-row-cycle-plausible': 3}; components=5",
      "decision": "This helps inspect how frames might look, but it is not EXE execution evidence."
    }
  ],
  "nextFrontier": [
    "Search for an animated-map-specific state counter or tile-substitution table outside object +0xec/+0x64 script inventories.",
    "If continuing statically, prioritize functions that reference both map layer buffers and a small frame counter/state byte, not resource roots alone.",
    "Do not promote palette commands, offset-shift visuals, or raw tile-write byte coincidences without an execution route.",
    "Runtime observation would be useful only as a narrow watch on live layer0 writes/palette writes for map1_01a/map1_02b; static evidence remains preferred."
  ]
}
