taskledger 0.6.2__tar.gz → 0.6.3__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 (573) hide show
  1. {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/pre-commit.yml +1 -1
  2. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +6 -0
  3. taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/audit/commit-audit.yaml +135 -0
  4. taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/entries/entry-0001.md +40 -0
  5. taskledger-0.6.3/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/release.md +26 -0
  6. {taskledger-0.6.2/taskledger.egg-info → taskledger-0.6.3}/PKG-INFO +1 -1
  7. {taskledger-0.6.2 → taskledger-0.6.3}/docs/changelog.md +8 -0
  8. {taskledger-0.6.2 → taskledger-0.6.3}/docs/command_contract.md +10 -1
  9. {taskledger-0.6.2 → taskledger-0.6.3}/docs/full_task_cycle.md +10 -5
  10. {taskledger-0.6.2 → taskledger-0.6.3}/docs/usage.md +8 -4
  11. {taskledger-0.6.2 → taskledger-0.6.3}/scripts/find_code_clones.py +1 -1
  12. {taskledger-0.6.2 → taskledger-0.6.3}/skills/taskledger/SKILL.md +4 -2
  13. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/implementation_checks/implementation-checks.feature +5 -13
  14. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/_version.py +3 -3
  15. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/locks.py +1 -1
  16. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/repair.py +1 -1
  17. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/storage.py +1 -1
  18. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli.py +26 -8
  19. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_archive.py +2 -8
  20. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_common.py +29 -2
  21. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_implement.py +4 -0
  22. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_ledger.py +2 -2
  23. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_misc.py +1 -1
  24. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_plan.py +10 -8
  25. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_storage.py +4 -2
  26. taskledger-0.6.3/taskledger/domain/__init__.py +2 -0
  27. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/agent_logging.py +3 -2
  28. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/agent_transcripts.py +11 -8
  29. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/change_tracking.py +10 -8
  30. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/check_tracking.py +8 -5
  31. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/command_runner.py +5 -2
  32. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor.py +7 -7
  33. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor_checks/project_scan.py +9 -7
  34. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor_checks/task_checks.py +2 -2
  35. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/git_sync.py +11 -8
  36. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/handoff.py +5 -3
  37. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/implementation_flow.py +13 -9
  38. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/lock_inventory.py +2 -2
  39. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/navigation.py +4 -2
  40. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_input.py +4 -4
  41. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_materialization.py +1 -1
  42. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/planning_flow.py +1 -3
  43. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/runtime_info.py +4 -2
  44. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_archive.py +5 -3
  45. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_collections.py +4 -6
  46. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_export.py +1 -3
  47. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_lifecycle.py +1 -1
  48. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_repair.py +8 -10
  49. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_reports.py +2 -2
  50. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/tasks.py +12 -6
  51. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/tree.py +1 -1
  52. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/usage.py +1 -1
  53. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/validation_flow.py +2 -2
  54. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/worker_context.py +4 -2
  55. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/index_cache.py +7 -9
  56. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/layout_migration.py +4 -2
  57. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/migrations.py +2 -2
  58. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/paths.py +1 -1
  59. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_config.py +7 -6
  60. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_context.py +1 -4
  61. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/repos.py +1 -1
  62. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/task_store.py +9 -7
  63. {taskledger-0.6.2 → taskledger-0.6.3/taskledger.egg-info}/PKG-INFO +1 -1
  64. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/SOURCES.txt +3 -0
  65. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/scm_file_list.json +3 -0
  66. taskledger-0.6.3/taskledger.egg-info/scm_version.json +8 -0
  67. {taskledger-0.6.2 → taskledger-0.6.3}/tests/conftest.py +9 -9
  68. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_agent_command_logging.py +32 -0
  69. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_agent_session_protocol.py +9 -7
  70. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_command_example_linter.py +2 -2
  71. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_compact_mutation_output.py +1 -1
  72. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_doctor.py +23 -23
  73. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_domain_policies.py +23 -23
  74. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_help_subprocess.py +1 -0
  75. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_implementation_checks.py +165 -0
  76. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_import_boundaries.py +6 -4
  77. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_indexes_cache_recovery.py +1 -1
  78. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ledgercore_compat.py +4 -4
  79. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_search.py +1 -1
  80. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_service_boundaries.py +6 -4
  81. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_report.py +1 -1
  82. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_sibling_storage.py +1 -1
  83. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_workspace_snapshot.py +1 -1
  84. taskledger-0.6.2/taskledger/domain/__init__.py +0 -2
  85. taskledger-0.6.2/taskledger.egg-info/scm_version.json +0 -8
  86. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/building_blocks/block-0083.md +0 -0
  87. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/concepts/concept-0081.md +0 -0
  88. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/runtime/runtime-0076.md +0 -0
  89. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/archive/records/runtime/runtime-0084.md +0 -0
  90. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/document-state.json +0 -0
  91. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0001.md +0 -0
  92. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0002.md +0 -0
  93. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0003.md +0 -0
  94. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0004.md +0 -0
  95. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0005.md +0 -0
  96. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0006.md +0 -0
  97. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0007.md +0 -0
  98. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0008.md +0 -0
  99. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0009.md +0 -0
  100. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0010.md +0 -0
  101. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0011.md +0 -0
  102. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/profiles/arc42/sections/content-0012.md +0 -0
  103. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0029.md +0 -0
  104. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0030.md +0 -0
  105. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0031.md +0 -0
  106. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0032.md +0 -0
  107. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0033.md +0 -0
  108. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/building_blocks/block-0034.md +0 -0
  109. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0040.md +0 -0
  110. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0041.md +0 -0
  111. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0042.md +0 -0
  112. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0043.md +0 -0
  113. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0044.md +0 -0
  114. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0045.md +0 -0
  115. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0082.md +0 -0
  116. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0085.md +0 -0
  117. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/concepts/concept-0086.md +0 -0
  118. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0016.md +0 -0
  119. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0017.md +0 -0
  120. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0018.md +0 -0
  121. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/constraints/constraint-0019.md +0 -0
  122. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0020.md +0 -0
  123. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0021.md +0 -0
  124. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0022.md +0 -0
  125. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/contexts/context-0023.md +0 -0
  126. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0046.md +0 -0
  127. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0047.md +0 -0
  128. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0048.md +0 -0
  129. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0049.md +0 -0
  130. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0050.md +0 -0
  131. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/decisions/adr-0051.md +0 -0
  132. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/deployment/deploy-0039.md +0 -0
  133. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0061.md +0 -0
  134. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0062.md +0 -0
  135. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0063.md +0 -0
  136. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0064.md +0 -0
  137. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0065.md +0 -0
  138. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0066.md +0 -0
  139. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0067.md +0 -0
  140. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0068.md +0 -0
  141. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0069.md +0 -0
  142. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0070.md +0 -0
  143. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0071.md +0 -0
  144. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0072.md +0 -0
  145. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/glossary/glossary-0073.md +0 -0
  146. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0052.md +0 -0
  147. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0053.md +0 -0
  148. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0054.md +0 -0
  149. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0055.md +0 -0
  150. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/quality_requirements/quality-0056.md +0 -0
  151. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/requirements/content-0013.md +0 -0
  152. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/requirements/content-0014.md +0 -0
  153. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/requirements/content-0015.md +0 -0
  154. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0057.md +0 -0
  155. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0058.md +0 -0
  156. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0059.md +0 -0
  157. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/risks/risk-0060.md +0 -0
  158. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0035.md +0 -0
  159. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0036.md +0 -0
  160. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0037.md +0 -0
  161. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0038.md +0 -0
  162. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0074.md +0 -0
  163. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0075.md +0 -0
  164. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0077.md +0 -0
  165. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0078.md +0 -0
  166. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0087.md +0 -0
  167. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/runtime/runtime-0088.md +0 -0
  168. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/stakeholders/content-0079.md +0 -0
  169. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/stakeholders/content-0080.md +0 -0
  170. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0024.md +0 -0
  171. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0025.md +0 -0
  172. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0026.md +0 -0
  173. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0027.md +0 -0
  174. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/records/strategy/strategy-0028.md +0 -0
  175. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/source-state.json +0 -0
  176. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger/storage.yaml +0 -0
  177. {taskledger-0.6.2 → taskledger-0.6.3}/.archledger.toml +0 -0
  178. {taskledger-0.6.2 → taskledger-0.6.3}/.codecrate.toml +0 -0
  179. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-api-md-9eddf4dc.yaml +0 -0
  180. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-architecture-taskledger-split-md-63034c0d.yaml +0 -0
  181. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-command-contract-md-abe6f6d9.yaml +0 -0
  182. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-full-task-cycle-md-721181f0.yaml +0 -0
  183. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-multi-repo-md-929e47a9.yaml +0 -0
  184. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-public-surface-md-c1b8772f.yaml +0 -0
  185. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-service-boundary-whitelist-md-800b76f5.yaml +0 -0
  186. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-sync-md-a29422f3.yaml +0 -0
  187. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-transfer-md-f8532303.yaml +0 -0
  188. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/docs/docs-usage-md-72376d0b.yaml +0 -0
  189. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/scan.yaml +0 -0
  190. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/source-index.json +0 -0
  191. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger/storage.yaml +0 -0
  192. {taskledger-0.6.2 → taskledger-0.6.3}/.documentledger.toml +0 -0
  193. {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/codecov.yml +0 -0
  194. {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/python-publish.yml +0 -0
  195. {taskledger-0.6.2 → taskledger-0.6.3}/.github/workflows/tests.yml +0 -0
  196. {taskledger-0.6.2 → taskledger-0.6.3}/.gitignore +0 -0
  197. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/ledger.toml +0 -0
  198. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/.ledger-project.toml +0 -0
  199. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/config.toml +0 -0
  200. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
  201. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0001.md +0 -0
  202. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0002.md +0 -0
  203. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0003.md +0 -0
  204. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0004.md +0 -0
  205. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0005.md +0 -0
  206. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0006.md +0 -0
  207. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0007.md +0 -0
  208. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0008.md +0 -0
  209. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0009.md +0 -0
  210. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0010.md +0 -0
  211. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0011.md +0 -0
  212. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0012.md +0 -0
  213. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0013.md +0 -0
  214. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0014.md +0 -0
  215. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0015.md +0 -0
  216. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0016.md +0 -0
  217. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0017.md +0 -0
  218. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0018.md +0 -0
  219. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0019.md +0 -0
  220. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0020.md +0 -0
  221. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0021.md +0 -0
  222. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0022.md +0 -0
  223. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0023.md +0 -0
  224. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/release.md +0 -0
  225. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0001.md +0 -0
  226. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0002.md +0 -0
  227. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0003.md +0 -0
  228. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0004.md +0 -0
  229. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0005.md +0 -0
  230. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/release.md +0 -0
  231. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0001.md +0 -0
  232. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0002.md +0 -0
  233. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0003.md +0 -0
  234. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0004.md +0 -0
  235. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/release.md +0 -0
  236. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/releaseledger/write.lock +0 -0
  237. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/task/config.toml +0 -0
  238. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/taskledger/.ledger-project.toml +0 -0
  239. {taskledger-0.6.2 → taskledger-0.6.3}/.ledger/taskledger/config.toml +0 -0
  240. {taskledger-0.6.2 → taskledger-0.6.3}/.planledger.toml +0 -0
  241. {taskledger-0.6.2 → taskledger-0.6.3}/.pre-commit-config.yaml +0 -0
  242. {taskledger-0.6.2 → taskledger-0.6.3}/.readthedocs.yaml +0 -0
  243. {taskledger-0.6.2 → taskledger-0.6.3}/.ruff.toml +0 -0
  244. {taskledger-0.6.2 → taskledger-0.6.3}/AGENTS.md +0 -0
  245. {taskledger-0.6.2 → taskledger-0.6.3}/API.md +0 -0
  246. {taskledger-0.6.2 → taskledger-0.6.3}/ARCHITECTURE.md +0 -0
  247. {taskledger-0.6.2 → taskledger-0.6.3}/LICENSE +0 -0
  248. {taskledger-0.6.2 → taskledger-0.6.3}/Makefile +0 -0
  249. {taskledger-0.6.2 → taskledger-0.6.3}/README.md +0 -0
  250. {taskledger-0.6.2 → taskledger-0.6.3}/docs/Makefile +0 -0
  251. {taskledger-0.6.2 → taskledger-0.6.3}/docs/api.md +0 -0
  252. {taskledger-0.6.2 → taskledger-0.6.3}/docs/architecture_taskledger_split.md +0 -0
  253. {taskledger-0.6.2 → taskledger-0.6.3}/docs/build.sh +0 -0
  254. {taskledger-0.6.2 → taskledger-0.6.3}/docs/conf.py +0 -0
  255. {taskledger-0.6.2 → taskledger-0.6.3}/docs/documentation_freshness.md +0 -0
  256. {taskledger-0.6.2 → taskledger-0.6.3}/docs/index.md +0 -0
  257. {taskledger-0.6.2 → taskledger-0.6.3}/docs/multi_repo.md +0 -0
  258. {taskledger-0.6.2 → taskledger-0.6.3}/docs/public_surface.md +0 -0
  259. {taskledger-0.6.2 → taskledger-0.6.3}/docs/release_checklist.md +0 -0
  260. {taskledger-0.6.2 → taskledger-0.6.3}/docs/requirements.txt +0 -0
  261. {taskledger-0.6.2 → taskledger-0.6.3}/docs/service_boundary_whitelist.md +0 -0
  262. {taskledger-0.6.2 → taskledger-0.6.3}/docs/sync.md +0 -0
  263. {taskledger-0.6.2 → taskledger-0.6.3}/docs/transfer.md +0 -0
  264. {taskledger-0.6.2 → taskledger-0.6.3}/pyproject.toml +0 -0
  265. {taskledger-0.6.2 → taskledger-0.6.3}/requirements/manifest.json +0 -0
  266. {taskledger-0.6.2 → taskledger-0.6.3}/setup.cfg +0 -0
  267. {taskledger-0.6.2 → taskledger-0.6.3}/specmason.toml +0 -0
  268. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/README.md +0 -0
  269. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/UNMAPPED_TESTS.md +0 -0
  270. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/evidence/.gitkeep +0 -0
  271. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/evidence/taskledger-test-feature-coverage.json +0 -0
  272. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/.gitkeep +0 -0
  273. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/active_task/active-task.feature +0 -0
  274. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/actor_harness_state/actor-harness-state.feature +0 -0
  275. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/actor_resolution/actor-resolution.feature +0 -0
  276. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/agent_command_logging/agent-command-logging.feature +0 -0
  277. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/agent_session_protocol/agent-session-protocol.feature +0 -0
  278. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/atomic_fast_io/atomic-fast-io.feature +0 -0
  279. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/cli_command_contract/cli-command-contract.feature +0 -0
  280. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/cli_import_resilience/cli-import-resilience.feature +0 -0
  281. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/code_reviews/code-reviews.feature +0 -0
  282. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/command_example_linter/command-example-linter.feature +0 -0
  283. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/command_inventory/command-inventory.feature +0 -0
  284. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/command_runner/command-runner.feature +0 -0
  285. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/compact_mutation_output/compact-mutation-output.feature +0 -0
  286. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/config_cli/config-cli.feature +0 -0
  287. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/delta_remaining_contracts/delta-remaining-contracts.feature +0 -0
  288. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/docs_and_skill/docs-and-skill.feature +0 -0
  289. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/doctor/doctor.feature +0 -0
  290. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/domain_policies/domain-policies.feature +0 -0
  291. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/event_logging_config/event-logging-config.feature +0 -0
  292. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/events/events.feature +0 -0
  293. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/file_link_snapshots/file-link-snapshots.feature +0 -0
  294. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/find_code_clones_script/find-code-clones-script.feature +0 -0
  295. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/handoff_lifecycle/handoff-lifecycle.feature +0 -0
  296. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/help_subprocess/help-subprocess.feature +0 -0
  297. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/implementation_change_scan/implementation-change-scan.feature +0 -0
  298. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/json_contracts/json-contracts.feature +0 -0
  299. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/legacy_cleanup_contracts/legacy-cleanup-contracts.feature +0 -0
  300. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/lifecycle_policies/lifecycle-policies.feature +0 -0
  301. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/lock_diagnostics/lock-diagnostics.feature +0 -0
  302. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/locks_audit/locks-audit.feature +0 -0
  303. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/models_v1_schema/models-v1-schema.feature +0 -0
  304. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/monitor/monitor.feature +0 -0
  305. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/next_action_expired_lock/next-action-expired-lock.feature +0 -0
  306. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/no_log_feature/no-log-feature.feature +0 -0
  307. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_approval_contract/plan-approval-contract.feature +0 -0
  308. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_lint/plan-lint.feature +0 -0
  309. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_review/plan-review.feature +0 -0
  310. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_revision_workflow/plan-revision-workflow.feature +0 -0
  311. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/plan_todo_materialization/plan-todo-materialization.feature +0 -0
  312. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/project_root_config/project-root-config.feature +0 -0
  313. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/question_add_many/question-add-many.feature +0 -0
  314. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/question_filter_answers/question-filter-answers.feature +0 -0
  315. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/question_plan_regeneration/question-plan-regeneration.feature +0 -0
  316. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/ready_work/ready-work.feature +0 -0
  317. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/release_changelog/release-changelog.feature +0 -0
  318. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/search/search.feature +0 -0
  319. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/service_boundaries/service-boundaries.feature +0 -0
  320. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/services_dashboard/services-dashboard.feature +0 -0
  321. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/sidecar_collections/sidecar-collections.feature +0 -0
  322. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_bundle_layout/storage-bundle-layout.feature +0 -0
  323. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_common/storage-common.feature +0 -0
  324. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_init/storage-init.feature +0 -0
  325. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_migration/storage-migration.feature +0 -0
  326. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_repos/storage-repos.feature +0 -0
  327. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/storage_sync/storage-sync.feature +0 -0
  328. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/sync_git/sync-git.feature +0 -0
  329. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_archive/archive.feature +0 -0
  330. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_events/events.feature +0 -0
  331. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_markdown_export/markdown-export.feature +0 -0
  332. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/task_report/report.feature +0 -0
  333. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_branch_scoped_ledgers/taskledger-branch-scoped-ledgers.feature +0 -0
  334. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_cli_api_parity/taskledger-cli-api-parity.feature +0 -0
  335. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_v2_cli/taskledger-v2-cli.feature +0 -0
  336. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/taskledger_v2_exchange/taskledger-v2-exchange.feature +0 -0
  337. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/tasks_service_static/tasks-service-static.feature +0 -0
  338. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/todo_implementation_gate/todo-implementation-gate.feature +0 -0
  339. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/trace/trace.feature +0 -0
  340. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/tree_command/tree-command.feature +0 -0
  341. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/usage_cli/usage-cli.feature +0 -0
  342. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_cli/worker-pipeline-cli.feature +0 -0
  343. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_config/worker-pipeline-config.feature +0 -0
  344. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_context/worker-pipeline-context.feature +0 -0
  345. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_handoff/worker-pipeline-handoff.feature +0 -0
  346. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_plan_template/worker-pipeline-plan-template.feature +0 -0
  347. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/worker_pipeline_todos/worker-pipeline-todos.feature +0 -0
  348. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/features/workflow_guidance/workflow-guidance.feature +0 -0
  349. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/manifest.json +0 -0
  350. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/mappings/.gitkeep +0 -0
  351. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/mappings/intentional-unmapped.json +0 -0
  352. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/.gitkeep +0 -0
  353. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/coverage.json +0 -0
  354. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/coverage.md +0 -0
  355. {taskledger-0.6.2 → taskledger-0.6.3}/specs/behavior/reports/specmason/mappings.json +0 -0
  356. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/__init__.py +0 -0
  357. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/__main__.py +0 -0
  358. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/__init__.py +1 -1
  359. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/config.py +2 -2
  360. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/handoff.py +4 -4
  361. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/introductions.py +1 -1
  362. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/plans.py +15 -15
  363. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/project.py +3 -3
  364. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/questions.py +2 -2
  365. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/releases.py +0 -0
  366. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/reviews.py +1 -1
  367. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/search.py +2 -2
  368. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/sync.py +0 -0
  369. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/task_runs.py +13 -13
  370. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/api/tasks.py +31 -31
  371. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_actor.py +0 -0
  372. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_config.py +0 -0
  373. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_help.py +0 -0
  374. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_migrate.py +0 -0
  375. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_pipeline.py +0 -0
  376. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_question.py +0 -0
  377. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_ref.py +0 -0
  378. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_release.py +0 -0
  379. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_review.py +0 -0
  380. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_runtime.py +0 -0
  381. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_sync.py +0 -0
  382. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_task.py +0 -0
  383. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_trace.py +0 -0
  384. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/cli_validate.py +0 -0
  385. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/command_inventory.py +0 -0
  386. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/compat/__init__.py +0 -0
  387. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/compat/ledgercore.py +0 -0
  388. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/_model_utils.py +0 -0
  389. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/active_state.py +0 -0
  390. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/actor.py +0 -0
  391. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/change.py +0 -0
  392. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/check.py +0 -0
  393. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/event.py +0 -0
  394. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/handoff.py +0 -0
  395. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/lock.py +0 -0
  396. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/models.py +0 -0
  397. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/plan.py +0 -0
  398. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/policies.py +0 -0
  399. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/question.py +0 -0
  400. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/release.py +0 -0
  401. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/review.py +0 -0
  402. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/run.py +0 -0
  403. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/sidecars.py +0 -0
  404. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/states.py +0 -0
  405. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/domain/task.py +0 -0
  406. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/errors.py +0 -0
  407. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/exchange.py +0 -0
  408. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/ids.py +0 -0
  409. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/launcher.py +0 -0
  410. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/migrations/__init__.py +0 -0
  411. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/migrations/hooks.py +0 -0
  412. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/py.typed +0 -0
  413. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/refs.py +0 -0
  414. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/search.py +0 -0
  415. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/__init__.py +0 -0
  416. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/actors.py +0 -0
  417. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/code_review.py +0 -0
  418. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/dashboard.py +0 -0
  419. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/doctor_checks/migration_checks.py +0 -0
  420. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/event_logging.py +0 -0
  421. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/file_links.py +0 -0
  422. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/git_utils.py +0 -0
  423. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/handoff_lifecycle.py +0 -0
  424. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/lock_diagnostics.py +0 -0
  425. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/monitor.py +0 -0
  426. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/next_action_logic.py +1 -1
  427. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/next_action_model.py +0 -0
  428. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/next_action_payload.py +0 -0
  429. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/phase5_lock_transfer.py +0 -0
  430. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_editing.py +0 -0
  431. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_hash.py +0 -0
  432. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_lint.py +0 -0
  433. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/plan_review.py +0 -0
  434. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/ready_work.py +0 -0
  435. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/releases.py +0 -0
  436. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/run_store.py +0 -0
  437. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/storage_locations.py +0 -0
  438. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/storage_migration.py +0 -0
  439. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_events.py +0 -0
  440. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/task_queries.py +0 -0
  441. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/trace.py +0 -0
  442. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/validation.py +0 -0
  443. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/worker_pipeline.py +0 -0
  444. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/workflow_guidance.py +0 -0
  445. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/services/workspace_snapshot.py +0 -0
  446. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/__init__.py +3 -3
  447. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/agent_logs.py +0 -0
  448. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/atomic.py +0 -0
  449. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/common.py +0 -0
  450. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/events.py +0 -0
  451. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/frontmatter.py +0 -0
  452. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/indexes.py +0 -0
  453. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/init.py +0 -0
  454. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledger_config.py +0 -0
  455. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledger_local_config.py +0 -0
  456. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledger_manifest.py +0 -0
  457. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/ledgercore_backend.py +10 -10
  458. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/locks.py +0 -0
  459. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/meta.py +0 -0
  460. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_binding.py +0 -0
  461. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/project_identity.py +0 -0
  462. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/sidecar_index.py +0 -0
  463. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/task_ids.py +1 -1
  464. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/task_index.py +0 -0
  465. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/taskledger_migration.py +0 -0
  466. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/toml_edit.py +0 -0
  467. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/worker_pipeline_config.py +5 -5
  468. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/storage/yaml_store.py +0 -0
  469. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger/timeutils.py +0 -0
  470. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/dependency_links.txt +0 -0
  471. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/entry_points.txt +0 -0
  472. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/requires.txt +0 -0
  473. {taskledger-0.6.2 → taskledger-0.6.3}/taskledger.egg-info/top_level.txt +0 -0
  474. {taskledger-0.6.2 → taskledger-0.6.3}/tests/__init__.py +0 -0
  475. {taskledger-0.6.2 → taskledger-0.6.3}/tests/support/__init__.py +0 -0
  476. {taskledger-0.6.2 → taskledger-0.6.3}/tests/support/builders.py +0 -0
  477. {taskledger-0.6.2 → taskledger-0.6.3}/tests/support/fake_command_runner.py +0 -0
  478. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_active_task.py +0 -0
  479. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_actor_harness_state.py +0 -0
  480. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_actor_resolution.py +0 -0
  481. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_atomic_fast_io.py +0 -0
  482. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_config_split.py +0 -0
  483. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_layout_migration.py +0 -0
  484. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_mount_paths.py +0 -0
  485. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_project_boundary.py +0 -0
  486. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_canonical_project_context.py +0 -0
  487. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_cli_command_contract.py +0 -0
  488. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_cli_import_resilience.py +0 -0
  489. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_cli_runner_compatibility.py +0 -0
  490. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_code_reviews.py +0 -0
  491. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_command_inventory.py +0 -0
  492. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_command_runner.py +0 -0
  493. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_config_cli.py +0 -0
  494. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_delta_remaining_contracts.py +0 -0
  495. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_docs_and_skill.py +0 -0
  496. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_error_contracts.py +0 -0
  497. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_event_logging_config.py +0 -0
  498. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_events.py +0 -0
  499. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_file_link_snapshots.py +0 -0
  500. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_find_code_clones_script.py +0 -0
  501. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_handoff_lifecycle.py +0 -0
  502. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_implementation_change_scan.py +0 -0
  503. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_indexes.py +0 -0
  504. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_json_contracts.py +0 -0
  505. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ledger_manifest_mutation.py +0 -0
  506. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ledgercore_dependency.py +0 -0
  507. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_legacy_cleanup_contracts.py +0 -0
  508. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_lifecycle_policies.py +0 -0
  509. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_lock_diagnostics.py +0 -0
  510. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_lock_inventory.py +0 -0
  511. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_locks_audit.py +0 -0
  512. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_models_v1_schema.py +0 -0
  513. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_monitor.py +0 -0
  514. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_next_action_expired_lock.py +0 -0
  515. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_no_log_feature.py +0 -0
  516. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_performance_caching.py +0 -0
  517. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_approval_contract.py +0 -0
  518. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_input.py +0 -0
  519. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_input_cli.py +0 -0
  520. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_lint.py +0 -0
  521. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_review.py +0 -0
  522. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_revision_workflow.py +0 -0
  523. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_plan_todo_materialization.py +0 -0
  524. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_project_root_config.py +0 -0
  525. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_question_add_many.py +0 -0
  526. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_question_filter_answers.py +0 -0
  527. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_question_plan_regeneration.py +0 -0
  528. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_ready_work.py +0 -0
  529. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_release_changelog.py +0 -0
  530. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_resource_refs.py +0 -0
  531. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_runtime_info.py +0 -0
  532. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_services_dashboard.py +0 -0
  533. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_shared_tool_ledger_storage.py +0 -0
  534. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_sidecar_collections.py +0 -0
  535. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_bundle_layout.py +0 -0
  536. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_common.py +0 -0
  537. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_init.py +0 -0
  538. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_migration.py +0 -0
  539. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_migration_coordinator.py +0 -0
  540. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_repos.py +0 -0
  541. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_sync.py +0 -0
  542. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_where_repair.py +0 -0
  543. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_storage_yaml_store.py +0 -0
  544. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_sync_git.py +0 -0
  545. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_archive.py +0 -0
  546. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_events.py +0 -0
  547. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_ids.py +0 -0
  548. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_task_markdown_export.py +0 -0
  549. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_branch_scoped_ledgers.py +0 -0
  550. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_canonical_sync.py +0 -0
  551. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_cli_api_parity.py +0 -0
  552. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_adapter.py +0 -0
  553. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_context.py +0 -0
  554. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_migration_topology.py +0 -0
  555. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_ledgercore_050_sync.py +0 -0
  556. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_migration_v3.py +0 -0
  557. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_sibling_migration.py +0 -0
  558. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_storage_commands_v3.py +0 -0
  559. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_v2_cli.py +0 -0
  560. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_taskledger_v2_exchange.py +0 -0
  561. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_tasks_service_static.py +0 -0
  562. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_todo_implementation_gate.py +0 -0
  563. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_trace.py +0 -0
  564. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_tree_command.py +0 -0
  565. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_usage_cli.py +0 -0
  566. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_validation_git_snapshot_recovery.py +0 -0
  567. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_cli.py +0 -0
  568. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_config.py +0 -0
  569. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_context.py +0 -0
  570. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_handoff.py +0 -0
  571. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_plan_template.py +0 -0
  572. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_worker_pipeline_todos.py +0 -0
  573. {taskledger-0.6.2 → taskledger-0.6.3}/tests/test_workflow_guidance.py +0 -0
@@ -22,7 +22,7 @@ jobs:
22
22
  - name: Install Python tools
23
23
  run: |
24
24
  python -m pip install --upgrade pip
25
- python -m pip install "ruff==0.15.12"
25
+ python -m pip install "ruff==0.16.3"
26
26
 
27
27
  - name: Install Node tools
28
28
  run: |
@@ -20,3 +20,9 @@
20
20
  {"data":{"added_source_refs":[],"fields":["summary"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0002","event":"entry.updated","event_id":"event-0020","record_revisions":{"entry:v0.6.2/entry-0002":2},"release_version":"v0.6.2","schema_version":2}
21
21
  {"data":{"added_source_refs":[],"fields":["summary"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0003","event":"entry.updated","event_id":"event-0021","record_revisions":{"entry:v0.6.2/entry-0003":2},"release_version":"v0.6.2","schema_version":2}
22
22
  {"data":{"released_at":"2026-08-15"},"event":"release.finalized","event_id":"event-0022","record_revisions":{"release:v0.6.2":6},"release_version":"v0.6.2","schema_version":2}
23
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0023","record_revisions":{"release:v0.6.3":1},"release_version":"v0.6.3","schema_version":2}
24
+ {"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_head_ref","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0024","record_revisions":{"release:v0.6.3":2},"release_version":"v0.6.3","schema_version":2}
25
+ {"data":{"row_count":1},"event":"audit.created","event_id":"event-0025","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.6.3","schema_version":2}
26
+ {"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0026","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.3","schema_version":2}
27
+ {"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0027","record_revisions":{"commit_audit_sheet":3,"entry:v0.6.3/entry-0001":1,"release:v0.6.3":3},"release_version":"v0.6.3","schema_version":2}
28
+ {"data":{"released_at":"2026-08-19"},"event":"release.finalized","event_id":"event-0028","record_revisions":{"release:v0.6.3":4},"release_version":"v0.6.3","schema_version":2}
@@ -0,0 +1,135 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 3
6
+ release_version: v0.6.3
7
+ git_base_ref: v0.6.2
8
+ git_base_sha: 196a79e85e7abf1296637bec7500c689011e054d
9
+ git_head_ref: HEAD
10
+ git_head_sha: 713acfa2be8891f88d889121dd769656443947f3
11
+ git_range: 196a79e85e7abf1296637bec7500c689011e054d..713acfa2be8891f88d889121dd769656443947f3
12
+ commit_count: 1
13
+ rows:
14
+ - sha: 713acfa2be8891f88d889121dd769656443947f3
15
+ source_ref: git:713acfa2be8891f88d889121dd769656443947f3
16
+ short_sha: 713acfa
17
+ changed_paths:
18
+ - docs/command_contract.md
19
+ - docs/full_task_cycle.md
20
+ - docs/usage.md
21
+ - scripts/find_code_clones.py
22
+ - skills/taskledger/SKILL.md
23
+ - specs/behavior/features/implementation_checks/implementation-checks.feature
24
+ - taskledger/api/__init__.py
25
+ - taskledger/api/config.py
26
+ - taskledger/api/handoff.py
27
+ - taskledger/api/introductions.py
28
+ - taskledger/api/locks.py
29
+ - taskledger/api/plans.py
30
+ - taskledger/api/project.py
31
+ - taskledger/api/questions.py
32
+ - taskledger/api/repair.py
33
+ - taskledger/api/reviews.py
34
+ - taskledger/api/search.py
35
+ - taskledger/api/storage.py
36
+ - taskledger/api/task_runs.py
37
+ - taskledger/api/tasks.py
38
+ - taskledger/cli.py
39
+ - taskledger/cli_archive.py
40
+ - taskledger/cli_common.py
41
+ - taskledger/cli_implement.py
42
+ - taskledger/cli_ledger.py
43
+ - taskledger/cli_misc.py
44
+ - taskledger/cli_plan.py
45
+ - taskledger/cli_storage.py
46
+ - taskledger/domain/__init__.py
47
+ - taskledger/services/agent_logging.py
48
+ - taskledger/services/agent_transcripts.py
49
+ - taskledger/services/change_tracking.py
50
+ - taskledger/services/check_tracking.py
51
+ - taskledger/services/command_runner.py
52
+ - taskledger/services/doctor.py
53
+ - taskledger/services/doctor_checks/project_scan.py
54
+ - taskledger/services/doctor_checks/task_checks.py
55
+ - taskledger/services/git_sync.py
56
+ - taskledger/services/handoff.py
57
+ - taskledger/services/implementation_flow.py
58
+ - taskledger/services/lock_inventory.py
59
+ - taskledger/services/navigation.py
60
+ - taskledger/services/next_action_logic.py
61
+ - taskledger/services/plan_input.py
62
+ - taskledger/services/plan_materialization.py
63
+ - taskledger/services/planning_flow.py
64
+ - taskledger/services/runtime_info.py
65
+ - taskledger/services/task_archive.py
66
+ - taskledger/services/task_collections.py
67
+ - taskledger/services/task_export.py
68
+ - taskledger/services/task_lifecycle.py
69
+ - taskledger/services/task_repair.py
70
+ - taskledger/services/task_reports.py
71
+ - taskledger/services/tasks.py
72
+ - taskledger/services/tree.py
73
+ - taskledger/services/usage.py
74
+ - taskledger/services/validation_flow.py
75
+ - taskledger/services/worker_context.py
76
+ - taskledger/storage/__init__.py
77
+ - taskledger/storage/index_cache.py
78
+ - taskledger/storage/layout_migration.py
79
+ - taskledger/storage/ledgercore_backend.py
80
+ - taskledger/storage/migrations.py
81
+ - taskledger/storage/paths.py
82
+ - taskledger/storage/project_config.py
83
+ - taskledger/storage/project_context.py
84
+ - taskledger/storage/repos.py
85
+ - taskledger/storage/task_ids.py
86
+ - taskledger/storage/task_store.py
87
+ - taskledger/storage/worker_pipeline_config.py
88
+ - tests/conftest.py
89
+ - tests/test_agent_command_logging.py
90
+ - tests/test_agent_session_protocol.py
91
+ - tests/test_command_example_linter.py
92
+ - tests/test_compact_mutation_output.py
93
+ - tests/test_doctor.py
94
+ - tests/test_domain_policies.py
95
+ - tests/test_help_subprocess.py
96
+ - tests/test_implementation_checks.py
97
+ - tests/test_import_boundaries.py
98
+ - tests/test_indexes_cache_recovery.py
99
+ - tests/test_ledgercore_compat.py
100
+ - tests/test_search.py
101
+ - tests/test_service_boundaries.py
102
+ - tests/test_task_report.py
103
+ - tests/test_taskledger_sibling_storage.py
104
+ - tests/test_workspace_snapshot.py
105
+ stats:
106
+ files_changed: 0
107
+ insertions: 675
108
+ deletions: 383
109
+ inspected: true
110
+ inspected_paths:
111
+ - taskledger/cli.py
112
+ - taskledger/cli_common.py
113
+ - taskledger/cli_implement.py
114
+ - taskledger/cli_plan.py
115
+ - taskledger/services/agent_logging.py
116
+ - taskledger/services/command_runner.py
117
+ - taskledger/services/implementation_flow.py
118
+ - tests/test_agent_command_logging.py
119
+ - tests/test_implementation_checks.py
120
+ - docs/command_contract.md
121
+ - docs/full_task_cycle.md
122
+ - docs/usage.md
123
+ observed_behavior:
124
+ Managed plan and implement command wrappers now preserve the
125
+ exact child argv, execute from the CLI invocation directory or explicit root,
126
+ capture stdout and stderr in structured results, show those streams in human mode,
127
+ and record the child cwd in managed command logs. Focused tests cover argv, cwd,
128
+ human output, JSON output, and transcript logging.
129
+ public_impact: public
130
+ decision: accepted
131
+ evidence_subject: "feat: improve transcript logging"
132
+ target_entry_id: entry-0001
133
+ notes:
134
+ The remaining changed paths are import/export ordering, formatting, lint
135
+ cleanup, and supporting refactors without separate release-note behavior.
@@ -0,0 +1,40 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0001
8
+ release_version: v0.6.3
9
+ kind: changed
10
+ summary:
11
+ Improved managed commands to preserve child arguments, working directories,
12
+ output, and execution context
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:713acfa2be8891f88d889121dd769656443947f3
18
+ paths:
19
+ - taskledger/cli.py
20
+ - taskledger/cli_common.py
21
+ - taskledger/cli_implement.py
22
+ - taskledger/cli_plan.py
23
+ - taskledger/services/agent_logging.py
24
+ - taskledger/services/command_runner.py
25
+ - taskledger/services/implementation_flow.py
26
+ - tests/test_agent_command_logging.py
27
+ - tests/test_implementation_checks.py
28
+ - docs/command_contract.md
29
+ - docs/full_task_cycle.md
30
+ - docs/usage.md
31
+ issues: []
32
+ prs: []
33
+ sources: []
34
+ contributors: []
35
+ breaking: false
36
+ internal: false
37
+ order: 1
38
+ ---
39
+
40
+ Planning and implementation command results and managed command logs now expose the child working directory and captured stdout/stderr. Human mode emits captured streams, while JSON mode keeps them in the result envelope.
@@ -0,0 +1,26 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 4
7
+ version: v0.6.3
8
+ status: released
9
+ title: Release v0.6.3
10
+ released_at: "2026-08-19"
11
+ previous_version: v0.6.2
12
+ cancel_reason: null
13
+ superseded_by: null
14
+ changelog_file: docs/changelog.md
15
+ boundary_ref: null
16
+ source_refs: []
17
+ source_count: null
18
+ entry_count: 1
19
+ artifact_count: 0
20
+ git_base_ref: v0.6.2
21
+ git_base_sha: 196a79e85e7abf1296637bec7500c689011e054d
22
+ git_head_ref: HEAD
23
+ git_head_sha: 713acfa2be8891f88d889121dd769656443947f3
24
+ git_range: 196a79e85e7abf1296637bec7500c689011e054d..713acfa2be8891f88d889121dd769656443947f3
25
+ git_commit_count: 1
26
+ ---
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskledger
3
- Version: 0.6.2
3
+ Version: 0.6.3
4
4
  Summary: Durable project-state storage and CLI for coding workflows
5
5
  Author: Taskledger Contributors
6
6
  Maintainer: Holger Nahrstaedt
@@ -2,6 +2,14 @@
2
2
 
3
3
  > **Generated by releaseledger.** Manual edits may be overwritten. Update releaseledger entries and rebuild this file instead.
4
4
 
5
+ ## [v0.6.3] - 2026-08-19
6
+
7
+ ### Changed
8
+
9
+ - Improved managed commands to preserve child arguments, working directories, output, and execution context
10
+
11
+ <!-- generated by releaseledger -->
12
+
5
13
  ## [v0.6.2] - 2026-08-15
6
14
 
7
15
  ### Changed
@@ -443,7 +443,16 @@ to a durable non-active stage rather than directly re-entering an active stage.
443
443
  ## Managed command wrappers
444
444
 
445
445
  `plan command` and `implement command` mirror the inner command exit code by
446
- default.
446
+ default. Both wrappers pass the argument vector after `--` to the child without a
447
+ shell. They execute the child from the CLI invocation directory, or the explicit
448
+ `--root` directory, even when Taskledger discovers an ancestor workspace root for
449
+ ledger state, artifacts, and logs.
450
+
451
+ Captured stdout and stderr are included in the command result. Human mode emits
452
+ those streams before the recorded-command summary, while JSON mode keeps them only
453
+ inside the single JSON result envelope. The result and managed-shell log also record
454
+ the child cwd. `--allow-failure` changes only the wrapper exit code; the recorded
455
+ child exit code and failed check remain unchanged.
447
456
 
448
457
  Use `--allow-failure` when you intentionally want to record a non-zero inner
449
458
  exit code while returning wrapper exit code `0`:
@@ -118,10 +118,12 @@ taskledger plan command -- pytest tests/test_parser.py -q
118
118
  taskledger plan command -- python -m compileall taskledger
119
119
  ```
120
120
 
121
- `plan command` records command exit code and output in planning diagnostics.
122
- With transcript logging enabled, the same output is also captured in the
123
- ledger-level command transcript. Use it to build evidence into the plan before
124
- proposal.
121
+ `plan command` records command exit code, stdout, stderr, and actual child cwd in
122
+ planning diagnostics. It passes the inner argv without a shell and runs from the CLI
123
+ invocation directory. Workspace discovery may use an ancestor for Taskledger state,
124
+ but it must not change the managed child's cwd. With transcript logging enabled, the
125
+ same output is also captured in the ledger-level command transcript. Use it to build
126
+ evidence into the plan before proposal.
125
127
 
126
128
  ## 6. Materialize Todos And Approve
127
129
 
@@ -188,7 +190,10 @@ taskledger implement status
188
190
  ```
189
191
 
190
192
  Use `implement command` when you want taskledger to record a command run as
191
- part of implementation. With transcript logging enabled, it also records managed
193
+ part of implementation. It preserves the inner argv, runs from the CLI invocation
194
+ directory, and records the child cwd, exit code, stdout, and stderr. In human mode,
195
+ captured child output is shown before the command summary. In JSON mode, streams stay
196
+ inside the result envelope. With transcript logging enabled, it also records managed
192
197
  stdout/stderr in the task transcript. Use `implement deviation` when the
193
198
  implementation differs from the approved plan.
194
199
 
@@ -593,10 +593,14 @@ taskledger implement command --allow-failure -- python -c "raise SystemExit(7)"
593
593
  ```
594
594
 
595
595
  When `[agent_logging].enabled = true` in `.ledger/taskledger/config.toml`, `taskledger`
596
- records CLI invocations and managed command outputs. Keep logging opt-in because
597
- stdout/stderr may contain sensitive data. Route task-relevant commands through
598
- `plan command` and `implement command` so their output is included in task
599
- transcripts and reports.
596
+ records CLI invocations and managed command outputs. Both managed wrappers execute
597
+ the exact argv after `--` without a shell and from the CLI invocation directory, or
598
+ the explicit `--root` directory. Taskledger may discover an ancestor workspace for
599
+ ledger state, but that does not change the child's cwd. Human mode displays captured
600
+ stdout/stderr before the summary. JSON mode contains stdout/stderr and cwd only in
601
+ the result object. Keep logging opt-in because stdout/stderr may contain sensitive
602
+ data. Route task-relevant commands through `plan command` and `implement command`
603
+ so their output is included in task transcripts and reports.
600
604
 
601
605
  > taskledger context --for implementation --format markdown
602
606
  > taskledger implement start
@@ -119,7 +119,7 @@ def _normalized_windows(
119
119
  if len(normalized) < min_lines:
120
120
  return []
121
121
  windows: list[tuple[int, tuple[str, ...]]] = []
122
- for offset in range(0, len(normalized) - min_lines + 1):
122
+ for offset in range(len(normalized) - min_lines + 1):
123
123
  start_line = normalized[offset][0]
124
124
  body = tuple(item[1] for item in normalized[offset : offset + min_lines])
125
125
  windows.append((start_line, body))
@@ -281,7 +281,9 @@ The plan file should use version ids like `plan-v1`, `plan-v2` in references. Do
281
281
  - Make the code changes
282
282
  - `taskledger implement change --path ... --kind edit --summary "..."`
283
283
  - Run verification through `taskledger implement command -- ...` so exit code and output are recorded.
284
- - `implement command` mirrors the inner command exit code by default. Use `--allow-failure` when you intentionally want to record a non-zero command without failing the wrapper command.
284
+ - Managed `plan command` and `implement command` pass argv after `--` without a shell and run from the CLI invocation directory, or explicit `--root` directory. Workspace discovery does not change the child cwd.
285
+ - Human mode emits captured child stdout/stderr before the summary. JSON mode keeps stdout/stderr and the actual child cwd inside the result envelope.
286
+ - Both wrappers mirror the inner command exit code by default. Use `--allow-failure` when you intentionally want to record a non-zero inner command without failing the wrapper command; the recorded child failure remains unchanged.
285
287
  - Mark each todo done only after the relevant command or inspection evidence exists: `taskledger todo done <todo-id> --evidence "check-NNNN exited 0"`.
286
288
  - Optional: add `--source planner|implementer|user` to override the inferred source, though this is rarely needed.
287
289
  6. `taskledger implement checklist` after each meaningful change to track progress.
@@ -393,7 +395,7 @@ taskledger validate check --criterion ac-0001 --status pass --evidence "pytest t
393
395
  - Log every meaningful implementation change with `taskledger implement change`.
394
396
  - Record deviations from the approved plan with `taskledger implement deviation`.
395
397
  - Mark todos done with evidence: `taskledger todo done <todo-id> --evidence "pytest -q"`.
396
- - When transcript logging is enabled in project config, run task-relevant commands through `taskledger plan command -- ...` or `taskledger implement command -- ...` so stdout/stderr becomes durable transcript evidence.
398
+ - When transcript logging is enabled in project config, run task-relevant commands through `taskledger plan command -- ...` or `taskledger implement command -- ...` so stdout/stderr becomes durable transcript evidence. The managed result and shell log include the actual child cwd.
397
399
  - Do not paste secrets into command arguments, evidence strings, or expected command output when transcript logging is enabled.
398
400
  - Use `taskledger handoff create --mode implementation|validation --intended-actor agent --intended-harness codex` when switching actor or harness.
399
401
  - Use `taskledger handoff claim handoff-0001` before continuing work from a handoff.
@@ -43,18 +43,10 @@ Feature: Implementation Checks
43
43
  @req-REQ-0026 @ac-AC-0321
44
44
  Example: Human Output Shows Check
45
45
  Given the pytest test setup is prepared
46
- When human output shows check is executed
46
+ When managed command execution is exercised
47
47
  Then r.exit_code equals 0
48
48
  Then 'recorded check check-' is in r.output
49
-
50
- @req-REQ-0026 @ac-AC-0320
51
- Example: Failed Command Creates Failed Check
52
- Given the pytest test setup is prepared
53
- When failed command creates failed check is executed
54
- Then r.exit_code equals 1
55
-
56
- @req-REQ-0026 @ac-AC-0315
57
- Example: Allow Failure Records Check
58
- Given the pytest test setup is prepared
59
- When allow failure records check is executed
60
- Then r.exit_code equals 0
49
+ Then child stdout and stderr are visible in human output
50
+ Then the managed result reports the actual child cwd
51
+ Then the child receives the exact argv after --
52
+ Then planning and implementation wrappers use the same execution contract
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.6.2'
22
- __version_tuple__ = version_tuple = (0, 6, 2)
21
+ __version__ = version = '0.6.3'
22
+ __version_tuple__ = version_tuple = (0, 6, 3)
23
23
 
24
- __commit_id__ = commit_id = 'g196a79e85'
24
+ __commit_id__ = commit_id = 'gecce3598f'
@@ -1,4 +1,4 @@
1
1
  from taskledger.services.tasks import break_lock, list_locks, show_lock
2
2
  from taskledger.storage.task_store import load_active_locks
3
3
 
4
- __all__ = ["show_lock", "break_lock", "list_locks", "load_active_locks"]
4
+ __all__ = ["break_lock", "list_locks", "load_active_locks", "show_lock"]
@@ -166,7 +166,7 @@ def repair_locks(
166
166
  try:
167
167
  break_lock(workspace_root, entry.task_id, reason=reason)
168
168
  repaired.append(entry.task_id)
169
- except Exception as exc:
169
+ except Exception as exc: # noqa: BLE001
170
170
  failed.append(
171
171
  {
172
172
  "task_id": entry.task_id,
@@ -122,7 +122,7 @@ def storage_validate(
122
122
  "reason": f"Mount {mount_name} not found",
123
123
  }
124
124
  )
125
- except Exception:
125
+ except Exception: # noqa: BLE001, S110
126
126
  pass # Best effort for strict checks
127
127
  valid = bool(report is not None and report.valid)
128
128
  if strict:
@@ -271,7 +271,7 @@ def _register_optional_group(
271
271
  try:
272
272
  module = importlib.import_module(module_name)
273
273
  register = getattr(module, register_name)
274
- except Exception as exc:
274
+ except Exception as exc: # noqa: BLE001
275
275
  _register_failed_group_placeholder(
276
276
  app,
277
277
  error=_optional_group_failure(
@@ -390,7 +390,7 @@ def _command_from_tokens(argv: tuple[str, ...]) -> str:
390
390
  if token in _ROOT_OPTIONS_WITH_VALUE:
391
391
  index += 2
392
392
  continue
393
- if token.startswith("--cwd=") or token.startswith("--root="):
393
+ if token.startswith(("--cwd=", "--root=")):
394
394
  index += 1
395
395
  continue
396
396
  if token.startswith("-"):
@@ -443,7 +443,9 @@ def _usage_error_remediation(
443
443
  "or `taskledger doctor indexes` for focused diagnostics."
444
444
  ),
445
445
  ]
446
- extra_match = re.search(r"unexpected extra argument \(([^)]+)\)", message, re.I)
446
+ extra_match = re.search(
447
+ r"unexpected extra argument \(([^)]+)\)", message, re.IGNORECASE
448
+ )
447
449
  if extra_match is None:
448
450
  return remediation
449
451
  extra = extra_match.group(1).strip()
@@ -577,7 +579,12 @@ def main(
577
579
  # discovery, config loading, and agent-log recording overhead.
578
580
  argv = tuple(sys.argv[1:])
579
581
  if _is_help_or_introspection(argv):
580
- ctx.obj = CLIState(cwd=Path.cwd(), json_output=json_output)
582
+ current = Path.cwd().resolve()
583
+ ctx.obj = CLIState(
584
+ cwd=current,
585
+ json_output=json_output,
586
+ command_cwd=current,
587
+ )
581
588
  return
582
589
 
583
590
  if cwd is not None and root is not None and cwd != root:
@@ -606,15 +613,24 @@ def main(
606
613
  except LaunchError as exc:
607
614
  if is_tolerant:
608
615
  # For tolerant commands, use the raw cwd without failing
609
- ctx.obj = CLIState(cwd=raw_cwd, json_output=json_output)
616
+ ctx.obj = CLIState(
617
+ cwd=raw_cwd,
618
+ json_output=json_output,
619
+ command_cwd=raw_cwd,
620
+ )
610
621
  return
611
- ctx.obj = CLIState(cwd=raw_cwd, json_output=json_output)
622
+ ctx.obj = CLIState(
623
+ cwd=raw_cwd,
624
+ json_output=json_output,
625
+ command_cwd=raw_cwd,
626
+ )
612
627
  emit_error(ctx, exc)
613
628
  raise typer.Exit(code=launch_error_exit_code(exc)) from exc
614
629
  ctx.obj = CLIState(
615
630
  cwd=resolved_cwd,
616
631
  json_output=json_output,
617
632
  runtime=CommandRuntime(workspace_root=resolved_cwd),
633
+ command_cwd=raw_cwd,
618
634
  )
619
635
  from taskledger.services.agent_logging import start_cli_recorder
620
636
 
@@ -743,8 +759,10 @@ def init_command(
743
759
  payload,
744
760
  human="\n".join(
745
761
  [
746
- "initialized taskledger: "
747
- f"{payload.get('root', payload.get('project_root', '?'))}",
762
+ (
763
+ "initialized taskledger: "
764
+ f"{payload.get('root', payload.get('project_root', '?'))}"
765
+ ),
748
766
  f"project name: {payload['project_name']}",
749
767
  *[f"- {item}" for item in cast(list[str], payload["created"])],
750
768
  ]
@@ -37,20 +37,14 @@ class ArchiveImportRequest:
37
37
  def looks_like_archive_output_target(value: str) -> bool:
38
38
  candidate = value.strip()
39
39
  lowered = candidate.lower()
40
- if (
41
- lowered.endswith(".tar.gz")
42
- or lowered.endswith(".tgz")
43
- or lowered.endswith(".json")
44
- ):
40
+ if lowered.endswith((".tar.gz", ".tgz", ".json")):
45
41
  return True
46
42
  path = Path(candidate)
47
43
  if path.is_absolute():
48
44
  return True
49
45
  if "/" in candidate or "\\" in candidate:
50
46
  return True
51
- if path.parent != Path("."):
52
- return True
53
- return False
47
+ return path.parent != Path(".")
54
48
 
55
49
 
56
50
  def resolve_archive_export_request(
@@ -80,6 +80,11 @@ class CLIState:
80
80
  cwd: Path
81
81
  json_output: bool
82
82
  runtime: CommandRuntime | None = None
83
+ command_cwd: Path | None = None
84
+
85
+ @property
86
+ def managed_command_cwd(self) -> Path:
87
+ return self.command_cwd or self.cwd
83
88
 
84
89
 
85
90
  TaskOption = Annotated[
@@ -291,6 +296,26 @@ def emit_payload(
291
296
  typer.echo(human)
292
297
 
293
298
 
299
+ def emit_managed_command_streams(
300
+ ctx: typer.Context,
301
+ payload: dict[str, object],
302
+ ) -> None:
303
+ state = cli_state_from_context(ctx)
304
+ if state.json_output:
305
+ return
306
+
307
+ stdout = payload.get("stdout")
308
+ stderr = payload.get("stderr")
309
+ if isinstance(stdout, str) and stdout:
310
+ typer.echo(stdout, nl=False)
311
+ if not stdout.endswith("\n"):
312
+ typer.echo()
313
+ if isinstance(stderr, str) and stderr:
314
+ typer.echo(stderr, err=True, nl=False)
315
+ if not stderr.endswith("\n"):
316
+ typer.echo(err=True)
317
+
318
+
294
319
  def emit_error(
295
320
  ctx: typer.Context,
296
321
  error: Exception | str,
@@ -659,8 +684,10 @@ def _default_remediation(exit_code: int) -> list[str]:
659
684
  return {
660
685
  2: ["Review the invalid input or command usage and retry."],
661
686
  3: [
662
- "Check the requested resource or move through the required workflow "
663
- "gate before retrying."
687
+ (
688
+ "Check the requested resource or move through the required workflow "
689
+ "gate before retrying."
690
+ )
664
691
  ],
665
692
  4: ["Inspect the active lock or break it explicitly if it is stale."],
666
693
  5: ["Inspect the external command or service failure and retry."],
@@ -304,10 +304,14 @@ def command_command(
304
304
  state.cwd,
305
305
  task.id,
306
306
  argv=argv,
307
+ command_cwd=state.managed_command_cwd,
307
308
  )
308
309
  except LaunchError as exc:
309
310
  emit_error(ctx, exc)
310
311
  raise typer.Exit(code=launch_error_exit_code(exc)) from exc
312
+ from taskledger.cli_common import emit_managed_command_streams
313
+
314
+ emit_managed_command_streams(ctx, payload)
311
315
  check_data: dict[str, object] = payload.get("check") or {} # type: ignore[assignment]
312
316
  emit_payload(
313
317
  ctx,
@@ -119,7 +119,7 @@ def ledger_list_command(ctx: typer.Context) -> None:
119
119
  active_data = load_yaml_object(
120
120
  active_yaml, "active task state", missing="empty"
121
121
  )
122
- except Exception:
122
+ except Exception: # noqa: BLE001, S110
123
123
  pass
124
124
  active_id = active_data.get("task_id") if active_data else None
125
125
  entries.append(
@@ -453,7 +453,7 @@ def ledger_doctor_command(ctx: typer.Context) -> None:
453
453
  ),
454
454
  }
455
455
  )
456
- except Exception as exc:
456
+ except Exception as exc: # noqa: BLE001
457
457
  issues.append(
458
458
  {"check": "active_task_check", "status": "warn", "message": str(exc)}
459
459
  )
@@ -137,7 +137,7 @@ def _next_todo_or_finish_command(progress: dict[str, object]) -> str:
137
137
  return "taskledger implement finish --summary SUMMARY"
138
138
 
139
139
 
140
- def register_todo_v2_commands(app: typer.Typer) -> None: # noqa: C901
140
+ def register_todo_v2_commands(app: typer.Typer) -> None:
141
141
  @app.command("add")
142
142
  def add_command(
143
143
  ctx: typer.Context,