[eluser]Colin Williams[/eluser]
Neither do I, sl3dge, but I think it's okay for a model to say, "Here are the rules," even though it doesn't check them against anything. I've yet to find a practical purpose for this though. For example, I only ever accept and save a blog post through the blog controller. Only the blog controller needs the rules, so why abstract it out to the model?
And to your question, Andy, I think it's okay to let the model fail if it was given bad data. However, the model ought to be very flexible so it can accept less-than-perfect formed data. And while I don't have a model validate data, I do see one of its roles being to prepare data; this goes back to being flexible. Like, running strtotime on a date field before saving data that should be a timestamp; getting rid of fields that don't exist in the table (mapping to a schema); trimming, etc.
I cover a lot of this in a piece that I finished 9/10s of. It was for Michael Wales' CI Advent. I still plan on publishing it, and will probably ask Michael to do it on his blog. Gonna be kinda silly with its Christmas theme, though... Maybe I can make it New Years slanted instead.