Long Term Project
- A module must list all of its coupled modules in comments.
- A module must not couple with 3+ modules, and should not couple with 2+ modules.
- Including coupled modules, a module should not depend on 5+ modules.
Term definition: Two modules are calls coupled if they are bidirectional dependent, that it is practically impossible to modify one module without modifying the other.
- Weak types including
any
,object
, and structuredstring
are semantically forbidden.- If these types are used in signature, the docstring must contain detailed schema and an example.
- If a non-constrained type is passed across modules, it must have a type alias. (e.g. SearchSpace)
- One concept can only have one term, except in user visible strings for compatibility.
- Directory name must have concrete meaning, or concrete explanation if it's an abstract word.
- "Utils" can only contain optional function. Anything with more than one dependent cannot be util.
- Exported classes and functions shall not use abbreviation, unless it's extremely long and has no ambiguity in any context.
- Each .ts file should have a test file.
- Apart from error handling routines, each module's unit test coverage should be 100%.
- Overall unit test coverage must be 80%+.
- If a script has a strong reason for not being covered, the reason must be written in comment.
- Unit tests should not require other modules except
globals
.
- Each directory must have doc in index.ts. It must clarify:
- What are in this directory.
- What can be put into this directory.
- Each script must have file-level doc. It must clarify:
- Why this is needed.
- How to use classes and functions of this module.
- What assumptions are made on other modules (excluding
lib
).
- No need to say, each exported API must be documented.
- Unit test files must be documented. The comments should contain:
- What behaviors are tested.
- How are mocked things set up.
- For module level output recording objects, what they hold and where the values come from.
- Infrastructure
- start up
- shutdown
- logging
- REST Server
- express server
- API handlers
- WebSockets
- NNI Manager
- tuner interface
- storage
- business logic
- Standalone Modules
- experiment manager
- tensorboard
- Training Service
- classic
- "reusable"
- environment services