HW2 Grading Rubric: Structure and Documentation: 30% - Writeup, including documenting the basic working design of your system, the interfaces between services, and messaging protocols. Should also include a description of how the project handles errors that occur during query processing, and how the system behaves when resources are not available to process queries. The writeup should also describe what stable tie-breaking function is used to ensure consistent result ordering. 15% - Getting the pieces in place. This means (without regard for correctness), implementing a GWS, IS, and DS, each of which is non-empty, and exercised during query processing. It also includes writing the interface files and handlers, and putting them in appropriate places. 5% - Does it compile? Subtotal: 50% Correctness of Implementation: 25% - "Non-faulty" behavior, meaning "correct" output of results for a variety of configurations (nodes/shard, # of shards), in the absense of node failures. 20% - Behavior under and after failure (when full response still possible, when some shards available, when no shards available, when all shards are available again) 5% - Behavior prior to all shards being available (0 shards, partial shards) Subtotal: 50% Total: 100% Deductions may be made for the following errors (the amount will depend on the severity and circumstances): - Compiled-in configuration of nodes, roles, etc. - Inability to support multiple nodes per physical machine - Touching more or less than 1 node in a shard per query - Fetching additional or fewer document snippets than appear in active result - Duplicate results - Changing result order - Missing documents (from total result composed) - Irrelevant documents in result - Not computing the relevance properly or not sorting by it - Not returning the snippet, or not following the directions on how to compute the snippet (though I won't be overly harsh on being off by a byte, or extra newlines they put in or anything) - Head-of-line blocking - Modifying the application files given - Communication between 2 nodes of which neither is the master This list is not necessarily complete, but may serve as a list of things to verify with your implementation.