We practice agile in a large company with highly integrated software and pre-determined windows when software can be deploy to production on shared hardware environments.
We developed a set of agile practices composed of SCRUM (project management) practices and XP (engineering) practices. Many of the systems we deploy with make use of traditional waterfall processes
Regarding your framework I will reply to each item:
"Larger and more distributed or more flexible teams need stricter coding and testing standards, small teams can (and should) use less."
If by coding and testing standards you mean engineering practices (XP) such as continuous integration, pair programming, test driven development, automated functional and performance testing etc. we employee all the same practices regardless of the size of the team or project. As a result, we often release software with zero defects found during User Acceptance Test. Releasing high quality software (low defects) that remains malleable to enable continuous development at a sustainable pace drives the need for engineering practices, not the size of the organization.
"Process documentation should be minimal, real-time and current."
If by process documentation you mean the agile process documentation, all of our fits on a wall. We show the manifesto, the mapping to the 12 principles and finally the 21 practices we employee. The fact that they fit on the wall and they are highly visible enables the team to understand them and more importantly actually put them into practice.
"Detailed statistical control indicators are an unnecessary overhead: early release of incomplete software is a better indication of progress."
Percent completes on traditional work work artifacts carry little value. Demoing working software to our product owner/ business partner every two week is the best indicator of progress. Tracking actual velocity (units of story cards completed) and defect rates and displaying the data on big visible charts is very helpful. When introducing certain practices to a team it is useful to show progress. For example, the number of unit test written before the code when learning TDD.
"Ideally developers should be close to the customer with no specialised intermediate roles. Additional roles should only be used if customers are specialised in a way that stops developers from also being users."
Users, if possible, should work with the team in the open workspace. If it is not possible for the user to be with the team then a user proxy is the next best person to be on the line. No one can give better feedback than the people that will actually use the software to do their jobs.
"Iterations should be flexible unless it benefits coordination of releases with other departments or other processes."
More importantly, release dates should be alined across teams. Iterations are best if kept consistent in duration (we use every 2 weeks). Consistent length of iteration is consistent with time boxing and the calculation of velocity used to commit to story cards for the next iteration.
"Developers should be able to easily and regularly communicate but meetings should be infrequent (monthly and weekly, rather than daily)."
The team should participate in the daily stand up meeting, and every iteration the iteration planning meeting, the show & tell meeting, planning poker meeting and the retrospective meeting. Every release the team participates in the release planning meeting. Given that the user/ business partner works with the line, daily conversation can occur about the work being completed.
"Pair programming should only be used for training and investigational tasks."
The first reason to use Pair Programming is to eliminate defects. I have written a number of response regarding pair programming. To summarize, pairs less likely to become blocked, less likely to take email or web vacations, provides mechanism to transfer business domain, application domain and engineering practice skills, eliminates silos of knowledge (key in larger organizations) etc.
"These guidelines are a starting point only: continuous improvement should be used to further tailor the agile variant to the exact circumstances."
Retrospectives, planned each iteration or when an event occurs that demands a retrospective be called, and a mindset of zero defects drives continuous improvement. Employee the XP engineering practices enables the team to keep the code healthy enabling new features to be readily added indefinitely. We treat deliverables from waterfall projects as constraints. To manage the constraints we request work from these teams well in advance and use engineering techniques like mocking to test the story cards that will integrate with these deliverables.
"These factors change when applied in an organisation with existing traditional (i.e. BDUF or waterfall) models, where agile teams must either coexist with or be adapted from teams using non-agile methods:"
We have agile teams that live in a waterfall world. We invite the waterfall projects to our release and iteration planning meetings (and retrospectives). The success we have and continue to have continue to bring new converts to the agile practices within the company.
"Process documentation with sign off and structured steps will help other teams track the project."
Disagree. The story card wall, iteration plan and release plan are all that is needed by those on the team or external to the team.
"Statistical indicators (like velocity) can help reassure non-agile teams that the process is under control."
Agree. Agile teams will make visible velocity and defect rates. Budgets will be within 1 or 2 percent and releases will be on schedule since they are time boxed.
"Fixed iterations will help co-ordination across teams."
Needed in highly integrated and large environments. Also helps the team build iteration and release plans based on velocity.