If your team uses Scrum as a development process, the team decides which of the next most important items it can complete by the end of the iteration.
However, this "commitment" is often used to hold the team accountable for the amount of work that will be shipped by the end of the sprint.
Holding your team accountable for failing to deliver on their engagements is counter productive and will act as a regime of terror. This is no small issue, Scrum now suggest using the word forecast instead of commitment.
How can commitments be abused?
Commitments can be abused by management as a way of holding the team accountable. Typically, the manager or even stakeholders will say that they made engagements (announced a detailed release) based on what the team said they could deliver. They usually fix this situation by asking the team to work overtime in order to deliver on their own promises.
Yes the goal is to burn down until you reach 0, but not at any price... If developers fear that they won't make it by the end of this iteration and you made it clear that they promised to finish, you are basically forcing them to cut down on quality.
Overtime is borrowed time and it has an interest rate
Every time you make a deadline because your team worked overtime, don't be too quick to celebrate. The work they did on overtime may very well be of lower quality. After all, they were not as fresh-minded as they should've been.
Making your team work overtime is paying your debts with their health and the quality of your product. Those two things also happen to be the main things actually delivering value and making money to your company.
After a rush, the normal reaction will be to lay back and relax. If you want your process, work output and your project to be predictable, this is the last thing you want. Your team's velocity will be inconsistent from one iteration to the next and inconsistent velocity leads to unpredictability.
The blame game has no winners
No matter the problem, when the discussion is aimed at finding who to blame, it's better to not even have that discussion. Instead of trying to find the "who" we should always be focused on the "why", we want to objectively find solutions.
If management uses those engagements in order to blame the team, or worse, a specific person, not only does it nurture fear for their next iteration planning, but it also fails to solve the real problem(s).
Either way, whether the commitment concept is abused by management or by the developers themselves, the usual victim is product quality, as Ken Schwaber himself has repeatedly pointed out.
What should you hold your team accountable for?
The team is responsible for building great software. That's it... It's the only thing the team is responsible for and it's the only thing that they actually control.
In other words, the development team is committed to quality software.
The commitment aspect of iterations is just there to focus the team on the next most important set of functionalities. Holding them accountable on their shortcomings is leading by fear.
In the end, a manager who abuses his team's engagements against it is inadvertently lowering the quality standards of the product as whole.
Yes, it's fine to deliver on time, but not at all costs.