{"action":"created","issue":{"url":"https://api.github.com/repos/Nocte-/rhea/issues/40","repository_url":"https://api.github.com/repos/Nocte-/rhea","labels_url":"https://api.github.com/repos/Nocte-/rhea/issues/40/labels{/name}","comments_url":"https://api.github.com/repos/Nocte-/rhea/issues/40/comments","events_url":"https://api.github.com/repos/Nocte-/rhea/issues/40/events","html_url":"https://github.com/Nocte-/rhea/issues/40","id":57623160,"number":40,"title":"Stays do not always stay","user":{"login":"jbo-ableton","id":1263311,"avatar_url":"https://avatars.githubusercontent.com/u/1263311?v=3","gravatar_id":"","url":"https://api.github.com/users/jbo-ableton","html_url":"https://github.com/jbo-ableton","followers_url":"https://api.github.com/users/jbo-ableton/followers","following_url":"https://api.github.com/users/jbo-ableton/following{/other_user}","gists_url":"https://api.github.com/users/jbo-ableton/gists{/gist_id}","starred_url":"https://api.github.com/users/jbo-ableton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbo-ableton/subscriptions","organizations_url":"https://api.github.com/users/jbo-ableton/orgs","repos_url":"https://api.github.com/users/jbo-ableton/repos","events_url":"https://api.github.com/users/jbo-ableton/events{/privacy}","received_events_url":"https://api.github.com/users/jbo-ableton/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2015-02-13T16:51:05Z","updated_at":"2016-02-16T10:33:36Z","closed_at":null,"body":"Hi!\r\n\r\nSo... as discussed on Slack, I have been having trouble with stays not really having the desired effect all of the time. Indeed, quite often, when I add or remove constraints, variables jump around even though they should not. This have driven me crazy for some time and led to resort to all kinds of hacks. Because I use Rhea via aqt-cassowary [1], this has been very hard to reproduce -- this library usually manipulate the solver in non-deterministic, but in theory correct, orders.\r\n\r\nSo, **finally** I have been able to write a test that fails sistematically in my machine here. I have two variations of the test, that execute the sames calls in different order. In one it fails, in the other it passes. Funny thing is, the failing test requires only to change the order in which variables are declared just to make it pass. Crazy shit.\r\n\r\nSo, here are the tests:\r\nhttps://github.com/jbo-ableton/rhea/commit/adbfdf51d48dc956521706b1473276b20ac8e563\r\n\r\n[1] https://github.com/AbletonAG/aqt-cassowary\r\n"},"comment":{"url":"https://api.github.com/repos/Nocte-/rhea/issues/comments/184616879","html_url":"https://github.com/Nocte-/rhea/issues/40#issuecomment-184616879","issue_url":"https://api.github.com/repos/Nocte-/rhea/issues/40","id":184616879,"user":{"login":"jbo-ableton","id":1263311,"avatar_url":"https://avatars.githubusercontent.com/u/1263311?v=3","gravatar_id":"","url":"https://api.github.com/users/jbo-ableton","html_url":"https://github.com/jbo-ableton","followers_url":"https://api.github.com/users/jbo-ableton/followers","following_url":"https://api.github.com/users/jbo-ableton/following{/other_user}","gists_url":"https://api.github.com/users/jbo-ableton/gists{/gist_id}","starred_url":"https://api.github.com/users/jbo-ableton/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jbo-ableton/subscriptions","organizations_url":"https://api.github.com/users/jbo-ableton/orgs","repos_url":"https://api.github.com/users/jbo-ableton/repos","events_url":"https://api.github.com/users/jbo-ableton/events{/privacy}","received_events_url":"https://api.github.com/users/jbo-ableton/received_events","type":"User","site_admin":false},"created_at":"2016-02-16T10:33:36Z","updated_at":"2016-02-16T10:33:36Z","body":"@hfossli There are some cases where I found it necessary. Because of the bugs Stays have in Rhea I ended up simulating them as a feedback loop with a \"edit\" constraint that is fed back into a variable. There was some discussion about this on Slack some time ago... I remember proposing a different system where instead of edit and stays we split variables into \"input variables\" and \"output variables\". The output ones are similar to the ones we have now, input variables have values that are always set explicitly by the programmer. An input plus a constraint is like and edit. A stay can be achieved by binding an input to an output."}}