## Bug Fixes - Fixed Bug #1: Reset command directory path (modules/ → src/) - Fixed Bug #2: Reset command file naming (short name → full module name) - Fixed Transformer milestone prerequisites (skip CNN/spatial modules) ## Command Changes - Renamed `milestone` → `milestones` (plural) - Removed old `milestone` backward compatibility alias - Updated all milestone references to use "MLPerf benchmarks" ## Testing - Completed 8/8 Priority 1 & 2 CLI tests - Documented 3 bugs (1 fixed, 2 open) - Added comprehensive test documentation ## Visual Improvements - Fixed "Tiny" capitalization in banner - Enhanced prerequisite checking with locked module display - Improved completion workflow with 3-step visual feedback 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
6.0 KiB
TinyTorch CLI Testing - Bugs Found
Tracking bugs discovered during comprehensive CLI testing
Bug #1: Reset Command Uses Wrong Directory Path
Test: Test 4.3 - Reset Module
Command: tito module reset 04 --force
Expected: Module resets successfully with backup, unexport, and restore
Actual:
Dev file not found: /Users/VJ/GitHub/TinyTorch/modules/04_losses/losses.py
File not tracked in git: /Users/VJ/GitHub/TinyTorch/modules/04_losses/losses.py
Restore failed. Module may be in inconsistent state.
Error Output:
Step 2: Removing package exports...
Dev file not found: /Users/VJ/GitHub/TinyTorch/modules/04_losses/losses.py
Step 3: Restoring pristine source...
Restoring from git: modules/04_losses/losses.py
File not tracked in git: /Users/VJ/GitHub/TinyTorch/modules/04_losses/losses.py
Restore failed. Module may be in inconsistent state.
Root Cause:
- Config (
tito/core/config.pyline 50-54) points tomodules/directory - Actual module files are in
src/directory (new structure fromrestructure/src-modules-separationbranch) - File naming: Reset command looks for
losses.pybut actual file is04_losses.py(full module name)
Files Affected:
/Users/VJ/GitHub/TinyTorch/tito/core/config.py- line 50:modules_path = project_root / 'modules'/Users/VJ/GitHub/TinyTorch/tito/commands/module_reset.py- lines 189, 246, 305, 362: usesself.config.modules_dir/Users/VJ/GitHub/TinyTorch/tito/commands/module_reset.py- line 248:dev_file = module_dir / f"{short_name}.py"(should be{module_name}.py)
Fix Required:
- Update
config.pyto point tosrc/instead ofmodules/ - Update
module_reset.pyline 248 to use full module name instead of short name:- Current:
dev_file = module_dir / f"{short_name}.py" - Should be:
dev_file = module_dir / f"{module_name}.py"
- Current:
- Same fix needed in lines 307, 362 of
module_reset.py
Status: ✅ Fixed
Severity: HIGH - Reset command completely broken, can't reset any modules
Fix Applied:
- Updated
/Users/VJ/GitHub/TinyTorch/tito/core/config.pyline 50: changedmodules/tosrc/ - Updated
/Users/VJ/GitHub/TinyTorch/tito/commands/module_reset.pyline 248: changedf"{short_name}.py"tof"{module_name}.py" - Updated
/Users/VJ/GitHub/TinyTorch/tito/commands/module_reset.pyline 307: changedf"{short_name}.py"tof"{module_name}.py"
Verification: Successfully tested tito module reset 04 --force. Module was backed up, unexported, restored from git, and removed from completed modules. Progress correctly updated from 4/21 to 3/21.
Bug #2: Reset Command Doesn't Update init.py Imports
Test: Test 4.3 - Reset Module (side effect discovered)
Command: tito module reset 04 --force
Expected: Module reset should remove imports from tinytorch/__init__.py
Actual: Imports remain in __init__.py, causing ModuleNotFoundError when trying to use other modules
Error Output:
ModuleNotFoundError: No module named 'tinytorch.core.losses'
Root Cause:
The reset command's unexport_module() method (line 241-298) removes the exported .py file from tinytorch/core/ but doesn't update the top-level tinytorch/__init__.py which still has:
from .core.losses import MSELoss, CrossEntropyLoss, BinaryCrossEntropyLoss
This causes circular import errors when other modules try to import tinytorch.
Fix Required:
- Add a new method
update_init_imports()inmodule_reset.py - Parse
tinytorch/__init__.pyto find and comment out/remove imports for the reset module - Call this method from
unexport_module()after removing the exported file - Also update the
__all__export list
Status: 🔴 Open - Needs Fix
Severity: HIGH - Resetting any module breaks imports for all other modules
Workaround: Manually comment out the import in __init__.py
Bug #3: Complete Command Doesn't Check Prerequisites
Test: Test 5.2 - Complete Without Starting
Command: tito module complete 06 (when module 05 is not complete)
Expected: Should fail with prerequisite check, similar to start command
Actual: Command runs tests and export, but silently doesn't mark as complete
Root Cause:
The complete_module() method in module_workflow.py (line 245-370) does not check prerequisites before running tests and export. It only checks if the module exists in the mapping, then proceeds to:
- Run tests
- Export to package
- Update progress
The update_progress() method likely checks prerequisites internally, preventing the module from being marked complete, but this wastes time running tests and export.
Impact:
- Wastes computational resources running tests for locked modules
- Confusing user experience - command appears to succeed but module not marked complete
- Inconsistent with
startcommand which has clear prerequisite checking
Fix Required:
Add prerequisite checking at the beginning of complete_module() method, similar to the check in start_module():
def complete_module(self, module_number: Optional[str] = None, ...):
# ... existing code ...
module_num = int(normalized)
# NEW: Check prerequisites before running tests
if module_num > 1:
progress = self.get_progress_data()
completed = progress.get('completed_modules', [])
missing_prereqs = []
for i in range(1, module_num):
prereq_num = f"{i:02d}"
if prereq_num not in completed:
missing_prereqs.append((prereq_num, module_mapping.get(prereq_num, "Unknown")))
if missing_prereqs:
# Show locked module panel and return early
self.console.print(Panel(...))
return 1
# ... continue with tests and export ...
Status: 🔴 Open - Needs Fix
Severity: MEDIUM - Wastes resources but doesn't break core functionality
Bug #4: [Template for Next Bug]
Test: Test X.X - [Name]
Command: ...
Expected: ...
Actual: ...
Error Output: ...
Root Cause: ...
Fix: ...
Status: [ ] Open / [ ] Fixed / [ ] Won't Fix