alonso.torres 613f126414 🔥 Remove dead and deprecated code from component sync
- The :shapes-group reads. Sync skipped adding, removing and moving
  the children of a copy whose touched groups held :shapes-group.
  Nothing has set that group since 2024 (it was removed then, with a
  script that cleaned it from files), and the component contract makes
  structure follow the main, so the guards never applied. They go,
  with the omit-touched? argument they alone used in
  add-shape-to-instance, remove-shape and move-shape.
- :fill-color, :fill-opacity and :stroke-width in ctk/sync-attrs,
  marked deprecated. Shapes keep fills and strokes in :fills and
  :strokes, migrations moved the old shape-level attributes there, the
  shape schema no longer has them, and no test syncs them any more, so
  sync no longer checks them on every shape. The TODO about
  concat-changes in generate-sync-file goes too: concat-changes no
  longer nests lazy sequences.
- The inverse sync's swapped callback. An inverse sync pairs no
  swapped child, and every pair it makes counts as synced, so
  compare-children never calls it; the inverse direction now has no
  :swapped and passes nil.
- The detach in generate-relocate of a copy shape moved out of its
  component. It only looked at the copy heads among the moved shapes
  (get-child-heads), and a head is never a non-head copy shape.

No behavior change: the golden masters and the suites are unchanged.

Benchmark (lower quantile, ms; baseline / now / ratio):
  deepest-edit-through-three-levels    35.2 /  38.2 / 1.08
  edit-through-a-chain-of-dependents   68.9 /  65.0 / 0.94
  library-update-into-copies           83.1 /  77.3 / 0.93
  main-edit-into-10-copies              1.8 /   1.5 / 0.86
  main-edit-into-100-copies            15.4 /  15.1 / 0.98
  main-edit-into-1000-copies          153.1 / 154.8 / 1.01
  variant-switch-into-copies           32.1 /  27.5 / 0.86

AI-assisted-by: claude-opus-5-5
2026-10-28 15:53:06 +01:00
..
2026-09-29 09:07:34 +02:00
2026-03-11 15:24:40 +01:00