taskledger 0.6.6__tar.gz → 0.6.8__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 (607) hide show
  1. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +11 -0
  2. taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/audit/commit-audit.yaml +87 -0
  3. taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/entries/entry-0001.md +53 -0
  4. taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.7/release.md +27 -0
  5. taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/audit/commit-audit.yaml +79 -0
  6. taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/entries/entry-0001.md +31 -0
  7. taskledger-0.6.8/.ledger/releaseledger/data/ledgers/main/releases/v0.6.8/release.md +27 -0
  8. {taskledger-0.6.6/taskledger.egg-info → taskledger-0.6.8}/PKG-INFO +7 -1
  9. {taskledger-0.6.6 → taskledger-0.6.8}/README.md +6 -0
  10. {taskledger-0.6.6 → taskledger-0.6.8}/docs/changelog.md +16 -0
  11. {taskledger-0.6.6 → taskledger-0.6.8}/docs/command_contract.md +3 -0
  12. {taskledger-0.6.6 → taskledger-0.6.8}/docs/full_task_cycle.md +7 -0
  13. {taskledger-0.6.6 → taskledger-0.6.8}/docs/sync.md +4 -0
  14. {taskledger-0.6.6 → taskledger-0.6.8}/docs/transfer.md +6 -0
  15. {taskledger-0.6.6 → taskledger-0.6.8}/docs/usage.md +3 -0
  16. {taskledger-0.6.6 → taskledger-0.6.8}/skills/taskledger/SKILL.md +2 -0
  17. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/_version.py +3 -3
  18. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/config.py +12 -0
  19. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_validate.py +10 -0
  20. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/check.py +20 -0
  21. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/sidecars.py +5 -0
  22. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/exchange.py +59 -8
  23. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/agent_logging.py +14 -9
  24. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/change_tracking.py +16 -3
  25. taskledger-0.6.8/taskledger/services/check_reuse.py +240 -0
  26. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/check_tracking.py +12 -0
  27. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor.py +26 -0
  28. taskledger-0.6.8/taskledger/services/doctor_checks/artifact_checks.py +83 -0
  29. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor_checks/task_checks.py +15 -0
  30. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/git_sync.py +28 -0
  31. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/handoff.py +90 -19
  32. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/implementation_flow.py +28 -3
  33. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/tasks.py +32 -4
  34. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/validation_flow.py +70 -4
  35. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/workflow_guidance.py +8 -0
  36. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/agent_logs.py +6 -1
  37. taskledger-0.6.8/taskledger/storage/artifact_policy.py +106 -0
  38. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_config.py +29 -2
  39. {taskledger-0.6.6 → taskledger-0.6.8/taskledger.egg-info}/PKG-INFO +7 -1
  40. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/SOURCES.txt +12 -0
  41. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/scm_file_list.json +12 -0
  42. taskledger-0.6.8/taskledger.egg-info/scm_version.json +8 -0
  43. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_actor_resolution.py +1 -0
  44. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_agent_command_logging.py +12 -0
  45. taskledger-0.6.8/tests/test_artifact_policy.py +63 -0
  46. taskledger-0.6.8/tests/test_check_reuse.py +229 -0
  47. taskledger-0.6.8/tests/test_check_reuse_context.py +77 -0
  48. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_config_cli.py +25 -2
  49. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_doctor.py +61 -0
  50. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_implementation_checks.py +26 -0
  51. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_models_v1_schema.py +1 -0
  52. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_project_root_config.py +19 -0
  53. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_sync_git.py +36 -0
  54. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_v2_exchange.py +14 -0
  55. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_validation_command.py +45 -0
  56. taskledger-0.6.6/taskledger.egg-info/scm_version.json +0 -8
  57. {taskledger-0.6.6 → taskledger-0.6.8}/.codecrate.toml +0 -0
  58. {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/codecov.yml +0 -0
  59. {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/pre-commit.yml +0 -0
  60. {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/python-publish.yml +0 -0
  61. {taskledger-0.6.6 → taskledger-0.6.8}/.github/workflows/tests.yml +0 -0
  62. {taskledger-0.6.6 → taskledger-0.6.8}/.gitignore +0 -0
  63. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/.archledger-migration-20260821T090309Z/config.toml +0 -0
  64. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/.ledger-project.toml +0 -0
  65. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/config.toml +0 -0
  66. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/.ledger-project.toml +0 -0
  67. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/building_blocks/block-0083.md +0 -0
  68. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/concepts/concept-0081.md +0 -0
  69. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/runtime/runtime-0076.md +0 -0
  70. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/archive/records/runtime/runtime-0084.md +0 -0
  71. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/document-state.json +0 -0
  72. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/migrations/20260821T090309Z-ledgercore-0.4-repository-storage.json +0 -0
  73. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/migrations/migration-cbe21be3f9dc3db4b03f6366.json +0 -0
  74. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0001.md +0 -0
  75. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0002.md +0 -0
  76. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0003.md +0 -0
  77. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0004.md +0 -0
  78. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0005.md +0 -0
  79. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0006.md +0 -0
  80. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0007.md +0 -0
  81. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0008.md +0 -0
  82. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0009.md +0 -0
  83. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0010.md +0 -0
  84. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0011.md +0 -0
  85. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/profiles/arc42/sections/content-0012.md +0 -0
  86. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0029.md +0 -0
  87. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0030.md +0 -0
  88. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0031.md +0 -0
  89. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0032.md +0 -0
  90. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0033.md +0 -0
  91. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/building_blocks/block-0034.md +0 -0
  92. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0040.md +0 -0
  93. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0041.md +0 -0
  94. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0042.md +0 -0
  95. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0043.md +0 -0
  96. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0044.md +0 -0
  97. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0045.md +0 -0
  98. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0082.md +0 -0
  99. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0085.md +0 -0
  100. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/concepts/concept-0086.md +0 -0
  101. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0016.md +0 -0
  102. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0017.md +0 -0
  103. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0018.md +0 -0
  104. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/constraints/constraint-0019.md +0 -0
  105. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0020.md +0 -0
  106. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0021.md +0 -0
  107. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0022.md +0 -0
  108. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/contexts/context-0023.md +0 -0
  109. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0046.md +0 -0
  110. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0047.md +0 -0
  111. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0048.md +0 -0
  112. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0049.md +0 -0
  113. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0050.md +0 -0
  114. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/decisions/adr-0051.md +0 -0
  115. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/deployment/deploy-0039.md +0 -0
  116. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0061.md +0 -0
  117. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0062.md +0 -0
  118. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0063.md +0 -0
  119. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0064.md +0 -0
  120. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0065.md +0 -0
  121. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0066.md +0 -0
  122. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0067.md +0 -0
  123. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0068.md +0 -0
  124. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0069.md +0 -0
  125. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0070.md +0 -0
  126. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0071.md +0 -0
  127. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0072.md +0 -0
  128. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/glossary/glossary-0073.md +0 -0
  129. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0052.md +0 -0
  130. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0053.md +0 -0
  131. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0054.md +0 -0
  132. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0055.md +0 -0
  133. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/quality_requirements/quality-0056.md +0 -0
  134. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/requirements/content-0013.md +0 -0
  135. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/requirements/content-0014.md +0 -0
  136. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/requirements/content-0015.md +0 -0
  137. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0057.md +0 -0
  138. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0058.md +0 -0
  139. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0059.md +0 -0
  140. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/risks/risk-0060.md +0 -0
  141. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0035.md +0 -0
  142. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0036.md +0 -0
  143. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0037.md +0 -0
  144. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0038.md +0 -0
  145. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0074.md +0 -0
  146. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0075.md +0 -0
  147. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0077.md +0 -0
  148. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0078.md +0 -0
  149. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0087.md +0 -0
  150. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/runtime/runtime-0088.md +0 -0
  151. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/stakeholders/content-0079.md +0 -0
  152. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/stakeholders/content-0080.md +0 -0
  153. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0024.md +0 -0
  154. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0025.md +0 -0
  155. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0026.md +0 -0
  156. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0027.md +0 -0
  157. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/records/strategy/strategy-0028.md +0 -0
  158. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/source-state.json +0 -0
  159. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/data/storage.yaml +0 -0
  160. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/archledger/migrations/migration-66baa70bad8a0bb5ae852133.json +0 -0
  161. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/.ledger-project.toml +0 -0
  162. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/config.toml +0 -0
  163. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/.ledger-project.toml +0 -0
  164. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-api-md-9eddf4dc.yaml +0 -0
  165. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-architecture-taskledger-split-md-63034c0d.yaml +0 -0
  166. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-command-contract-md-abe6f6d9.yaml +0 -0
  167. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-full-task-cycle-md-721181f0.yaml +0 -0
  168. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-multi-repo-md-929e47a9.yaml +0 -0
  169. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-public-surface-md-c1b8772f.yaml +0 -0
  170. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-service-boundary-whitelist-md-800b76f5.yaml +0 -0
  171. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-sync-md-a29422f3.yaml +0 -0
  172. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-transfer-md-f8532303.yaml +0 -0
  173. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/docs/docs-usage-md-72376d0b.yaml +0 -0
  174. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/scan.yaml +0 -0
  175. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/source-index.json +0 -0
  176. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/documentledger/data/storage.yaml +0 -0
  177. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/ledger.toml +0 -0
  178. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/migrations/documentledger-bb67fdd8e51cff33.toml +0 -0
  179. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/.ledger-project.toml +0 -0
  180. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/config.toml +0 -0
  181. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
  182. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0001.md +0 -0
  183. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0002.md +0 -0
  184. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0003.md +0 -0
  185. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0004.md +0 -0
  186. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0005.md +0 -0
  187. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0006.md +0 -0
  188. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0007.md +0 -0
  189. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0008.md +0 -0
  190. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0009.md +0 -0
  191. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0010.md +0 -0
  192. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0011.md +0 -0
  193. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0012.md +0 -0
  194. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0013.md +0 -0
  195. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0014.md +0 -0
  196. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0015.md +0 -0
  197. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0016.md +0 -0
  198. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0017.md +0 -0
  199. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0018.md +0 -0
  200. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0019.md +0 -0
  201. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0020.md +0 -0
  202. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0021.md +0 -0
  203. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0022.md +0 -0
  204. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0023.md +0 -0
  205. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/release.md +0 -0
  206. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0001.md +0 -0
  207. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0002.md +0 -0
  208. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0003.md +0 -0
  209. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0004.md +0 -0
  210. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0005.md +0 -0
  211. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/release.md +0 -0
  212. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0001.md +0 -0
  213. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0002.md +0 -0
  214. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0003.md +0 -0
  215. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0004.md +0 -0
  216. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/release.md +0 -0
  217. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/audit/commit-audit.yaml +0 -0
  218. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/entries/entry-0001.md +0 -0
  219. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.3/release.md +0 -0
  220. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/audit/commit-audit.yaml +0 -0
  221. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/entries/entry-0001.md +0 -0
  222. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/entries/entry-0002.md +0 -0
  223. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/entries/entry-0003.md +0 -0
  224. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.4/release.md +0 -0
  225. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/audit/commit-audit.yaml +0 -0
  226. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/entries/entry-0001.md +0 -0
  227. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/entries/entry-0002.md +0 -0
  228. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/entries/entry-0003.md +0 -0
  229. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.5/release.md +0 -0
  230. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.6/audit/commit-audit.yaml +0 -0
  231. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.6/entries/entry-0001.md +0 -0
  232. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.6/release.md +0 -0
  233. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/releaseledger/write.lock +0 -0
  234. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/task/config.toml +0 -0
  235. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/taskledger/.ledger-project.toml +0 -0
  236. {taskledger-0.6.6 → taskledger-0.6.8}/.ledger/taskledger/config.toml +0 -0
  237. {taskledger-0.6.6 → taskledger-0.6.8}/.planledger.toml +0 -0
  238. {taskledger-0.6.6 → taskledger-0.6.8}/.pre-commit-config.yaml +0 -0
  239. {taskledger-0.6.6 → taskledger-0.6.8}/.readthedocs.yaml +0 -0
  240. {taskledger-0.6.6 → taskledger-0.6.8}/.ruff.toml +0 -0
  241. {taskledger-0.6.6 → taskledger-0.6.8}/AGENTS.md +0 -0
  242. {taskledger-0.6.6 → taskledger-0.6.8}/API.md +0 -0
  243. {taskledger-0.6.6 → taskledger-0.6.8}/LICENSE +0 -0
  244. {taskledger-0.6.6 → taskledger-0.6.8}/Makefile +0 -0
  245. {taskledger-0.6.6 → taskledger-0.6.8}/docs/Makefile +0 -0
  246. {taskledger-0.6.6 → taskledger-0.6.8}/docs/api.md +0 -0
  247. {taskledger-0.6.6 → taskledger-0.6.8}/docs/architecture.md +0 -0
  248. {taskledger-0.6.6 → taskledger-0.6.8}/docs/architecture_taskledger_split.md +0 -0
  249. {taskledger-0.6.6 → taskledger-0.6.8}/docs/build.sh +0 -0
  250. {taskledger-0.6.6 → taskledger-0.6.8}/docs/conf.py +0 -0
  251. {taskledger-0.6.6 → taskledger-0.6.8}/docs/documentation_freshness.md +0 -0
  252. {taskledger-0.6.6 → taskledger-0.6.8}/docs/index.md +0 -0
  253. {taskledger-0.6.6 → taskledger-0.6.8}/docs/multi_repo.md +0 -0
  254. {taskledger-0.6.6 → taskledger-0.6.8}/docs/public_surface.md +0 -0
  255. {taskledger-0.6.6 → taskledger-0.6.8}/docs/release_checklist.md +0 -0
  256. {taskledger-0.6.6 → taskledger-0.6.8}/docs/requirements.txt +0 -0
  257. {taskledger-0.6.6 → taskledger-0.6.8}/docs/service_boundary_whitelist.md +0 -0
  258. {taskledger-0.6.6 → taskledger-0.6.8}/pyproject.toml +0 -0
  259. {taskledger-0.6.6 → taskledger-0.6.8}/requirements/manifest.json +0 -0
  260. {taskledger-0.6.6 → taskledger-0.6.8}/scripts/find_code_clones.py +0 -0
  261. {taskledger-0.6.6 → taskledger-0.6.8}/setup.cfg +0 -0
  262. {taskledger-0.6.6 → taskledger-0.6.8}/specmason.toml +0 -0
  263. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/README.md +0 -0
  264. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/UNMAPPED_TESTS.md +0 -0
  265. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/evidence/.gitkeep +0 -0
  266. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/evidence/taskledger-test-feature-coverage.json +0 -0
  267. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/.gitkeep +0 -0
  268. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/active_task/active-task.feature +0 -0
  269. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/actor_harness_state/actor-harness-state.feature +0 -0
  270. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/actor_resolution/actor-resolution.feature +0 -0
  271. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/agent_command_logging/agent-command-logging.feature +0 -0
  272. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/agent_session_protocol/agent-session-protocol.feature +0 -0
  273. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/atomic_fast_io/atomic-fast-io.feature +0 -0
  274. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/cli_command_contract/cli-command-contract.feature +0 -0
  275. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/cli_import_resilience/cli-import-resilience.feature +0 -0
  276. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/code_reviews/code-reviews.feature +0 -0
  277. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/command_example_linter/command-example-linter.feature +0 -0
  278. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/command_inventory/command-inventory.feature +0 -0
  279. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/command_runner/command-runner.feature +0 -0
  280. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/compact_mutation_output/compact-mutation-output.feature +0 -0
  281. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/config_cli/config-cli.feature +0 -0
  282. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/delta_remaining_contracts/delta-remaining-contracts.feature +0 -0
  283. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/docs_and_skill/docs-and-skill.feature +0 -0
  284. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/doctor/doctor.feature +0 -0
  285. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/domain_policies/domain-policies.feature +0 -0
  286. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/event_logging_config/event-logging-config.feature +0 -0
  287. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/events/events.feature +0 -0
  288. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/file_link_snapshots/file-link-snapshots.feature +0 -0
  289. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/find_code_clones_script/find-code-clones-script.feature +0 -0
  290. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/handoff_lifecycle/handoff-lifecycle.feature +0 -0
  291. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/help_subprocess/help-subprocess.feature +0 -0
  292. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/implementation_change_scan/implementation-change-scan.feature +0 -0
  293. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/implementation_checks/implementation-checks.feature +0 -0
  294. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/json_contracts/json-contracts.feature +0 -0
  295. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/legacy_cleanup_contracts/legacy-cleanup-contracts.feature +0 -0
  296. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/lifecycle_policies/lifecycle-policies.feature +0 -0
  297. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/lock_diagnostics/lock-diagnostics.feature +0 -0
  298. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/locks_audit/locks-audit.feature +0 -0
  299. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/models_v1_schema/models-v1-schema.feature +0 -0
  300. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/monitor/monitor.feature +0 -0
  301. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/next_action_expired_lock/next-action-expired-lock.feature +0 -0
  302. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/no_log_feature/no-log-feature.feature +0 -0
  303. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_approval_contract/plan-approval-contract.feature +0 -0
  304. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_lint/plan-lint.feature +0 -0
  305. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_review/plan-review.feature +0 -0
  306. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_revision_workflow/plan-revision-workflow.feature +0 -0
  307. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/plan_todo_materialization/plan-todo-materialization.feature +0 -0
  308. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/project_root_config/project-root-config.feature +0 -0
  309. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/question_add_many/question-add-many.feature +0 -0
  310. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/question_filter_answers/question-filter-answers.feature +0 -0
  311. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/question_plan_regeneration/question-plan-regeneration.feature +0 -0
  312. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/ready_work/ready-work.feature +0 -0
  313. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/release_changelog/release-changelog.feature +0 -0
  314. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/search/search.feature +0 -0
  315. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/service_boundaries/service-boundaries.feature +0 -0
  316. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/services_dashboard/services-dashboard.feature +0 -0
  317. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/sidecar_collections/sidecar-collections.feature +0 -0
  318. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_bundle_layout/storage-bundle-layout.feature +0 -0
  319. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_common/storage-common.feature +0 -0
  320. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_init/storage-init.feature +0 -0
  321. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_migration/storage-migration.feature +0 -0
  322. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_repos/storage-repos.feature +0 -0
  323. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/storage_sync/storage-sync.feature +0 -0
  324. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/sync_git/sync-git.feature +0 -0
  325. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_archive/archive.feature +0 -0
  326. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_events/events.feature +0 -0
  327. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_markdown_export/markdown-export.feature +0 -0
  328. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/task_report/report.feature +0 -0
  329. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_branch_scoped_ledgers/taskledger-branch-scoped-ledgers.feature +0 -0
  330. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_cli_api_parity/taskledger-cli-api-parity.feature +0 -0
  331. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_v2_cli/taskledger-v2-cli.feature +0 -0
  332. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/taskledger_v2_exchange/taskledger-v2-exchange.feature +0 -0
  333. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/tasks_service_static/tasks-service-static.feature +0 -0
  334. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/todo_implementation_gate/todo-implementation-gate.feature +0 -0
  335. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/trace/trace.feature +0 -0
  336. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/tree_command/tree-command.feature +0 -0
  337. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/usage_cli/usage-cli.feature +0 -0
  338. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_cli/worker-pipeline-cli.feature +0 -0
  339. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_config/worker-pipeline-config.feature +0 -0
  340. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_context/worker-pipeline-context.feature +0 -0
  341. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_handoff/worker-pipeline-handoff.feature +0 -0
  342. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_plan_template/worker-pipeline-plan-template.feature +0 -0
  343. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/worker_pipeline_todos/worker-pipeline-todos.feature +0 -0
  344. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/features/workflow_guidance/workflow-guidance.feature +0 -0
  345. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/manifest.json +0 -0
  346. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/mappings/.gitkeep +0 -0
  347. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/mappings/intentional-unmapped.json +0 -0
  348. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/.gitkeep +0 -0
  349. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/coverage.json +0 -0
  350. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/coverage.md +0 -0
  351. {taskledger-0.6.6 → taskledger-0.6.8}/specs/behavior/reports/specmason/mappings.json +0 -0
  352. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/__init__.py +0 -0
  353. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/__main__.py +0 -0
  354. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/__init__.py +0 -0
  355. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/handoff.py +0 -0
  356. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/introductions.py +0 -0
  357. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/locks.py +0 -0
  358. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/plans.py +0 -0
  359. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/project.py +0 -0
  360. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/questions.py +0 -0
  361. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/releases.py +0 -0
  362. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/repair.py +0 -0
  363. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/reviews.py +0 -0
  364. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/search.py +0 -0
  365. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/storage.py +0 -0
  366. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/sync.py +0 -0
  367. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/task_runs.py +0 -0
  368. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/api/tasks.py +0 -0
  369. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli.py +0 -0
  370. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_actor.py +0 -0
  371. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_archive.py +0 -0
  372. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_common.py +0 -0
  373. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_config.py +0 -0
  374. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_help.py +0 -0
  375. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_implement.py +0 -0
  376. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_ledger.py +0 -0
  377. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_migrate.py +0 -0
  378. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_misc.py +0 -0
  379. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_pipeline.py +0 -0
  380. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_plan.py +0 -0
  381. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_question.py +0 -0
  382. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_ref.py +0 -0
  383. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_release.py +0 -0
  384. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_review.py +0 -0
  385. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_runtime.py +0 -0
  386. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_storage.py +0 -0
  387. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_sync.py +0 -0
  388. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_task.py +0 -0
  389. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/cli_trace.py +0 -0
  390. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/command_inventory.py +0 -0
  391. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/compat/__init__.py +0 -0
  392. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/compat/ledgercore.py +0 -0
  393. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/__init__.py +0 -0
  394. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/_model_utils.py +0 -0
  395. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/active_state.py +0 -0
  396. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/actor.py +0 -0
  397. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/change.py +0 -0
  398. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/event.py +0 -0
  399. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/handoff.py +0 -0
  400. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/lock.py +0 -0
  401. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/models.py +0 -0
  402. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/plan.py +0 -0
  403. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/policies.py +0 -0
  404. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/question.py +0 -0
  405. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/release.py +0 -0
  406. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/review.py +0 -0
  407. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/run.py +0 -0
  408. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/states.py +0 -0
  409. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/domain/task.py +0 -0
  410. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/errors.py +0 -0
  411. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/ids.py +0 -0
  412. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/launcher.py +0 -0
  413. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/migrations/__init__.py +0 -0
  414. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/migrations/hooks.py +0 -0
  415. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/py.typed +0 -0
  416. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/refs.py +0 -0
  417. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/search.py +0 -0
  418. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/__init__.py +0 -0
  419. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/actors.py +0 -0
  420. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/agent_transcripts.py +0 -0
  421. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/code_review.py +0 -0
  422. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/command_runner.py +0 -0
  423. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/dashboard.py +0 -0
  424. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor_checks/migration_checks.py +0 -0
  425. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/doctor_checks/project_scan.py +0 -0
  426. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/event_logging.py +0 -0
  427. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/file_links.py +0 -0
  428. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/git_utils.py +0 -0
  429. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/handoff_lifecycle.py +0 -0
  430. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/lock_diagnostics.py +0 -0
  431. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/lock_inventory.py +0 -0
  432. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/monitor.py +0 -0
  433. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/navigation.py +0 -0
  434. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/next_action_logic.py +0 -0
  435. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/next_action_model.py +0 -0
  436. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/next_action_payload.py +0 -0
  437. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/phase5_lock_transfer.py +0 -0
  438. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_editing.py +0 -0
  439. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_hash.py +0 -0
  440. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_input.py +0 -0
  441. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_lint.py +0 -0
  442. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_materialization.py +0 -0
  443. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/plan_review.py +0 -0
  444. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/planning_flow.py +0 -0
  445. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/ready_work.py +0 -0
  446. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/releases.py +0 -0
  447. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/run_store.py +0 -0
  448. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/runtime_info.py +0 -0
  449. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/storage_locations.py +0 -0
  450. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/storage_migration.py +0 -0
  451. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_archive.py +0 -0
  452. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_collections.py +0 -0
  453. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_events.py +0 -0
  454. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_export.py +0 -0
  455. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_lifecycle.py +0 -0
  456. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_queries.py +0 -0
  457. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_repair.py +0 -0
  458. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/task_reports.py +0 -0
  459. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/trace.py +0 -0
  460. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/tree.py +0 -0
  461. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/usage.py +0 -0
  462. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/validation.py +0 -0
  463. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/worker_context.py +0 -0
  464. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/worker_pipeline.py +0 -0
  465. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/services/workspace_snapshot.py +0 -0
  466. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/__init__.py +0 -0
  467. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/atomic.py +0 -0
  468. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/common.py +0 -0
  469. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/events.py +0 -0
  470. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/frontmatter.py +0 -0
  471. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/index_cache.py +0 -0
  472. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/indexes.py +0 -0
  473. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/init.py +0 -0
  474. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/layout_migration.py +0 -0
  475. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledger_config.py +0 -0
  476. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledger_local_config.py +0 -0
  477. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledger_manifest.py +0 -0
  478. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/ledgercore_backend.py +0 -0
  479. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/locks.py +0 -0
  480. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/meta.py +0 -0
  481. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/migrations.py +0 -0
  482. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/paths.py +0 -0
  483. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_binding.py +0 -0
  484. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_context.py +0 -0
  485. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/project_identity.py +0 -0
  486. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/repos.py +0 -0
  487. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/sidecar_index.py +0 -0
  488. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/task_ids.py +0 -0
  489. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/task_index.py +0 -0
  490. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/task_store.py +0 -0
  491. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/taskledger_migration.py +0 -0
  492. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/toml_edit.py +0 -0
  493. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/worker_pipeline_config.py +0 -0
  494. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/storage/yaml_store.py +0 -0
  495. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger/timeutils.py +0 -0
  496. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/dependency_links.txt +0 -0
  497. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/entry_points.txt +0 -0
  498. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/requires.txt +0 -0
  499. {taskledger-0.6.6 → taskledger-0.6.8}/taskledger.egg-info/top_level.txt +0 -0
  500. {taskledger-0.6.6 → taskledger-0.6.8}/tests/__init__.py +0 -0
  501. {taskledger-0.6.6 → taskledger-0.6.8}/tests/conftest.py +0 -0
  502. {taskledger-0.6.6 → taskledger-0.6.8}/tests/support/__init__.py +0 -0
  503. {taskledger-0.6.6 → taskledger-0.6.8}/tests/support/builders.py +0 -0
  504. {taskledger-0.6.6 → taskledger-0.6.8}/tests/support/fake_command_runner.py +0 -0
  505. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_active_task.py +0 -0
  506. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_actor_harness_state.py +0 -0
  507. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_agent_session_protocol.py +0 -0
  508. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_atomic_fast_io.py +0 -0
  509. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_config_split.py +0 -0
  510. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_layout_migration.py +0 -0
  511. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_mount_paths.py +0 -0
  512. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_project_boundary.py +0 -0
  513. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_canonical_project_context.py +0 -0
  514. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_cli_command_contract.py +0 -0
  515. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_cli_import_resilience.py +0 -0
  516. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_cli_runner_compatibility.py +0 -0
  517. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_code_reviews.py +0 -0
  518. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_command_example_linter.py +0 -0
  519. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_command_inventory.py +0 -0
  520. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_command_runner.py +0 -0
  521. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_compact_mutation_output.py +0 -0
  522. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_delta_remaining_contracts.py +0 -0
  523. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_docs_and_skill.py +0 -0
  524. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_domain_policies.py +0 -0
  525. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_error_contracts.py +0 -0
  526. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_event_logging_config.py +0 -0
  527. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_events.py +0 -0
  528. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_file_link_snapshots.py +0 -0
  529. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_find_code_clones_script.py +0 -0
  530. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_handoff_lifecycle.py +0 -0
  531. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_help_subprocess.py +0 -0
  532. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_implementation_change_scan.py +0 -0
  533. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_import_boundaries.py +0 -0
  534. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_indexes.py +0 -0
  535. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_indexes_cache_recovery.py +0 -0
  536. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_json_contracts.py +0 -0
  537. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ledger_manifest_mutation.py +0 -0
  538. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ledgercore_compat.py +0 -0
  539. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ledgercore_dependency.py +0 -0
  540. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_legacy_cleanup_contracts.py +0 -0
  541. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_lifecycle_policies.py +0 -0
  542. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_lock_diagnostics.py +0 -0
  543. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_lock_inventory.py +0 -0
  544. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_locks_audit.py +0 -0
  545. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_monitor.py +0 -0
  546. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_next_action_expired_lock.py +0 -0
  547. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_no_log_feature.py +0 -0
  548. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_performance_caching.py +0 -0
  549. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_approval_contract.py +0 -0
  550. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_input.py +0 -0
  551. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_input_cli.py +0 -0
  552. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_lint.py +0 -0
  553. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_review.py +0 -0
  554. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_revision_workflow.py +0 -0
  555. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_plan_todo_materialization.py +0 -0
  556. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_question_add_many.py +0 -0
  557. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_question_filter_answers.py +0 -0
  558. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_question_plan_regeneration.py +0 -0
  559. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_ready_work.py +0 -0
  560. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_release_changelog.py +0 -0
  561. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_resource_refs.py +0 -0
  562. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_runtime_info.py +0 -0
  563. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_search.py +0 -0
  564. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_service_boundaries.py +0 -0
  565. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_services_dashboard.py +0 -0
  566. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_shared_tool_ledger_storage.py +0 -0
  567. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_sidecar_collections.py +0 -0
  568. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_bundle_layout.py +0 -0
  569. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_common.py +0 -0
  570. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_init.py +0 -0
  571. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_migration.py +0 -0
  572. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_migration_coordinator.py +0 -0
  573. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_repos.py +0 -0
  574. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_sync.py +0 -0
  575. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_where_repair.py +0 -0
  576. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_storage_yaml_store.py +0 -0
  577. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_archive.py +0 -0
  578. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_events.py +0 -0
  579. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_ids.py +0 -0
  580. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_markdown_export.py +0 -0
  581. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_task_report.py +0 -0
  582. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_branch_scoped_ledgers.py +0 -0
  583. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_canonical_sync.py +0 -0
  584. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_cli_api_parity.py +0 -0
  585. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_adapter.py +0 -0
  586. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_context.py +0 -0
  587. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_migration_topology.py +0 -0
  588. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_ledgercore_050_sync.py +0 -0
  589. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_migration_v3.py +0 -0
  590. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_sibling_migration.py +0 -0
  591. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_sibling_storage.py +0 -0
  592. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_storage_commands_v3.py +0 -0
  593. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_taskledger_v2_cli.py +0 -0
  594. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_tasks_service_static.py +0 -0
  595. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_todo_implementation_gate.py +0 -0
  596. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_trace.py +0 -0
  597. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_tree_command.py +0 -0
  598. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_usage_cli.py +0 -0
  599. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_validation_git_snapshot_recovery.py +0 -0
  600. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_cli.py +0 -0
  601. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_config.py +0 -0
  602. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_context.py +0 -0
  603. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_handoff.py +0 -0
  604. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_plan_template.py +0 -0
  605. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_worker_pipeline_todos.py +0 -0
  606. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_workflow_guidance.py +0 -0
  607. {taskledger-0.6.6 → taskledger-0.6.8}/tests/test_workspace_snapshot.py +0 -0
@@ -44,3 +44,14 @@
44
44
  {"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0044","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.6","schema_version":2}
45
45
  {"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0045","record_revisions":{"commit_audit_sheet":3,"entry:v0.6.6/entry-0001":1,"release:v0.6.6":3},"release_version":"v0.6.6","schema_version":2}
46
46
  {"data":{"released_at":"2026-09-04"},"event":"release.finalized","event_id":"event-0046","record_revisions":{"release:v0.6.6":4},"release_version":"v0.6.6","schema_version":2}
47
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0047","record_revisions":{"release:v0.6.7":1},"release_version":"v0.6.7","schema_version":2}
48
+ {"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-0048","record_revisions":{"release:v0.6.7":2},"release_version":"v0.6.7","schema_version":2}
49
+ {"data":{"row_count":1},"event":"audit.created","event_id":"event-0049","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.6.7","schema_version":2}
50
+ {"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0050","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.7","schema_version":2}
51
+ {"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0051","record_revisions":{"commit_audit_sheet":3,"entry:v0.6.7/entry-0001":1,"release:v0.6.7":3},"release_version":"v0.6.7","schema_version":2}
52
+ {"data":{"released_at":"2026-09-09"},"event":"release.finalized","event_id":"event-0052","record_revisions":{"release:v0.6.7":4},"release_version":"v0.6.7","schema_version":2}
53
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0053","record_revisions":{"release:v0.6.8":1},"release_version":"v0.6.8","schema_version":2}
54
+ {"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-0054","record_revisions":{"release:v0.6.8":2},"release_version":"v0.6.8","schema_version":2}
55
+ {"data":{"row_count":1},"event":"audit.created","event_id":"event-0055","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.6.8","schema_version":2}
56
+ {"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0056","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.6.8","schema_version":2}
57
+ {"data":{"kind":"added","status":"accepted"},"entry_id":"entry-0001","event":"entry.added","event_id":"event-0057","record_revisions":{"entry:v0.6.8/entry-0001":1,"release:v0.6.8":3},"release_version":"v0.6.8","schema_version":2}
@@ -0,0 +1,87 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 3
6
+ release_version: v0.6.7
7
+ git_base_ref: v0.6.6
8
+ git_base_sha: f7c915cf9d515ab1c15bdffeb73162340d7534df
9
+ git_head_ref: HEAD
10
+ git_head_sha: 562fc8796f821e312877f0c5b2aa09f5daddb138
11
+ git_range: f7c915cf9d515ab1c15bdffeb73162340d7534df..562fc8796f821e312877f0c5b2aa09f5daddb138
12
+ commit_count: 1
13
+ rows:
14
+ - sha: 562fc8796f821e312877f0c5b2aa09f5daddb138
15
+ source_ref: git:562fc8796f821e312877f0c5b2aa09f5daddb138
16
+ short_sha: 562fc87
17
+ changed_paths:
18
+ - README.md
19
+ - docs/command_contract.md
20
+ - docs/sync.md
21
+ - docs/transfer.md
22
+ - docs/usage.md
23
+ - taskledger/api/config.py
24
+ - taskledger/exchange.py
25
+ - taskledger/services/agent_logging.py
26
+ - taskledger/services/change_tracking.py
27
+ - taskledger/services/doctor.py
28
+ - taskledger/services/doctor_checks/artifact_checks.py
29
+ - taskledger/services/git_sync.py
30
+ - taskledger/services/implementation_flow.py
31
+ - taskledger/services/tasks.py
32
+ - taskledger/services/validation_flow.py
33
+ - taskledger/storage/agent_logs.py
34
+ - taskledger/storage/artifact_policy.py
35
+ - taskledger/storage/project_config.py
36
+ - tests/test_agent_command_logging.py
37
+ - tests/test_artifact_policy.py
38
+ - tests/test_config_cli.py
39
+ - tests/test_doctor.py
40
+ - tests/test_project_root_config.py
41
+ - tests/test_sync_git.py
42
+ - tests/test_taskledger_v2_exchange.py
43
+ - tests/test_validation_command.py
44
+ stats:
45
+ files_changed: 0
46
+ insertions: 700
47
+ deletions: 33
48
+ inspected: true
49
+ inspected_paths:
50
+ - README.md
51
+ - docs/command_contract.md
52
+ - docs/sync.md
53
+ - docs/transfer.md
54
+ - docs/usage.md
55
+ - taskledger/api/config.py
56
+ - taskledger/exchange.py
57
+ - taskledger/services/agent_logging.py
58
+ - taskledger/services/change_tracking.py
59
+ - taskledger/services/doctor.py
60
+ - taskledger/services/doctor_checks/artifact_checks.py
61
+ - taskledger/services/git_sync.py
62
+ - taskledger/services/implementation_flow.py
63
+ - taskledger/services/tasks.py
64
+ - taskledger/services/validation_flow.py
65
+ - taskledger/storage/agent_logs.py
66
+ - taskledger/storage/artifact_policy.py
67
+ - taskledger/storage/project_config.py
68
+ - tests/test_agent_command_logging.py
69
+ - tests/test_artifact_policy.py
70
+ - tests/test_config_cli.py
71
+ - tests/test_doctor.py
72
+ - tests/test_project_root_config.py
73
+ - tests/test_sync_git.py
74
+ - tests/test_taskledger_v2_exchange.py
75
+ - tests/test_validation_command.py
76
+ observed_behavior:
77
+ Added a shared artifact-size policy that bounds stored command
78
+ output to a configurable limit capped at 20,000,000 bytes, preserves UTF-8-safe
79
+ head/tail excerpts with truncation metadata, rejects oversized existing artifacts
80
+ during doctor, export/import, and managed Git sync, and documents the policy with
81
+ regression coverage.
82
+ public_impact: public
83
+ decision: accepted
84
+ stale: false
85
+ evidence_subject: "feat: limit artifact file size"
86
+ target_entry_id: entry-0001
87
+ notes: ""
@@ -0,0 +1,53 @@
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.7
9
+ kind: added
10
+ summary:
11
+ Added configurable artifact limits with UTF-8-safe truncation across command
12
+ evidence, archives, doctor, and Git sync
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:562fc8796f821e312877f0c5b2aa09f5daddb138
18
+ paths:
19
+ - README.md
20
+ - docs/command_contract.md
21
+ - docs/sync.md
22
+ - docs/transfer.md
23
+ - docs/usage.md
24
+ - taskledger/api/config.py
25
+ - taskledger/exchange.py
26
+ - taskledger/services/agent_logging.py
27
+ - taskledger/services/change_tracking.py
28
+ - taskledger/services/doctor.py
29
+ - taskledger/services/doctor_checks/artifact_checks.py
30
+ - taskledger/services/git_sync.py
31
+ - taskledger/services/implementation_flow.py
32
+ - taskledger/services/tasks.py
33
+ - taskledger/services/validation_flow.py
34
+ - taskledger/storage/agent_logs.py
35
+ - taskledger/storage/artifact_policy.py
36
+ - taskledger/storage/project_config.py
37
+ - tests/test_agent_command_logging.py
38
+ - tests/test_artifact_policy.py
39
+ - tests/test_config_cli.py
40
+ - tests/test_doctor.py
41
+ - tests/test_project_root_config.py
42
+ - tests/test_sync_git.py
43
+ - tests/test_taskledger_v2_exchange.py
44
+ - tests/test_validation_command.py
45
+ issues: []
46
+ prs: []
47
+ sources:
48
+ - git:562fc8796f821e312877f0c5b2aa09f5daddb138
49
+ contributors: []
50
+ breaking: false
51
+ internal: false
52
+ order: 1
53
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 4
7
+ version: v0.6.7
8
+ status: released
9
+ history_state: curated
10
+ title: Release v0.6.7
11
+ released_at: "2026-09-09"
12
+ previous_version: v0.6.6
13
+ cancel_reason: null
14
+ superseded_by: null
15
+ changelog_file: null
16
+ boundary_ref: null
17
+ source_refs: []
18
+ source_count: null
19
+ entry_count: 1
20
+ artifact_count: 0
21
+ git_base_ref: v0.6.6
22
+ git_base_sha: f7c915cf9d515ab1c15bdffeb73162340d7534df
23
+ git_head_ref: HEAD
24
+ git_head_sha: 562fc8796f821e312877f0c5b2aa09f5daddb138
25
+ git_range: f7c915cf9d515ab1c15bdffeb73162340d7534df..562fc8796f821e312877f0c5b2aa09f5daddb138
26
+ git_commit_count: 1
27
+ ---
@@ -0,0 +1,79 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 2
6
+ release_version: v0.6.8
7
+ git_base_ref: v0.6.7
8
+ git_base_sha: fa5b2b7720d3f05530e32e8389b7286e6fb186b1
9
+ git_head_ref: HEAD
10
+ git_head_sha: b5677429bc9b8209d918456cfb6a30fd11ce4970
11
+ git_range: fa5b2b7720d3f05530e32e8389b7286e6fb186b1..b5677429bc9b8209d918456cfb6a30fd11ce4970
12
+ commit_count: 1
13
+ rows:
14
+ - sha: b5677429bc9b8209d918456cfb6a30fd11ce4970
15
+ source_ref: git:b5677429bc9b8209d918456cfb6a30fd11ce4970
16
+ short_sha: b567742
17
+ changed_paths:
18
+ - docs/command_contract.md
19
+ - docs/full_task_cycle.md
20
+ - skills/taskledger/SKILL.md
21
+ - taskledger/cli_validate.py
22
+ - taskledger/domain/check.py
23
+ - taskledger/domain/sidecars.py
24
+ - taskledger/services/check_reuse.py
25
+ - taskledger/services/check_tracking.py
26
+ - taskledger/services/doctor_checks/task_checks.py
27
+ - taskledger/services/handoff.py
28
+ - taskledger/services/implementation_flow.py
29
+ - taskledger/services/tasks.py
30
+ - taskledger/services/validation_flow.py
31
+ - taskledger/services/workflow_guidance.py
32
+ - tests/test_actor_resolution.py
33
+ - tests/test_check_reuse.py
34
+ - tests/test_check_reuse_context.py
35
+ - tests/test_doctor.py
36
+ - tests/test_implementation_checks.py
37
+ - tests/test_models_v1_schema.py
38
+ stats:
39
+ files_changed: 0
40
+ insertions: 841
41
+ deletions: 20
42
+ inspected: true
43
+ inspected_paths:
44
+ - docs/command_contract.md
45
+ - docs/full_task_cycle.md
46
+ - skills/taskledger/SKILL.md
47
+ - taskledger/cli_validate.py
48
+ - taskledger/domain/check.py
49
+ - taskledger/domain/sidecars.py
50
+ - taskledger/services/check_reuse.py
51
+ - taskledger/services/check_tracking.py
52
+ - taskledger/services/doctor_checks/task_checks.py
53
+ - taskledger/services/handoff.py
54
+ - taskledger/services/implementation_flow.py
55
+ - taskledger/services/tasks.py
56
+ - taskledger/services/validation_flow.py
57
+ - taskledger/services/workflow_guidance.py
58
+ - tests/test_actor_resolution.py
59
+ - tests/test_check_reuse.py
60
+ - tests/test_check_reuse_context.py
61
+ - tests/test_doctor.py
62
+ - tests/test_implementation_checks.py
63
+ - tests/test_models_v1_schema.py
64
+ observed_behavior:
65
+ Passing implementation command checks now record workspace snapshot
66
+ provenance, and validators can explicitly reuse those checks only when the implementation
67
+ and current workspace snapshots match exactly. Validation records the reused check
68
+ reference, while handoff context identifies reusable, stale, and unknown provenance
69
+ checks.
70
+ public_impact: public
71
+ decision: accepted
72
+ stale: false
73
+ evidence_subject:
74
+ "feat: improved implementation check handling to reduce amount
75
+ of tests needed for verification"
76
+ target_entry_key: implementation-check-evidence-reuse
77
+ notes:
78
+ Reviewed the implementation, validation, handoff, CLI, documentation, and
79
+ focused regression tests in this commit.
@@ -0,0 +1,31 @@
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.8
9
+ kind: added
10
+ summary:
11
+ Added explicit reuse of passing implementation checks as validation evidence
12
+ when final and current workspace snapshots match
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:b5677429bc9b8209d918456cfb6a30fd11ce4970
18
+ paths:
19
+ - taskledger/cli_validate.py
20
+ - taskledger/services/check_reuse.py
21
+ - taskledger/services/validation_flow.py
22
+ - taskledger/services/handoff.py
23
+ - docs/command_contract.md
24
+ issues: []
25
+ prs: []
26
+ sources: []
27
+ contributors: []
28
+ breaking: false
29
+ internal: false
30
+ order: 1
31
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 3
7
+ version: v0.6.8
8
+ status: planned
9
+ history_state: curated
10
+ title: Release v0.6.8
11
+ released_at: null
12
+ previous_version: v0.6.7
13
+ cancel_reason: null
14
+ superseded_by: null
15
+ changelog_file: null
16
+ boundary_ref: null
17
+ source_refs: []
18
+ source_count: null
19
+ entry_count: 1
20
+ artifact_count: 0
21
+ git_base_ref: v0.6.7
22
+ git_base_sha: fa5b2b7720d3f05530e32e8389b7286e6fb186b1
23
+ git_head_ref: HEAD
24
+ git_head_sha: b5677429bc9b8209d918456cfb6a30fd11ce4970
25
+ git_range: fa5b2b7720d3f05530e32e8389b7286e6fb186b1..b5677429bc9b8209d918456cfb6a30fd11ce4970
26
+ git_commit_count: 1
27
+ ---
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskledger
3
- Version: 0.6.6
3
+ Version: 0.6.8
4
4
  Summary: Durable project-state storage and CLI for coding workflows
5
5
  Author: Taskledger Contributors
6
6
  Maintainer: Holger Nahrstaedt
@@ -837,6 +837,12 @@ Import safety still relies on `project_uuid`, not the name/slug.
837
837
  - `--no-include-bodies` strips record body text (`body` / `context_body`) from exported payloads.
838
838
  - `--include-run-artifacts` embeds task and agent-log artifact files under `artifacts/` in the archive.
839
839
 
840
+ ## Artifact file-size policy
841
+
842
+ Taskledger-owned artifact files are bounded to prevent command output from creating very large ledger blobs. The default and hard ceiling is 20,000,000 bytes per artifact; configure a lower `artifact_max_bytes` value when needed. Oversized command evidence keeps a UTF-8-safe head and tail with an explicit truncation marker, while command execution and exit-code semantics remain unchanged.
843
+
844
+ Archive import/export applies the same policy, and `taskledger doctor` reports legacy oversized artifacts without reading their contents. `taskledger sync git push` performs a preflight before committing or pushing. Taskledger does not use Git LFS or rewrite Git history; repair existing blobs separately.
845
+
840
846
  Cross-machine imports preserve durable task/run data, but imported runtime locks
841
847
  are quarantined by default. After importing an in-progress implementation,
842
848
  run:
@@ -784,6 +784,12 @@ Import safety still relies on `project_uuid`, not the name/slug.
784
784
  - `--no-include-bodies` strips record body text (`body` / `context_body`) from exported payloads.
785
785
  - `--include-run-artifacts` embeds task and agent-log artifact files under `artifacts/` in the archive.
786
786
 
787
+ ## Artifact file-size policy
788
+
789
+ Taskledger-owned artifact files are bounded to prevent command output from creating very large ledger blobs. The default and hard ceiling is 20,000,000 bytes per artifact; configure a lower `artifact_max_bytes` value when needed. Oversized command evidence keeps a UTF-8-safe head and tail with an explicit truncation marker, while command execution and exit-code semantics remain unchanged.
790
+
791
+ Archive import/export applies the same policy, and `taskledger doctor` reports legacy oversized artifacts without reading their contents. `taskledger sync git push` performs a preflight before committing or pushing. Taskledger does not use Git LFS or rewrite Git history; repair existing blobs separately.
792
+
787
793
  Cross-machine imports preserve durable task/run data, but imported runtime locks
788
794
  are quarantined by default. After importing an in-progress implementation,
789
795
  run:
@@ -2,6 +2,22 @@
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.8] - Unreleased
6
+
7
+ ### Added
8
+
9
+ - Added explicit reuse of passing implementation checks as validation evidence when final and current workspace snapshots match
10
+
11
+ <!-- generated by releaseledger -->
12
+
13
+ ## [v0.6.7] - 2026-09-09
14
+
15
+ ### Added
16
+
17
+ - Added configurable artifact limits with UTF-8-safe truncation across command evidence, archives, doctor, and Git sync
18
+
19
+ <!-- generated by releaseledger -->
20
+
5
21
  ## [v0.6.6] - 2026-09-04
6
22
 
7
23
  ### Added
@@ -178,6 +178,8 @@ Rules:
178
178
 
179
179
  - `validate command -- ...` records managed validation command evidence during an active validation run.
180
180
  - A non-zero validation command does not create a `ValidationCheck`; explicitly classify and record criteria with `validate check`.
181
+ - A passing implementation command may be adopted explicitly as validation evidence with `validate check --from-implementation-check CHECK_ID` only when Taskledger reports an exact final/current workspace snapshot match.
182
+ - This is evidence reuse, not a generic command cache. Rerun validation when fresh execution or external runtime state matters.
181
183
 
182
184
  ## Archive import lock policy
183
185
 
@@ -451,6 +453,7 @@ shell. They execute the child from the CLI invocation directory, or the explicit
451
453
  `--root` directory, even when Taskledger discovers an ancestor workspace root for
452
454
  ledger state, artifacts, and logs.
453
455
 
456
+ Managed command artifacts are bounded by the project `artifact_max_bytes` setting, defaulting to the 20,000,000-byte hard ceiling. Oversized persisted evidence is marked and retains both its beginning and end; only the durable artifact is truncated, not the child command's exit code or CLI stdout/stderr contract.
454
457
  `validate command` uses the same managed execution behavior during an active validation run, but records command evidence only. It never automatically maps a non-zero child exit to a criterion result.
455
458
 
456
459
  Managed commands preserve the caller environment, but resolve child executable lookup
@@ -265,6 +265,13 @@ taskledger validate finish --result passed --summary "Parser fix validated with
265
265
  ```
266
266
 
267
267
  Use `taskledger validate command -- ...` to preserve validation command cwd, output, exit status, and transcript evidence. A non-zero command is not automatically a failed acceptance criterion. If the command is a malformed probe or setup failure, correct it and rerun before recording criterion status. Only record `fail` after the target behavior was evaluated and failed.
268
+ When implementation checks have exact tested-state provenance, validation context and status may identify them as reusable. Record that decision explicitly, for example:
269
+
270
+ ```bash
271
+ taskledger validate check --criterion ac-0001 --status pass --from-implementation-check check-0002 --details "Reused passing implementation evidence on the exact current snapshot."
272
+ ```
273
+
274
+ `validate command` always executes its child command normally; it does not silently reuse implementation results.
268
275
 
269
276
  ### If validation finds a bug
270
277
 
@@ -81,6 +81,10 @@ report project-local vs outside-project dirty paths. `sync git push` commits
81
81
  repository-wide changes by design to match the standard Git workflow. Use
82
82
  `sync git cd` for advanced manual inspection or conflict resolution.
83
83
 
84
+ ## Artifact preflight
85
+
86
+ `taskledger sync git push` checks Taskledger-owned artifact files before staging or committing. It refuses any existing file over the configured `artifact_max_bytes` limit and reports the paths, sizes, limit, and `taskledger doctor` remediation. Plain `git push` remains outside Taskledger's control, and Taskledger does not rewrite history or use Git LFS.
87
+
84
88
  For manual conflict resolution or debugging:
85
89
 
86
90
  ```bash
@@ -13,6 +13,12 @@ machines and harnesses.
13
13
  \- `project.ledger_ref` (exported ledger)
14
14
  - Optional run artifacts under `artifacts/` when `--include-run-artifacts` is set.
15
15
 
16
+ ## Artifact file-size policy
17
+
18
+ Taskledger-owned artifact files default to a 20,000,000-byte hard ceiling. Projects may lower this with `artifact_max_bytes`, but cannot configure an unlimited or larger value. Oversized command output is stored as a UTF-8-safe head/tail excerpt with an explicit byte-count marker; the managed command's output and exit code are unchanged.
19
+
20
+ Import/export enforce the same limit. Run `taskledger doctor` to find existing oversized files; `taskledger sync git push` refuses them before creating a commit. This does not rewrite existing Git history or use Git LFS.
21
+
16
22
  ## Filename policy
17
23
 
18
24
  When no output path is passed to `taskledger export`, taskledger writes into
@@ -762,6 +762,9 @@ Export include flags are content-affecting:
762
762
  - `--no-include-bodies` removes record body fields from the exported payload.
763
763
  - `--include-run-artifacts` embeds artifact files under `artifacts/` in the archive.
764
764
 
765
+ ## Artifact file-size policy
766
+
767
+ Taskledger-owned artifact files are limited to 20,000,000 bytes by default and may only be lowered with `artifact_max_bytes`. Oversized command evidence retains its head and tail and includes a deterministic truncation marker; it does not change command execution or exit-code behavior. Import/export, doctor, and Taskledger-managed Git push enforce the same policy. Existing Git history is not rewritten and Git LFS is not used.
765
768
  Cross-machine imports preserve durable task/run records but quarantine imported
766
769
  runtime locks by default. For an imported in-progress implementation, run:
767
770
 
@@ -357,6 +357,7 @@ linked-file drift checks.
357
357
  2. `taskledger validate start`
358
358
  3. Check `taskledger validate status` to see current validation state and blockers.
359
359
  4. Run verification with `taskledger validate command -- ...` whenever practical.
360
+ - If a passing implementation check is reported reusable for the exact current snapshot, a validator may cite it explicitly with `--from-implementation-check CHECK_ID` instead of rerunning that command.
360
361
  5. Record criterion results: `taskledger validate check --criterion ac-0001 --status pass|fail|warn|not_run --evidence "..."`
361
362
  6. Optionally waive criteria with user authority: `taskledger validate waive --criterion ac-0001 --reason "..."`.
362
363
  7. Check `taskledger validate status` again to confirm all mandatory gates pass.
@@ -397,6 +398,7 @@ not interpret those references.
397
398
  taskledger link add --url specs/behavior/features/checkout/payment.feature --label "behavior spec"
398
399
  taskledger file link specs/behavior/features/checkout/payment.feature --kind doc --label "behavior spec"
399
400
  taskledger validate check --criterion ac-0001 --status pass --evidence "pytest tests/test_checkout_payment.py::test_payment_flow"
401
+ taskledger validate check --criterion ac-0001 --status pass --from-implementation-check check-0002 --details "Reused exact-snapshot implementation evidence"
400
402
  ```
401
403
 
402
404
  ## Required logging
@@ -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.6'
22
- __version_tuple__ = version_tuple = (0, 6, 6)
21
+ __version__ = version = '0.6.8'
22
+ __version_tuple__ = version_tuple = (0, 6, 8)
23
23
 
24
- __commit_id__ = commit_id = 'gf7c915cf9'
24
+ __commit_id__ = commit_id = 'g4f9cd16f0'
@@ -116,6 +116,13 @@ _CONFIG_KEY_HELP: tuple[ConfigKeyHelp, ...] = (
116
116
  "boolean",
117
117
  default_value=_DEFAULT_CONFIG.default_save_run_reports,
118
118
  ),
119
+ ConfigKeyHelp(
120
+ "artifact_max_bytes",
121
+ "Maximum stored size of a Taskledger-owned artifact file; may only lower "
122
+ "the hard ceiling.",
123
+ "integer",
124
+ default_value=_DEFAULT_CONFIG.artifact_max_bytes,
125
+ ),
119
126
  ConfigKeyHelp(
120
127
  "default_source_max_chars",
121
128
  "Per-source character budget for context composition.",
@@ -601,6 +608,11 @@ def config_set(workspace_root: Path, *, key: str, value_text: str) -> dict[str,
601
608
  target[segment] = table()
602
609
  target = target[segment]
603
610
  target[segments[-1]] = value
611
+ from taskledger.storage.project_config import _validate_project_config_overrides
612
+
613
+ _validate_project_config_overrides(
614
+ tomllib.loads(dumps(document)), context.config_path
615
+ )
604
616
  atomic_write_text(context.config_path, dumps(document))
605
617
  after = config_get(workspace_root, key=key)["value"]
606
618
  else:
@@ -248,6 +248,7 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
248
248
  details: str | None,
249
249
  evidence: list[str] | None,
250
250
  task_ref: str | None,
251
+ implementation_check_refs: list[str] | None,
251
252
  ) -> None:
252
253
  state = cli_state_from_context(ctx)
253
254
  try:
@@ -260,6 +261,7 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
260
261
  status=status,
261
262
  details=details,
262
263
  evidence=tuple(evidence or ()),
264
+ implementation_check_refs=tuple(implementation_check_refs or ()),
263
265
  )
264
266
  except LaunchError as exc:
265
267
  emit_error(ctx, exc)
@@ -272,6 +274,13 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
272
274
  criterion: Annotated[str, typer.Option("--criterion")],
273
275
  status: Annotated[str, typer.Option("--status")] = "pass",
274
276
  evidence: Annotated[list[str] | None, typer.Option("--evidence")] = None,
277
+ implementation_check_refs: Annotated[
278
+ list[str] | None,
279
+ typer.Option(
280
+ "--from-implementation-check",
281
+ help="Explicitly adopt reusable implementation check evidence.",
282
+ ),
283
+ ] = None,
275
284
  name: Annotated[str | None, typer.Option("--name")] = None,
276
285
  details: Annotated[str | None, typer.Option("--details")] = None,
277
286
  task_ref: TaskOption = None,
@@ -284,6 +293,7 @@ def register_validate_v2_commands(app: typer.Typer) -> None:
284
293
  details=details,
285
294
  evidence=evidence,
286
295
  task_ref=task_ref,
296
+ implementation_check_refs=implementation_check_refs,
287
297
  )
288
298
 
289
299
  @app.command("finish")
@@ -30,6 +30,12 @@ class ImplementationCheckRecord:
30
30
  command: str
31
31
  argv: tuple[str, ...] = ()
32
32
  exit_code: int | None = None
33
+ cwd: str | None = None
34
+ workspace_git_commit: str | None = None
35
+ workspace_content_hash: str | None = None
36
+ workspace_paths_hash: str | None = None
37
+ workspace_entry_count: int | None = None
38
+ workspace_snapshot_format: str | None = None
33
39
  status: Literal["passed", "failed", "unknown"] = "unknown"
34
40
  category: Literal[
35
41
  "test", "lint", "format", "typecheck", "build", "security", "other"
@@ -54,6 +60,12 @@ class ImplementationCheckRecord:
54
60
  "command": self.command,
55
61
  "argv": list(self.argv),
56
62
  "exit_code": self.exit_code,
63
+ "cwd": self.cwd,
64
+ "workspace_git_commit": self.workspace_git_commit,
65
+ "workspace_content_hash": self.workspace_content_hash,
66
+ "workspace_paths_hash": self.workspace_paths_hash,
67
+ "workspace_entry_count": self.workspace_entry_count,
68
+ "workspace_snapshot_format": self.workspace_snapshot_format,
57
69
  "status": self.status,
58
70
  "category": self.category,
59
71
  "summary": self.summary,
@@ -86,6 +98,14 @@ class ImplementationCheckRecord:
86
98
  timestamp=_optional_string(data.get("timestamp")) or utc_now_iso(),
87
99
  command=_string_value(data, "command"),
88
100
  argv=_string_tuple(data.get("argv")),
101
+ cwd=_optional_string(data.get("cwd")),
102
+ workspace_git_commit=_optional_string(data.get("workspace_git_commit")),
103
+ workspace_content_hash=_optional_string(data.get("workspace_content_hash")),
104
+ workspace_paths_hash=_optional_string(data.get("workspace_paths_hash")),
105
+ workspace_entry_count=_optional_int(data.get("workspace_entry_count")),
106
+ workspace_snapshot_format=_optional_string(
107
+ data.get("workspace_snapshot_format")
108
+ ),
89
109
  exit_code=_optional_int(data.get("exit_code")),
90
110
  status=cast(Literal["passed", "failed", "unknown"], status),
91
111
  category=cast(
@@ -386,6 +386,7 @@ class ValidationCheck:
386
386
  status: ValidationCheckStatus = "pass"
387
387
  details: str | None = None
388
388
  evidence: tuple[str, ...] = ()
389
+ implementation_check_refs: tuple[str, ...] = ()
389
390
  waiver: CriterionWaiver | None = None
390
391
 
391
392
  def to_dict(self) -> dict[str, object]:
@@ -397,6 +398,7 @@ class ValidationCheck:
397
398
  "details": self.details,
398
399
  "evidence": list(self.evidence),
399
400
  "waiver": self.waiver.to_dict() if self.waiver is not None else None,
401
+ "implementation_check_refs": list(self.implementation_check_refs),
400
402
  }
401
403
  return payload
402
404
 
@@ -423,6 +425,9 @@ class ValidationCheck:
423
425
  status=status,
424
426
  details=_optional_string(data.get("details")),
425
427
  evidence=_string_tuple(data.get("evidence")),
428
+ implementation_check_refs=_string_tuple(
429
+ data.get("implementation_check_refs")
430
+ ),
426
431
  waiver=CriterionWaiver.from_dict(data.get("waiver")),
427
432
  )
428
433