taskledger 0.5.0__tar.gz → 0.5.2__tar.gz

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 (476) hide show
  1. {taskledger-0.5.0 → taskledger-0.5.2}/.planledger.toml +1 -1
  2. {taskledger-0.5.0 → taskledger-0.5.2}/.taskledger.toml +2 -2
  3. {taskledger-0.5.0 → taskledger-0.5.2}/AGENTS.md +2 -2
  4. {taskledger-0.5.0 → taskledger-0.5.2}/API.md +3 -0
  5. {taskledger-0.5.0 → taskledger-0.5.2}/CHANGELOG.md +25 -0
  6. {taskledger-0.5.0/taskledger.egg-info → taskledger-0.5.2}/PKG-INFO +14 -9
  7. {taskledger-0.5.0 → taskledger-0.5.2}/README.md +4 -4
  8. taskledger-0.5.2/docs/api.md +216 -0
  9. taskledger-0.5.2/docs/architecture_taskledger_split.md +37 -0
  10. taskledger-0.5.2/docs/command_contract.md +711 -0
  11. {taskledger-0.5.0 → taskledger-0.5.2}/docs/conf.py +13 -1
  12. taskledger-0.5.2/docs/full_task_cycle.md +354 -0
  13. taskledger-0.5.2/docs/index.md +27 -0
  14. taskledger-0.5.2/docs/multi_repo.md +47 -0
  15. taskledger-0.5.2/docs/public_surface.md +152 -0
  16. {taskledger-0.5.0 → taskledger-0.5.2}/docs/requirements.txt +1 -0
  17. taskledger-0.5.2/docs/service_boundary_whitelist.md +113 -0
  18. taskledger-0.5.2/docs/sync.md +169 -0
  19. taskledger-0.5.2/docs/transfer.md +78 -0
  20. taskledger-0.5.2/docs/usage.md +758 -0
  21. {taskledger-0.5.0 → taskledger-0.5.2}/pyproject.toml +10 -4
  22. {taskledger-0.5.0 → taskledger-0.5.2}/skills/taskledger/SKILL.md +48 -6
  23. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/plan_lint/plan-lint.feature +2 -2
  24. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/_version.py +3 -3
  25. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/plans.py +6 -0
  26. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/task_runs.py +2 -0
  27. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli.py +1 -1
  28. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_implement.py +57 -0
  29. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_plan.py +124 -27
  30. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_validate.py +25 -0
  31. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/command_inventory.py +31 -0
  32. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/run.py +17 -0
  33. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/doctor.py +33 -0
  34. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/implementation_flow.py +14 -0
  35. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/navigation.py +95 -26
  36. taskledger-0.5.2/taskledger/services/plan_input.py +692 -0
  37. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/plan_lint.py +32 -0
  38. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/plan_materialization.py +23 -16
  39. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/plan_review.py +64 -0
  40. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/planning_flow.py +39 -22
  41. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/tasks.py +71 -6
  42. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/validation_flow.py +44 -32
  43. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/workflow_guidance.py +75 -8
  44. taskledger-0.5.2/taskledger/services/workspace_snapshot.py +572 -0
  45. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/ledger_config.py +15 -5
  46. {taskledger-0.5.0 → taskledger-0.5.2/taskledger.egg-info}/PKG-INFO +14 -9
  47. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger.egg-info/SOURCES.txt +20 -11
  48. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger.egg-info/requires.txt +6 -0
  49. taskledger-0.5.2/taskledger.egg-info/scm_file_list.json +458 -0
  50. taskledger-0.5.2/taskledger.egg-info/scm_version.json +8 -0
  51. {taskledger-0.5.0 → taskledger-0.5.2}/tests/conftest.py +24 -41
  52. taskledger-0.5.2/tests/test_cli_runner_compatibility.py +184 -0
  53. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_command_example_linter.py +25 -4
  54. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_command_inventory.py +9 -3
  55. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_docs_and_skill.py +57 -37
  56. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_import_boundaries.py +2 -0
  57. taskledger-0.5.2/tests/test_plan_input.py +411 -0
  58. taskledger-0.5.2/tests/test_plan_input_cli.py +398 -0
  59. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_plan_lint.py +119 -3
  60. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_plan_review.py +26 -0
  61. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_question_plan_regeneration.py +14 -0
  62. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_service_boundaries.py +5 -5
  63. taskledger-0.5.2/tests/test_validation_git_snapshot_recovery.py +227 -0
  64. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_workflow_guidance.py +11 -0
  65. taskledger-0.5.2/tests/test_workspace_snapshot.py +74 -0
  66. taskledger-0.5.0/docs/api.rst +0 -233
  67. taskledger-0.5.0/docs/architecture_taskledger_split.rst +0 -41
  68. taskledger-0.5.0/docs/command_contract.rst +0 -707
  69. taskledger-0.5.0/docs/full_task_cycle.rst +0 -371
  70. taskledger-0.5.0/docs/index.rst +0 -29
  71. taskledger-0.5.0/docs/multi_repo.rst +0 -50
  72. taskledger-0.5.0/docs/public_surface.rst +0 -166
  73. taskledger-0.5.0/docs/service_boundary_whitelist.rst +0 -120
  74. taskledger-0.5.0/docs/sync.rst +0 -178
  75. taskledger-0.5.0/docs/transfer.rst +0 -84
  76. taskledger-0.5.0/docs/usage.rst +0 -779
  77. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/archive/records/building_blocks/al_block_0083.md +0 -0
  78. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/archive/records/concepts/al_concept_0081.md +0 -0
  79. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/archive/records/runtime/al_runtime_0076.md +0 -0
  80. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/archive/records/runtime/al_runtime_0084.md +0 -0
  81. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0001.md +0 -0
  82. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0002.md +0 -0
  83. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0003.md +0 -0
  84. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0004.md +0 -0
  85. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0005.md +0 -0
  86. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0006.md +0 -0
  87. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0007.md +0 -0
  88. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0008.md +0 -0
  89. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0009.md +0 -0
  90. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0010.md +0 -0
  91. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0011.md +0 -0
  92. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/profiles/arc42/sections/al_content_0012.md +0 -0
  93. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/building_blocks/al_block_0029.md +0 -0
  94. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/building_blocks/al_block_0030.md +0 -0
  95. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/building_blocks/al_block_0031.md +0 -0
  96. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/building_blocks/al_block_0032.md +0 -0
  97. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/building_blocks/al_block_0033.md +0 -0
  98. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/building_blocks/al_block_0034.md +0 -0
  99. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/concepts/al_concept_0040.md +0 -0
  100. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/concepts/al_concept_0041.md +0 -0
  101. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/concepts/al_concept_0042.md +0 -0
  102. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/concepts/al_concept_0043.md +0 -0
  103. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/concepts/al_concept_0044.md +0 -0
  104. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/concepts/al_concept_0045.md +0 -0
  105. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/concepts/al_concept_0082.md +0 -0
  106. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/constraints/al_constraint_0016.md +0 -0
  107. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/constraints/al_constraint_0017.md +0 -0
  108. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/constraints/al_constraint_0018.md +0 -0
  109. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/constraints/al_constraint_0019.md +0 -0
  110. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/contexts/al_context_0020.md +0 -0
  111. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/contexts/al_context_0021.md +0 -0
  112. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/contexts/al_context_0022.md +0 -0
  113. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/contexts/al_context_0023.md +0 -0
  114. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/decisions/al_adr_0046.md +0 -0
  115. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/decisions/al_adr_0047.md +0 -0
  116. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/decisions/al_adr_0048.md +0 -0
  117. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/decisions/al_adr_0049.md +0 -0
  118. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/decisions/al_adr_0050.md +0 -0
  119. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/decisions/al_adr_0051.md +0 -0
  120. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/deployment/al_deploy_0039.md +0 -0
  121. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0061.md +0 -0
  122. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0062.md +0 -0
  123. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0063.md +0 -0
  124. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0064.md +0 -0
  125. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0065.md +0 -0
  126. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0066.md +0 -0
  127. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0067.md +0 -0
  128. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0068.md +0 -0
  129. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0069.md +0 -0
  130. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0070.md +0 -0
  131. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0071.md +0 -0
  132. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0072.md +0 -0
  133. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/glossary/al_glossary_0073.md +0 -0
  134. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/quality_requirements/al_quality_0052.md +0 -0
  135. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/quality_requirements/al_quality_0053.md +0 -0
  136. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/quality_requirements/al_quality_0054.md +0 -0
  137. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/quality_requirements/al_quality_0055.md +0 -0
  138. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/quality_requirements/al_quality_0056.md +0 -0
  139. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/requirements/al_content_0013.md +0 -0
  140. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/requirements/al_content_0014.md +0 -0
  141. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/requirements/al_content_0015.md +0 -0
  142. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/risks/al_risk_0057.md +0 -0
  143. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/risks/al_risk_0058.md +0 -0
  144. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/risks/al_risk_0059.md +0 -0
  145. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/risks/al_risk_0060.md +0 -0
  146. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0035.md +0 -0
  147. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0036.md +0 -0
  148. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0037.md +0 -0
  149. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0038.md +0 -0
  150. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0074.md +0 -0
  151. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0075.md +0 -0
  152. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0077.md +0 -0
  153. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/runtime/al_runtime_0078.md +0 -0
  154. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/stakeholders/al_content_0079.md +0 -0
  155. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/stakeholders/al_content_0080.md +0 -0
  156. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/strategy/al_strategy_0024.md +0 -0
  157. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/strategy/al_strategy_0025.md +0 -0
  158. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/strategy/al_strategy_0026.md +0 -0
  159. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/strategy/al_strategy_0027.md +0 -0
  160. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/records/strategy/al_strategy_0028.md +0 -0
  161. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/source-state.json +0 -0
  162. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger/storage.yaml +0 -0
  163. {taskledger-0.5.0 → taskledger-0.5.2}/.archledger.toml +0 -0
  164. {taskledger-0.5.0 → taskledger-0.5.2}/.codecrate.toml +0 -0
  165. {taskledger-0.5.0 → taskledger-0.5.2}/.github/workflows/codecov.yml +0 -0
  166. {taskledger-0.5.0 → taskledger-0.5.2}/.github/workflows/pre-commit.yml +0 -0
  167. {taskledger-0.5.0 → taskledger-0.5.2}/.github/workflows/python-publish.yml +0 -0
  168. {taskledger-0.5.0 → taskledger-0.5.2}/.github/workflows/tests.yml +0 -0
  169. {taskledger-0.5.0 → taskledger-0.5.2}/.gitignore +0 -0
  170. {taskledger-0.5.0 → taskledger-0.5.2}/.pre-commit-config.yaml +0 -0
  171. {taskledger-0.5.0 → taskledger-0.5.2}/.readthedocs.yaml +0 -0
  172. {taskledger-0.5.0 → taskledger-0.5.2}/.releaseledger.toml +0 -0
  173. {taskledger-0.5.0 → taskledger-0.5.2}/.ruff.toml +0 -0
  174. {taskledger-0.5.0 → taskledger-0.5.2}/.specweave.toml +0 -0
  175. {taskledger-0.5.0 → taskledger-0.5.2}/ARCHITECTURE.md +0 -0
  176. {taskledger-0.5.0 → taskledger-0.5.2}/LICENSE +0 -0
  177. {taskledger-0.5.0 → taskledger-0.5.2}/Makefile +0 -0
  178. {taskledger-0.5.0 → taskledger-0.5.2}/docs/Makefile +0 -0
  179. {taskledger-0.5.0 → taskledger-0.5.2}/docs/build.sh +0 -0
  180. {taskledger-0.5.0 → taskledger-0.5.2}/scripts/find_code_clones.py +0 -0
  181. {taskledger-0.5.0 → taskledger-0.5.2}/setup.cfg +0 -0
  182. {taskledger-0.5.0 → taskledger-0.5.2}/setup.py +0 -0
  183. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/README.md +0 -0
  184. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/UNMAPPED_TESTS.md +0 -0
  185. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/evidence/.gitkeep +0 -0
  186. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/evidence/taskledger-test-feature-coverage.json +0 -0
  187. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/.gitkeep +0 -0
  188. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/active_task/active-task.feature +0 -0
  189. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/actor_harness_state/actor-harness-state.feature +0 -0
  190. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/actor_resolution/actor-resolution.feature +0 -0
  191. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/agent_command_logging/agent-command-logging.feature +0 -0
  192. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/agent_session_protocol/agent-session-protocol.feature +0 -0
  193. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/atomic_fast_io/atomic-fast-io.feature +0 -0
  194. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/bdd_cli/bdd-cli.feature +0 -0
  195. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/bdd_gherkin/bdd-gherkin.feature +0 -0
  196. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/bdd_models/bdd-models.feature +0 -0
  197. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/bdd_report_import/bdd-report-import.feature +0 -0
  198. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/bdd_storage/bdd-storage.feature +0 -0
  199. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/bdd_validation_integration/bdd-validation-integration.feature +0 -0
  200. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/cli_command_contract/cli-command-contract.feature +0 -0
  201. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/cli_import_resilience/cli-import-resilience.feature +0 -0
  202. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/code_reviews/code-reviews.feature +0 -0
  203. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/command_example_linter/command-example-linter.feature +0 -0
  204. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/command_inventory/command-inventory.feature +0 -0
  205. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/command_runner/command-runner.feature +0 -0
  206. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/compact_mutation_output/compact-mutation-output.feature +0 -0
  207. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/config_cli/config-cli.feature +0 -0
  208. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/delta_remaining_contracts/delta-remaining-contracts.feature +0 -0
  209. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/docs_and_skill/docs-and-skill.feature +0 -0
  210. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/doctor/doctor.feature +0 -0
  211. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/domain_policies/domain-policies.feature +0 -0
  212. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/event_logging_config/event-logging-config.feature +0 -0
  213. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/events/events.feature +0 -0
  214. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/file_link_snapshots/file-link-snapshots.feature +0 -0
  215. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/find_code_clones_script/find-code-clones-script.feature +0 -0
  216. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/handoff_lifecycle/handoff-lifecycle.feature +0 -0
  217. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/help_subprocess/help-subprocess.feature +0 -0
  218. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/implementation_change_scan/implementation-change-scan.feature +0 -0
  219. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/implementation_checks/implementation-checks.feature +0 -0
  220. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/json_contracts/json-contracts.feature +0 -0
  221. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/legacy_cleanup_contracts/legacy-cleanup-contracts.feature +0 -0
  222. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/lifecycle_policies/lifecycle-policies.feature +0 -0
  223. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/lock_diagnostics/lock-diagnostics.feature +0 -0
  224. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/locks_audit/locks-audit.feature +0 -0
  225. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/models_v1_schema/models-v1-schema.feature +0 -0
  226. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/monitor/monitor.feature +0 -0
  227. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/next_action_expired_lock/next-action-expired-lock.feature +0 -0
  228. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/no_log_feature/no-log-feature.feature +0 -0
  229. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/plan_approval_contract/plan-approval-contract.feature +0 -0
  230. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/plan_review/plan-review.feature +0 -0
  231. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/plan_revision_workflow/plan-revision-workflow.feature +0 -0
  232. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/plan_todo_materialization/plan-todo-materialization.feature +0 -0
  233. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/project_root_config/project-root-config.feature +0 -0
  234. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/question_add_many/question-add-many.feature +0 -0
  235. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/question_filter_answers/question-filter-answers.feature +0 -0
  236. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/question_plan_regeneration/question-plan-regeneration.feature +0 -0
  237. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/ready_work/ready-work.feature +0 -0
  238. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/release_changelog/release-changelog.feature +0 -0
  239. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/search/search.feature +0 -0
  240. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/service_boundaries/service-boundaries.feature +0 -0
  241. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/services_dashboard/services-dashboard.feature +0 -0
  242. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/sidecar_collections/sidecar-collections.feature +0 -0
  243. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/storage_bundle_layout/storage-bundle-layout.feature +0 -0
  244. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/storage_common/storage-common.feature +0 -0
  245. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/storage_init/storage-init.feature +0 -0
  246. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/storage_migration/storage-migration.feature +0 -0
  247. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/storage_repos/storage-repos.feature +0 -0
  248. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/storage_sync/storage-sync.feature +0 -0
  249. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/sync_git/sync-git.feature +0 -0
  250. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/task_archive/archive.feature +0 -0
  251. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/task_events/events.feature +0 -0
  252. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/task_markdown_export/markdown-export.feature +0 -0
  253. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/task_report/report.feature +0 -0
  254. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/taskledger_branch_scoped_ledgers/taskledger-branch-scoped-ledgers.feature +0 -0
  255. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/taskledger_cli_api_parity/taskledger-cli-api-parity.feature +0 -0
  256. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/taskledger_v2_cli/taskledger-v2-cli.feature +0 -0
  257. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/taskledger_v2_exchange/taskledger-v2-exchange.feature +0 -0
  258. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/tasks_service_static/tasks-service-static.feature +0 -0
  259. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/todo_implementation_gate/todo-implementation-gate.feature +0 -0
  260. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/trace/trace.feature +0 -0
  261. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/tree_command/tree-command.feature +0 -0
  262. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/usage_cli/usage-cli.feature +0 -0
  263. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/worker_pipeline_cli/worker-pipeline-cli.feature +0 -0
  264. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/worker_pipeline_config/worker-pipeline-config.feature +0 -0
  265. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/worker_pipeline_context/worker-pipeline-context.feature +0 -0
  266. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/worker_pipeline_handoff/worker-pipeline-handoff.feature +0 -0
  267. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/worker_pipeline_plan_template/worker-pipeline-plan-template.feature +0 -0
  268. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/worker_pipeline_todos/worker-pipeline-todos.feature +0 -0
  269. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/features/workflow_guidance/workflow-guidance.feature +0 -0
  270. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/manifest.json +0 -0
  271. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/mappings/.gitkeep +0 -0
  272. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/reports/specweave/.gitkeep +0 -0
  273. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/reports/specweave/coverage-gaps.md +0 -0
  274. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/reports/specweave/coverage.json +0 -0
  275. {taskledger-0.5.0 → taskledger-0.5.2}/specs/behavior/reports/specweave/mappings.json +0 -0
  276. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/__init__.py +0 -0
  277. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/__main__.py +0 -0
  278. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/__init__.py +0 -0
  279. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/config.py +0 -0
  280. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/handoff.py +0 -0
  281. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/introductions.py +0 -0
  282. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/locks.py +0 -0
  283. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/project.py +0 -0
  284. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/questions.py +0 -0
  285. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/releases.py +0 -0
  286. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/reviews.py +0 -0
  287. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/search.py +0 -0
  288. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/storage.py +0 -0
  289. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/sync.py +0 -0
  290. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/api/tasks.py +0 -0
  291. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_actor.py +0 -0
  292. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_archive.py +0 -0
  293. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_common.py +0 -0
  294. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_config.py +0 -0
  295. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_ledger.py +0 -0
  296. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_migrate.py +0 -0
  297. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_misc.py +0 -0
  298. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_pipeline.py +0 -0
  299. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_question.py +0 -0
  300. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_ref.py +0 -0
  301. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_release.py +0 -0
  302. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_review.py +0 -0
  303. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_storage.py +0 -0
  304. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_sync.py +0 -0
  305. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_task.py +0 -0
  306. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/cli_trace.py +0 -0
  307. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/__init__.py +0 -0
  308. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/_model_utils.py +0 -0
  309. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/active_state.py +0 -0
  310. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/actor.py +0 -0
  311. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/change.py +0 -0
  312. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/check.py +0 -0
  313. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/event.py +0 -0
  314. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/handoff.py +0 -0
  315. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/lock.py +0 -0
  316. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/models.py +0 -0
  317. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/plan.py +0 -0
  318. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/policies.py +0 -0
  319. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/question.py +0 -0
  320. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/release.py +0 -0
  321. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/review.py +0 -0
  322. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/sidecars.py +0 -0
  323. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/states.py +0 -0
  324. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/domain/task.py +0 -0
  325. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/errors.py +0 -0
  326. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/exchange.py +0 -0
  327. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/ids.py +0 -0
  328. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/launcher.py +0 -0
  329. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/py.typed +0 -0
  330. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/refs.py +0 -0
  331. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/search.py +0 -0
  332. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/__init__.py +0 -0
  333. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/actors.py +0 -0
  334. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/agent_logging.py +0 -0
  335. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/agent_transcripts.py +0 -0
  336. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/change_tracking.py +0 -0
  337. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/check_tracking.py +0 -0
  338. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/code_review.py +0 -0
  339. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/command_runner.py +0 -0
  340. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/dashboard.py +0 -0
  341. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/doctor_checks/migration_checks.py +0 -0
  342. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/doctor_checks/project_scan.py +0 -0
  343. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/doctor_checks/task_checks.py +0 -0
  344. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/event_logging.py +0 -0
  345. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/file_links.py +0 -0
  346. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/git_sync.py +0 -0
  347. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/git_utils.py +0 -0
  348. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/handoff.py +0 -0
  349. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/handoff_lifecycle.py +0 -0
  350. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/lock_diagnostics.py +0 -0
  351. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/monitor.py +0 -0
  352. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/next_action_model.py +0 -0
  353. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/next_action_payload.py +0 -0
  354. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/phase5_lock_transfer.py +0 -0
  355. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/plan_editing.py +0 -0
  356. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/plan_hash.py +0 -0
  357. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/ready_work.py +0 -0
  358. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/releases.py +0 -0
  359. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/run_store.py +0 -0
  360. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/storage_locations.py +0 -0
  361. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_archive.py +0 -0
  362. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_collections.py +0 -0
  363. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_events.py +0 -0
  364. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_export.py +0 -0
  365. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_lifecycle.py +0 -0
  366. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_queries.py +0 -0
  367. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_repair.py +0 -0
  368. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/task_reports.py +0 -0
  369. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/trace.py +0 -0
  370. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/tree.py +0 -0
  371. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/usage.py +0 -0
  372. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/validation.py +0 -0
  373. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/worker_context.py +0 -0
  374. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/services/worker_pipeline.py +0 -0
  375. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/__init__.py +0 -0
  376. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/agent_logs.py +0 -0
  377. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/atomic.py +0 -0
  378. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/common.py +0 -0
  379. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/events.py +0 -0
  380. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/frontmatter.py +0 -0
  381. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/indexes.py +0 -0
  382. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/init.py +0 -0
  383. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/locks.py +0 -0
  384. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/meta.py +0 -0
  385. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/migrations.py +0 -0
  386. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/paths.py +0 -0
  387. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/project_config.py +0 -0
  388. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/project_identity.py +0 -0
  389. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/repos.py +0 -0
  390. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/sidecar_index.py +0 -0
  391. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/task_index.py +0 -0
  392. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/task_store.py +0 -0
  393. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/toml_edit.py +0 -0
  394. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/worker_pipeline_config.py +0 -0
  395. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/storage/yaml_store.py +0 -0
  396. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger/timeutils.py +0 -0
  397. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger.egg-info/dependency_links.txt +0 -0
  398. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger.egg-info/entry_points.txt +0 -0
  399. {taskledger-0.5.0 → taskledger-0.5.2}/taskledger.egg-info/top_level.txt +0 -0
  400. {taskledger-0.5.0 → taskledger-0.5.2}/tests/__init__.py +0 -0
  401. {taskledger-0.5.0 → taskledger-0.5.2}/tests/support/__init__.py +0 -0
  402. {taskledger-0.5.0 → taskledger-0.5.2}/tests/support/builders.py +0 -0
  403. {taskledger-0.5.0 → taskledger-0.5.2}/tests/support/fake_command_runner.py +0 -0
  404. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_active_task.py +0 -0
  405. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_actor_harness_state.py +0 -0
  406. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_actor_resolution.py +0 -0
  407. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_agent_command_logging.py +0 -0
  408. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_agent_session_protocol.py +0 -0
  409. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_atomic_fast_io.py +0 -0
  410. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_cli_command_contract.py +0 -0
  411. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_cli_import_resilience.py +0 -0
  412. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_code_reviews.py +0 -0
  413. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_command_runner.py +0 -0
  414. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_compact_mutation_output.py +0 -0
  415. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_config_cli.py +0 -0
  416. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_delta_remaining_contracts.py +0 -0
  417. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_doctor.py +0 -0
  418. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_domain_policies.py +0 -0
  419. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_event_logging_config.py +0 -0
  420. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_events.py +0 -0
  421. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_file_link_snapshots.py +0 -0
  422. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_find_code_clones_script.py +0 -0
  423. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_handoff_lifecycle.py +0 -0
  424. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_help_subprocess.py +0 -0
  425. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_implementation_change_scan.py +0 -0
  426. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_implementation_checks.py +0 -0
  427. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_json_contracts.py +0 -0
  428. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_ledgercore_dependency.py +0 -0
  429. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_legacy_cleanup_contracts.py +0 -0
  430. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_lifecycle_policies.py +0 -0
  431. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_lock_diagnostics.py +0 -0
  432. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_locks_audit.py +0 -0
  433. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_models_v1_schema.py +0 -0
  434. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_monitor.py +0 -0
  435. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_next_action_expired_lock.py +0 -0
  436. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_no_log_feature.py +0 -0
  437. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_performance_caching.py +0 -0
  438. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_plan_approval_contract.py +0 -0
  439. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_plan_revision_workflow.py +0 -0
  440. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_plan_todo_materialization.py +0 -0
  441. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_project_root_config.py +0 -0
  442. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_question_add_many.py +0 -0
  443. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_question_filter_answers.py +0 -0
  444. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_ready_work.py +0 -0
  445. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_release_changelog.py +0 -0
  446. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_resource_refs.py +0 -0
  447. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_search.py +0 -0
  448. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_services_dashboard.py +0 -0
  449. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_sidecar_collections.py +0 -0
  450. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_storage_bundle_layout.py +0 -0
  451. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_storage_common.py +0 -0
  452. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_storage_init.py +0 -0
  453. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_storage_migration.py +0 -0
  454. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_storage_repos.py +0 -0
  455. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_storage_sync.py +0 -0
  456. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_storage_yaml_store.py +0 -0
  457. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_sync_git.py +0 -0
  458. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_task_archive.py +0 -0
  459. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_task_events.py +0 -0
  460. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_task_markdown_export.py +0 -0
  461. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_task_report.py +0 -0
  462. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_taskledger_branch_scoped_ledgers.py +0 -0
  463. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_taskledger_cli_api_parity.py +0 -0
  464. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_taskledger_v2_cli.py +0 -0
  465. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_taskledger_v2_exchange.py +0 -0
  466. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_tasks_service_static.py +0 -0
  467. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_todo_implementation_gate.py +0 -0
  468. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_trace.py +0 -0
  469. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_tree_command.py +0 -0
  470. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_usage_cli.py +0 -0
  471. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_worker_pipeline_cli.py +0 -0
  472. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_worker_pipeline_config.py +0 -0
  473. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_worker_pipeline_context.py +0 -0
  474. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_worker_pipeline_handoff.py +0 -0
  475. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_worker_pipeline_plan_template.py +0 -0
  476. {taskledger-0.5.0 → taskledger-0.5.2}/tests/test_worker_pipeline_todos.py +0 -0
@@ -3,4 +3,4 @@ name = "taskledger"
3
3
  uuid = "fe3469ad-0e17-4ade-9d38-b4d4cf810beb"
4
4
 
5
5
  [storage]
6
- planledger_dir = "../planledger-state/taskledger"
6
+ planledger_dir = "../ledger/plan/taskledger"
@@ -1,7 +1,7 @@
1
1
  # Project-local taskledger configuration.
2
2
  # This file lives in the source project root.
3
3
  config_version = 2
4
- taskledger_dir = '../taskledger-state/taskledger'
4
+ taskledger_dir = '../ledger/task/taskledger'
5
5
 
6
6
  # Stable project identity. Commit this with your source tree.
7
7
  project_uuid = "081c7c05-2d10-42b7-9b37-3d814c2f400a"
@@ -9,7 +9,7 @@ project_uuid = "081c7c05-2d10-42b7-9b37-3d814c2f400a"
9
9
  # Taskledger branch-scoped state. This block is intentionally safe to commit.
10
10
  ledger_ref = "main"
11
11
  ledger_parent_ref = ""
12
- ledger_next_task_number = 132
12
+ ledger_next_task_number = 139
13
13
  ledger_branch_guard = "off"
14
14
 
15
15
  [prompt_profiles.planning]
@@ -124,8 +124,8 @@ Use the owning layer before editing.
124
124
  - `taskledger/errors.py` — public exception taxonomy and exit codes
125
125
  - `taskledger/command_inventory.py` — registered command metadata
126
126
  - `skills/taskledger/SKILL.md` — external agent skill protocol
127
- - `docs/command_contract.rst` — CLI grammar contract
128
- - `API.md`, `docs/api.rst`, `docs/public_surface.rst` — public API documentation
127
+ - `docs/command_contract.md` — CLI grammar contract
128
+ - `API.md`, `docs/api.md`, `docs/public_surface.md` — public API documentation
129
129
 
130
130
  ## 4. Packaging Rule for Skills
131
131
 
@@ -115,6 +115,8 @@ from taskledger.errors import (
115
115
  - `propose_plan`
116
116
  - `plan_template`
117
117
  - `upsert_plan`
118
+ - `check_plan_input`
119
+ - `plan_input_schema_text`
118
120
  - `PlanReviewOptions`
119
121
  - `build_plan_review_payload`
120
122
  - `render_plan_review`
@@ -159,6 +161,7 @@ payload = plan_guidance(Path.cwd(), "task-0001")
159
161
  - `start_implementation`
160
162
  - `restart_implementation`
161
163
  - `resume_implementation`
164
+ - `refresh_implementation_snapshot`
162
165
  - `log_implementation`
163
166
  - `add_implementation_deviation`
164
167
  - `add_implementation_artifact`
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [v0.5.2] - 2026-07-10
4
+
5
+ ### Added
6
+
7
+ - Added plan review approval brief with decision status, question status, and structured body heading lint rule
8
+
9
+ ### Quality
10
+
11
+ - Improved type safety in WorkspaceContentSnapshot and WorktreePathEntry deserialization with round-trip tests
12
+
13
+ <!-- generated by releaseledger -->
14
+
15
+ ## [v0.5.1] - 2026-06-26
16
+
17
+ ### Added
18
+
19
+ - Added plan check command and plan input service for validating editable plan input without creating or revising plans
20
+ - Added implement snapshot refresh command to accept current workspace as implementation snapshot when validation is blocked by IMPLEMENTATION_SNAPSHOT_MISMATCH
21
+
22
+ ### Documentation
23
+
24
+ - Converted Sphinx RST documentation to Markdown with myst-parser
25
+
26
+ <!-- generated by releaseledger -->
27
+
3
28
  ## [v0.5.0] - 2026-06-14
4
29
 
5
30
  ### Added
@@ -1,14 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskledger
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Durable project-state storage and CLI for coding workflows
5
5
  Author: Taskledger Contributors
6
6
  Maintainer: Holger Nahrstaedt
7
7
  License-Expression: Apache-2.0
8
- Project-URL: Homepage, https://github.com/holgern/taskledger
9
- Project-URL: Repository, https://github.com/holgern/taskledger
10
- Project-URL: Issues, https://github.com/holgern/taskledger/issues
11
- Project-URL: Changelog, https://github.com/holgern/taskledger/releases
8
+ Project-URL: Homepage, https://github.com/ledgerwerk/taskledger
9
+ Project-URL: Repository, https://github.com/ledgerwerk/taskledger
10
+ Project-URL: Issues, https://github.com/ledgerwerk/taskledger/issues
11
+ Project-URL: Changelog, https://github.com/ledgerwerk/taskledger/releases
12
12
  Keywords: cli,durable-state,project-state,developer-tools,workflows
13
13
  Classifier: Development Status :: 4 - Beta
14
14
  Classifier: Environment :: Console
@@ -39,6 +39,11 @@ Requires-Dist: pytest-xdist; extra == "dev"
39
39
  Requires-Dist: ruff; extra == "dev"
40
40
  Requires-Dist: twine; extra == "dev"
41
41
  Requires-Dist: types-PyYAML; extra == "dev"
42
+ Provides-Extra: docs
43
+ Requires-Dist: sphinx; extra == "docs"
44
+ Requires-Dist: sphinx-rtd-theme; extra == "docs"
45
+ Requires-Dist: myst-parser; extra == "docs"
46
+ Requires-Dist: rst-to-myst; extra == "docs"
42
47
  Provides-Extra: rich
43
48
  Requires-Dist: rich; extra == "rich"
44
49
  Dynamic: license-file
@@ -68,7 +73,7 @@ The normal agent path is deliberately small:
68
73
  actor whoami
69
74
  task active | task show | task create | task activate | task follow-up
70
75
  next-action | context | can
71
- plan start -> plan template -> plan upsert -> plan lint -> plan accept
76
+ plan start -> plan guidance -> plan template -> plan check -> plan upsert -> plan lint -> plan accept
72
77
  question add | question add-many | question answer | question answer-many | question status | question answers
73
78
  todo next | todo show | todo done | todo status
74
79
  implement start | implement resume | implement change | implement scan-changes | implement finish
@@ -172,7 +177,7 @@ taskledger --json plan guidance
172
177
 
173
178
  This guidance is advisory and cannot override lifecycle gates, user approval,
174
179
  validation requirements, lock rules, or higher-priority harness instructions.
175
- See `docs/usage.rst` for the full key reference and workflow details.
180
+ See `docs/usage.md` for the full key reference and workflow details.
176
181
 
177
182
  Quick config inspection/edit examples:
178
183
 
@@ -602,7 +607,7 @@ taskledger sync git push
602
607
  taskledger sync git push --message "Sync project-a taskledger state"
603
608
  ```
604
609
 
605
- See `docs/sync.rst` for the full second-PC bootstrap, daily sync protocol, and
610
+ See `docs/sync.md` for the full second-PC bootstrap, daily sync protocol, and
606
611
  Syncthing/rclone caveats.
607
612
 
608
613
  ## JSON output
@@ -733,7 +738,7 @@ $ taskledger handoff show handoff-0001 --task task-0001 --format text
733
738
  $ taskledger handoff close handoff-0001 --task task-0001 --reason "Continued."
734
739
  ```
735
740
 
736
- See [docs/usage.rst](docs/usage.rst) and
741
+ See [docs/usage.md](docs/usage.md) and
737
742
  [skills/taskledger/SKILL.md](skills/taskledger/SKILL.md)
738
743
  for task-first handoff guidance.
739
744
 
@@ -23,7 +23,7 @@ The normal agent path is deliberately small:
23
23
  actor whoami
24
24
  task active | task show | task create | task activate | task follow-up
25
25
  next-action | context | can
26
- plan start -> plan template -> plan upsert -> plan lint -> plan accept
26
+ plan start -> plan guidance -> plan template -> plan check -> plan upsert -> plan lint -> plan accept
27
27
  question add | question add-many | question answer | question answer-many | question status | question answers
28
28
  todo next | todo show | todo done | todo status
29
29
  implement start | implement resume | implement change | implement scan-changes | implement finish
@@ -127,7 +127,7 @@ taskledger --json plan guidance
127
127
 
128
128
  This guidance is advisory and cannot override lifecycle gates, user approval,
129
129
  validation requirements, lock rules, or higher-priority harness instructions.
130
- See `docs/usage.rst` for the full key reference and workflow details.
130
+ See `docs/usage.md` for the full key reference and workflow details.
131
131
 
132
132
  Quick config inspection/edit examples:
133
133
 
@@ -557,7 +557,7 @@ taskledger sync git push
557
557
  taskledger sync git push --message "Sync project-a taskledger state"
558
558
  ```
559
559
 
560
- See `docs/sync.rst` for the full second-PC bootstrap, daily sync protocol, and
560
+ See `docs/sync.md` for the full second-PC bootstrap, daily sync protocol, and
561
561
  Syncthing/rclone caveats.
562
562
 
563
563
  ## JSON output
@@ -688,7 +688,7 @@ $ taskledger handoff show handoff-0001 --task task-0001 --format text
688
688
  $ taskledger handoff close handoff-0001 --task task-0001 --reason "Continued."
689
689
  ```
690
690
 
691
- See [docs/usage.rst](docs/usage.rst) and
691
+ See [docs/usage.md](docs/usage.md) and
692
692
  [skills/taskledger/SKILL.md](skills/taskledger/SKILL.md)
693
693
  for task-first handoff guidance.
694
694
 
@@ -0,0 +1,216 @@
1
+ # API reference
2
+
3
+ `taskledger` exposes a task-first public API through `taskledger.api`.
4
+
5
+ ## Supported modules
6
+
7
+ - `taskledger.api.project`
8
+ - `taskledger.api.tasks`
9
+ - `taskledger.api.plans`
10
+ - `taskledger.api.questions`
11
+ - `taskledger.api.task_runs`
12
+ - `taskledger.api.reviews`
13
+ - `taskledger.api.introductions`
14
+ - `taskledger.api.locks`
15
+ - `taskledger.api.handoff`
16
+ - `taskledger.api.releases`
17
+ - `taskledger.api.storage`
18
+ - `taskledger.api.sync`
19
+ - `taskledger.api.search`
20
+
21
+ ## Import boundary
22
+
23
+ Consumers should not import from `taskledger.storage`, `taskledger.services`,
24
+ `taskledger.domain`, or `taskledger.search` directly.
25
+
26
+ ## Project API
27
+
28
+ - `init_project`
29
+ - `project_status`
30
+ - `project_status_summary`
31
+ - `project_doctor`
32
+ - `project_export`
33
+ - `project_import`
34
+ - `project_export_archive`
35
+ - `project_import_archive`
36
+ - `project_snapshot`
37
+ - `project_tree`
38
+
39
+ ## Task API
40
+
41
+ - `create_task`
42
+ - `record_completed_task`
43
+ - `show_active_task`
44
+ - `activate_task`
45
+ - `deactivate_task`
46
+ - `clear_active_task`
47
+ - `resolve_active_task`
48
+ - `list_task_summaries`
49
+ - `show_task`
50
+ - `edit_task`
51
+ - `cancel_task`
52
+ - `uncancel_task`
53
+ - `close_task`
54
+ - `archive_task`
55
+ - `unarchive_task`
56
+ - `create_follow_up_task`
57
+ - `list_archived_task_summaries`
58
+ - `add_requirement`
59
+ - `remove_requirement`
60
+ - `waive_requirement`
61
+ - `add_file_link`
62
+ - `file_status`
63
+ - `remove_file_link`
64
+ - `list_file_links`
65
+ - `refresh_file_baseline`
66
+ - `add_todo`
67
+ - `set_todo_done`
68
+ - `show_todo`
69
+ - `todo_status`
70
+ - `next_todo`
71
+ - `task_dossier`
72
+ - `render_task_report`
73
+ - `TaskReportOptions`
74
+ - `export_task_markdown`
75
+ - `TaskMarkdownExportOptions`
76
+ - `next_action`
77
+ - `can_perform`
78
+ - `reindex`
79
+ - `repair_task_record`
80
+ - `repair_orphaned_planning_run`
81
+ - `repair_planning_command_changes`
82
+
83
+ ## Plan API
84
+
85
+ - `start_planning`
86
+ - `propose_plan`
87
+ - `plan_template`
88
+ - `upsert_plan`
89
+ - `check_plan_input`
90
+ - `plan_input_schema_text`
91
+ - `PlanReviewOptions`
92
+ - `build_plan_review_payload`
93
+ - `render_plan_review`
94
+ - `export_plan`
95
+ - `amend_plan`
96
+ - `list_plan_versions`
97
+ - `show_plan`
98
+ - `diff_plan`
99
+ - `lint_plan`
100
+ - `plan_guidance`
101
+ - `approve_plan`
102
+ - `reject_plan`
103
+ - `revise_plan`
104
+ - `regenerate_plan_from_answers`
105
+ - `materialize_plan_todos`
106
+ - `run_planning_command`
107
+
108
+ Planning guidance example:
109
+
110
+ ```python
111
+ from pathlib import Path
112
+ from taskledger.api.plans import plan_guidance
113
+
114
+ payload = plan_guidance(Path.cwd(), "task-0001")
115
+ ```
116
+
117
+ ## Question API
118
+
119
+ - `add_question`
120
+ - `add_questions`
121
+ - `answer_question`
122
+ - `answer_questions`
123
+ - `list_questions`
124
+ - `list_open_questions`
125
+ - `dismiss_question`
126
+ - `question_status`
127
+
128
+ ## Run API
129
+
130
+ - `start_implementation`
131
+ - `restart_implementation`
132
+ - `resume_implementation`
133
+ - `refresh_implementation_snapshot`
134
+ - `log_implementation`
135
+ - `add_implementation_deviation`
136
+ - `add_implementation_artifact`
137
+ - `add_change`
138
+ - `scan_changes`
139
+ - `run_implementation_command`
140
+ - `finish_implementation`
141
+ - `show_task_run`
142
+ - `start_validation`
143
+ - `add_validation_check`
144
+ - `validation_status`
145
+ - `waive_criterion`
146
+ - `finish_validation`
147
+ - `list_runs`
148
+ - `list_changes`
149
+
150
+ ## Review API
151
+
152
+ - `record_code_review`
153
+ - `list_code_review_records`
154
+ - `show_code_review`
155
+
156
+ ## Other APIs
157
+
158
+ ### Introduction API
159
+
160
+ - `create_introduction`
161
+ - `list_introductions`
162
+ - `resolve_introduction`
163
+ - `link_introduction`
164
+
165
+ ### Lock API
166
+
167
+ - `show_lock`
168
+ - `break_lock`
169
+ - `list_locks`
170
+ - `load_active_locks`
171
+
172
+ ### Handoff API
173
+
174
+ - `render_handoff`
175
+ - `create_handoff`
176
+ - `list_all_handoffs`
177
+ - `show_handoff`
178
+ - `claim_handoff_api`
179
+ - `close_handoff_api`
180
+ - `cancel_handoff_api`
181
+
182
+ ### Release API
183
+
184
+ - `list_release_records`
185
+ - `show_release`
186
+ - `tag_release`
187
+
188
+ ### Storage API
189
+
190
+ - `storage_where`
191
+ - `storage_move`
192
+ - `sync_preflight`
193
+ - `sync_status`
194
+ - `sync_commit`
195
+
196
+ ### Search API
197
+
198
+ - `search_workspace`
199
+ - `grep_workspace`
200
+ - `symbols_workspace`
201
+ - `dependencies_for_module`
202
+
203
+ ### Sync API
204
+
205
+ - `sync_git_init`
206
+ - `sync_git_paths`
207
+ - `sync_git_status`
208
+ - `sync_git_import_local`
209
+ - `sync_git_commit`
210
+ - `sync_git_export_local`
211
+ - `sync_git_pull`
212
+ - `sync_git_push`
213
+ - `sync_git_sync`
214
+ - `sync_git_hooks_install`
215
+ - `sync_git_hooks_status`
216
+ - `sync_git_hooks_uninstall`
@@ -0,0 +1,37 @@
1
+ # Taskledger architecture
2
+
3
+ `taskledger` is a task-first CLI and Python package for staged coding work.
4
+ The canonical workflow is:
5
+
6
+ ```text
7
+ task -> plan -> approval -> implement -> validate -> done
8
+ ```
9
+
10
+ ## Owning layers
11
+
12
+ - `taskledger/domain/` owns lifecycle enums, policies, and record models.
13
+ - `taskledger/storage/task_store.py` and `taskledger/storage/locks.py` own persisted
14
+ task bundles and visible lock files under `.taskledger/`.
15
+ - `taskledger/services/tasks.py` owns task lifecycle orchestration.
16
+ - `taskledger/services/handoff.py` owns handoff payloads and rendering.
17
+ - `taskledger/services/doctor.py` owns integrity checks.
18
+ - `taskledger/api/*` exposes public wrappers.
19
+ - `taskledger/cli*.py` wires commands only.
20
+
21
+ ## Storage model
22
+
23
+ Markdown records are canonical. Task, plan, and run reads come from those
24
+ records directly. JSON files under `.taskledger/indexes/` are optional derived
25
+ caches or registries. Active stages require visible lock files, and stale locks
26
+ are reported instead of being cleared silently.
27
+
28
+ ## Command surface
29
+
30
+ The supported command groups are `task`, `plan`, `question`,
31
+ `implement`, `validate`, `review`, `todo`, `intro`, `file`, `link`,
32
+ `require`, `release`, `lock`, `handoff`, `context`, `actor`,
33
+ `harness`, `view`, `tree`, `next-action`, `can`, `search`,
34
+ `grep`, `symbols`, `deps`, `doctor`, `repair`, `reindex`,
35
+ `migrate`, `init`, `status`, `export`, `import`, `snapshot`,
36
+ `storage`, `sync`, `ledger`, `report`, `serve`, `pipeline`,
37
+ `commands`, and `review` (code-review records).