-- Put entry points first, then each struct's methods as a group, then
- standalone utility functions. Do not put a utility function between
- the methods of one type.
-- In each group, order functions by first use in the file.
+- When code in one file gets a user in another file for an unrelated
+ purpose, move it to a file named for its function in the same change.
+- Start each package-level name that belongs to one feature or
+ integration with the name of that feature. Start the names of its
+ files with the same name. Keep a name generic only when more than one
+ feature uses it.
+- Write type names with a capital letter, so that a variable can have
+ the name of its type. Write all other package-level names in lower
+ case.
+- Write all the letters of an initialism in one case. `revive` checks
+ common initialisms.
+- Order declarations as imports, constants, variables, types,
+ constructors, methods, then standalone helpers. Types include structs,
+ interfaces, and aliases. Put all types before any constructor or
+ method, also when a file holds more than one type. The Tests section
+ gives the exception for files with tests.
+- Keep each type's methods in one group. Do not put a helper between
+ them. Order functions by first use within their declaration group, not
+ across groups. Entry points do not go before types or constructors
+ merely because they are entry points.