This will solve the issue where windows are placed in a workspace that isn't intended. Add a property to each window workspace assignment which determines if the workspace assignment is explicit or not. This allows more granular app rules in the application.
For example, I have a window and I hit ALT+SHIFT+3 to move it to workspace 3. The workspace would be marked as explicit and app rules would no longer apply to this window since I've explicitly placed it in workspace 3. Also if app rules already moved this window, it will be marked as explicit. This prevents windows from jumping around workspaces unintentionally. The latter behavior where app rules don't apply to explicit assignment could be set as an option like "reapply_rules_to_explicit_assignment = true/false" (in case the user wants their windows to jump around...)