13852df071
This fixed two notable bugs: 1. Using "altle 0xfff0" to terminate unreachable rbyd trunks threw off id calculations in lfsr_rbyd_fetch searches. We derive the tag's id+weight from the lower bound calculated as the sum of all "altle"s and an always-followed "altle 0xfff0" throws this off. We _could_ derive the tag's id+weight from the upper bound, inverting this relationship, but decided to revert back to using "altgt 0" to terminate unreachable rbyd trunks. Using the lower bound is more intuitive, and "altgt 0" has the benifit of supporting variable-length tags if we ever need to adopt those. To avoid the previous issues around 0-tag holes (which was the original motivation for altle 0xfff0), 0-tags are now automatically adjusted in lfsr_rbyd_lookup, and avoided in lfsr_rbyd_append. But note! if any implemention tries to look up 0-tags, this will eventually break! See previous commits for more info. 2. Unfortunately, we can't combine branch updates and weight updates in lfsr_btree_commit in the general case. If our btree contains bname tags, the weight is attached to the bname tag, separately from the branch tag. Branch updates in lfsr_btree_commit need two separate attrs for the weight and branch struct for this reason, which is unfortunate. The amount of extra conditions to make bname+branch pairs work makes me want to redesign the inner-nodes of the btrees, but I can't think of a better way to approach the problem.