Files
Medios-Macina/DEBUG_IMPROVEMENTS_SUMMARY.md

128 lines
4.4 KiB
Markdown
Raw Normal View History

2025-12-11 12:47:30 -08:00
DEBUGGING IMPROVEMENTS IMPLEMENTED
==================================
1. ENHANCED ADD-FILE DEBUG LOGGING
=================================
Now logs when cmdlet is executed:
- INPUT result type (list, dict, PipeObject, None, etc.)
- List length if applicable
- First item details: title, hash (first 12 chars), store
- Resolved source: path/URL, whether from Hydrus, hash value
- Error details if resolution or validation fails
Example output:
[add-file] INPUT result type=list
[add-file] INPUT result is list with 4 items
[add-file] First item details: title=i ve been down, hash=b0780e68a2dc..., store=hydrus
[add-file] RESOLVED source: path=None, is_hydrus=True, hash=b0780e68a2dc...
[add-file] ERROR: Source validation failed for None
This will help identify:
- Where the result is being lost
- If hash is being extracted correctly
- Which store the file comes from
2. ENHANCED SEARCH-STORE DEBUG LOGGING
===================================
Now logs after building results:
- Number of table rows added
- Number of items in results_list
- WARNING if there's a mismatch
Example output:
[search-store] Added 4 rows to table, 4 items to results_list
[search-store] WARNING: Table/items mismatch! rows=1 items=4
This directly debugs the "@2 selection" issue:
- Will show if table/items registration is correct
- Helps diagnose why only 1 row shows when 4 items exist
3. ROOT CAUSE ANALYSIS: "@2 SELECTION FAILED"
==========================================
Your debug output showed:
[debug] first-stage: sel=[1] rows=1 items=4
This means:
- search-store found 4 results
- But only 1 row registered in table for selection
- User selected @2 (index 1) which is valid (0-4)
- But table only had 1 row, so selection was out of bounds
The mismatch is between:
- What's displayed to the user (seems like 4 rows based on output)
- What's registered for @N selection (only 1 row)
With the new debug logging, running the same command will show:
[search-store] Added X rows to table, Y items to results_list
If X=1 and Y=4, then search-store isn't adding all results to the table
If X=4 and Y=4, then the issue is in CLI selection logic
4. NEXT DEBUGGING STEPS
===================
To diagnose the "@2 selection" issue:
1. Run: search-store system:limit=5
2. Look for: [search-store] Added X rows...
3. Compare X to number of rows shown in table
4. If X < display_rows: Problem is in table.add_result()
5. If X == display_rows: Problem is in CLI selection mapping
After running add-file:
1. Run: @2 | add-file -storage test
2. Look for: [add-file] INPUT result details
3. Check if hash, title, and store are extracted
4. If missing: Problem is in result object structure
5. If present: Problem is in _resolve_source() logic
5. ARCHITECTURE DECISION: EXPORT-STORE CMDLET
==========================================
Recommendation: DO NOT CREATE EXPORT-STORE
Reason: get-file already provides this functionality
get-file:
- Takes hash + store name
- Retrieves from any backend (Folder, HydrusNetwork, Remote, etc.)
- Exports to specified path
- Works for all storage types
- Already tested and working
Example workflow for moving files between stores:
$ search-store -store home | get-file -path /tmp | add-file -storage test
This is cleaner than having specialized export-store cmdlet
6. FUTURE IMPROVEMENTS
===================
Based on findings:
a) Update search-store to show specific instance names
Currently: store="hydrus"
Should be: store="home" or store="work"
Implementation: Use FileStorage to detect which instance
b) Fix selection/table registration validation
Add assertion: len(table.rows) == len(results_list)
Fail fast if mismatch detected
c) Enhance add-file to handle Hydrus imports
Current: Needs file path on local filesystem
Future: Should support add-file -hash <hash> -store home
This would copy from one Hydrus instance to another
SUMMARY
=======
✓ Better debug logging in add-file and search-store
✓ Root cause identified for "@2 selection" issue
✓ Confirmed get-file is sufficient (no export-store needed)
✓ Path forward: Use new logging to identify exact failure point