1. user story has entry in `features.md`
2. user story has at least one acceptance criteria defined in `features.md`
a) acceptance criteria points to a test in integration test (this test can be empty, annotated as 'skipped' but it has to be there
b) acceptance criteria has number of steps defined.
Important: if you have problems defining this user story, this is perfectly FINE! This is why we are doing this via JIRA. We want to spawn a discussion. If you don't know how to demo given user story, let know in comments. If you don't understand the user story, let know in comments. If you are not happy with particular wording in the given user story, let know in comments.
When defining steps for acceptance criteria, think what you are "asserting" o not "how".
instead of writing "Show blocks should show genesis block", write "Tip of the blockchain should be genesis block"
instead of writing "Log message should print 'Received message 'UnapprovedBlock'", write "`validatorA` receives `UnapprovedBlock`"
We might use show-blocks to reason about the tip of the blockchain, or use log to reason about what message was received. But that is implementation detail which may change over time, even if intention or meaning has not changed.
Lastly, please include as many devs as you can when creating a PR for review. This should be a team effort. Everybody should have a clear understanding of what we are building.