taskledger 0.6.1__tar.gz → 0.6.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (569) hide show
  1. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +9 -0
  2. taskledger-0.6.2/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0001.md +27 -0
  3. taskledger-0.6.2/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0002.md +27 -0
  4. taskledger-0.6.2/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0003.md +27 -0
  5. taskledger-0.6.2/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0004.md +25 -0
  6. taskledger-0.6.2/.ledger/releaseledger/data/ledgers/main/releases/v0.6.2/release.md +26 -0
  7. {taskledger-0.6.1/taskledger.egg-info → taskledger-0.6.2}/PKG-INFO +1 -1
  8. {taskledger-0.6.1 → taskledger-0.6.2}/docs/changelog.md +17 -0
  9. {taskledger-0.6.1 → taskledger-0.6.2}/docs/command_contract.md +13 -4
  10. {taskledger-0.6.1 → taskledger-0.6.2}/docs/sync.md +9 -0
  11. {taskledger-0.6.1 → taskledger-0.6.2}/skills/taskledger/SKILL.md +7 -1
  12. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/_version.py +3 -3
  13. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/storage.py +17 -0
  14. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_misc.py +5 -1
  15. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/errors.py +7 -0
  16. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/tasks.py +7 -1
  17. taskledger-0.6.2/taskledger/storage/index_cache.py +199 -0
  18. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/ledgercore_backend.py +11 -1
  19. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/project_context.py +22 -1
  20. {taskledger-0.6.1 → taskledger-0.6.2/taskledger.egg-info}/PKG-INFO +1 -1
  21. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger.egg-info/SOURCES.txt +7 -0
  22. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger.egg-info/scm_file_list.json +7 -0
  23. taskledger-0.6.2/taskledger.egg-info/scm_version.json +8 -0
  24. taskledger-0.6.2/tests/test_indexes_cache_recovery.py +213 -0
  25. taskledger-0.6.1/taskledger.egg-info/scm_version.json +0 -8
  26. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/archive/records/building_blocks/block-0083.md +0 -0
  27. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/archive/records/concepts/concept-0081.md +0 -0
  28. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/archive/records/runtime/runtime-0076.md +0 -0
  29. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/archive/records/runtime/runtime-0084.md +0 -0
  30. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/document-state.json +0 -0
  31. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0001.md +0 -0
  32. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0002.md +0 -0
  33. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0003.md +0 -0
  34. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0004.md +0 -0
  35. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0005.md +0 -0
  36. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0006.md +0 -0
  37. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0007.md +0 -0
  38. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0008.md +0 -0
  39. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0009.md +0 -0
  40. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0010.md +0 -0
  41. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0011.md +0 -0
  42. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/profiles/arc42/sections/content-0012.md +0 -0
  43. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/building_blocks/block-0029.md +0 -0
  44. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/building_blocks/block-0030.md +0 -0
  45. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/building_blocks/block-0031.md +0 -0
  46. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/building_blocks/block-0032.md +0 -0
  47. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/building_blocks/block-0033.md +0 -0
  48. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/building_blocks/block-0034.md +0 -0
  49. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0040.md +0 -0
  50. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0041.md +0 -0
  51. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0042.md +0 -0
  52. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0043.md +0 -0
  53. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0044.md +0 -0
  54. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0045.md +0 -0
  55. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0082.md +0 -0
  56. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0085.md +0 -0
  57. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/concepts/concept-0086.md +0 -0
  58. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/constraints/constraint-0016.md +0 -0
  59. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/constraints/constraint-0017.md +0 -0
  60. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/constraints/constraint-0018.md +0 -0
  61. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/constraints/constraint-0019.md +0 -0
  62. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/contexts/context-0020.md +0 -0
  63. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/contexts/context-0021.md +0 -0
  64. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/contexts/context-0022.md +0 -0
  65. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/contexts/context-0023.md +0 -0
  66. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/decisions/adr-0046.md +0 -0
  67. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/decisions/adr-0047.md +0 -0
  68. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/decisions/adr-0048.md +0 -0
  69. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/decisions/adr-0049.md +0 -0
  70. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/decisions/adr-0050.md +0 -0
  71. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/decisions/adr-0051.md +0 -0
  72. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/deployment/deploy-0039.md +0 -0
  73. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0061.md +0 -0
  74. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0062.md +0 -0
  75. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0063.md +0 -0
  76. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0064.md +0 -0
  77. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0065.md +0 -0
  78. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0066.md +0 -0
  79. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0067.md +0 -0
  80. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0068.md +0 -0
  81. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0069.md +0 -0
  82. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0070.md +0 -0
  83. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0071.md +0 -0
  84. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0072.md +0 -0
  85. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/glossary/glossary-0073.md +0 -0
  86. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/quality_requirements/quality-0052.md +0 -0
  87. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/quality_requirements/quality-0053.md +0 -0
  88. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/quality_requirements/quality-0054.md +0 -0
  89. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/quality_requirements/quality-0055.md +0 -0
  90. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/quality_requirements/quality-0056.md +0 -0
  91. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/requirements/content-0013.md +0 -0
  92. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/requirements/content-0014.md +0 -0
  93. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/requirements/content-0015.md +0 -0
  94. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/risks/risk-0057.md +0 -0
  95. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/risks/risk-0058.md +0 -0
  96. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/risks/risk-0059.md +0 -0
  97. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/risks/risk-0060.md +0 -0
  98. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0035.md +0 -0
  99. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0036.md +0 -0
  100. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0037.md +0 -0
  101. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0038.md +0 -0
  102. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0074.md +0 -0
  103. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0075.md +0 -0
  104. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0077.md +0 -0
  105. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0078.md +0 -0
  106. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0087.md +0 -0
  107. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/runtime/runtime-0088.md +0 -0
  108. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/stakeholders/content-0079.md +0 -0
  109. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/stakeholders/content-0080.md +0 -0
  110. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/strategy/strategy-0024.md +0 -0
  111. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/strategy/strategy-0025.md +0 -0
  112. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/strategy/strategy-0026.md +0 -0
  113. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/strategy/strategy-0027.md +0 -0
  114. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/records/strategy/strategy-0028.md +0 -0
  115. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/source-state.json +0 -0
  116. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger/storage.yaml +0 -0
  117. {taskledger-0.6.1 → taskledger-0.6.2}/.archledger.toml +0 -0
  118. {taskledger-0.6.1 → taskledger-0.6.2}/.codecrate.toml +0 -0
  119. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-api-md-9eddf4dc.yaml +0 -0
  120. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-architecture-taskledger-split-md-63034c0d.yaml +0 -0
  121. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-command-contract-md-abe6f6d9.yaml +0 -0
  122. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-full-task-cycle-md-721181f0.yaml +0 -0
  123. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-multi-repo-md-929e47a9.yaml +0 -0
  124. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-public-surface-md-c1b8772f.yaml +0 -0
  125. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-service-boundary-whitelist-md-800b76f5.yaml +0 -0
  126. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-sync-md-a29422f3.yaml +0 -0
  127. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-transfer-md-f8532303.yaml +0 -0
  128. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/docs/docs-usage-md-72376d0b.yaml +0 -0
  129. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/scan.yaml +0 -0
  130. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/source-index.json +0 -0
  131. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger/storage.yaml +0 -0
  132. {taskledger-0.6.1 → taskledger-0.6.2}/.documentledger.toml +0 -0
  133. {taskledger-0.6.1 → taskledger-0.6.2}/.github/workflows/codecov.yml +0 -0
  134. {taskledger-0.6.1 → taskledger-0.6.2}/.github/workflows/pre-commit.yml +0 -0
  135. {taskledger-0.6.1 → taskledger-0.6.2}/.github/workflows/python-publish.yml +0 -0
  136. {taskledger-0.6.1 → taskledger-0.6.2}/.github/workflows/tests.yml +0 -0
  137. {taskledger-0.6.1 → taskledger-0.6.2}/.gitignore +0 -0
  138. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/ledger.toml +0 -0
  139. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/.ledger-project.toml +0 -0
  140. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/config.toml +0 -0
  141. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
  142. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0001.md +0 -0
  143. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0002.md +0 -0
  144. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0003.md +0 -0
  145. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0004.md +0 -0
  146. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0005.md +0 -0
  147. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0006.md +0 -0
  148. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0007.md +0 -0
  149. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0008.md +0 -0
  150. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0009.md +0 -0
  151. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0010.md +0 -0
  152. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0011.md +0 -0
  153. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0012.md +0 -0
  154. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0013.md +0 -0
  155. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0014.md +0 -0
  156. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0015.md +0 -0
  157. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0016.md +0 -0
  158. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0017.md +0 -0
  159. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0018.md +0 -0
  160. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0019.md +0 -0
  161. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0020.md +0 -0
  162. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0021.md +0 -0
  163. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0022.md +0 -0
  164. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/entries/entry-0023.md +0 -0
  165. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.0/release.md +0 -0
  166. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0001.md +0 -0
  167. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0002.md +0 -0
  168. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0003.md +0 -0
  169. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0004.md +0 -0
  170. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0005.md +0 -0
  171. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.6.1/release.md +0 -0
  172. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/releaseledger/write.lock +0 -0
  173. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/task/config.toml +0 -0
  174. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/taskledger/.ledger-project.toml +0 -0
  175. {taskledger-0.6.1 → taskledger-0.6.2}/.ledger/taskledger/config.toml +0 -0
  176. {taskledger-0.6.1 → taskledger-0.6.2}/.planledger.toml +0 -0
  177. {taskledger-0.6.1 → taskledger-0.6.2}/.pre-commit-config.yaml +0 -0
  178. {taskledger-0.6.1 → taskledger-0.6.2}/.readthedocs.yaml +0 -0
  179. {taskledger-0.6.1 → taskledger-0.6.2}/.ruff.toml +0 -0
  180. {taskledger-0.6.1 → taskledger-0.6.2}/AGENTS.md +0 -0
  181. {taskledger-0.6.1 → taskledger-0.6.2}/API.md +0 -0
  182. {taskledger-0.6.1 → taskledger-0.6.2}/ARCHITECTURE.md +0 -0
  183. {taskledger-0.6.1 → taskledger-0.6.2}/LICENSE +0 -0
  184. {taskledger-0.6.1 → taskledger-0.6.2}/Makefile +0 -0
  185. {taskledger-0.6.1 → taskledger-0.6.2}/README.md +0 -0
  186. {taskledger-0.6.1 → taskledger-0.6.2}/docs/Makefile +0 -0
  187. {taskledger-0.6.1 → taskledger-0.6.2}/docs/api.md +0 -0
  188. {taskledger-0.6.1 → taskledger-0.6.2}/docs/architecture_taskledger_split.md +0 -0
  189. {taskledger-0.6.1 → taskledger-0.6.2}/docs/build.sh +0 -0
  190. {taskledger-0.6.1 → taskledger-0.6.2}/docs/conf.py +0 -0
  191. {taskledger-0.6.1 → taskledger-0.6.2}/docs/documentation_freshness.md +0 -0
  192. {taskledger-0.6.1 → taskledger-0.6.2}/docs/full_task_cycle.md +0 -0
  193. {taskledger-0.6.1 → taskledger-0.6.2}/docs/index.md +0 -0
  194. {taskledger-0.6.1 → taskledger-0.6.2}/docs/multi_repo.md +0 -0
  195. {taskledger-0.6.1 → taskledger-0.6.2}/docs/public_surface.md +0 -0
  196. {taskledger-0.6.1 → taskledger-0.6.2}/docs/release_checklist.md +0 -0
  197. {taskledger-0.6.1 → taskledger-0.6.2}/docs/requirements.txt +0 -0
  198. {taskledger-0.6.1 → taskledger-0.6.2}/docs/service_boundary_whitelist.md +0 -0
  199. {taskledger-0.6.1 → taskledger-0.6.2}/docs/transfer.md +0 -0
  200. {taskledger-0.6.1 → taskledger-0.6.2}/docs/usage.md +0 -0
  201. {taskledger-0.6.1 → taskledger-0.6.2}/pyproject.toml +0 -0
  202. {taskledger-0.6.1 → taskledger-0.6.2}/requirements/manifest.json +0 -0
  203. {taskledger-0.6.1 → taskledger-0.6.2}/scripts/find_code_clones.py +0 -0
  204. {taskledger-0.6.1 → taskledger-0.6.2}/setup.cfg +0 -0
  205. {taskledger-0.6.1 → taskledger-0.6.2}/specmason.toml +0 -0
  206. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/README.md +0 -0
  207. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/UNMAPPED_TESTS.md +0 -0
  208. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/evidence/.gitkeep +0 -0
  209. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/evidence/taskledger-test-feature-coverage.json +0 -0
  210. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/.gitkeep +0 -0
  211. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/active_task/active-task.feature +0 -0
  212. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/actor_harness_state/actor-harness-state.feature +0 -0
  213. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/actor_resolution/actor-resolution.feature +0 -0
  214. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/agent_command_logging/agent-command-logging.feature +0 -0
  215. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/agent_session_protocol/agent-session-protocol.feature +0 -0
  216. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/atomic_fast_io/atomic-fast-io.feature +0 -0
  217. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/cli_command_contract/cli-command-contract.feature +0 -0
  218. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/cli_import_resilience/cli-import-resilience.feature +0 -0
  219. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/code_reviews/code-reviews.feature +0 -0
  220. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/command_example_linter/command-example-linter.feature +0 -0
  221. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/command_inventory/command-inventory.feature +0 -0
  222. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/command_runner/command-runner.feature +0 -0
  223. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/compact_mutation_output/compact-mutation-output.feature +0 -0
  224. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/config_cli/config-cli.feature +0 -0
  225. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/delta_remaining_contracts/delta-remaining-contracts.feature +0 -0
  226. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/docs_and_skill/docs-and-skill.feature +0 -0
  227. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/doctor/doctor.feature +0 -0
  228. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/domain_policies/domain-policies.feature +0 -0
  229. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/event_logging_config/event-logging-config.feature +0 -0
  230. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/events/events.feature +0 -0
  231. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/file_link_snapshots/file-link-snapshots.feature +0 -0
  232. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/find_code_clones_script/find-code-clones-script.feature +0 -0
  233. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/handoff_lifecycle/handoff-lifecycle.feature +0 -0
  234. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/help_subprocess/help-subprocess.feature +0 -0
  235. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/implementation_change_scan/implementation-change-scan.feature +0 -0
  236. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/implementation_checks/implementation-checks.feature +0 -0
  237. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/json_contracts/json-contracts.feature +0 -0
  238. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/legacy_cleanup_contracts/legacy-cleanup-contracts.feature +0 -0
  239. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/lifecycle_policies/lifecycle-policies.feature +0 -0
  240. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/lock_diagnostics/lock-diagnostics.feature +0 -0
  241. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/locks_audit/locks-audit.feature +0 -0
  242. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/models_v1_schema/models-v1-schema.feature +0 -0
  243. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/monitor/monitor.feature +0 -0
  244. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/next_action_expired_lock/next-action-expired-lock.feature +0 -0
  245. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/no_log_feature/no-log-feature.feature +0 -0
  246. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/plan_approval_contract/plan-approval-contract.feature +0 -0
  247. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/plan_lint/plan-lint.feature +0 -0
  248. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/plan_review/plan-review.feature +0 -0
  249. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/plan_revision_workflow/plan-revision-workflow.feature +0 -0
  250. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/plan_todo_materialization/plan-todo-materialization.feature +0 -0
  251. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/project_root_config/project-root-config.feature +0 -0
  252. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/question_add_many/question-add-many.feature +0 -0
  253. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/question_filter_answers/question-filter-answers.feature +0 -0
  254. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/question_plan_regeneration/question-plan-regeneration.feature +0 -0
  255. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/ready_work/ready-work.feature +0 -0
  256. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/release_changelog/release-changelog.feature +0 -0
  257. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/search/search.feature +0 -0
  258. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/service_boundaries/service-boundaries.feature +0 -0
  259. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/services_dashboard/services-dashboard.feature +0 -0
  260. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/sidecar_collections/sidecar-collections.feature +0 -0
  261. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/storage_bundle_layout/storage-bundle-layout.feature +0 -0
  262. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/storage_common/storage-common.feature +0 -0
  263. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/storage_init/storage-init.feature +0 -0
  264. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/storage_migration/storage-migration.feature +0 -0
  265. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/storage_repos/storage-repos.feature +0 -0
  266. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/storage_sync/storage-sync.feature +0 -0
  267. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/sync_git/sync-git.feature +0 -0
  268. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/task_archive/archive.feature +0 -0
  269. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/task_events/events.feature +0 -0
  270. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/task_markdown_export/markdown-export.feature +0 -0
  271. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/task_report/report.feature +0 -0
  272. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/taskledger_branch_scoped_ledgers/taskledger-branch-scoped-ledgers.feature +0 -0
  273. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/taskledger_cli_api_parity/taskledger-cli-api-parity.feature +0 -0
  274. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/taskledger_v2_cli/taskledger-v2-cli.feature +0 -0
  275. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/taskledger_v2_exchange/taskledger-v2-exchange.feature +0 -0
  276. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/tasks_service_static/tasks-service-static.feature +0 -0
  277. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/todo_implementation_gate/todo-implementation-gate.feature +0 -0
  278. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/trace/trace.feature +0 -0
  279. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/tree_command/tree-command.feature +0 -0
  280. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/usage_cli/usage-cli.feature +0 -0
  281. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/worker_pipeline_cli/worker-pipeline-cli.feature +0 -0
  282. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/worker_pipeline_config/worker-pipeline-config.feature +0 -0
  283. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/worker_pipeline_context/worker-pipeline-context.feature +0 -0
  284. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/worker_pipeline_handoff/worker-pipeline-handoff.feature +0 -0
  285. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/worker_pipeline_plan_template/worker-pipeline-plan-template.feature +0 -0
  286. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/worker_pipeline_todos/worker-pipeline-todos.feature +0 -0
  287. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/features/workflow_guidance/workflow-guidance.feature +0 -0
  288. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/manifest.json +0 -0
  289. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/mappings/.gitkeep +0 -0
  290. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/mappings/intentional-unmapped.json +0 -0
  291. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/reports/specmason/.gitkeep +0 -0
  292. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/reports/specmason/coverage.json +0 -0
  293. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/reports/specmason/coverage.md +0 -0
  294. {taskledger-0.6.1 → taskledger-0.6.2}/specs/behavior/reports/specmason/mappings.json +0 -0
  295. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/__init__.py +0 -0
  296. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/__main__.py +0 -0
  297. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/__init__.py +0 -0
  298. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/config.py +0 -0
  299. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/handoff.py +0 -0
  300. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/introductions.py +0 -0
  301. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/locks.py +0 -0
  302. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/plans.py +0 -0
  303. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/project.py +0 -0
  304. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/questions.py +0 -0
  305. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/releases.py +0 -0
  306. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/repair.py +0 -0
  307. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/reviews.py +0 -0
  308. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/search.py +0 -0
  309. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/sync.py +0 -0
  310. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/task_runs.py +0 -0
  311. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/api/tasks.py +0 -0
  312. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli.py +0 -0
  313. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_actor.py +0 -0
  314. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_archive.py +0 -0
  315. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_common.py +0 -0
  316. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_config.py +0 -0
  317. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_help.py +0 -0
  318. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_implement.py +0 -0
  319. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_ledger.py +0 -0
  320. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_migrate.py +0 -0
  321. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_pipeline.py +0 -0
  322. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_plan.py +0 -0
  323. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_question.py +0 -0
  324. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_ref.py +0 -0
  325. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_release.py +0 -0
  326. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_review.py +0 -0
  327. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_runtime.py +0 -0
  328. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_storage.py +0 -0
  329. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_sync.py +0 -0
  330. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_task.py +0 -0
  331. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_trace.py +0 -0
  332. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/cli_validate.py +0 -0
  333. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/command_inventory.py +0 -0
  334. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/compat/__init__.py +0 -0
  335. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/compat/ledgercore.py +0 -0
  336. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/__init__.py +0 -0
  337. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/_model_utils.py +0 -0
  338. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/active_state.py +0 -0
  339. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/actor.py +0 -0
  340. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/change.py +0 -0
  341. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/check.py +0 -0
  342. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/event.py +0 -0
  343. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/handoff.py +0 -0
  344. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/lock.py +0 -0
  345. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/models.py +0 -0
  346. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/plan.py +0 -0
  347. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/policies.py +0 -0
  348. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/question.py +0 -0
  349. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/release.py +0 -0
  350. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/review.py +0 -0
  351. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/run.py +0 -0
  352. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/sidecars.py +0 -0
  353. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/states.py +0 -0
  354. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/domain/task.py +0 -0
  355. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/exchange.py +0 -0
  356. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/ids.py +0 -0
  357. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/launcher.py +0 -0
  358. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/migrations/__init__.py +0 -0
  359. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/migrations/hooks.py +0 -0
  360. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/py.typed +0 -0
  361. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/refs.py +0 -0
  362. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/search.py +0 -0
  363. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/__init__.py +0 -0
  364. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/actors.py +0 -0
  365. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/agent_logging.py +0 -0
  366. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/agent_transcripts.py +0 -0
  367. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/change_tracking.py +0 -0
  368. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/check_tracking.py +0 -0
  369. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/code_review.py +0 -0
  370. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/command_runner.py +0 -0
  371. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/dashboard.py +0 -0
  372. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/doctor.py +0 -0
  373. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/doctor_checks/migration_checks.py +0 -0
  374. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/doctor_checks/project_scan.py +0 -0
  375. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/doctor_checks/task_checks.py +0 -0
  376. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/event_logging.py +0 -0
  377. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/file_links.py +0 -0
  378. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/git_sync.py +0 -0
  379. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/git_utils.py +0 -0
  380. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/handoff.py +0 -0
  381. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/handoff_lifecycle.py +0 -0
  382. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/implementation_flow.py +0 -0
  383. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/lock_diagnostics.py +0 -0
  384. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/lock_inventory.py +0 -0
  385. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/monitor.py +0 -0
  386. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/navigation.py +0 -0
  387. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/next_action_logic.py +0 -0
  388. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/next_action_model.py +0 -0
  389. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/next_action_payload.py +0 -0
  390. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/phase5_lock_transfer.py +0 -0
  391. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/plan_editing.py +0 -0
  392. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/plan_hash.py +0 -0
  393. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/plan_input.py +0 -0
  394. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/plan_lint.py +0 -0
  395. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/plan_materialization.py +0 -0
  396. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/plan_review.py +0 -0
  397. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/planning_flow.py +0 -0
  398. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/ready_work.py +0 -0
  399. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/releases.py +0 -0
  400. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/run_store.py +0 -0
  401. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/runtime_info.py +0 -0
  402. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/storage_locations.py +0 -0
  403. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/storage_migration.py +0 -0
  404. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_archive.py +0 -0
  405. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_collections.py +0 -0
  406. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_events.py +0 -0
  407. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_export.py +0 -0
  408. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_lifecycle.py +0 -0
  409. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_queries.py +0 -0
  410. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_repair.py +0 -0
  411. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/task_reports.py +0 -0
  412. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/trace.py +0 -0
  413. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/tree.py +0 -0
  414. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/usage.py +0 -0
  415. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/validation.py +0 -0
  416. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/validation_flow.py +0 -0
  417. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/worker_context.py +0 -0
  418. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/worker_pipeline.py +0 -0
  419. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/workflow_guidance.py +0 -0
  420. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/services/workspace_snapshot.py +0 -0
  421. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/__init__.py +0 -0
  422. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/agent_logs.py +0 -0
  423. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/atomic.py +0 -0
  424. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/common.py +0 -0
  425. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/events.py +0 -0
  426. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/frontmatter.py +0 -0
  427. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/indexes.py +0 -0
  428. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/init.py +0 -0
  429. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/layout_migration.py +0 -0
  430. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/ledger_config.py +0 -0
  431. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/ledger_local_config.py +0 -0
  432. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/ledger_manifest.py +0 -0
  433. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/locks.py +0 -0
  434. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/meta.py +0 -0
  435. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/migrations.py +0 -0
  436. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/paths.py +0 -0
  437. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/project_binding.py +0 -0
  438. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/project_config.py +0 -0
  439. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/project_identity.py +0 -0
  440. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/repos.py +0 -0
  441. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/sidecar_index.py +0 -0
  442. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/task_ids.py +0 -0
  443. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/task_index.py +0 -0
  444. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/task_store.py +0 -0
  445. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/taskledger_migration.py +0 -0
  446. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/toml_edit.py +0 -0
  447. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/worker_pipeline_config.py +0 -0
  448. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/storage/yaml_store.py +0 -0
  449. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger/timeutils.py +0 -0
  450. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger.egg-info/dependency_links.txt +0 -0
  451. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger.egg-info/entry_points.txt +0 -0
  452. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger.egg-info/requires.txt +0 -0
  453. {taskledger-0.6.1 → taskledger-0.6.2}/taskledger.egg-info/top_level.txt +0 -0
  454. {taskledger-0.6.1 → taskledger-0.6.2}/tests/__init__.py +0 -0
  455. {taskledger-0.6.1 → taskledger-0.6.2}/tests/conftest.py +0 -0
  456. {taskledger-0.6.1 → taskledger-0.6.2}/tests/support/__init__.py +0 -0
  457. {taskledger-0.6.1 → taskledger-0.6.2}/tests/support/builders.py +0 -0
  458. {taskledger-0.6.1 → taskledger-0.6.2}/tests/support/fake_command_runner.py +0 -0
  459. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_active_task.py +0 -0
  460. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_actor_harness_state.py +0 -0
  461. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_actor_resolution.py +0 -0
  462. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_agent_command_logging.py +0 -0
  463. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_agent_session_protocol.py +0 -0
  464. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_atomic_fast_io.py +0 -0
  465. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_canonical_config_split.py +0 -0
  466. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_canonical_layout_migration.py +0 -0
  467. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_canonical_mount_paths.py +0 -0
  468. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_canonical_project_boundary.py +0 -0
  469. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_canonical_project_context.py +0 -0
  470. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_cli_command_contract.py +0 -0
  471. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_cli_import_resilience.py +0 -0
  472. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_cli_runner_compatibility.py +0 -0
  473. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_code_reviews.py +0 -0
  474. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_command_example_linter.py +0 -0
  475. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_command_inventory.py +0 -0
  476. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_command_runner.py +0 -0
  477. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_compact_mutation_output.py +0 -0
  478. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_config_cli.py +0 -0
  479. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_delta_remaining_contracts.py +0 -0
  480. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_docs_and_skill.py +0 -0
  481. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_doctor.py +0 -0
  482. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_domain_policies.py +0 -0
  483. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_error_contracts.py +0 -0
  484. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_event_logging_config.py +0 -0
  485. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_events.py +0 -0
  486. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_file_link_snapshots.py +0 -0
  487. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_find_code_clones_script.py +0 -0
  488. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_handoff_lifecycle.py +0 -0
  489. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_help_subprocess.py +0 -0
  490. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_implementation_change_scan.py +0 -0
  491. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_implementation_checks.py +0 -0
  492. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_import_boundaries.py +0 -0
  493. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_indexes.py +0 -0
  494. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_json_contracts.py +0 -0
  495. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_ledger_manifest_mutation.py +0 -0
  496. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_ledgercore_compat.py +0 -0
  497. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_ledgercore_dependency.py +0 -0
  498. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_legacy_cleanup_contracts.py +0 -0
  499. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_lifecycle_policies.py +0 -0
  500. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_lock_diagnostics.py +0 -0
  501. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_lock_inventory.py +0 -0
  502. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_locks_audit.py +0 -0
  503. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_models_v1_schema.py +0 -0
  504. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_monitor.py +0 -0
  505. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_next_action_expired_lock.py +0 -0
  506. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_no_log_feature.py +0 -0
  507. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_performance_caching.py +0 -0
  508. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_plan_approval_contract.py +0 -0
  509. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_plan_input.py +0 -0
  510. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_plan_input_cli.py +0 -0
  511. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_plan_lint.py +0 -0
  512. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_plan_review.py +0 -0
  513. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_plan_revision_workflow.py +0 -0
  514. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_plan_todo_materialization.py +0 -0
  515. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_project_root_config.py +0 -0
  516. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_question_add_many.py +0 -0
  517. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_question_filter_answers.py +0 -0
  518. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_question_plan_regeneration.py +0 -0
  519. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_ready_work.py +0 -0
  520. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_release_changelog.py +0 -0
  521. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_resource_refs.py +0 -0
  522. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_runtime_info.py +0 -0
  523. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_search.py +0 -0
  524. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_service_boundaries.py +0 -0
  525. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_services_dashboard.py +0 -0
  526. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_shared_tool_ledger_storage.py +0 -0
  527. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_sidecar_collections.py +0 -0
  528. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_bundle_layout.py +0 -0
  529. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_common.py +0 -0
  530. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_init.py +0 -0
  531. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_migration.py +0 -0
  532. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_migration_coordinator.py +0 -0
  533. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_repos.py +0 -0
  534. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_sync.py +0 -0
  535. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_where_repair.py +0 -0
  536. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_storage_yaml_store.py +0 -0
  537. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_sync_git.py +0 -0
  538. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_task_archive.py +0 -0
  539. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_task_events.py +0 -0
  540. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_task_ids.py +0 -0
  541. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_task_markdown_export.py +0 -0
  542. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_task_report.py +0 -0
  543. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_branch_scoped_ledgers.py +0 -0
  544. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_canonical_sync.py +0 -0
  545. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_cli_api_parity.py +0 -0
  546. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_ledgercore_050_adapter.py +0 -0
  547. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_ledgercore_050_context.py +0 -0
  548. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_ledgercore_050_migration_topology.py +0 -0
  549. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_ledgercore_050_sync.py +0 -0
  550. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_migration_v3.py +0 -0
  551. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_sibling_migration.py +0 -0
  552. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_sibling_storage.py +0 -0
  553. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_storage_commands_v3.py +0 -0
  554. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_v2_cli.py +0 -0
  555. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_taskledger_v2_exchange.py +0 -0
  556. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_tasks_service_static.py +0 -0
  557. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_todo_implementation_gate.py +0 -0
  558. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_trace.py +0 -0
  559. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_tree_command.py +0 -0
  560. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_usage_cli.py +0 -0
  561. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_validation_git_snapshot_recovery.py +0 -0
  562. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_worker_pipeline_cli.py +0 -0
  563. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_worker_pipeline_config.py +0 -0
  564. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_worker_pipeline_context.py +0 -0
  565. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_worker_pipeline_handoff.py +0 -0
  566. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_worker_pipeline_plan_template.py +0 -0
  567. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_worker_pipeline_todos.py +0 -0
  568. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_workflow_guidance.py +0 -0
  569. {taskledger-0.6.1 → taskledger-0.6.2}/tests/test_workspace_snapshot.py +0 -0
@@ -11,3 +11,12 @@
11
11
  {"data":{"added_source_refs":["git:c1d0982"],"fields":["source_refs"],"removed_source_refs":[],"source_refs_mode":"merge"},"entry_id":"entry-0005","event":"entry.updated","event_id":"event-0011","record_revisions":{"entry:v0.6.1/entry-0005":2},"release_version":"v0.6.1","schema_version":2}
12
12
  {"data":{"added_source_refs":["git:94965d3"],"fields":["source_refs"],"removed_source_refs":[],"source_refs_mode":"merge"},"entry_id":"entry-0004","event":"entry.updated","event_id":"event-0012","record_revisions":{"entry:v0.6.1/entry-0004":2},"release_version":"v0.6.1","schema_version":2}
13
13
  {"data":{"released_at":"2026-08-14"},"event":"release.finalized","event_id":"event-0013","record_revisions":{"release:v0.6.1":7},"release_version":"v0.6.1","schema_version":2}
14
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0014","record_revisions":{"release:v0.6.2":1},"release_version":"v0.6.2","schema_version":2}
15
+ {"data":{"kind":"added","status":"accepted"},"entry_id":"entry-0001","event":"entry.added","event_id":"event-0015","record_revisions":{"entry:v0.6.2/entry-0001":1,"release:v0.6.2":2},"release_version":"v0.6.2","schema_version":2}
16
+ {"data":{"added_source_refs":[],"fields":["kind","summary"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0001","event":"entry.updated","event_id":"event-0016","record_revisions":{"entry:v0.6.2/entry-0001":2},"release_version":"v0.6.2","schema_version":2}
17
+ {"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0002","event":"entry.added","event_id":"event-0017","record_revisions":{"entry:v0.6.2/entry-0002":1,"release:v0.6.2":3},"release_version":"v0.6.2","schema_version":2}
18
+ {"data":{"kind":"fixed","status":"accepted"},"entry_id":"entry-0003","event":"entry.added","event_id":"event-0018","record_revisions":{"entry:v0.6.2/entry-0003":1,"release:v0.6.2":4},"release_version":"v0.6.2","schema_version":2}
19
+ {"data":{"kind":"docs","status":"accepted"},"entry_id":"entry-0004","event":"entry.added","event_id":"event-0019","record_revisions":{"entry:v0.6.2/entry-0004":1,"release:v0.6.2":5},"release_version":"v0.6.2","schema_version":2}
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
+ {"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
+ {"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}
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 2
7
+ entry_id: entry-0001
8
+ release_version: v0.6.2
9
+ kind: changed
10
+ summary:
11
+ Automatic indexes cache bootstrapping before canonical mutations with quarantine-based
12
+ recovery for unbound caches
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:6305f28
18
+ paths:
19
+ - taskledger/storage/index_cache.py
20
+ issues: []
21
+ prs: []
22
+ sources: []
23
+ contributors: []
24
+ breaking: false
25
+ internal: false
26
+ order: 1
27
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 2
7
+ entry_id: entry-0002
8
+ release_version: v0.6.2
9
+ kind: changed
10
+ summary:
11
+ Indexes mount is fixed to cache storage; `storage set indexes cache` is now
12
+ an idempotent topology request and non-cache indexes storage is rejected directly
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs: []
17
+ paths:
18
+ - taskledger/api/storage.py
19
+ issues: []
20
+ prs: []
21
+ sources:
22
+ - git:6305f28
23
+ contributors: []
24
+ breaking: false
25
+ internal: false
26
+ order: 2
27
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 2
7
+ entry_id: entry-0003
8
+ release_version: v0.6.2
9
+ kind: fixed
10
+ summary:
11
+ "`reindex` command now reports cache recovery results and surfaces structured
12
+ errors for recovery failures"
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs: []
17
+ paths:
18
+ - taskledger/services/tasks.py
19
+ issues: []
20
+ prs: []
21
+ sources:
22
+ - git:6305f28
23
+ contributors: []
24
+ breaking: false
25
+ internal: false
26
+ order: 3
27
+ ---
@@ -0,0 +1,25 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0004
8
+ release_version: v0.6.2
9
+ kind: docs
10
+ summary: Documented indexes cache recovery behavior and multi-machine sync workflow
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs: []
15
+ paths:
16
+ - docs/command_contract.md
17
+ issues: []
18
+ prs: []
19
+ sources:
20
+ - git:6305f28
21
+ contributors: []
22
+ breaking: false
23
+ internal: false
24
+ order: 4
25
+ ---
@@ -0,0 +1,26 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 6
7
+ version: v0.6.2
8
+ status: released
9
+ title: Release v0.6.2
10
+ released_at: "2026-08-15"
11
+ previous_version: v0.6.1
12
+ cancel_reason: null
13
+ superseded_by: null
14
+ changelog_file: null
15
+ boundary_ref: null
16
+ source_refs: []
17
+ source_count: null
18
+ entry_count: 4
19
+ artifact_count: 0
20
+ git_base_ref: null
21
+ git_base_sha: null
22
+ git_head_ref: null
23
+ git_head_sha: null
24
+ git_range: null
25
+ git_commit_count: null
26
+ ---
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskledger
3
- Version: 0.6.1
3
+ Version: 0.6.2
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,23 @@
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.2] - 2026-08-15
6
+
7
+ ### Changed
8
+
9
+ - Automatic indexes cache bootstrapping before canonical mutations with quarantine-based recovery for unbound caches
10
+ - Indexes mount is fixed to cache storage; `storage set indexes cache` is now an idempotent topology request and non-cache indexes storage is rejected directly
11
+
12
+ ### Fixed
13
+
14
+ - `reindex` command now reports cache recovery results and surfaces structured errors for recovery failures
15
+
16
+ ### Documentation
17
+
18
+ - Documented indexes cache recovery behavior and multi-machine sync workflow
19
+
20
+ <!-- generated by releaseledger -->
21
+
5
22
  ## [v0.6.1] - 2026-08-14
6
23
 
7
24
  ### Added
@@ -664,15 +664,24 @@ taskledger ledger doctor
664
664
  ```
665
665
 
666
666
  Checkout-scoped indexes under the resolved cache mount are optional derived
667
- caches or registries. Task, plan, and run commands must continue to work from
668
- canonical Markdown/YAML records even when cache files are absent. The remaining
669
- derived caches may be plain JSON arrays with no version metadata and can be
670
- rebuilt with:
667
+ caches or registries. Read-only commands continue to work from canonical
668
+ Markdown/YAML records and do not initialize a missing cache. Before a canonical
669
+ mutation, Taskledger initializes a missing or empty cache binding and rebuilds
670
+ the derived indexes. A non-empty cache without its binding marker is atomically
671
+ quarantined beside the cache and rebuilt from canonical records. Conflicting or
672
+ invalid markers, symlinks, and non-directory cache paths are not adopted
673
+ automatically. The remaining derived caches may be plain JSON arrays with no
674
+ version metadata and can be rebuilt explicitly with:
671
675
 
672
676
  ```bash
673
677
  taskledger reindex
674
678
  ```
675
679
 
680
+ `taskledger repair index` uses the same recovery path and reports any quarantine
681
+ location. The `indexes` mount is fixed to cache storage, so
682
+ `taskledger storage set indexes cache` is an idempotent topology request;
683
+ non-cache indexes storage is rejected directly.
684
+
676
685
  A newer storage version than the installed taskledger supports is rejected with
677
686
  a clear error.
678
687
 
@@ -42,6 +42,15 @@ taskledger sync git push
42
42
 
43
43
  ## Second PC bootstrap
44
44
 
45
+ Indexes are checkout-local derived state and are not synchronized between PCs.
46
+ After opening a project on a new machine, deleting the local cache, or allowing
47
+ the cache to be evicted, read-only commands continue to use canonical records.
48
+ The first mutating command creates the local Ledgercore cache binding and
49
+ rebuilds the indexes automatically; no second `taskledger init` is required.
50
+ If a non-empty unbound cache is found, Taskledger preserves it as an
51
+ `indexes.quarantine-*` sibling before rebuilding. Use `taskledger repair index`
52
+ for explicit cache health repair.
53
+
45
54
  Clone both repositories as siblings:
46
55
 
47
56
  ```bash
@@ -459,7 +459,13 @@ Lock recovery decision tree:
459
459
  - If doctor reports a running implementation run with no matching lock and the task is still resumable, run `taskledger implement resume --task TASK --run RUN --reason "Reacquire implementation lock."`.
460
460
  - Never use repair to bypass approval, validation, or active implementation locks.
461
461
  - If validation fails, record the failure and return to implementation or replanning.
462
- - If indexes are stale, run `taskledger repair index`; `taskledger reindex` is a compatibility alias.
462
+ - Missing or empty checkout-local indexes caches are bootstrapped automatically
463
+ before canonical mutations and rebuilt from authoritative records. A
464
+ non-empty unbound cache is quarantined rather than deleted; conflicting
465
+ markers are not auto-adopted. Read-only commands do not bootstrap the cache.
466
+ - If indexes are stale or an unusual cache-binding problem needs explicit
467
+ repair, run `taskledger repair index`; `taskledger reindex` is a compatibility
468
+ alias. Do not tell users to manually create `.ledger-project.toml`.
463
469
  - If a task is truly cancelled and the user wants to continue, use `taskledger task uncancel --task TASK_REF --reason "..." [--to STAGE]` to restore a safe durable stage before re-entering an active stage.
464
470
  - If dependencies must be bypassed, only a user waiver may unblock implementation.
465
471
 
@@ -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.1'
22
- __version_tuple__ = version_tuple = (0, 6, 1)
21
+ __version__ = version = '0.6.2'
22
+ __version_tuple__ = version_tuple = (0, 6, 2)
23
23
 
24
- __commit_id__ = commit_id = 'g7491339c7'
24
+ __commit_id__ = commit_id = 'g196a79e85'
@@ -148,6 +148,23 @@ def storage_set(
148
148
  ) -> dict[str, object]:
149
149
  if mode not in {"copy", "move"}:
150
150
  raise LaunchError("mode must be copy or move")
151
+ if mount == "indexes":
152
+ if storage != "cache":
153
+ raise LaunchError(
154
+ "TASKLEDGER_STORAGE_BINDING_INVALID: The Taskledger indexes mount "
155
+ "is fixed to cache storage.",
156
+ details={"mount": mount, "requested_storage": storage},
157
+ remediation=["Run `taskledger repair index` to rebuild the cache."],
158
+ )
159
+ report = build_storage_location_report(
160
+ workspace_root, require_initialized=False
161
+ ).to_dict()
162
+ report["unchanged"] = True
163
+ report["message"] = "Indexes already use cache storage."
164
+ report["remediation"] = (
165
+ "Run `taskledger repair index` to rebuild the indexes cache."
166
+ )
167
+ return report
151
168
  if storage == "external" and not external_root:
152
169
  raise LaunchError("external storage requires --root")
153
170
  migrate_taskledger_mount(
@@ -1210,7 +1210,11 @@ def emit_can_command(ctx: typer.Context, task_ref: str | None, action: str) -> N
1210
1210
 
1211
1211
  def emit_reindex_command(ctx: typer.Context) -> None:
1212
1212
  state = cli_state_from_context(ctx)
1213
- payload = reindex(state.cwd)
1213
+ try:
1214
+ payload = reindex(state.cwd)
1215
+ except LaunchError as exc:
1216
+ emit_error(ctx, exc)
1217
+ raise typer.Exit(code=launch_error_exit_code(exc)) from exc
1214
1218
  emit_payload(ctx, payload, human="reindexed v2 task state")
1215
1219
 
1216
1220
 
@@ -36,6 +36,7 @@ STORAGE_ERROR_CODES = frozenset(
36
36
  "TASKLEDGER_LEDGER_SCHEMA_MIGRATION_REQUIRED",
37
37
  "TASKLEDGER_REGISTRATION_INVALID",
38
38
  "TASKLEDGER_STORAGE_BINDING_INVALID",
39
+ "TASKLEDGER_CACHE_RECOVERY_FAILED",
39
40
  "TASKLEDGER_EXTERNAL_STORE_INVALID",
40
41
  "TASKLEDGER_STORAGE_MIGRATION_ACTIVE_LOCKS",
41
42
  "TASKLEDGER_STORAGE_MIGRATION_BLOCKED",
@@ -275,6 +276,12 @@ class StorageCorruption(LaunchError):
275
276
  error_type = "StorageCorruption"
276
277
 
277
278
 
279
+ class CacheRecoveryFailed(LaunchError):
280
+ code = "TASKLEDGER_CACHE_RECOVERY_FAILED"
281
+ exit_code = 4
282
+ error_type = "CacheRecoveryFailed"
283
+
284
+
278
285
  class ActiveTaskNotFound(StorageCorruption):
279
286
  code = "ACTIVE_TASK_NOT_FOUND"
280
287
  error_type = "StorageCorruption"
@@ -1564,12 +1564,18 @@ def task_dossier(
1564
1564
 
1565
1565
 
1566
1566
  def reindex(workspace_root: Path) -> dict[str, object]:
1567
+ from taskledger.storage.project_context import require_mutable_project_context
1568
+
1569
+ context = require_mutable_project_context(workspace_root)
1567
1570
  paths = ensure_v2_layout(workspace_root)
1568
1571
  counts = rebuild_v2_indexes(paths)
1569
1572
  _append_event(
1570
1573
  workspace_root, "*", "repair.index", dict(cast(dict[str, object], counts))
1571
1574
  )
1572
- return {"kind": "taskledger_reindex", "counts": counts}
1575
+ payload: dict[str, object] = {"kind": "taskledger_reindex", "counts": counts}
1576
+ if context.cache_recovery is not None:
1577
+ payload["cache_recovery"] = context.cache_recovery.to_dict()
1578
+ return payload
1573
1579
 
1574
1580
 
1575
1581
  def repair_task_record(*args, **kwargs): # type: ignore[no-untyped-def]
@@ -0,0 +1,199 @@
1
+ """Safe recovery for Taskledger's disposable indexes cache."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from dataclasses import dataclass
6
+ from datetime import datetime, timezone
7
+ from pathlib import Path
8
+ from typing import TYPE_CHECKING, Any, Literal
9
+ from uuid import uuid4
10
+
11
+ from filelock import FileLock
12
+
13
+ from taskledger.errors import CacheRecoveryFailed, LaunchError
14
+ from taskledger.storage.ledgercore_backend import (
15
+ INDEX_MOUNT,
16
+ initialize_taskledger_bindings,
17
+ validate_taskledger_mount,
18
+ )
19
+
20
+ if TYPE_CHECKING:
21
+ from taskledger.storage.project_context import TaskledgerProjectContext
22
+
23
+
24
+ @dataclass(frozen=True, slots=True)
25
+ class IndexCacheRecoveryResult:
26
+ """Describe local cache maintenance performed before a mutation."""
27
+
28
+ action: Literal["initialized", "rebuilt", "quarantined_rebuilt"]
29
+ cache_root: Path
30
+ quarantine_path: Path | None
31
+ counts: dict[str, int]
32
+
33
+ def to_dict(self) -> dict[str, object]:
34
+ return {
35
+ "action": self.action,
36
+ "cache_path": str(self.cache_root),
37
+ "quarantine_path": (
38
+ str(self.quarantine_path) if self.quarantine_path is not None else None
39
+ ),
40
+ "counts": dict(self.counts),
41
+ }
42
+
43
+
44
+ def _index_validation_result(
45
+ context: TaskledgerProjectContext, root: Path
46
+ ) -> Any | None:
47
+ report = context.storage_validation
48
+ if report is None:
49
+ return None
50
+ return next(
51
+ (result for result in report.results if result.path == root),
52
+ None,
53
+ )
54
+
55
+
56
+ def _safe_recovery_candidate(context: TaskledgerProjectContext) -> bool:
57
+ if context.mode != "canonical" or context.layout is None:
58
+ return False
59
+ if context.initialization.status != "ready":
60
+ return False
61
+ manifest = getattr(context.loaded_project, "manifest", None)
62
+ if getattr(manifest, "schema_version", None) != 3:
63
+ return False
64
+ if (
65
+ not context.paths.data_root.is_dir()
66
+ or not context.paths.storage_meta_path.is_file()
67
+ ):
68
+ return False
69
+ index_mount = context.layout.mounts.get(INDEX_MOUNT)
70
+ if index_mount is None or index_mount.storage != "cache":
71
+ return False
72
+
73
+ root = index_mount.path
74
+ index_result = _index_validation_result(context, root)
75
+ if index_result is not None and index_result.path != root:
76
+ return False
77
+ report = context.storage_validation
78
+ if report is not None and any(
79
+ not result.valid and result.path != root for result in report.results
80
+ ):
81
+ return False
82
+ return True
83
+
84
+
85
+ def _expected_index_files_missing(context: TaskledgerProjectContext) -> bool:
86
+ paths = context.paths
87
+ return any(
88
+ not path.is_file()
89
+ for path in (
90
+ paths.task_index_path,
91
+ paths.active_locks_index_path,
92
+ paths.sidecar_index_path,
93
+ paths.introductions_index_path,
94
+ paths.dependencies_index_path,
95
+ )
96
+ )
97
+
98
+
99
+ def _unique_quarantine_path(root: Path) -> Path:
100
+ stamp = datetime.now(timezone.utc).strftime("%Y%m%dT%H%M%SZ")
101
+ while True:
102
+ candidate = root.with_name(f"{root.name}.quarantine-{stamp}-{uuid4().hex[:8]}")
103
+ if not candidate.exists() and not candidate.is_symlink():
104
+ return candidate
105
+
106
+
107
+ def _recovery_failure(
108
+ root: Path,
109
+ quarantine: Path | None,
110
+ exc: Exception,
111
+ ) -> CacheRecoveryFailed:
112
+ return CacheRecoveryFailed(
113
+ "TASKLEDGER_CACHE_RECOVERY_FAILED: unable to rebuild indexes cache "
114
+ f"{root}: {exc}",
115
+ details={
116
+ "cache_path": str(root),
117
+ "quarantine_path": str(quarantine) if quarantine is not None else None,
118
+ "operation": "rebuild",
119
+ "cause": str(exc),
120
+ },
121
+ remediation=[
122
+ "Run `taskledger storage validate`.",
123
+ "Run `taskledger repair index`.",
124
+ ],
125
+ )
126
+
127
+
128
+ def ensure_indexes_cache_for_mutation(
129
+ context: TaskledgerProjectContext,
130
+ ) -> IndexCacheRecoveryResult | None:
131
+ """Prepare the disposable indexes mount before writing derived state.
132
+
133
+ This helper is intentionally narrow: it only handles a canonical schema-3
134
+ cache mount after persistent config/data storage has validated successfully.
135
+ """
136
+ if not _safe_recovery_candidate(context):
137
+ return None
138
+
139
+ layout = context.layout
140
+ if layout is None:
141
+ return None
142
+ index_mount = layout.mounts[INDEX_MOUNT]
143
+ root = index_mount.path
144
+ root.parent.mkdir(parents=True, exist_ok=True)
145
+
146
+ with FileLock(f"{root}.recovery.lock"):
147
+ if root.is_symlink() or (root.exists() and not root.is_dir()):
148
+ return None
149
+
150
+ marker = root / ".ledger-project.toml"
151
+ if marker.is_symlink():
152
+ return None
153
+
154
+ # Re-check after locking so a concurrent mutation can safely win.
155
+ validation = validate_taskledger_mount(index_mount, allow_missing=True)
156
+ if marker.exists():
157
+ if not validation.valid:
158
+ return None
159
+ if not _expected_index_files_missing(context):
160
+ return None
161
+ try:
162
+ from taskledger.storage.indexes import rebuild_v2_indexes
163
+ from taskledger.storage.task_store import v2_paths_from_context
164
+
165
+ counts = rebuild_v2_indexes(v2_paths_from_context(context))
166
+ except (LaunchError, OSError) as exc:
167
+ raise _recovery_failure(root, None, exc) from exc
168
+ return IndexCacheRecoveryResult("rebuilt", root, None, counts)
169
+
170
+ quarantine: Path | None = None
171
+ try:
172
+ if root.exists():
173
+ if any(root.iterdir()):
174
+ quarantine = _unique_quarantine_path(root)
175
+ root.rename(quarantine)
176
+
177
+ initialize_taskledger_bindings(
178
+ layout,
179
+ initialize_config=False,
180
+ initialize_data=False,
181
+ initialize_indexes=True,
182
+ )
183
+ from taskledger.storage.indexes import rebuild_v2_indexes
184
+ from taskledger.storage.task_store import v2_paths_from_context
185
+
186
+ counts = rebuild_v2_indexes(v2_paths_from_context(context))
187
+ except (LaunchError, OSError) as exc:
188
+ marker = root / ".ledger-project.toml"
189
+ if marker.is_file() and not marker.is_symlink():
190
+ marker.unlink(missing_ok=True)
191
+ raise _recovery_failure(root, quarantine, exc) from exc
192
+
193
+ action: Literal["initialized", "quarantined_rebuilt"] = (
194
+ "quarantined_rebuilt" if quarantine is not None else "initialized"
195
+ )
196
+ return IndexCacheRecoveryResult(action, root, quarantine, counts)
197
+
198
+
199
+ __all__ = ["IndexCacheRecoveryResult", "ensure_indexes_cache_for_mutation"]
@@ -40,7 +40,11 @@ from ledgercore.manifest import (
40
40
  LedgerRegistration,
41
41
  MountDefinition,
42
42
  )
43
- from ledgercore.storage_binding import StorageBindingError, read_storage_binding
43
+ from ledgercore.storage_binding import (
44
+ StorageBindingError,
45
+ read_storage_binding,
46
+ validate_storage_binding,
47
+ )
44
48
 
45
49
  TOOL_NAME = "taskledger"
46
50
  DATA_MOUNT = "data"
@@ -302,6 +306,11 @@ def initialize_taskledger_bindings(
302
306
  return results
303
307
 
304
308
 
309
+ def validate_taskledger_mount(mount: Any, *, allow_missing: bool = False) -> Any:
310
+ """Validate one resolved mount through the Ledgercore adapter boundary."""
311
+ return validate_storage_binding(mount, allow_missing=allow_missing)
312
+
313
+
305
314
  def initialize_taskledger_external_store(layout: Any) -> bool:
306
315
  """Initialize an external root only during explicit Taskledger init."""
307
316
  mount = layout.mounts[DATA_MOUNT]
@@ -453,6 +462,7 @@ __all__ = [
453
462
  "ensure_taskledger_ledger_registration",
454
463
  "execute_taskledger_layout_migration",
455
464
  "initialize_taskledger_bindings",
465
+ "validate_taskledger_mount",
456
466
  "load_taskledger_ledger_layout",
457
467
  "locate_taskledger_project",
458
468
  "initialize_taskledger_external_store",
@@ -3,6 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  import importlib
6
+ import logging
6
7
  from dataclasses import dataclass
7
8
  from pathlib import Path
8
9
  from typing import Any, Literal, cast
@@ -135,6 +136,7 @@ class TaskledgerProjectContext:
135
136
  legacy_locator: ProjectPaths | None
136
137
  loaded_project: Any | None = None
137
138
  storage_validation: Any | None = None
139
+ cache_recovery: Any | None = None
138
140
  local_overrides_present: bool = False
139
141
  # Compatibility fields are derived values, not configuration ownership.
140
142
  store_root: Path | None = None
@@ -388,9 +390,28 @@ def require_mutable_project_context(
388
390
  """Require a real initialized project before any command may write state."""
389
391
  context = load_project_context(
390
392
  start,
391
- require_initialized=True,
393
+ require_initialized=False,
392
394
  allow_legacy=allow_legacy,
393
395
  )
396
+ cache_recovery = None
397
+ if context.mode == "canonical":
398
+ from taskledger.storage.index_cache import ensure_indexes_cache_for_mutation
399
+
400
+ cache_recovery = ensure_indexes_cache_for_mutation(context)
401
+ context = load_project_context(
402
+ start,
403
+ require_initialized=True,
404
+ allow_legacy=allow_legacy,
405
+ )
406
+ if cache_recovery is not None:
407
+ from dataclasses import replace
408
+
409
+ context = replace(context, cache_recovery=cache_recovery)
410
+ if cache_recovery.quarantine_path is not None:
411
+ logging.getLogger(__name__).warning(
412
+ "Taskledger quarantined the unbound indexes cache at %s",
413
+ cache_recovery.quarantine_path,
414
+ )
394
415
  if context.mode == "legacy":
395
416
  required = (
396
417
  context.paths.project_dir,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: taskledger
3
- Version: 0.6.1
3
+ Version: 0.6.2
4
4
  Summary: Durable project-state storage and CLI for coding workflows
5
5
  Author: Taskledger Contributors
6
6
  Maintainer: Holger Nahrstaedt
@@ -158,6 +158,11 @@ specmason.toml
158
158
  .ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0003.md
159
159
  .ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0004.md
160
160
  .ledger/releaseledger/data/ledgers/main/releases/v0.6.1/entries/entry-0005.md
161
+ .ledger/releaseledger/data/ledgers/main/releases/v0.6.2/release.md
162
+ .ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0001.md
163
+ .ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0002.md
164
+ .ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0003.md
165
+ .ledger/releaseledger/data/ledgers/main/releases/v0.6.2/entries/entry-0004.md
161
166
  .ledger/task/config.toml
162
167
  .ledger/taskledger/.ledger-project.toml
163
168
  .ledger/taskledger/config.toml
@@ -417,6 +422,7 @@ taskledger/storage/atomic.py
417
422
  taskledger/storage/common.py
418
423
  taskledger/storage/events.py
419
424
  taskledger/storage/frontmatter.py
425
+ taskledger/storage/index_cache.py
420
426
  taskledger/storage/indexes.py
421
427
  taskledger/storage/init.py
422
428
  taskledger/storage/layout_migration.py
@@ -478,6 +484,7 @@ tests/test_implementation_change_scan.py
478
484
  tests/test_implementation_checks.py
479
485
  tests/test_import_boundaries.py
480
486
  tests/test_indexes.py
487
+ tests/test_indexes_cache_recovery.py
481
488
  tests/test_json_contracts.py
482
489
  tests/test_ledger_manifest_mutation.py
483
490
  tests/test_ledgercore_compat.py