Summary
This issue consolidates production-ready improvements including enhanced symlink compatibility, security hardening, and debug cleanup across the RL module.
Changes Made
- Enhanced
rl.php endpoint with symlink support: Added fallback path detection using $_SERVER['SCRIPT_FILENAME'] for symlinked module development setups
- Security improvements: Input validation for experiment UUIDs and arm IDs using regex patterns
- Thompson sampling tie-breaker: Added micro-randomization to prevent identical scores
- Debug cleanup: Removed all debug logging statements from production code
- Code optimization: Simplified conditional logic and removed verbose comments
Technical Details
rl.php Endpoint Enhancement
- Primary path detection:
chdir('../../../') for standard installations
- Fallback detection: Uses
$_SERVER['SCRIPT_FILENAME'] when symlinks are present
- Input sanitization: Regex validation for security (
/^[a-zA-Z0-9]+$/ for UUIDs)
- Error handling: Proper HTTP status codes (400, 500) with descriptive messages
Thompson Sampling Improvements
- Added tie-breaker mechanism:
$base_score + $tie_breaker where tie-breaker = mt_rand(1, 999) / 1000000
- Ensures unique scores even when beta distributions return identical values
- Maintains statistical properties while preventing deterministic ordering
Production Cleanup
- Removed debug statements from
ExperimentDataStorage.php and ExperimentManager.php
- Simplified time window logic to ternary operators
- Removed verbose code comments, keeping only essential documentation
- Code passes Drupal coding standards
Testing
- Symlink compatibility verified with development setups
- Path detection fallback tested with both standard and symlinked installations
- Thompson sampling randomization confirmed working
- All Drupal coding standards checks pass
Compatibility
- Drupal 10/11 compatible
- Works with both standard and symlinked module installations
- Backward compatible with existing experiment data
- No database schema changes required
Pull Request: #8
Related to AI Sorting module cold start fix: dxpr/ai_sorting#10
🤖 Generated with Claude Code
Summary
This issue consolidates production-ready improvements including enhanced symlink compatibility, security hardening, and debug cleanup across the RL module.
Changes Made
rl.phpendpoint with symlink support: Added fallback path detection using$_SERVER['SCRIPT_FILENAME']for symlinked module development setupsTechnical Details
rl.php Endpoint Enhancement
chdir('../../../')for standard installations$_SERVER['SCRIPT_FILENAME']when symlinks are present/^[a-zA-Z0-9]+$/for UUIDs)Thompson Sampling Improvements
$base_score + $tie_breakerwhere tie-breaker =mt_rand(1, 999) / 1000000Production Cleanup
ExperimentDataStorage.phpandExperimentManager.phpTesting
Compatibility
Pull Request: #8
Related to AI Sorting module cold start fix: dxpr/ai_sorting#10
🤖 Generated with Claude Code