Doc: Add debug ENV consolidation plan and survey
Documented Phase 1 completion and future consolidation plan for 43+ debug environment variables surveyed during cleanup work. Content: - Phase 1 summary (4 vars consolidated) - Complete survey of 43+ debug/trace/log variables - Categorization (7 categories) - Phase 2-4 consolidation plan - Migration guide for users and developers Impact: - Clear roadmap for reducing 43+ vars to 10-15 - ~70% reduction in environment variable count - Better discoverability and usability 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
245
docs/status/DEBUG_ENV_CONSOLIDATION.md
Normal file
245
docs/status/DEBUG_ENV_CONSOLIDATION.md
Normal file
@ -0,0 +1,245 @@
|
||||
# Debug Environment Variables Consolidation
|
||||
|
||||
**Date:** 2025-11-29
|
||||
**Status:** Phase 1 Complete (4 vars consolidated)
|
||||
**Total Survey:** 43+ debug/trace/log environment variables
|
||||
|
||||
---
|
||||
|
||||
## Summary
|
||||
|
||||
Successfully consolidated 4 new debug environment variables added during bug fixes
|
||||
into the existing `HAKMEM_DEBUG_LEVEL` system (expanded to 0-5 levels).
|
||||
|
||||
### Impact
|
||||
- **Before:** 43+ individual debug environment variables
|
||||
- **After (Phase 1):** 4 consolidated to HAKMEM_DEBUG_LEVEL
|
||||
- **Target (Future):** Consolidate 30+ more variables
|
||||
|
||||
---
|
||||
|
||||
## Unified Debug Level System
|
||||
|
||||
### Level Definitions
|
||||
|
||||
```
|
||||
HAKMEM_DEBUG_LEVEL=<0-5>
|
||||
|
||||
0 = OFF Production mode (all debug disabled)
|
||||
1 = ERROR Critical errors only
|
||||
2 = WARN Warnings + errors
|
||||
3 = INFO Allocation paths, header validation, stats
|
||||
4 = DEBUG Guard instrumentation, failfast
|
||||
5 = TRACE Verbose tracing (all debug output)
|
||||
```
|
||||
|
||||
### Usage Examples
|
||||
|
||||
```bash
|
||||
# Production (default)
|
||||
HAKMEM_DEBUG_LEVEL=0 ./larson_hakmem ...
|
||||
|
||||
# Enable allocation path tracking + header validation
|
||||
HAKMEM_DEBUG_LEVEL=3 ./larson_hakmem ...
|
||||
|
||||
# Enable all debug features including guard/failfast
|
||||
HAKMEM_DEBUG_LEVEL=4 ./larson_hakmem ...
|
||||
|
||||
# Full verbose tracing
|
||||
HAKMEM_DEBUG_LEVEL=5 ./larson_hakmem ...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Phase 1: Completed (2025-11-29)
|
||||
|
||||
### Consolidated Variables
|
||||
|
||||
| Old ENV Variable | New Control | Level | Commit |
|
||||
|------------------|-------------|-------|--------|
|
||||
| `HAKMEM_ALLOC_PATH_TRACE` | `HAKMEM_DEBUG_LEVEL >= 3` | INFO | 3f461ba25 |
|
||||
| `HAKMEM_TINY_SLL_VALIDATE_HDR` | `HAKMEM_DEBUG_LEVEL >= 3` | INFO | 3f461ba25 |
|
||||
| `HAKMEM_TINY_REFILL_FAILFAST` | `HAKMEM_DEBUG_LEVEL >= 4` | DEBUG | 3f461ba25 |
|
||||
| `HAKMEM_TINY_GUARD` | `HAKMEM_DEBUG_LEVEL >= 4` | DEBUG | 3f461ba25 |
|
||||
|
||||
### Kept for Special Purposes
|
||||
|
||||
| ENV Variable | Purpose | Reason |
|
||||
|--------------|---------|--------|
|
||||
| `HAKMEM_TINY_GUARD_CLASS` | Target class for guard (0-7) | Fine-grained control |
|
||||
| `HAKMEM_TINY_GUARD_MAX` | Max guard events (default: 8) | Fine-grained control |
|
||||
|
||||
### Backward Compatibility
|
||||
|
||||
✅ **All legacy environment variables still work**
|
||||
- Uses `hak_debug_check_level()` for compatibility
|
||||
- Old code continues to function
|
||||
- Graceful migration path
|
||||
|
||||
---
|
||||
|
||||
## Remaining Variables (Future Work)
|
||||
|
||||
### Category A: General Debug Control (4 vars)
|
||||
- `HAKMEM_DEBUG_ALL` → Consolidate to LEVEL=5
|
||||
- `HAKMEM_TRACE_LEVEL` → Consolidate to LEVEL
|
||||
- `HAKMEM_TRACE` → Consolidate to LEVEL=5
|
||||
|
||||
### Category B: Component Debug (4 vars)
|
||||
- `HAKMEM_ACE_DEBUG` → Consolidate to LEVEL>=2
|
||||
- `HAKMEM_ACE_LOG_LEVEL` → Consolidate to LEVEL
|
||||
- `HAKMEM_ADAPTIVE_LOG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_SFC_DEBUG` → Consolidate to LEVEL>=3
|
||||
|
||||
### Category C: Pointer Tracing (5 vars)
|
||||
- `HAKMEM_PTR_TRACE` → Consolidate to LEVEL>=4
|
||||
- `HAKMEM_PTR_TRACE_ALL` → Consolidate to LEVEL=5
|
||||
- `HAKMEM_PTR_TRACE_CLASS` → Keep (special purpose)
|
||||
- `HAKMEM_PTR_TRACE_DUMP` → Consolidate to LEVEL=5
|
||||
- `HAKMEM_PTR_TRACE_VERBOSE` → Consolidate to LEVEL=5
|
||||
|
||||
### Category D: SuperSlab Debug (7 vars)
|
||||
- `HAKMEM_SS_ACQUIRE_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_SS_FREE_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_SS_LRU_DEBUG` → Consolidate to LEVEL>=4
|
||||
- `HAKMEM_SS_PREWARM_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_SUPER_LOOKUP_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_SUPER_REG_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_SUPER_REG_REQTRACE` → Consolidate to LEVEL>=4
|
||||
|
||||
### Category E: Tiny Allocator Debug (15+ vars)
|
||||
- `HAKMEM_TINY_ALLOC_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_TINY_DEBUG_FAST` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_TINY_DEBUG_REMOTE_GUARD` → Consolidate to LEVEL>=4
|
||||
- `HAKMEM_TINY_FAST_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_TINY_FAST_DEBUG_MAX` → Keep (special purpose)
|
||||
- `HAKMEM_TINY_HEAP_V` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_TINY_MAILBOX_TRACE_LIMIT` → Keep (special purpose)
|
||||
- `HAKMEM_TINY_PATH_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_TINY_REFILL_OPT_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_TINY_RF_TRACE` → Consolidate to LEVEL>=4
|
||||
- `HAKMEM_TINY_SLL_DRAIN_DEBUG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_TINY_SUPERSLAB_TRACE` → Consolidate to LEVEL>=4
|
||||
- `HAKMEM_TINY_TRACE_RING` → Consolidate to LEVEL>=4
|
||||
- `HAKMEM_TINY_ULTRA_DEBUG` → Consolidate to LEVEL=5
|
||||
|
||||
### Category F: Free Path Tracing (3 vars)
|
||||
- `HAKMEM_FREE_ROUTE_TRACE` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_FREE_WRAP_TRACE` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_INVALID_FREE_LOG` → Consolidate to LEVEL>=2
|
||||
|
||||
### Category G: Misc Debug (5 vars)
|
||||
- `HAKMEM_DEBUG_SEGV` → Consolidate to LEVEL>=1
|
||||
- `HAKMEM_EXTERNAL_GUARD_LOG` → Consolidate to LEVEL>=3
|
||||
- `HAKMEM_FOO_DEBUG` → Remove (unused test var)
|
||||
- `HAKMEM_FOO_TRACE` → Remove (unused test var)
|
||||
- `HAKMEM_LOG_FILE` → Keep (special purpose)
|
||||
|
||||
---
|
||||
|
||||
## Consolidation Plan (Phase 2-4)
|
||||
|
||||
### Phase 2: High-Priority Consolidation (10-15 vars)
|
||||
**Target:** SuperSlab + Tiny Allocator debug variables
|
||||
**Effort:** 4-6 hours
|
||||
**Impact:** Most frequently used debug variables
|
||||
|
||||
Candidates:
|
||||
- Category D: SuperSlab Debug (7 vars)
|
||||
- Category E: High-frequency Tiny debug (5 vars)
|
||||
|
||||
### Phase 3: Component Debug Consolidation (10-15 vars)
|
||||
**Target:** Component-specific debug variables
|
||||
**Effort:** 3-4 hours
|
||||
**Impact:** Cleaner component debugging
|
||||
|
||||
Candidates:
|
||||
- Category B: Component Debug (4 vars)
|
||||
- Category C: Pointer Tracing (consolidate 3/5)
|
||||
- Category F: Free Path Tracing (3 vars)
|
||||
|
||||
### Phase 4: Cleanup & Documentation (5-10 vars)
|
||||
**Target:** Remaining + unused variables
|
||||
**Effort:** 2-3 hours
|
||||
**Impact:** Final cleanup
|
||||
|
||||
Tasks:
|
||||
- Remove unused test variables (FOO_DEBUG, etc.)
|
||||
- Document special-purpose variables
|
||||
- Update ENV_VARS.md with consolidated list
|
||||
|
||||
---
|
||||
|
||||
## Estimated Final State
|
||||
|
||||
### After Full Consolidation
|
||||
|
||||
**Environment Variables:**
|
||||
- `HAKMEM_DEBUG_LEVEL=<0-5>` - Main debug control
|
||||
- `HAKMEM_QUIET=1` - Suppress all debug (override)
|
||||
- `HAKMEM_DEBUG_ALL=1` - Enable all debug (legacy)
|
||||
|
||||
**Special-Purpose (5-10 vars):**
|
||||
- `HAKMEM_TINY_GUARD_CLASS` - Guard target class
|
||||
- `HAKMEM_TINY_GUARD_MAX` - Guard event limit
|
||||
- `HAKMEM_PTR_TRACE_CLASS` - Pointer trace class
|
||||
- `HAKMEM_TINY_FAST_DEBUG_MAX` - Fast debug limit
|
||||
- `HAKMEM_LOG_FILE` - Log file path
|
||||
- ...
|
||||
|
||||
**Total:** 10-15 variables (down from 43+)
|
||||
|
||||
**Reduction:** ~70% fewer environment variables
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
- Master debug header: `core/hakmem_debug_master.h`
|
||||
- Consolidated variables: commits 20f8d6f17, 3f461ba25
|
||||
- Full survey: 43+ debug/trace/log variables identified (2025-11-29)
|
||||
- Implementation: `hak_debug_check_level()` API
|
||||
|
||||
---
|
||||
|
||||
## Migration Guide
|
||||
|
||||
### For Users
|
||||
|
||||
**Old way (still works):**
|
||||
```bash
|
||||
HAKMEM_ALLOC_PATH_TRACE=1 ./larson_hakmem ...
|
||||
HAKMEM_TINY_SLL_VALIDATE_HDR=1 ./larson_hakmem ...
|
||||
```
|
||||
|
||||
**New way (recommended):**
|
||||
```bash
|
||||
HAKMEM_DEBUG_LEVEL=3 ./larson_hakmem ...
|
||||
```
|
||||
|
||||
### For Developers
|
||||
|
||||
**Old pattern:**
|
||||
```c
|
||||
static int dbg = -1;
|
||||
if (dbg == -1) {
|
||||
const char* e = getenv("HAKMEM_FOO_DEBUG");
|
||||
dbg = (e && *e && *e != '0') ? 1 : 0;
|
||||
}
|
||||
```
|
||||
|
||||
**New pattern:**
|
||||
```c
|
||||
static int dbg = -1;
|
||||
if (dbg == -1) {
|
||||
dbg = hak_debug_check_level("HAKMEM_FOO_DEBUG", 3); // INFO level
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
- Initial consolidation: Claude Code (ultrathink) + Task agent
|
||||
- Survey and planning: 2025-11-29
|
||||
- Implementation: commits 20f8d6f17, 3f461ba25
|
||||
Reference in New Issue
Block a user