Commands  ›  Clash Manager / Solver  ›  Clash Solver Assess Clash Post Move

Clash Solver Assess Clash Post Move

Clash Manager / Solver writes to model Public API · not yet exposed

Coming soon

Before you run this

Active document; clash id + moved element resolvable.

After it runs

No mutation; tracker + repo state updated if auto-resolved.

When to use this

Don't use this when

Reverting a move — that's Restore state.

Inputs

NameKindTypeRequiredDefaultDescription
PresetKind config string no "clash_tolerances" Deterministic config preset

Decision flow

1) clash id required; fetch ClashRecord; WireError if missing.
2) moved unique id (Bot) OR single selection (Human); WireError if missing.
3) Resolve UidA + UidB in the doc; WireError if either gone.
4) clash_still_active = ElementIntersectsElementFilter(A→B) returns a hit.
5) new_clash_count = ForecastClashesAfterMove.ForecastMove(doc, moved, XYZ.Zero).ClashCount,
   excluding the original pair (that's counted by step 4).
6) If clash_still_active == false && new_clash_count == 0 → repo.TransitionState(resolved).
   Else emit detail for human review; do NOT auto-transition.
7) Tracker outputs + Human TaskDialog when on that path.

What you'll see in the chat

on start
Assessing clash state after move…
thinking
Loading clash row and both elements…
Running pairwise ElementIntersectsElementFilter…
Running zero-move forecast on the moved element…
on success
clash_still_active={still_active}, new_clash_count={new_clash_count}.
on failure
Post-move assess failed: {error}

REST API

Not yet exposed

This command does not carry a [RestApi] attribute today. Once tagged, this section will auto-populate with:

  • POST /api/v1/commands/clash_solver_assess_clash_post_move
  • Request body schema (from [RestApiParam])
  • Response schema (from [RestApiResponse])
  • curl / JS / Python code examples

Keywords & intent patterns

assess clash post-move · verify clash resolved · clash solver audit · post-move check · clash regression check

PillarClash Manager / Solver