A couple of conversations in the past week have made me realise that people still don't understand Agile, and are still struggling to apply it.
Agile is a risk mitigation approach for building complex systems that attempts to improve the quality of the delivered system by efficiently incorporating new information during system development.
These have since congealed into a cargo-cult approach to software development that isn't awful but fails to understand why the practices exist.
Agile is about designing efficient cybernetic feedback loops into engineering processes.
Adapt processes, practices and tools to emphasise malleability. Deliver meaningful discrete pieces of work for stakeholder evaluation and ensure you can efficiently incorporate feedback.
That is to say, don't feel a need to artificially divide work into artefacts deliverable in two week "sprints" if that doesn't reflect the real needs.
Analyse what needs to be achieved and what changes to processes and practices will help you achieve that and what the implications of those changes are.
A model-based approach may help; models are more malleable than documents or structured requirements.
Measure the behaviour you're trying to incentivise. This critically includes overall efficient delivery of the system and the ability of the delivered system to meet its quality goals.
Work out how to best achieve those goals in your environment. Examine what works in other environments, but don't cargo-cult into yours.