CircleMUD checklist for MUDs
This checklist provides a technical roadmap for transitioning a CircleMUD codebase from development to a production-ready environment, focusing on C source stability, zone file integrity, and server security.

Compilation and Environment
0/5Modern GCC Compatibility
criticalVerify that the code compiles without errors on GCC 10+ by updating deprecated headers in sysdep.h and fixing 'format-security' warnings.
Crypt Library Linking
criticalEnsure the Makefile includes -lcrypt for password hashing, as modern Linux distributions have moved this to a standalone library.
Binary Stripping
recommendedRun 'strip circle' on the final executable to remove debugging symbols and reduce memory footprint before deployment.
Architecture-Specific Optimization
recommendedSet the -O2 or -O3 optimization flags in the Makefile to improve performance of the main loop and combat calculations.
Directory Structure Verification
criticalConfirm that lib/world, lib/etc, lib/plrobjs, and lib/plrvars directories exist and are writable by the MUD process.
Security and Access Control
0/5Non-Root Execution
criticalVerify the MUD process is owned and executed by a dedicated 'mud' user rather than the root account.
Wizlock Level Configuration
recommendedSet the wizlock level to 1 during final configuration to prevent players from entering while staff perform final world resets.
Player File Permissions
criticalSet chmod 600 on all files in lib/plrobjs and lib/plrvars to prevent local users from reading sensitive player data.
Staff Level Audit
criticalReview the 'players' file or use the 'stat' command to ensure no accounts have level 34 (Implementor) status except the lead administrator.
IP Ban System Test
recommendedVerify the 'ban' command correctly writes to the 'lib/etc/badsites' file and blocks connections from a test IP.
World and Zone Integrity
0/5Circular Reset Check
criticalScan .zon files for 'G' (Give) or 'P' (Put) commands that reference non-existent or circular item IDs which can crash the reset engine.
Zone Number Boundaries
criticalVerify that all room, mob, and obj vnums within a .zon file fall within the range defined in the zone header.
Room Sector Validation
recommendedEnsure no rooms are set to 'SECT_INSIDE' if they are intended to be affected by weather or 'SECT_WATER' if they lack boat requirements.
OLC Save Verification
criticalPerform a manual 'medit', 'oedit', and 'redit' followed by a 'save' to ensure the OLC system correctly updates the .wld, .mob, and .obj files.
Dangling Exit Audit
recommendedRun a script or use 'show rooms' to identify exits leading to vnums that do not exist in the world files.
Persistence and Database
0/5Autosave Interval Check
recommendedConfirm the 'autosave' timer in config.c is set to a value between 5 and 15 minutes to balance disk I/O and data safety.
Rent System Configuration
recommendedVerify the 'rent' file in lib/etc/config is set to 'Free Rent' or that the cost-per-day is calibrated to the game's economy.
Object Limit Validation
criticalCheck the max_obj_save variable to ensure players can save a sufficient number of items in their inventory across reboots.
Board Saving Mechanism
criticalPost a test note to the 'Mortal Board' and reboot the MUD to verify the note persists in the lib/etc/boards directory.
Crash File Rotation
recommendedEnsure the 'circle' script or 'autorun' script renames the 'syslog' to 'syslog.old' on every restart to prevent log bloating.
Network and Stability
0/5Port Binding Verification
criticalConfirm the MUD binds to the correct port (default 4000) using 'netstat -tulpn' after startup.
Max Player Limit
recommendedSet the MAX_PLAYERS constant in circle.h to a value supported by the server's file descriptor limits (typically 1024).
Signal Handling Test
criticalSend a SIGHUP to the process and verify that the MUD initiates an emergency save of all players and zones before shutting down.
Autorun Script Resilience
criticalVerify that the 'bin/autorun' script successfully restarts the MUD binary within 10 seconds of a process crash.
Output Buffer Sizing
recommendedAdjust the MAX_SOCK_BUF in network.h to 64k to prevent large 'look' or 'who' outputs from overflowing for users on slow connections.