scope_merge
Resolve a floor shape collision: trim the overlapping loser to its remainder by exact boolean difference, or delete it when overlap covers 98% or more.
Instructions
Resolve ONE collision (#366): given a pair of floor shapes and the winner, the loser gives up the shared floor — TRIMMED to its remainder by an exact boolean difference (the cut_out module's own arithmetic; its quantities re-measured from the result), or DELETED outright when the overlap is near-total (≥ 98% of the loser: the same space claimed twice, not a room with a sliver left). One journal step either way; undo_last restores the loser verbatim. Who wins: state winner; with it omitted the reviewed shape wins over a pending one, and the verb refuses when neither is reviewed (it does not guess which condition the floor belongs to) or when BOTH are (that is the estimator's call — the collision shows on both condition rows in the canvas). The ink rule is absolute: a loser the estimator affirmed is refused whoever you name. A trim that would split the loser into disjoint pieces refuses — that is a re-trace decision, not a merge — and a loser carrying reconciled cutouts refuses (delete the cuts first).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| winner | No | Which of the two keeps the shared floor; omit to let the reviewed one win | |
| shape_a | Yes | One shape of the pair (from scope_duplicates) | |
| shape_b | Yes | The other |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | ||
| loser | Yes | ||
| action | Yes | ||
| winner | Yes | ||
| shared_sf | Yes | ||
| loser_holes | No | trimmed: holes the remainder carries (a winner inside the loser leaves one) | |
| shape_count | Yes | ||
| loser_after_sf | Yes | ||
| loser_before_sf | Yes |