Creating a fieldset via sheetworker is simply done by setting an attribute with a repeating ID that doesn't exist in that fieldset. Real IDs are more complex than this obviously, but say you had rows in your stash with IDs -a,-b, and -c. You could make a new fourth row in the stash by just doing this:
setAttrs({"repeating_stash_-d_geardesc":"new gear description"});
You don't need to set every attribute in the section to create the section. Any attributes that you don't set for the new row will be implicitly created as empty attributes (equal to an empty string). You can also set a repeating attribute that doesn't exist in your html field, and the row will still be created, just without any data displayed in the html. You can also reuse IDs, so you could parse the id from the row that is being moved, and use that same ID for the row that you are creating.
I think that the Send button you have in your html is what you intend to use to trigger the sheetworker to move items? If that's the case, it needs to be an action button. Roll buttons can't trigger sheetworker functions; action buttons can.
<td><button type="action" name="act_send_up">↑ Send</button></td>
<script type="text/worker">
//Listener for the button
on('clicked:repeating_store:send_up",function(event){...});
</script>
And, I would also recommend just using normal spaces instead of the html entity for a space. It will make your code more readable, and you won't run into possible issues with the html entity being parsed away by roll20's systems. e.g. replace "↑ Send" with "↑ Send ".
Alternatively, you can use GiGs note about duplicate fieldsets with the same name and a simple checkbox to accomplish the filtered display that you are looking for without needing a sheetworker:
<div class="gear-container">
<fieldset class="repeating_gear">
<table>
<tr>
<td><input type="text" name="attr_geardesc"></td>
<td><input type="number" name="attr_gearquantity"></td>
<td><input type="number" name="attr_gearweigh"></td>
<td><input type="number" name="attr_geartotal"></td>
<td><input type="text" name="attr_gearloc"></td>
<td><input class="equip-check" type="checkbox" name="attr_equipped" value="1" checked></td>
</tr>
</table>
</fieldset>
</div>
<div class="stash-container">
<fieldset class="repeating_gear">
<table>
<tr>
<td><input type="text" name="attr_geardesc"></td>
<td><input type="number" name="attr_gearquantity"></td>
<td><input type="number" name="attr_gearweigh"></td>
<td><input type="number" name="attr_geartotal"></td>
<td><input type="text" name="attr_gearloc"></td>
<td><input class="equip-check" type="checkbox" name="attr_equipped" value="1"></td>
</tr>
</table>
</fieldset>
and then just use css to filter the display:
.stash-container{
.repitem:has(.equip-check:checked){
display: none !important;
}
}
.gear-container{
.repitem:has(.equip-check:not(:checked)){
display: none !important;
}
}
The downside to the html and css method is of course that the duplicate fieldsets will still have the html content for the hidden elements, and those elements will contribute to paint time since css has to do the logic for whether to render them or not; but this shouldn't be an issue unless players routinely have gear/stashes of 100s of items. Which option is best for you depends on your comfort level with sheetworkers.