Personally, I find the first approach much more intuitive. Trying to think of what the drawback of it is...

Trying to put myself back in the shoes of a downstream dev, I would want "weight" and/or "value" to be autocomputed because I don't want be bothered with details; however, I wouldn't assume that weight and value match exactly (i.e. I wouldn't rely on auto-copy behavior per se). If some code *did* rely on auto-copy per-se, then they've probably entangled weight and value in an unsafe way and exposed themselves to other bugs in weight/value management.

As far as I'm concerned, the first approach also makes "next" unnecessary (although I'd lean towards keeping it on the chance that someone downstream has used it).

Assuming the first approach doesn't break any tests and assuming we publish this in the changelog, what would you think of just doing the first approach?