I think if Shopify just always took the number from fetch_stock.json as “on hand” and did “on hand (from fetch_stock.json) - committed - reserved - unavailable = available, even if negative” this all would be way less confusing for everyone.
Great observations and I totally agree that available should be negative in your example scenarios after the fetch_stock.json returns. In short, I think it is sane to expect that the response to fetch_stock.json should be equivalent to reporting the same number with an API call such as inventorySetOnHandQuantities.
Otherwise we need a way to disable fetch_stock.json if it doesn’t respond in a predictable way without disabling inventory management entirely. What happens if you return {}? Does it have no effect or does it assume 0 for every SKU?