Pinning would be a good addition, especially if other contracts started inheriting from our code. However we don't believe anyone is doing that right now. And by not pinning, it simplifies version updates so other changes are not lost in a large diff with each Solidity version upgrade.
We do support a buy price of 0. This is not intuitive though! We have added a comment to mention that this is possible and hint at a potential use case.
It's a fair point that 10% increments can be a significant jump in price. We have this requirement in order to ensure that each new offer or bid is a non-trivial change and people cannot abuse the system by making little increments to extend an auction for a long time or cause acceptOffer to revert. I do like the idea of considering a tiered model instead, and we may do that in the future.
Pin the version of Solidity used
Consider pinning the version of Solidity e.g. =0.8.12
NFTMarketBuyPrice.setBuyPrice lack price validation
NFTMarketBuyPrice.setBuyPrice allow price=0 which doesn't make much sense to the seller https://github.com/code-423n4/2022-02-foundation/blob/4d8c8931baffae31c7506872bf1100e1598f2754/contracts/mixins/NFTMarketBuyPrice.sol#L150
Constant 10% min price increment is too high
Considering a high value auction a 10% min increment might be bad for price discovery, might use a tiered model instead
Initial 15% total fee is not competitive
It is too higher consider OS's 2.5% fee