The ::WeightInherit property appears to treat the operator implicitly as a \sum when type=additive.
x::Weight(value=2, label=field).
y::Weight(value=3, label=field).
f{#}::WeightInherit(label=all, type=additive).
ex:= f{x}.
drop_weight(ex, $field=2$);
returns 0, as expected, but
drop_weight(ex, $field=1$);
returns x. (Same for field=3,4,...)
Interestingly,
ex := f{x}{y}.
drop_weight(ex, $field=3$);
ex := f{x}{y}.
drop_weight(ex, $field=2$);
returns first x and then y.
Similarly,
ex := f{x}{y}{z}.
drop_weight(ex, $field=3$)
returns f{x}{z}.
So drop_weight is converting f{x} to x but if f has more than one child, it's leaving it as f. Presumably this is because the code implicitly treats f as \sum.