As others have pointed out, understanding who is responsible for what is helpful and avoids a lot of chaos.
However, the Golden Rule trumps organizational "walls". If your conscience forbids you to be quiet while your teammate, regardless of position (including the boss) is attempting to cross Niagara Falls in a barrel then obey your conscience, even if just to say "I want it noted that it is my professional judgment that this project needs to be redesigned before it will have a reasonable expectation of success because...".
Depending on what is at stake and the clarity of the flaw in the planning, lying down in front of the barrel may be in order. But if the ship will not sink if the project proceeds and fails or if you aren't certain that it will then make your concerns known, defer to the leadership and expect your "minority report" to eventually be vindicated.
Not too long ago I was charged with developing some ETL in SSIS. The specs called for grouping at one level while I was very sure that it should have been grouped at another level. The manager told me that we were committed to this spec and just to do it per spec. Also I told him that the spec said to get the data from one source but I pointed out that it would be incomplete if we didn't get the data from a different system altogether. Again, we were committed to the spec. Since I struck out with convincing my manager (who, don't get me wrong, was very smart, diligent... he just didn't see this particular spec the way I did, as that was my area of expertise).
To make a long story longer, the program "worked" but gave the wrong results, as predicted. The manager burst into my "office" (a temp situation with a whole bunch of other consultants) and publicly chewed me out (I could tell he was just grouchy because of things bigger than I), asked me if I knew how to program, yada yada... Fortunately I had the example he had given me and my output matched that. He conceded he was wrong and I was able to fix both contested issues fairly easily.
What I'm driving at is that:
- I stood up for my concerns
- I let him have the final decision
- When he was chewing me out for failure I had "peace like a river" because I knew I had given him all the information he needed to change his course
- He changed course and all was well
Had it been a bigger issue I might have gone over his head but in my judgment it was not necessary and instead the whole thing worked out to be a "team building" experience.
What you DON'T want to do is:
- not say anything out of timidity
- overstate your concerns
- create a self-fulfilling prophecy (by causing the failure)
- make it personal
All team members (except you and I, of course) make mistakes and it is everyone's responsibility to communicate.
I'm thinking of the USA auto industry that was producing a large percentage of defective cars. The Japanese were not. We learned from them the value of anyone on the line having the power to suspend production immediately if the line was in danger of letting a defect slip through.
Fortunately, many companies today "get" that assuring their teams that everyone has the right - and responsibility - to report threats to quality product delivery, etc.
The best case scenario is that you report it and trouble is averted. But the second best is if you report it, they ignore it and they realize that they should have listened to you. The worst case if you don't report it and disaster ensues.