• Any software development project - any project in fact - is a team process.  The whole team owns it and the whole team succeeds or fails together.  If there is inadequate information avaiable, then that is a problem for the team to solve.  If a team member is not contributing adequately for any reason, then that is a problem for the team to solve.  It's not anybody else's responsibility.  The decision on whether it is a failure should be based on success criteria set out at inception and agreed with the ultimate users.  In the real world, that often does not happen, but user satisfaction (including functionality, time and cost) has to be the only criterion.

    The scenarios described suggest to me a horribly hierarchical organisation where each individual throws their bit over the wall to the next in the chain.  'Ive done my bit - the rest aint my responsibility'.  Guaranteed recipe for failure according to any criteria!