Core Checklist
Merge Gate - This checklist is applied to every change.
Code with violations against this checklist will not be accepted.
Production-Ready (Zero Tolerance)
Forbidden Patterns
| Forbidden | Required |
// TODO: comments | Complete implementation |
// FIXME: comments | Fixed code |
| Stub functions | Real implementations |
| Mock implementations | Production code |
| Placeholder values | Real values |
raise ENotImplemented | Working code |
Checklist
[ ] No TODO comments in production code
[ ] No FIXME comments in production code
[ ] No stub or placeholder functions
[ ] No mock implementations
[ ] Every function fully implemented
[ ] All error cases handled
[ ] All edge cases covered
General Quality
[ ] No duplicated code (DRY principle)
[ ] No magic numbers (use named constants)
[ ] Consistent formatting throughout file
[ ] All public methods have meaningful error messages
Example: Magic Numbers
(* FORBIDDEN - Magic number *)
if Length(Name) > 64 then
raise EValidationError.Create('Name too long');
(* CORRECT - Named constant *)
const
MAX_NAME_LENGTH = 64;
if Length(Name) > MAX_NAME_LENGTH then
raise EValidationError.Create(Format(rsNameTooLong, [MAX_NAME_LENGTH]));
Error Handling Baseline
[ ] No empty catch/except blocks
[ ] Errors logged BEFORE handling
[ ] Specific exceptions before general ones
[ ] Stack trace preserved on re-throw
[ ] Resources released deterministically (try-finally)
Example: Correct Error Handling
(* FORBIDDEN - Empty exception handler *)
try
DoSomething;
except
// Do nothing - FORBIDDEN!
end;
(* FORBIDDEN - General exception first *)
try
DoSomething;
except
on E: Exception do // Too general!
HandleError(E);
on E: EFileNotFound do // Never reached!
HandleFileNotFound(E);
end;
(* CORRECT - Specific, logged, resources freed *)
var
Resource: TResource;
begin
Resource := TResource.Create;
try
try
DoSomething;
except
on E: EFileNotFound do
begin
Logger.Error(rsFileNotFound, [E.Message]); (* Log first *)
raise; (* Then re-throw - preserve stack trace *)
end;
on E: EAccessDenied do
begin
Logger.Error(rsAccessDenied, [E.Message]);
raise;
end;
end;
finally
Resource.Free; (* ALWAYS free *)
end;
end;
Logging Baseline
[ ] Logging format and verbosity follow policy
[ ] No secrets or sensitive data in logs
[ ] Structured format: [Timestamp] [Level] [Source] Message
Log Level Guidelines
| Level | Usage |
DEBUG | Debug build only, detailed flow info |
INFO | Normal operations, important milestones |
WARN | Unexpected but recoverable situations |
ERROR | Errors affecting functionality |
Forbidden in Logs
(* FORBIDDEN - Sensitive data *)
Logger.Info('User authenticated with token: %s', [Token]);
Logger.Debug('Password: %s', [Password]);
Logger.Info('API Key: %s', [ApiKey]);
(* CORRECT - No sensitive data *)
Logger.Info('User %s authenticated successfully', [Username]);
Logger.Debug('Processing request for user %s', [Username]);
Project Structure
[ ] Project structure follows WvdS baseline
[ ] Build configuration correct
[ ] Documentation triad exists (README, API, CHANGELOG)
Quick Checklist for Copy/Paste
Review Checklist (Core):
Production-Ready:
- [ ] No TODO comments
- [ ] No FIXME comments
- [ ] No stub functions
- [ ] No mock implementations
- [ ] All functions complete
Quality:
- [ ] No duplicated code (DRY)
- [ ] No magic numbers
- [ ] Consistent formatting
Error Handling:
- [ ] No empty except blocks
- [ ] Errors logged before handling
- [ ] Specific before general exceptions
- [ ] Resources freed in finally
Logging:
- [ ] No sensitive data in logs
- [ ] Structured log format
See also