+10. This is the solution we should get behind. Dries has targeted workflow+actions for next version. It's flexible. It's an API. There are a bunch of actions out there already (and they're easy to write). As part of "core" install profile, we could add a reasonable default workflow (with states like "unpublished" -> "published" -> "deleted/archived").
yeah, i like this too. but i don't think it is fair to propose this as a solution since workflow is nowhere near ready right now, and noone is working on it AFAIK. chad has worked on the delete patch for many months, and proposing a vapor solution is not helpful.
As to checking the "deleted" field. This can happen using hook_sql_rewrite. Any legit query looking at nodes should be calling this hook anyway. Also: this allows for the deletion to live in contrib, which sounds like what people want.
clarification: currently, you only call db_rewrite_sql() when performing a listing of nodes, and not when retrieving a single node. it would be simple enough though to add the single node view case to node_access() function.