We kind of hashed this out once before, my impression is that the life of the shopping cart would be extended into the 1-2 hour range, and more importantly there would be a notice somewhere stating that carts will empty after a certain amount of inactivity. It wouldn't be perfect but it would be better & probably wouldn't involve much work on Jim's part.
This is probably one of the best compromises. It lets one "hold" a book for a limited time, but still allows them a very reasonable amount of time to shop. I like it, personally.
Though, to Jim's point(or where I think his thinking is going), is that this does allow a particularly malicious person to hold on to hot books for a long time (by simply re-adding it). Again, this would require a particularly malicious person and is absolutely an edge case.
Then, you get into the issue of timing of the cart as a whole and timing of when you added each book.
I go to Treehouse and add 3-4 items in my wishlist. First items in my cart for this shop, it kicks off a 2 hour timer.
I then browse some more and come across a few books I wouldn't mind having from Treehouse and add those. Assume this is 30 minutes later. I now only have 1.5 hours to hold on to those books.
I then get called away to help the wife with something for 1 hour. I come back and have to tend to a customer for a moment. When I finally get back to CCL, my cart has been active for 1 hour and 55 minutes (again, hypothetical example). I continue to browse for 5 more minutes and then go to add a few more books and POOF my cart is gone.
You don't want to "refresh" or "reset" the timer when you add a book, because then you open the door for more particularly malicious people to perpetually keep stuff locked up in a cart (maybe I don't like that Treehouse is undercutting me on a particular hot boook, so I just keep it locked up in my cart).
So what do you do? Maybe show a "timeout alert", like many banks do, when you get to ~15 minutes within your cart expiring informing you. When you get to ~5 minutes, it prompts asking for a one time (per cart "cycle") 30 minute extension to allow you to finish up.
Just some ideas. :)