roadmap-cli 0.1.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. roadmap/__init__.py +27 -0
  2. roadmap/adapters/__init__.py +1 -0
  3. roadmap/adapters/base_paginated_adapter.py +117 -0
  4. roadmap/adapters/cli/__init__.py +249 -0
  5. roadmap/adapters/cli/analysis/__init__.py +5 -0
  6. roadmap/adapters/cli/analysis/commands.py +370 -0
  7. roadmap/adapters/cli/analysis/presenter.py +125 -0
  8. roadmap/adapters/cli/archive_operations.py +86 -0
  9. roadmap/adapters/cli/cli_command_helpers.py +109 -0
  10. roadmap/adapters/cli/cli_confirmations.py +74 -0
  11. roadmap/adapters/cli/cli_error_handlers.py +146 -0
  12. roadmap/adapters/cli/cli_validators.py +39 -0
  13. roadmap/adapters/cli/commands/sync_status.py +308 -0
  14. roadmap/adapters/cli/comment/__init__.py +5 -0
  15. roadmap/adapters/cli/comment/commands.py +106 -0
  16. roadmap/adapters/cli/config/__init__.py +5 -0
  17. roadmap/adapters/cli/config/commands.py +198 -0
  18. roadmap/adapters/cli/console_exports.py +10 -0
  19. roadmap/adapters/cli/core.py +26 -0
  20. roadmap/adapters/cli/crud/__init__.py +47 -0
  21. roadmap/adapters/cli/crud/base_archive.py +208 -0
  22. roadmap/adapters/cli/crud/base_create.py +154 -0
  23. roadmap/adapters/cli/crud/base_delete.py +155 -0
  24. roadmap/adapters/cli/crud/base_restore.py +283 -0
  25. roadmap/adapters/cli/crud/base_update.py +193 -0
  26. roadmap/adapters/cli/crud/crud_helpers.py +206 -0
  27. roadmap/adapters/cli/crud/crud_utils.py +152 -0
  28. roadmap/adapters/cli/crud/entity_builders.py +374 -0
  29. roadmap/adapters/cli/data/__init__.py +8 -0
  30. roadmap/adapters/cli/data/commands.py +149 -0
  31. roadmap/adapters/cli/decorators.py +208 -0
  32. roadmap/adapters/cli/dtos/__init__.py +155 -0
  33. roadmap/adapters/cli/exception_handler.py +105 -0
  34. roadmap/adapters/cli/git/__init__.py +8 -0
  35. roadmap/adapters/cli/git/commands.py +475 -0
  36. roadmap/adapters/cli/git/handlers/__init__.py +1 -0
  37. roadmap/adapters/cli/git/handlers/git_authentication_handler.py +124 -0
  38. roadmap/adapters/cli/git/handlers/git_branch_handler.py +238 -0
  39. roadmap/adapters/cli/git/handlers/git_connectivity_handler.py +122 -0
  40. roadmap/adapters/cli/git/handlers/git_hooks_handler.py +105 -0
  41. roadmap/adapters/cli/git/hooks_config.py +327 -0
  42. roadmap/adapters/cli/git/status_display.py +158 -0
  43. roadmap/adapters/cli/health/__init__.py +8 -0
  44. roadmap/adapters/cli/health/db_integrity.py +204 -0
  45. roadmap/adapters/cli/health/enhancer.py +227 -0
  46. roadmap/adapters/cli/health/fixer.py +295 -0
  47. roadmap/adapters/cli/health/fixers/__init__.py +10 -0
  48. roadmap/adapters/cli/health/fixers/corrupted_comments_fixer.py +231 -0
  49. roadmap/adapters/cli/health/fixers/data_integrity_fixer.py +137 -0
  50. roadmap/adapters/cli/health/fixers/duplicate_issues_fixer.py +138 -0
  51. roadmap/adapters/cli/health/fixers/folder_structure_fixer.py +114 -0
  52. roadmap/adapters/cli/health/fixers/label_normalization_fixer.py +162 -0
  53. roadmap/adapters/cli/health/fixers/milestone_name_normalization_fixer.py +181 -0
  54. roadmap/adapters/cli/health/fixers/milestone_naming_compliance_fixer.py +244 -0
  55. roadmap/adapters/cli/health/fixers/milestone_parse_error_fixer.py +162 -0
  56. roadmap/adapters/cli/health/fixers/milestone_validation_fixer.py +211 -0
  57. roadmap/adapters/cli/health/fixers/old_backups_fixer.py +135 -0
  58. roadmap/adapters/cli/health/fixers/orphaned_issues_fixer.py +252 -0
  59. roadmap/adapters/cli/health/formatter.py +250 -0
  60. roadmap/adapters/cli/health/formatters.py +427 -0
  61. roadmap/adapters/cli/health/scan.py +293 -0
  62. roadmap/adapters/cli/init/__init__.py +5 -0
  63. roadmap/adapters/cli/init/commands.py +587 -0
  64. roadmap/adapters/cli/init.py +9 -0
  65. roadmap/adapters/cli/issues/__init__.py +70 -0
  66. roadmap/adapters/cli/issues/archive.py +137 -0
  67. roadmap/adapters/cli/issues/archive_class.py +253 -0
  68. roadmap/adapters/cli/issues/block.py +39 -0
  69. roadmap/adapters/cli/issues/close.py +216 -0
  70. roadmap/adapters/cli/issues/comment.py +178 -0
  71. roadmap/adapters/cli/issues/create.py +162 -0
  72. roadmap/adapters/cli/issues/delete.py +31 -0
  73. roadmap/adapters/cli/issues/deps.py +161 -0
  74. roadmap/adapters/cli/issues/issue_status_helpers.py +111 -0
  75. roadmap/adapters/cli/issues/link.py +308 -0
  76. roadmap/adapters/cli/issues/list.py +402 -0
  77. roadmap/adapters/cli/issues/lookup.py +96 -0
  78. roadmap/adapters/cli/issues/progress.py +102 -0
  79. roadmap/adapters/cli/issues/restore.py +96 -0
  80. roadmap/adapters/cli/issues/restore_class.py +57 -0
  81. roadmap/adapters/cli/issues/start.py +165 -0
  82. roadmap/adapters/cli/issues/sync_status.py +374 -0
  83. roadmap/adapters/cli/issues/unblock.py +43 -0
  84. roadmap/adapters/cli/issues/unlink.py +104 -0
  85. roadmap/adapters/cli/issues/update.py +120 -0
  86. roadmap/adapters/cli/issues/view.py +36 -0
  87. roadmap/adapters/cli/layout.py +220 -0
  88. roadmap/adapters/cli/mappers.py +200 -0
  89. roadmap/adapters/cli/milestones/__init__.py +52 -0
  90. roadmap/adapters/cli/milestones/archive.py +125 -0
  91. roadmap/adapters/cli/milestones/archive_class.py +236 -0
  92. roadmap/adapters/cli/milestones/assign.py +62 -0
  93. roadmap/adapters/cli/milestones/close.py +177 -0
  94. roadmap/adapters/cli/milestones/create.py +131 -0
  95. roadmap/adapters/cli/milestones/delete.py +27 -0
  96. roadmap/adapters/cli/milestones/kanban.py +123 -0
  97. roadmap/adapters/cli/milestones/list.py +87 -0
  98. roadmap/adapters/cli/milestones/recalculate.py +79 -0
  99. roadmap/adapters/cli/milestones/restore.py +87 -0
  100. roadmap/adapters/cli/milestones/restore_class.py +99 -0
  101. roadmap/adapters/cli/milestones/update.py +61 -0
  102. roadmap/adapters/cli/milestones/view.py +142 -0
  103. roadmap/adapters/cli/output_manager.py +319 -0
  104. roadmap/adapters/cli/presentation/base_presenter.py +121 -0
  105. roadmap/adapters/cli/presentation/cleanup_presenter.py +235 -0
  106. roadmap/adapters/cli/presentation/core_initialization_presenter.py +277 -0
  107. roadmap/adapters/cli/presentation/crud_presenter.py +134 -0
  108. roadmap/adapters/cli/presentation/daily_summary_presenter.py +266 -0
  109. roadmap/adapters/cli/presentation/issue_presenter.py +258 -0
  110. roadmap/adapters/cli/presentation/milestone_list_presenter.py +135 -0
  111. roadmap/adapters/cli/presentation/milestone_presenter.py +297 -0
  112. roadmap/adapters/cli/presentation/project_presenter.py +233 -0
  113. roadmap/adapters/cli/presentation/project_status_presenter.py +186 -0
  114. roadmap/adapters/cli/presentation/table_builders.py +95 -0
  115. roadmap/adapters/cli/projects/__init__.py +42 -0
  116. roadmap/adapters/cli/projects/archive.py +127 -0
  117. roadmap/adapters/cli/projects/archive_class.py +96 -0
  118. roadmap/adapters/cli/projects/close.py +94 -0
  119. roadmap/adapters/cli/projects/create.py +50 -0
  120. roadmap/adapters/cli/projects/delete.py +27 -0
  121. roadmap/adapters/cli/projects/list.py +227 -0
  122. roadmap/adapters/cli/projects/restore.py +87 -0
  123. roadmap/adapters/cli/projects/restore_class.py +56 -0
  124. roadmap/adapters/cli/projects/update.py +57 -0
  125. roadmap/adapters/cli/projects/view.py +157 -0
  126. roadmap/adapters/cli/services/__init__.py +1 -0
  127. roadmap/adapters/cli/services/daily_summary_service.py +313 -0
  128. roadmap/adapters/cli/services/export_manager.py +268 -0
  129. roadmap/adapters/cli/services/milestone_list_service.py +266 -0
  130. roadmap/adapters/cli/services/project_initialization_service.py +29 -0
  131. roadmap/adapters/cli/services/project_status_service.py +462 -0
  132. roadmap/adapters/cli/services/sync_service.py +62 -0
  133. roadmap/adapters/cli/status.py +408 -0
  134. roadmap/adapters/cli/styling.py +21 -0
  135. roadmap/adapters/cli/sync.py +1117 -0
  136. roadmap/adapters/cli/sync_context.py +432 -0
  137. roadmap/adapters/cli/sync_handlers/__init__.py +77 -0
  138. roadmap/adapters/cli/sync_handlers/apply_ops.py +522 -0
  139. roadmap/adapters/cli/sync_handlers/baseline_ops.py +366 -0
  140. roadmap/adapters/cli/sync_handlers/conflict_ops.py +161 -0
  141. roadmap/adapters/cli/sync_handlers/dry_run_display.py +237 -0
  142. roadmap/adapters/cli/sync_handlers/interactive_resolver.py +396 -0
  143. roadmap/adapters/cli/sync_handlers/progress_tracker.py +128 -0
  144. roadmap/adapters/cli/sync_metrics_command.py +190 -0
  145. roadmap/adapters/cli/sync_presenter.py +58 -0
  146. roadmap/adapters/cli/sync_validation.py +295 -0
  147. roadmap/adapters/cli/today.py +52 -0
  148. roadmap/adapters/cli/utils/click_options.py +38 -0
  149. roadmap/adapters/git/__init__.py +1 -0
  150. roadmap/adapters/git/git.py +208 -0
  151. roadmap/adapters/git/git_branch_manager.py +400 -0
  152. roadmap/adapters/git/git_command_executor.py +56 -0
  153. roadmap/adapters/git/git_commit_analyzer.py +334 -0
  154. roadmap/adapters/git/git_hooks.py +22 -0
  155. roadmap/adapters/git/git_hooks_manager.py +455 -0
  156. roadmap/adapters/git/git_repository_info.py +65 -0
  157. roadmap/adapters/git/hook_installer.py +106 -0
  158. roadmap/adapters/git/hook_registry.py +97 -0
  159. roadmap/adapters/git/hook_script_generator.py +58 -0
  160. roadmap/adapters/git/sync_monitor.py +409 -0
  161. roadmap/adapters/git/workflow_automation.py +286 -0
  162. roadmap/adapters/github/__init__.py +1 -0
  163. roadmap/adapters/github/github.py +360 -0
  164. roadmap/adapters/github/handlers/__init__.py +17 -0
  165. roadmap/adapters/github/handlers/base.py +337 -0
  166. roadmap/adapters/github/handlers/collaborators.py +165 -0
  167. roadmap/adapters/github/handlers/comments.py +118 -0
  168. roadmap/adapters/github/handlers/issues.py +150 -0
  169. roadmap/adapters/github/handlers/labels.py +164 -0
  170. roadmap/adapters/github/handlers/milestones.py +104 -0
  171. roadmap/adapters/persistence/__init__.py +35 -0
  172. roadmap/adapters/persistence/conflict_resolver.py +190 -0
  173. roadmap/adapters/persistence/database_manager.py +492 -0
  174. roadmap/adapters/persistence/entity_sync_coordinators.py +672 -0
  175. roadmap/adapters/persistence/file_locking.py +348 -0
  176. roadmap/adapters/persistence/file_parser.py +92 -0
  177. roadmap/adapters/persistence/file_synchronizer.py +107 -0
  178. roadmap/adapters/persistence/focused_managers.py +140 -0
  179. roadmap/adapters/persistence/git_history.py +330 -0
  180. roadmap/adapters/persistence/parser/__init__.py +20 -0
  181. roadmap/adapters/persistence/parser/frontmatter.py +152 -0
  182. roadmap/adapters/persistence/parser/issue.py +245 -0
  183. roadmap/adapters/persistence/parser/milestone.py +146 -0
  184. roadmap/adapters/persistence/parser/project.py +106 -0
  185. roadmap/adapters/persistence/persistence.py +288 -0
  186. roadmap/adapters/persistence/repositories/__init__.py +15 -0
  187. roadmap/adapters/persistence/repositories/issue_repository.py +223 -0
  188. roadmap/adapters/persistence/repositories/milestone_repository.py +140 -0
  189. roadmap/adapters/persistence/repositories/project_repository.py +168 -0
  190. roadmap/adapters/persistence/repositories/remote_link_repository.py +355 -0
  191. roadmap/adapters/persistence/repositories/sync_state_repository.py +66 -0
  192. roadmap/adapters/persistence/storage/__init__.py +36 -0
  193. roadmap/adapters/persistence/storage/conflicts.py +101 -0
  194. roadmap/adapters/persistence/storage/connection_manager.py +79 -0
  195. roadmap/adapters/persistence/storage/issue_storage.py +89 -0
  196. roadmap/adapters/persistence/storage/milestone_storage.py +80 -0
  197. roadmap/adapters/persistence/storage/project_storage.py +102 -0
  198. roadmap/adapters/persistence/storage/queries.py +227 -0
  199. roadmap/adapters/persistence/storage/state_manager.py +652 -0
  200. roadmap/adapters/persistence/storage/sync_state_storage.py +207 -0
  201. roadmap/adapters/persistence/sync_metrics_repository.py +342 -0
  202. roadmap/adapters/persistence/sync_orchestrator.py +293 -0
  203. roadmap/adapters/persistence/sync_state_tracker.py +86 -0
  204. roadmap/adapters/persistence/yaml_repositories.py +711 -0
  205. roadmap/adapters/sync/__init__.py +21 -0
  206. roadmap/adapters/sync/backend_factory.py +108 -0
  207. roadmap/adapters/sync/backends/__init__.py +15 -0
  208. roadmap/adapters/sync/backends/converters.py +209 -0
  209. roadmap/adapters/sync/backends/github_backend_helpers.py +380 -0
  210. roadmap/adapters/sync/backends/github_client.py +99 -0
  211. roadmap/adapters/sync/backends/github_sync_backend.py +792 -0
  212. roadmap/adapters/sync/backends/github_sync_ops.py +908 -0
  213. roadmap/adapters/sync/backends/services/__init__.py +1 -0
  214. roadmap/adapters/sync/backends/services/github_authentication_service.py +105 -0
  215. roadmap/adapters/sync/backends/services/github_issue_delete_service.py +423 -0
  216. roadmap/adapters/sync/backends/services/github_issue_dependency_service.py +63 -0
  217. roadmap/adapters/sync/backends/services/github_issue_fetch_service.py +158 -0
  218. roadmap/adapters/sync/backends/services/github_label_sync_service.py +126 -0
  219. roadmap/adapters/sync/backends/services/github_local_issue_sync_service.py +229 -0
  220. roadmap/adapters/sync/backends/services/github_milestone_fetch_service.py +204 -0
  221. roadmap/adapters/sync/backends/vanilla_git_sync_backend.py +198 -0
  222. roadmap/adapters/sync/services/__init__.py +11 -0
  223. roadmap/adapters/sync/services/baseline_state_handler.py +83 -0
  224. roadmap/adapters/sync/services/conflict_converter.py +85 -0
  225. roadmap/adapters/sync/services/issue_persistence_service.py +263 -0
  226. roadmap/adapters/sync/services/issue_state_service.py +243 -0
  227. roadmap/adapters/sync/services/local_change_filter.py +129 -0
  228. roadmap/adapters/sync/services/pull_result_processor.py +71 -0
  229. roadmap/adapters/sync/services/remote_issue_creation_service.py +112 -0
  230. roadmap/adapters/sync/services/sync_analysis_service.py +250 -0
  231. roadmap/adapters/sync/services/sync_authentication_service.py +57 -0
  232. roadmap/adapters/sync/services/sync_data_fetch_service.py +212 -0
  233. roadmap/adapters/sync/services/sync_linking_service.py +329 -0
  234. roadmap/adapters/sync/services/sync_report_service.py +62 -0
  235. roadmap/adapters/sync/services/sync_state_update_service.py +51 -0
  236. roadmap/adapters/sync/sync_cache_orchestrator.py +454 -0
  237. roadmap/adapters/sync/sync_merge_engine.py +416 -0
  238. roadmap/adapters/sync/sync_merge_orchestrator.py +1313 -0
  239. roadmap/adapters/sync/sync_retrieval_orchestrator.py +810 -0
  240. roadmap/application/services/__init__.py +1 -0
  241. roadmap/application/services/deduplicate_service.py +517 -0
  242. roadmap/application/use_cases/__init__.py +1 -0
  243. roadmap/common/__init__.py +308 -0
  244. roadmap/common/cache.py +209 -0
  245. roadmap/common/cli_errors.py +147 -0
  246. roadmap/common/configuration/__init__.py +33 -0
  247. roadmap/common/configuration/config_loader.py +264 -0
  248. roadmap/common/configuration/config_manager.py +164 -0
  249. roadmap/common/configuration/config_schema.py +145 -0
  250. roadmap/common/configuration/github/__init__.py +9 -0
  251. roadmap/common/configuration/github/config_manager.py +154 -0
  252. roadmap/common/configuration/github/token_resolver.py +84 -0
  253. roadmap/common/console.py +184 -0
  254. roadmap/common/constants.py +134 -0
  255. roadmap/common/datetime_parser.py +319 -0
  256. roadmap/common/error_formatter.py +84 -0
  257. roadmap/common/errors/__init__.py +143 -0
  258. roadmap/common/errors/error_base.py +73 -0
  259. roadmap/common/errors/error_file.py +82 -0
  260. roadmap/common/errors/error_git.py +67 -0
  261. roadmap/common/errors/error_handler.py +166 -0
  262. roadmap/common/errors/error_network.py +90 -0
  263. roadmap/common/errors/error_security.py +78 -0
  264. roadmap/common/errors/error_standards.py +561 -0
  265. roadmap/common/errors/error_validation.py +111 -0
  266. roadmap/common/errors/exceptions.py +432 -0
  267. roadmap/common/formatters/__init__.py +29 -0
  268. roadmap/common/formatters/base_table_formatter.py +96 -0
  269. roadmap/common/formatters/export/__init__.py +7 -0
  270. roadmap/common/formatters/export/issue_exporter.py +97 -0
  271. roadmap/common/formatters/helpers.py +28 -0
  272. roadmap/common/formatters/kanban/__init__.py +9 -0
  273. roadmap/common/formatters/kanban/layout.py +48 -0
  274. roadmap/common/formatters/kanban/organizer.py +81 -0
  275. roadmap/common/formatters/output/__init__.py +15 -0
  276. roadmap/common/formatters/tables/__init__.py +11 -0
  277. roadmap/common/formatters/tables/column_factory.py +312 -0
  278. roadmap/common/formatters/tables/issue_table.py +276 -0
  279. roadmap/common/formatters/tables/milestone_table.py +247 -0
  280. roadmap/common/formatters/tables/project_table.py +195 -0
  281. roadmap/common/formatters/text/__init__.py +57 -0
  282. roadmap/common/formatters/text/basic.py +217 -0
  283. roadmap/common/formatters/text/display.py +42 -0
  284. roadmap/common/formatters/text/duration.py +36 -0
  285. roadmap/common/formatters/text/operations.py +325 -0
  286. roadmap/common/formatters/text/status_badges.py +57 -0
  287. roadmap/common/initialization/github/__init__.py +11 -0
  288. roadmap/common/initialization/github/setup_service.py +238 -0
  289. roadmap/common/initialization/github/setup_validator.py +78 -0
  290. roadmap/common/logging/__init__.py +113 -0
  291. roadmap/common/logging/audit_logging.py +5 -0
  292. roadmap/common/logging/correlation.py +45 -0
  293. roadmap/common/logging/decorators.py +267 -0
  294. roadmap/common/logging/error_logging.py +217 -0
  295. roadmap/common/logging/formatters.py +124 -0
  296. roadmap/common/logging/loggers.py +68 -0
  297. roadmap/common/logging/performance_tracking.py +267 -0
  298. roadmap/common/logging/utils.py +335 -0
  299. roadmap/common/models/__init__.py +44 -0
  300. roadmap/common/models/cli_models.py +118 -0
  301. roadmap/common/models/config_models.py +199 -0
  302. roadmap/common/models/output_models.py +381 -0
  303. roadmap/common/observability/__init__.py +28 -0
  304. roadmap/common/observability/instrumentation.py +103 -0
  305. roadmap/common/observability/observability.py +76 -0
  306. roadmap/common/observability/otel_init.py +109 -0
  307. roadmap/common/output_formatter.py +393 -0
  308. roadmap/common/progress.py +379 -0
  309. roadmap/common/result.py +396 -0
  310. roadmap/common/security/__init__.py +48 -0
  311. roadmap/common/security/exceptions.py +13 -0
  312. roadmap/common/security/export_cleanup.py +79 -0
  313. roadmap/common/security/file_operations.py +104 -0
  314. roadmap/common/security/filename_sanitization.py +54 -0
  315. roadmap/common/security/logging.py +27 -0
  316. roadmap/common/security/path_validation.py +137 -0
  317. roadmap/common/security/temp_files.py +41 -0
  318. roadmap/common/services/__init__.py +65 -0
  319. roadmap/common/services/decorators.py +183 -0
  320. roadmap/common/services/logging_utils.py +208 -0
  321. roadmap/common/services/metrics.py +161 -0
  322. roadmap/common/services/performance.py +219 -0
  323. roadmap/common/services/profiling.py +288 -0
  324. roadmap/common/services/retry.py +288 -0
  325. roadmap/common/status_style_manager.py +114 -0
  326. roadmap/common/union_find.py +88 -0
  327. roadmap/common/update_constants.py +13 -0
  328. roadmap/common/utils/__init__.py +65 -0
  329. roadmap/common/utils/cli_helpers.py +381 -0
  330. roadmap/common/utils/file_utils.py +440 -0
  331. roadmap/common/utils/path_utils.py +38 -0
  332. roadmap/common/utils/status_utils.py +130 -0
  333. roadmap/common/utils/timezone_utils.py +480 -0
  334. roadmap/common/validation/__init__.py +37 -0
  335. roadmap/common/validation/field_validator.py +104 -0
  336. roadmap/common/validation/result.py +37 -0
  337. roadmap/common/validation/roadmap_validator.py +310 -0
  338. roadmap/common/validation/schema_validator.py +36 -0
  339. roadmap/common/validation/validators.py +50 -0
  340. roadmap/core/__init__.py +1 -0
  341. roadmap/core/domain/__init__.py +30 -0
  342. roadmap/core/domain/comment.py +24 -0
  343. roadmap/core/domain/health.py +15 -0
  344. roadmap/core/domain/issue.py +274 -0
  345. roadmap/core/domain/milestone.py +173 -0
  346. roadmap/core/domain/ports/__init__.py +1 -0
  347. roadmap/core/domain/ports/baseline_repository.py +24 -0
  348. roadmap/core/domain/ports/issue_repository.py +34 -0
  349. roadmap/core/domain/ports/remote_backend_port.py +31 -0
  350. roadmap/core/domain/project.py +130 -0
  351. roadmap/core/interfaces/__init__.py +109 -0
  352. roadmap/core/interfaces/assignee_validator.py +40 -0
  353. roadmap/core/interfaces/backend_factory.py +175 -0
  354. roadmap/core/interfaces/github.py +102 -0
  355. roadmap/core/interfaces/parsers.py +140 -0
  356. roadmap/core/interfaces/persistence.py +45 -0
  357. roadmap/core/interfaces/repositories.py +174 -0
  358. roadmap/core/interfaces/state_managers.py +111 -0
  359. roadmap/core/interfaces/state_storage.py +64 -0
  360. roadmap/core/interfaces/sync_backend.py +275 -0
  361. roadmap/core/interfaces/sync_services.py +119 -0
  362. roadmap/core/interfaces/sync_validators.py +180 -0
  363. roadmap/core/models/__init__.py +31 -0
  364. roadmap/core/models/sync_models.py +162 -0
  365. roadmap/core/models.py +115 -0
  366. roadmap/core/observability/__init__.py +17 -0
  367. roadmap/core/observability/sync_metrics.py +699 -0
  368. roadmap/core/repositories.py +200 -0
  369. roadmap/core/services/__init__.py +313 -0
  370. roadmap/core/services/baseline/__init__.py +1 -0
  371. roadmap/core/services/baseline/baseline_builder_progress.py +274 -0
  372. roadmap/core/services/baseline/baseline_retriever.py +63 -0
  373. roadmap/core/services/baseline/baseline_selector.py +248 -0
  374. roadmap/core/services/baseline/baseline_state_retriever.py +284 -0
  375. roadmap/core/services/baseline/optimized_baseline_builder.py +425 -0
  376. roadmap/core/services/comment/__init__.py +1 -0
  377. roadmap/core/services/comment/comment_service.py +277 -0
  378. roadmap/core/services/git/__init__.py +1 -0
  379. roadmap/core/services/git/git_hook_auto_sync_service.py +403 -0
  380. roadmap/core/services/github/__init__.py +1 -0
  381. roadmap/core/services/github/github_change_detector.py +162 -0
  382. roadmap/core/services/github/github_config_validator.py +148 -0
  383. roadmap/core/services/github/github_conflict_detector.py +179 -0
  384. roadmap/core/services/github/github_entity_classifier.py +51 -0
  385. roadmap/core/services/github/github_integration_service.py +439 -0
  386. roadmap/core/services/github/github_issue_client.py +346 -0
  387. roadmap/core/services/health/__init__.py +1 -0
  388. roadmap/core/services/health/backup_cleanup_service.py +202 -0
  389. roadmap/core/services/health/data_integrity_validator_service.py +90 -0
  390. roadmap/core/services/health/entity_health_scanner.py +460 -0
  391. roadmap/core/services/health/file_repair_service.py +193 -0
  392. roadmap/core/services/health/health_check_service.py +166 -0
  393. roadmap/core/services/health/health_models.py +80 -0
  394. roadmap/core/services/health/infrastructure_validator_service.py +328 -0
  395. roadmap/core/services/health/issue_health_scanner.py +263 -0
  396. roadmap/core/services/helpers/__init__.py +18 -0
  397. roadmap/core/services/helpers/status_change_helpers.py +88 -0
  398. roadmap/core/services/initialization/__init__.py +19 -0
  399. roadmap/core/services/initialization/utils.py +104 -0
  400. roadmap/core/services/initialization/validator.py +78 -0
  401. roadmap/core/services/initialization/workflow.py +182 -0
  402. roadmap/core/services/initialization_service.py +111 -0
  403. roadmap/core/services/issue/__init__.py +1 -0
  404. roadmap/core/services/issue/assignee_validation_service.py +312 -0
  405. roadmap/core/services/issue/issue_creation_service.py +309 -0
  406. roadmap/core/services/issue/issue_filter_service.py +302 -0
  407. roadmap/core/services/issue/issue_matching_service.py +127 -0
  408. roadmap/core/services/issue/issue_service.py +765 -0
  409. roadmap/core/services/issue/issue_update_service.py +144 -0
  410. roadmap/core/services/issue/start_issue_service.py +174 -0
  411. roadmap/core/services/issue_helpers/__init__.py +18 -0
  412. roadmap/core/services/issue_helpers/issue_filters.py +296 -0
  413. roadmap/core/services/milestone_service.py +438 -0
  414. roadmap/core/services/project/__init__.py +1 -0
  415. roadmap/core/services/project/project_service.py +434 -0
  416. roadmap/core/services/project/project_status_service.py +125 -0
  417. roadmap/core/services/project_init/__init__.py +22 -0
  418. roadmap/core/services/project_init/context_detection.py +146 -0
  419. roadmap/core/services/project_init/creation.py +76 -0
  420. roadmap/core/services/project_init/detection.py +51 -0
  421. roadmap/core/services/project_init/template.py +228 -0
  422. roadmap/core/services/status_change_service.py +88 -0
  423. roadmap/core/services/sync/__init__.py +1 -0
  424. roadmap/core/services/sync/batch_processor.py +290 -0
  425. roadmap/core/services/sync/conflict_resolver.py +154 -0
  426. roadmap/core/services/sync/dependency_resolver.py +367 -0
  427. roadmap/core/services/sync/duplicate_detector.py +771 -0
  428. roadmap/core/services/sync/duplicate_resolver.py +315 -0
  429. roadmap/core/services/sync/error_classification.py +470 -0
  430. roadmap/core/services/sync/performance.py +263 -0
  431. roadmap/core/services/sync/sync_change_computer.py +211 -0
  432. roadmap/core/services/sync/sync_checkpoint.py +348 -0
  433. roadmap/core/services/sync/sync_conflict_detector.py +147 -0
  434. roadmap/core/services/sync/sync_conflict_resolver.py +448 -0
  435. roadmap/core/services/sync/sync_errors.py +383 -0
  436. roadmap/core/services/sync/sync_key_normalizer.py +222 -0
  437. roadmap/core/services/sync/sync_metadata_service.py +361 -0
  438. roadmap/core/services/sync/sync_plan.py +171 -0
  439. roadmap/core/services/sync/sync_plan_executor.py +447 -0
  440. roadmap/core/services/sync/sync_report.py +296 -0
  441. roadmap/core/services/sync/sync_state.py +173 -0
  442. roadmap/core/services/sync/sync_state_comparator.py +690 -0
  443. roadmap/core/services/sync/sync_state_manager.py +431 -0
  444. roadmap/core/services/sync/sync_state_normalizer.py +98 -0
  445. roadmap/core/services/sync/sync_three_way.py +78 -0
  446. roadmap/core/services/sync/three_way_merger.py +178 -0
  447. roadmap/core/services/utils/__init__.py +1 -0
  448. roadmap/core/services/utils/configuration_service.py +113 -0
  449. roadmap/core/services/utils/critical_path_calculator.py +418 -0
  450. roadmap/core/services/utils/dependency_analyzer.py +360 -0
  451. roadmap/core/services/utils/field_conflict_detector.py +126 -0
  452. roadmap/core/services/utils/remote_fetcher.py +202 -0
  453. roadmap/core/services/utils/remote_state_normalizer.py +110 -0
  454. roadmap/core/services/utils/retry_policy.py +51 -0
  455. roadmap/core/services/validator_base.py +130 -0
  456. roadmap/core/services/validators/__init__.py +28 -0
  457. roadmap/core/services/validators/_utils.py +20 -0
  458. roadmap/core/services/validators/archivable_issues_validator.py +71 -0
  459. roadmap/core/services/validators/archivable_milestones_validator.py +69 -0
  460. roadmap/core/services/validators/backup_validator.py +89 -0
  461. roadmap/core/services/validators/data_integrity_validator.py +84 -0
  462. roadmap/core/services/validators/duplicate_issues_validator.py +75 -0
  463. roadmap/core/services/validators/duplicate_milestones_validator.py +141 -0
  464. roadmap/core/services/validators/folder_structure_validator.py +165 -0
  465. roadmap/core/services/validators/health_status_utils.py +28 -0
  466. roadmap/core/services/validators/milestone_naming_validator.py +146 -0
  467. roadmap/core/services/validators/missing_headlines_validator.py +97 -0
  468. roadmap/core/services/validators/orphaned_issues_validator.py +142 -0
  469. roadmap/core/services/validators/orphaned_milestones_validator.py +85 -0
  470. roadmap/core/utils/git_remote_parser.py +83 -0
  471. roadmap/core/utils/github_urls.py +66 -0
  472. roadmap/domain/validation.py +30 -0
  473. roadmap/infrastructure/__init__.py +55 -0
  474. roadmap/infrastructure/coordination/__init__.py +8 -0
  475. roadmap/infrastructure/coordination/coordinator_params.py +82 -0
  476. roadmap/infrastructure/coordination/core.py +446 -0
  477. roadmap/infrastructure/coordination/git_coordinator.py +160 -0
  478. roadmap/infrastructure/coordination/initialization.py +348 -0
  479. roadmap/infrastructure/coordination/issue_coordinator.py +154 -0
  480. roadmap/infrastructure/coordination/issue_operations.py +456 -0
  481. roadmap/infrastructure/coordination/milestone_coordinator.py +135 -0
  482. roadmap/infrastructure/coordination/milestone_operations.py +201 -0
  483. roadmap/infrastructure/coordination/project_coordinator.py +113 -0
  484. roadmap/infrastructure/coordination/project_operations.py +144 -0
  485. roadmap/infrastructure/coordination/team_coordinator.py +107 -0
  486. roadmap/infrastructure/coordination/user_operations.py +150 -0
  487. roadmap/infrastructure/coordination/validation_coordinator.py +249 -0
  488. roadmap/infrastructure/coordination_gateway.py +152 -0
  489. roadmap/infrastructure/git/__init__.py +6 -0
  490. roadmap/infrastructure/git/git_integration_ops.py +234 -0
  491. roadmap/infrastructure/git_gateway.py +35 -0
  492. roadmap/infrastructure/github_gateway.py +52 -0
  493. roadmap/infrastructure/maintenance/__init__.py +5 -0
  494. roadmap/infrastructure/maintenance/cleanup.py +483 -0
  495. roadmap/infrastructure/observability/__init__.py +7 -0
  496. roadmap/infrastructure/observability/health.py +196 -0
  497. roadmap/infrastructure/observability/health_formatter.py +73 -0
  498. roadmap/infrastructure/observability/specialized_health_checkers.py +188 -0
  499. roadmap/infrastructure/persistence_gateway.py +164 -0
  500. roadmap/infrastructure/security/__init__.py +1 -0
  501. roadmap/infrastructure/security/credentials.py +489 -0
  502. roadmap/infrastructure/sync_gateway.py +94 -0
  503. roadmap/infrastructure/validation/__init__.py +7 -0
  504. roadmap/infrastructure/validation/file_enumeration.py +219 -0
  505. roadmap/infrastructure/validation/github_assignee_validator.py +47 -0
  506. roadmap/infrastructure/validation/github_validator.py +101 -0
  507. roadmap/infrastructure/validation/milestone_consistency_validator.py +96 -0
  508. roadmap/infrastructure/validation/vanilla_assignee_validator.py +37 -0
  509. roadmap/infrastructure/validation_gateway.py +96 -0
  510. roadmap/presentation/formatters/sync_metrics_formatter.py +355 -0
  511. roadmap/settings.py +345 -0
  512. roadmap/templates/github_workflows/ci-cd-roadmap.yml +241 -0
  513. roadmap/templates/github_workflows/issue-lifecycle.yml +236 -0
  514. roadmap/templates/github_workflows/roadmap-integration.yml +137 -0
  515. roadmap/templates/github_workflows/roadmap-starter.yml +59 -0
  516. roadmap/version.py +381 -0
  517. roadmap_cli-0.1.1.dist-info/METADATA +448 -0
  518. roadmap_cli-0.1.1.dist-info/RECORD +521 -0
  519. roadmap_cli-0.1.1.dist-info/WHEEL +4 -0
  520. roadmap_cli-0.1.1.dist-info/entry_points.txt +2 -0
  521. roadmap_cli-0.1.1.dist-info/licenses/LICENSE.md +21 -0
@@ -0,0 +1,448 @@
1
+ Metadata-Version: 2.4
2
+ Name: roadmap-cli
3
+ Version: 0.1.1
4
+ Summary: Git-native command line tool for project roadmap management with GitHub integration and structured reporting
5
+ Project-URL: Homepage, https://roadmap-cli.readthedocs.io
6
+ Project-URL: Repository, https://github.com/shanewilkins/roadmap
7
+ Project-URL: Issues, https://github.com/shanewilkins/roadmap/issues
8
+ Project-URL: Documentation, https://roadmap-cli.readthedocs.io
9
+ Author-email: Roadmap CLI Team <contact@roadmap-cli.com>
10
+ License: MIT
11
+ License-File: LICENSE.md
12
+ Keywords: agile,analytics,cli,github,issue-tracking,milestone,planning,productivity,project-management,roadmap,scrum,visualization
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: Intended Audience :: Information Technology
17
+ Classifier: Intended Audience :: System Administrators
18
+ Classifier: License :: OSI Approved :: MIT License
19
+ Classifier: Operating System :: MacOS
20
+ Classifier: Operating System :: POSIX :: Linux
21
+ Classifier: Programming Language :: Python :: 3
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Programming Language :: Python :: 3.14
24
+ Classifier: Topic :: Office/Business :: Scheduling
25
+ Classifier: Topic :: Software Development :: Bug Tracking
26
+ Classifier: Topic :: Software Development :: Libraries :: Python Modules
27
+ Classifier: Topic :: Software Development :: Version Control :: Git
28
+ Classifier: Topic :: Utilities
29
+ Requires-Python: <4.0,>=3.13
30
+ Requires-Dist: asyncclick<9.0.0,>=8.3.0.7
31
+ Requires-Dist: click<9.0.0,>=8.4.0
32
+ Requires-Dist: dynaconf<4.0.0,>=3.2.13
33
+ Requires-Dist: keyring<26.0.0,>=25.7.0
34
+ Requires-Dist: opentelemetry-api<2.0.0,>=1.42.0
35
+ Requires-Dist: opentelemetry-exporter-otlp<2.0.0,>=1.42.0
36
+ Requires-Dist: opentelemetry-sdk<2.0.0,>=1.42.0
37
+ Requires-Dist: pydantic<3.0.0,>=2.13.4
38
+ Requires-Dist: pyyaml<7.0.0,>=6.0.3
39
+ Requires-Dist: requests<3.0.0,>=2.34.2
40
+ Requires-Dist: rich<16.0.0,>=15.0.0
41
+ Requires-Dist: structlog<27.0.0,>=25.5.0
42
+ Requires-Dist: tabulate<1.0.0,>=0.10.0
43
+ Requires-Dist: toml<1.0.0,>=0.10.2
44
+ Requires-Dist: urllib3<3.0.0,>=2.6.3
45
+ Provides-Extra: dev
46
+ Requires-Dist: bandit[toml]>=1.9.4; extra == 'dev'
47
+ Requires-Dist: import-linter<3.0.0,>=2.11; extra == 'dev'
48
+ Requires-Dist: mkdocs-click>=0.9.0; extra == 'dev'
49
+ Requires-Dist: mkdocs-material>=9.7.6; extra == 'dev'
50
+ Requires-Dist: mkdocs>=1.6.1; extra == 'dev'
51
+ Requires-Dist: myst-parser>=5.1.0; extra == 'dev'
52
+ Requires-Dist: pre-commit>=4.6.0; extra == 'dev'
53
+ Requires-Dist: pydocstyle>=6.3.0; extra == 'dev'
54
+ Requires-Dist: pylint>=4.0.5; extra == 'dev'
55
+ Requires-Dist: pyright>=1.1.411; extra == 'dev'
56
+ Requires-Dist: pytest-aiohttp>=1.1.0; extra == 'dev'
57
+ Requires-Dist: pytest-asyncio>=1.3.0; extra == 'dev'
58
+ Requires-Dist: pytest-benchmark>=5.2.3; extra == 'dev'
59
+ Requires-Dist: pytest-cov>=7.1.0; extra == 'dev'
60
+ Requires-Dist: pytest-mock>=3.15.1; extra == 'dev'
61
+ Requires-Dist: pytest-xdist>=3.8.0; extra == 'dev'
62
+ Requires-Dist: pytest>=9.0.3; extra == 'dev'
63
+ Requires-Dist: radon>=6.0.1; extra == 'dev'
64
+ Requires-Dist: ruff==0.15.20; extra == 'dev'
65
+ Requires-Dist: sphinx-click>=6.2.0; extra == 'dev'
66
+ Requires-Dist: sphinx-rtd-theme>=3.1.0; extra == 'dev'
67
+ Requires-Dist: sphinx>=9.1.0; extra == 'dev'
68
+ Requires-Dist: vulture>=2.16; extra == 'dev'
69
+ Description-Content-Type: text/markdown
70
+
71
+ # Roadmap CLI
72
+
73
+ > **Project Management as Code** — Manage your project in git, not in a tool.
74
+
75
+ Roadmap is a CLI-first project management tool designed for developers who want to keep their project data in git, not locked away in another SaaS tool. If you use git, shell scripts, and plain text files, Roadmap feels like home.
76
+
77
+ ## The Problem
78
+
79
+ Modern project management tools solve a problem developers don't have:
80
+
81
+ - **You already track work in git.** Commit messages, PRs, issues in GitHub/GitLab... it's all there.
82
+ - **You duplicate effort.** Update status in Jira, then mention it in Slack, then close the GitHub issue. Same information, three places.
83
+ - **You can't script your workflow.** Want to auto-assign issues based on a commit? Good luck with most tools.
84
+ - **Your data lives elsewhere.** Offline? Can't access your roadmap. Switching tools? Export is painful.
85
+
86
+ ## The Solution
87
+
88
+ Roadmap stores your project data in **plain YAML + Markdown files tracked in git**. This simple approach gives you:
89
+
90
+ | Problem | Solution |
91
+ | --- | --- |
92
+ | **Duplicated data entry** | Single source of truth: your git repo |
93
+ | **Manual status updates** | Auto-sync on commits (`fixes issue-123`) |
94
+ | **No offline access** | Clone the repo, work offline, push changes |
95
+ | **Vendor lock-in** | Files stay plain text forever |
96
+ | **Non-scriptable workflow** | Composable with `jq`, `fzf`, `ripgrep`, shell scripts |
97
+ | **Missing context** | Full git history + blame for every change |
98
+ | **Team bloat for small teams** | Start solo, scale to teams without learning new tool |
99
+
100
+ Project management as a durable, automatable, self-owned system — not a product you rent.
101
+
102
+ ## Why It Works for Small Teams
103
+
104
+ ### For Solo Developers
105
+
106
+ ```bash
107
+ roadmap today # What am I working on?
108
+ roadmap issue update 42 done # Mark issue done
109
+ git log --oneline # See what I shipped
110
+ ```
111
+
112
+ No UI to load. No notifications to ignore. Just you, your terminal, and your git history.
113
+
114
+ ### For Small Teams (3-8 people)
115
+
116
+ ```bash
117
+ roadmap issue list --filter assignee=alice
118
+ roadmap milestone list --project web-app
119
+ git push && roadmap sync github # Two-way sync with GitHub
120
+ ```
121
+
122
+ Everyone sees the same data (it's in git). Changes are trackable (git blame). Decisions are documented (commits). No meetings about "where is the roadmap file?"
123
+
124
+ ### For Distributed Teams
125
+
126
+ ```bash
127
+ roadmap issue create "API pagination" --assignee bob --milestone sprint-2
128
+ # Bob works offline, commits changes locally
129
+ # Roadmap auto-updates via commit message: git commit -m "fixes API pagination"
130
+ git pull # Everyone syncs to latest
131
+ roadmap sync github # GitHub issues stay in sync
132
+ ```
133
+
134
+ Git is the synchronization layer. No merge conflicts on simple status changes. No "who has the lock?"
135
+
136
+ ## Key Features
137
+
138
+ ### 📋 Issue Management
139
+
140
+ - Create, list, update, delete issues
141
+ - Status tracking (todo, in-progress, blocked, review, done)
142
+ - Priority levels (low, medium, high, critical)
143
+ - Team assignment and filtering
144
+ - Advanced search and sorting
145
+
146
+ ### 📅 Milestone Planning
147
+
148
+ - Create sprints/releases as milestones
149
+ - Track progress (how many issues done?)
150
+ - Due dates and scope management
151
+ - Link issues to milestones
152
+
153
+ ### 🚀 Roadmap Planning
154
+
155
+ - High-level quarterly/annual plans
156
+ - Organize milestones by roadmap
157
+ - Strategic tracking
158
+
159
+ ### 🔗 Git Integration
160
+
161
+ - **Auto-sync on commit:** `git commit -m "fixes issue-42"` → issue status updates
162
+ - **Two-way GitHub sync:** Pull requests → issues, status changes → PR labels
163
+ - **Commit blame:** See who changed what and when
164
+
165
+ ### 📊 Output Formats
166
+
167
+ ```bash
168
+ roadmap today # Rich (interactive)
169
+ roadmap today --format json # JSON (for scripting)
170
+ roadmap today --format csv # CSV (for spreadsheets)
171
+ roadmap today --format plain # Plain text (for pipes)
172
+ ```
173
+
174
+ **Composable with Unix tools:**
175
+
176
+ ```bash
177
+ roadmap issue list --format json | jq '.[] | select(.priority == "critical")'
178
+ roadmap today --format csv | fzf --preview 'cat {}'
179
+ roadmap issue list --format plain | grep -i "performance"
180
+ ```
181
+
182
+ ### 🔐 Secure by Default
183
+
184
+ - Data stored locally (or in git)
185
+ - No cloud account required
186
+ - Git history = audit trail
187
+ - Credentials managed via system keyring
188
+ - Open source (audit the code)
189
+
190
+ ## Requirements
191
+
192
+ - **Python 3.13 or later** (3.13 and 3.14 are supported)
193
+ - macOS or Linux
194
+ - Git (for repository tracking and sync)
195
+ - System keyring (for secure credential storage)
196
+
197
+ ## Installation
198
+
199
+ ### Recommended: uv tool
200
+
201
+ ```bash
202
+ uv tool install roadmap-cli
203
+ roadmap --version
204
+ ```
205
+
206
+ ### pipx
207
+
208
+ ```bash
209
+ pipx install roadmap-cli
210
+ roadmap --version
211
+ ```
212
+
213
+ ### pip in a virtual environment
214
+
215
+ ```bash
216
+ python3.13 -m venv .venv
217
+ source .venv/bin/activate
218
+ pip install roadmap-cli
219
+ roadmap --version
220
+ ```
221
+
222
+ ### From Source
223
+
224
+ ```bash
225
+ git clone https://github.com/shanewilkins/roadmap.git
226
+ cd roadmap
227
+ uv sync --all-extras --locked
228
+ uv run roadmap --help
229
+ ```
230
+
231
+ ## Quick Start (5 minutes)
232
+
233
+ ### 1. Initialize your project
234
+
235
+ ```bash
236
+ cd my-project
237
+ roadmap init
238
+ ```
239
+
240
+ This creates `.roadmap/` directory with configuration.
241
+
242
+ ### 2. Create an issue
243
+
244
+ ```bash
245
+ roadmap issue create "Fix login timeout issue"
246
+ roadmap issue list
247
+ ```
248
+
249
+ ### 3. Start tracking work
250
+
251
+ ```bash
252
+ roadmap issue update 1 in-progress
253
+ roadmap issue assign 1 alice
254
+ ```
255
+
256
+ ### 4. Auto-sync with git
257
+
258
+ ```bash
259
+ git commit -m "fixes issue 1: login timeout resolved"
260
+ roadmap issue list # Status auto-updated to 'done'
261
+ ```
262
+
263
+ ### 5. View your priorities
264
+
265
+ ```bash
266
+ roadmap today # Your task list
267
+ roadmap today --filter priority=critical
268
+ ```
269
+
270
+ **→ Next steps:** Read [Quick Start Guide](docs/user_guide/QUICK_START.md) for more examples.
271
+
272
+ ## Documentation
273
+
274
+ | Guide | For | Time |
275
+ | --- | --- | --- |
276
+ | **[Quick Start](docs/user_guide/QUICK_START.md)** | New users | 5 min |
277
+ | **[Workflows](docs/user_guide/WORKFLOWS.md)** | Real-world patterns | 10 min |
278
+ | **[GitHub Sync Setup](docs/user_guide/GITHUB_SYNC_SETUP.md)** | GitHub integration | 10 min |
279
+ | **[Milestone Syncing](docs/user_guide/MILESTONE_SYNC.md)** | Milestone dependencies & sync | 15 min |
280
+ | **[FAQ](docs/user_guide/FAQ.md)** | Questions & comparisons | 15 min |
281
+ | **[Architecture](docs/developer_notes/ARCHITECTURE.md)** | Technical details | 20 min |
282
+ | **[Installation](docs/user_guide/INSTALLATION.md)** | Setup & troubleshooting | varies |
283
+ | **[Security](docs/developer_notes/SECURITY.md)** | Privacy & safety | 10 min |
284
+ | **[Future Features](docs/developer_notes/FUTURE_FEATURES.md)** | Roadmap (v1.1+) | 5 min |
285
+
286
+ ## Community & Governance
287
+
288
+ - [Contributing Guide](CONTRIBUTING.md)
289
+ - [Code of Conduct](CODE_OF_CONDUCT.md)
290
+ - [Security Policy](SECURITY.md)
291
+ - [Project Governance](docs/governance/README.md)
292
+ - [Requirements Register](docs/requirements/README.md)
293
+
294
+ ## Compare to Other Tools
295
+
296
+ | Tool | Model | Data | Good For | Bad For |
297
+ | --- | --- | --- | --- | --- |
298
+ | **Jira** | SaaS/On-prem | Proprietary DB | Large enterprises | Small teams, CLI, offline work |
299
+ | **Linear** | SaaS | Cloud | Growing startups | No offline, no git-native |
300
+ | **Trello** | SaaS | Cloud | Visual boards | Serious PM, git-less |
301
+ | **GitHub Issues** | SaaS | GitHub | Open source | Cross-repo, multiple teams |
302
+ | **Notion** | SaaS | Cloud | Note-taking | Structured workflows |
303
+ | **Roadmap** | CLI | Git + YAML | Small teams, developers | Enterprise RBAC, Web UI |
304
+
305
+ See [FAQ.md](docs/user_guide/FAQ.md) for deeper comparisons.
306
+
307
+ ## Scope & Limitations
308
+
309
+ ### What Roadmap Does Well
310
+
311
+ **Single Repository:**
312
+
313
+ - Track issues, milestones, and roadmaps within one repo
314
+ - Organize work by priority, assignment, and status
315
+ - Integrate with git commits via auto-sync
316
+ - Export to multiple formats for reporting
317
+ - Work offline, sync when ready
318
+
319
+ **Small Teams (1-8 people):**
320
+
321
+ - Everyone has read/write access to the repo
322
+ - Git-based synchronization (no merge conflicts on simple status changes)
323
+ - All changes are tracked and auditable via git history
324
+ - CLI-first workflow matches developer preferences
325
+
326
+ ### What Roadmap Doesn't Do
327
+
328
+ **Multiple Repositories:**
329
+
330
+ - This tool is repo-scoped by design (each repo gets its own `.roadmap` directory)
331
+ - If you manage multiple related projects across repos, use:
332
+ - GitHub Projects (free, integrated with repos)
333
+ - Jira or Linear (enterprise, for complex coordination)
334
+ - Your own meta-layer (if you need something custom)
335
+ - Each repo runs independently; there's no built-in cross-repo aggregation
336
+
337
+ **Enterprise Features:**
338
+
339
+ - Complex RBAC (role-based access control)
340
+ - Multiple teams with separate permissions
341
+ - Audit logging and compliance reporting
342
+ - Web UI and mobile access
343
+ - SaaS infrastructure
344
+
345
+ For these, use Jira, Linear, or GitHub Enterprise.
346
+
347
+ **Why This Scope?**
348
+
349
+ Roadmap intentionally stays small because:
350
+
351
+ 1. **It solves the actual problem** for solo devs and small teams (duplicate data entry)
352
+ 2. **Larger teams benefit from better tools** (Jira, Linear) that solve different problems
353
+ 3. **Git as the sync layer** works at scale up to ~5 projects per person
354
+ 4. **Simplicity is a feature** — less code = fewer bugs = easier to fork/modify
355
+
356
+ ### Future-Proofing
357
+
358
+ The schema includes optional `repo_url` (on projects) and `project_id` (on milestones) fields for future tooling that might aggregate across repos. These fields are unused today but allow extensions without breaking existing data.
359
+
360
+ ## Real-World Example
361
+
362
+ ### Solo Developer
363
+
364
+ ```bash
365
+ # Monday: Plan sprint
366
+ roadmap milestone create sprint-12 --due 2025-02-14
367
+ roadmap issue create "Refactor auth module" --milestone sprint-12 --priority high
368
+
369
+ # Wednesday: Work offline
370
+ git clone . ~/offline
371
+ cd ~/offline
372
+ # ... code ...
373
+ git commit -m "refactors auth module, fixes security issue"
374
+ roadmap issue status 42 done # Mark done
375
+
376
+ # Friday: Sync and review
377
+ git push
378
+ roadmap today --done # See what shipped
379
+ roadmap sync github # Update GitHub labels
380
+ ```
381
+
382
+ ### Small Team (PM + 3 devs)
383
+
384
+ ```bash
385
+ # Monday standup (async in Slack)
386
+ roadmap today --format json | jq '.[] | .title' | sort
387
+ # → Shows everyone's tasks
388
+
389
+ # Devs work independently
390
+ git commit -m "implements new API endpoint [closes roadmap:issue-58]"
391
+ roadmap sync github # PR gets linked to issue
392
+
393
+ # Friday metrics
394
+ roadmap analysis velocity sprint-12 # How many issues completed?
395
+ ```
396
+
397
+ See [Workflows.md](docs/user_guide/WORKFLOWS.md) for more patterns.
398
+
399
+ ## Integrations
400
+
401
+ ### Works Well With
402
+
403
+ **CLI Tools:**
404
+
405
+ - [`jq`](https://stedolan.github.io/jq/) — Query issues as JSON
406
+ - [`fzf`](https://github.com/junegunn/fzf) — Fuzzy find issues
407
+ - [`ripgrep`](https://github.com/BurntSushi/ripgrep) — Search issue descriptions
408
+ - Standard Unix: `grep`, `awk`, `sed`, `sort`, `uniq`
409
+
410
+ **Development:**
411
+
412
+ - Git hooks (auto-sync on commit)
413
+ - GitHub/GitLab (two-way sync)
414
+ - CI/CD (create issues on test failures)
415
+ - Cron jobs (daily snapshots, reminders)
416
+
417
+ **Data:**
418
+
419
+ - Spreadsheets (export to CSV)
420
+ - Grafana (stream metrics)
421
+ - Slack (notify on updates)
422
+
423
+ See [Workflows.md](docs/user_guide/WORKFLOWS.md#Automating) for integration examples.
424
+
425
+ ## Philosophy
426
+
427
+ - **Plain text first.** Data lives in YAML + Markdown, tracked in git.
428
+ - **CLI-native.** Full power from your terminal. No bloated UI.
429
+ - **Offline by default.** Clone repo, work anywhere, push changes.
430
+ - **Git is your database.** History, blame, and rollback come free.
431
+ - **Composable.** Works with `jq`, shell scripts, and Unix tools.
432
+ - **Developer-friendly.** Made by developers, for developers.
433
+
434
+ ## Getting Help
435
+
436
+ - **Questions?** See [FAQ.md](docs/user_guide/FAQ.md)
437
+ - **Getting started?** See [Quick Start](docs/user_guide/QUICK_START.md)
438
+ - **Ideas?** See [Future Features](docs/developer_notes/FUTURE_FEATURES.md)
439
+ - **Bugs?** [Report on GitHub](https://github.com/shanewilkins/roadmap/issues)
440
+ - **Contributing?** [Join us!](CONTRIBUTING.md) (coming soon)
441
+
442
+ ## License
443
+
444
+ [License.md](LICENSE.md) — MIT
445
+
446
+ ---
447
+
448
+ **Ready to stop duplicating your work?** [Get started in 5 minutes →](docs/user_guide/QUICK_START.md)