## 1. Project Initialization - [x] 1.1 Create standard directory structure (reports/, classes/, interfaces/, functions/, domains/, dataelements/, tables/, structures/, tabletypes/) - [x] 1.2 Generate empty manifest.json with version and timestamp - [x] 1.3 Support --path for custom project directory ## 2. Manifest Management - [x] 2.1 Define Manifest and ManifestEntry data classes - [x] 2.2 Implement JSON serialization/deserialization (to_dict/from_dict) - [x] 2.3 Implement load/save/upsert/remove/get operations - [x] 2.4 Track system_status (active/inactive/not_exists) - [x] 2.5 Track last_sync_result (success/failed/pending/skipped) - [x] 2.6 Implement pending_objects() and active_up_to_date_objects() queries ## 3. Directory Scanning - [x] 3.1 Map directory names to object types (DIRECTORY_TYPE_MAP) - [x] 3.2 Parse .abap files into ScannedObject entries - [x] 3.3 Handle functions/ subdirectory as group/module naming - [x] 3.4 Skip hidden files (dot-prefixed) ## 4. Dependency Sorting - [x] 4.1 Implement Kahn's algorithm for topological sort - [x] 4.2 Add TYPE_PRIORITY tie-breaker (interface:50, class:60, function:70, report:80, others:90) - [x] 4.3 Detect cyclic dependencies and raise CyclicDependencyError - [x] 4.4 Ignore external dependencies not in current manifest ## 5. Batch Sync - [x] 5.1 Implement sync --all mode with scan → sort → sequential sync pipeline - [x] 5.2 Add --dry-run flag for preview-only mode - [x] 5.3 Add --fail-fast flag for stop-on-first-error mode - [x] 5.4 Update manifest after each sync attempt - [x] 5.5 Validate --all mode excludes --name and --type ## 6. Status Refresh - [x] 6.1 Query SAP system for each object's current status - [x] 6.2 Update manifest with latest status information ## 7. Transport Request (Basic) - [x] 7.1 Support --corr_nr in sync and create for transport binding - [x] 7.2 Auto-detect object's bound transport request on lock - [x] 7.3 Interactive transport request selection when needed