readio 0.2.0__tar.gz → 0.2.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 (199) hide show
  1. {readio-0.2.0 → readio-0.2.2}/.codecrate.toml +1 -0
  2. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +20 -0
  3. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.1/audit/commit-audit.yaml +52 -0
  4. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.1/entries/entry-0001.md +35 -0
  5. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.1/release.md +27 -0
  6. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/audit/commit-audit.yaml +213 -0
  7. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0001.md +27 -0
  8. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0002.md +27 -0
  9. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0003.md +25 -0
  10. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0004.md +25 -0
  11. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0005.md +26 -0
  12. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0006.md +25 -0
  13. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0007.md +24 -0
  14. readio-0.2.2/.ledger/releaseledger/data/ledgers/main/releases/v0.2.2/release.md +27 -0
  15. readio-0.2.2/CHANGELOG.md +18 -0
  16. {readio-0.2.0/readio.egg-info → readio-0.2.2}/PKG-INFO +95 -2
  17. {readio-0.2.0 → readio-0.2.2}/README.md +93 -0
  18. {readio-0.2.0 → readio-0.2.2}/docs/changelog.md +25 -0
  19. {readio-0.2.0 → readio-0.2.2}/docs/index.md +35 -2
  20. readio-0.2.2/llm-guides/README.md +106 -0
  21. readio-0.2.2/llm-guides/ssmd/audio-drama.md +323 -0
  22. readio-0.2.2/llm-guides/ssmd/debate-pro-con.md +325 -0
  23. readio-0.2.2/llm-guides/ssmd/document-summary.md +305 -0
  24. readio-0.2.2/llm-guides/ssmd/dramatic-story.md +321 -0
  25. readio-0.2.2/llm-guides/ssmd/educational-explainer.md +311 -0
  26. readio-0.2.2/llm-guides/ssmd/funny-story.md +332 -0
  27. readio-0.2.2/llm-guides/ssmd/general-narration.md +301 -0
  28. readio-0.2.2/llm-guides/ssmd/guided-meditation.md +305 -0
  29. readio-0.2.2/llm-guides/ssmd/kids-story.md +324 -0
  30. readio-0.2.2/llm-guides/ssmd/language-learning.md +328 -0
  31. readio-0.2.2/llm-guides/ssmd/news-briefing.md +308 -0
  32. readio-0.2.2/llm-guides/ssmd/podcast-interview.md +330 -0
  33. readio-0.2.2/llm-guides/ssmd/podcast-roundtable.md +326 -0
  34. readio-0.2.2/llm-guides/ssmd/podcast-solo.md +311 -0
  35. readio-0.2.2/llm-guides/ssmd/quiz-trivia.md +310 -0
  36. {readio-0.2.0 → readio-0.2.2}/pyproject.toml +1 -1
  37. {readio-0.2.0 → readio-0.2.2}/readio/cli.py +311 -22
  38. {readio-0.2.0 → readio-0.2.2}/readio/errors.py +15 -0
  39. readio-0.2.2/readio/jsonutil.py +37 -0
  40. readio-0.2.2/readio/manifest.py +128 -0
  41. {readio-0.2.0 → readio-0.2.2}/readio/models.py +1 -1
  42. readio-0.2.2/readio/plan.py +1715 -0
  43. {readio-0.2.0 → readio-0.2.2}/readio/reader.py +106 -3
  44. {readio-0.2.0 → readio-0.2.2}/readio/spotify_cli.py +1 -0
  45. {readio-0.2.0 → readio-0.2.2}/readio/ssmd.py +208 -49
  46. {readio-0.2.0 → readio-0.2.2/readio.egg-info}/PKG-INFO +95 -2
  47. {readio-0.2.0 → readio-0.2.2}/readio.egg-info/SOURCES.txt +41 -0
  48. {readio-0.2.0 → readio-0.2.2}/readio.egg-info/requires.txt +1 -1
  49. {readio-0.2.0 → readio-0.2.2}/readio.egg-info/scm_file_list.json +41 -0
  50. readio-0.2.2/readio.egg-info/scm_version.json +8 -0
  51. {readio-0.2.0 → readio-0.2.2}/skill/readio/SKILL.md +22 -1
  52. readio-0.2.2/skill/readio/references/cli.md +99 -0
  53. {readio-0.2.0 → readio-0.2.2}/skill/readio/references/ssmd.md +8 -0
  54. {readio-0.2.0 → readio-0.2.2}/skill/readio/references/troubleshooting.md +32 -0
  55. readio-0.2.2/tests/test_cli.py +378 -0
  56. readio-0.2.2/tests/test_llm_guides.py +123 -0
  57. readio-0.2.2/tests/test_manifest.py +138 -0
  58. readio-0.2.2/tests/test_plan.py +373 -0
  59. readio-0.2.2/tests/test_plan_cli.py +232 -0
  60. readio-0.2.2/tests/test_plan_no_tts_load.py +213 -0
  61. readio-0.2.2/tests/test_plan_validation.py +339 -0
  62. {readio-0.2.0 → readio-0.2.2}/tests/test_pykokoro_09_contract.py +7 -0
  63. readio-0.2.2/tests/test_render_from_plan.py +292 -0
  64. readio-0.2.2/tests/test_render_manifest_cli.py +282 -0
  65. {readio-0.2.0 → readio-0.2.2}/tests/test_spotify_cli.py +23 -0
  66. readio-0.2.2/tests/test_ssmd_single_source.py +152 -0
  67. readio-0.2.0/readio.egg-info/scm_version.json +0 -8
  68. readio-0.2.0/skill/readio/references/cli.md +0 -63
  69. readio-0.2.0/tests/test_cli.py +0 -199
  70. {readio-0.2.0 → readio-0.2.2}/.github/workflows/codecov.yml +0 -0
  71. {readio-0.2.0 → readio-0.2.2}/.github/workflows/pre-commit.yml +0 -0
  72. {readio-0.2.0 → readio-0.2.2}/.github/workflows/python-publish.yml +0 -0
  73. {readio-0.2.0 → readio-0.2.2}/.github/workflows/tests.yml +0 -0
  74. {readio-0.2.0 → readio-0.2.2}/.gitignore +0 -0
  75. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/.ledger-project.toml +0 -0
  76. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/config.toml +0 -0
  77. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/data/.ledger-project.toml +0 -0
  78. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/data/docs/docs-changelog-md-77f023b9.yaml +0 -0
  79. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/data/docs/docs-index-md-b4d68dc8.yaml +0 -0
  80. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/data/docs/readme-md-b3356305.yaml +0 -0
  81. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/data/scan.yaml +0 -0
  82. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/data/source-index.json +0 -0
  83. {readio-0.2.0 → readio-0.2.2}/.ledger/documentledger/data/storage.yaml +0 -0
  84. {readio-0.2.0 → readio-0.2.2}/.ledger/ledger.toml +0 -0
  85. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/.ledger-project.toml +0 -0
  86. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/config.toml +0 -0
  87. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
  88. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/audit/commit-audit.yaml +0 -0
  89. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0001.md +0 -0
  90. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0002.md +0 -0
  91. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0003.md +0 -0
  92. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0004.md +0 -0
  93. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/entries/entry-0005.md +0 -0
  94. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.0/release.md +0 -0
  95. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.1/audit/commit-audit.yaml +0 -0
  96. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.1/entries/entry-0001.md +0 -0
  97. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.1/release.md +0 -0
  98. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/audit/commit-audit.yaml +0 -0
  99. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0001.md +0 -0
  100. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0002.md +0 -0
  101. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0003.md +0 -0
  102. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/entries/entry-0004.md +0 -0
  103. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.2/release.md +0 -0
  104. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/audit/commit-audit.yaml +0 -0
  105. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/entries/entry-0001.md +0 -0
  106. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/entries/entry-0002.md +0 -0
  107. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.1.3/release.md +0 -0
  108. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/audit/commit-audit.yaml +0 -0
  109. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0001.md +0 -0
  110. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0002.md +0 -0
  111. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0003.md +0 -0
  112. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0004.md +0 -0
  113. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0005.md +0 -0
  114. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/entries/entry-0006.md +0 -0
  115. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/data/ledgers/main/releases/v0.2.0/release.md +0 -0
  116. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/work/v0.2.0/audit-decisions.yaml +0 -0
  117. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/work/v0.2.0/audit.yaml +0 -0
  118. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/work/v0.2.0/entries.yaml +0 -0
  119. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/work/v0.2.0/evidence/4ecf165.patch +0 -0
  120. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/work/v0.2.0/evidence/manifest.json +0 -0
  121. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/work/v0.2.0/range.json +0 -0
  122. {readio-0.2.0 → readio-0.2.2}/.ledger/releaseledger/write.lock +0 -0
  123. {readio-0.2.0 → readio-0.2.2}/.ledger/taskledger/.ledger-project.toml +0 -0
  124. {readio-0.2.0 → readio-0.2.2}/.ledger/taskledger/config.toml +0 -0
  125. {readio-0.2.0 → readio-0.2.2}/.pre-commit-config.yaml +0 -0
  126. {readio-0.2.0 → readio-0.2.2}/LICENSE +0 -0
  127. {readio-0.2.0 → readio-0.2.2}/docs/conf.py +0 -0
  128. {readio-0.2.0 → readio-0.2.2}/docs/make.py +0 -0
  129. {readio-0.2.0 → readio-0.2.2}/docs/requirements.txt +0 -0
  130. {readio-0.2.0 → readio-0.2.2}/examples/README.md +0 -0
  131. {readio-0.2.0 → readio-0.2.2}/examples/readio-podcast.ssmd +0 -0
  132. {readio-0.2.0 → readio-0.2.2}/examples/readio-prosody.ssmd +0 -0
  133. {readio-0.2.0 → readio-0.2.2}/readio/__init__.py +0 -0
  134. {readio-0.2.0 → readio-0.2.2}/readio/__main__.py +0 -0
  135. {readio-0.2.0 → readio-0.2.2}/readio/audio.py +0 -0
  136. {readio-0.2.0 → readio-0.2.2}/readio/config.py +0 -0
  137. {readio-0.2.0 → readio-0.2.2}/readio/document.py +0 -0
  138. {readio-0.2.0 → readio-0.2.2}/readio/formats.py +0 -0
  139. {readio-0.2.0 → readio-0.2.2}/readio/ingest.py +0 -0
  140. {readio-0.2.0 → readio-0.2.2}/readio/markdown.py +0 -0
  141. {readio-0.2.0 → readio-0.2.2}/readio/paths.py +0 -0
  142. {readio-0.2.0 → readio-0.2.2}/readio/progress.py +0 -0
  143. {readio-0.2.0 → readio-0.2.2}/readio/resources/__init__.py +0 -0
  144. {readio-0.2.0 → readio-0.2.2}/readio/resources/templates/__init__.py +0 -0
  145. {readio-0.2.0 → readio-0.2.2}/readio/resources/templates/briefing.ssmd +0 -0
  146. {readio-0.2.0 → readio-0.2.2}/readio/resources/templates/dialogue.ssmd +0 -0
  147. {readio-0.2.0 → readio-0.2.2}/readio/resources/templates/podcast.ssmd +0 -0
  148. {readio-0.2.0 → readio-0.2.2}/readio/spotify.py +0 -0
  149. {readio-0.2.0 → readio-0.2.2}/readio/ssmd_authoring.py +0 -0
  150. {readio-0.2.0 → readio-0.2.2}/readio/synthesis.py +0 -0
  151. {readio-0.2.0 → readio-0.2.2}/readio/templates.py +0 -0
  152. {readio-0.2.0 → readio-0.2.2}/readio/text.py +0 -0
  153. {readio-0.2.0 → readio-0.2.2}/readio/wave.py +0 -0
  154. {readio-0.2.0 → readio-0.2.2}/readio.egg-info/dependency_links.txt +0 -0
  155. {readio-0.2.0 → readio-0.2.2}/readio.egg-info/entry_points.txt +0 -0
  156. {readio-0.2.0 → readio-0.2.2}/readio.egg-info/top_level.txt +0 -0
  157. {readio-0.2.0 → readio-0.2.2}/setup.cfg +0 -0
  158. {readio-0.2.0 → readio-0.2.2}/skill/readio/references/input-formats.md +0 -0
  159. {readio-0.2.0 → readio-0.2.2}/skill/readio/references/spotify.md +0 -0
  160. {readio-0.2.0 → readio-0.2.2}/tests/conftest.py +0 -0
  161. {readio-0.2.0 → readio-0.2.2}/tests/fixtures/architecture-review.ssmd +0 -0
  162. {readio-0.2.0 → readio-0.2.2}/tests/fixtures/markdown/all-elements.md +0 -0
  163. {readio-0.2.0 → readio-0.2.2}/tests/fixtures/markdown/all-elements.txt +0 -0
  164. {readio-0.2.0 → readio-0.2.2}/tests/test_audio.py +0 -0
  165. {readio-0.2.0 → readio-0.2.2}/tests/test_audio_formats.py +0 -0
  166. {readio-0.2.0 → readio-0.2.2}/tests/test_chapters.py +0 -0
  167. {readio-0.2.0 → readio-0.2.2}/tests/test_config.py +0 -0
  168. {readio-0.2.0 → readio-0.2.2}/tests/test_defaults_cli.py +0 -0
  169. {readio-0.2.0 → readio-0.2.2}/tests/test_doctor.py +0 -0
  170. {readio-0.2.0 → readio-0.2.2}/tests/test_document.py +0 -0
  171. {readio-0.2.0 → readio-0.2.2}/tests/test_examples.py +0 -0
  172. {readio-0.2.0 → readio-0.2.2}/tests/test_ffmpeg_sink.py +0 -0
  173. {readio-0.2.0 → readio-0.2.2}/tests/test_ingest.py +0 -0
  174. {readio-0.2.0 → readio-0.2.2}/tests/test_language_defaults_config.py +0 -0
  175. {readio-0.2.0 → readio-0.2.2}/tests/test_markdown.py +0 -0
  176. {readio-0.2.0 → readio-0.2.2}/tests/test_model_source_preference.py +0 -0
  177. {readio-0.2.0 → readio-0.2.2}/tests/test_models_cli.py +0 -0
  178. {readio-0.2.0 → readio-0.2.2}/tests/test_package_resources.py +0 -0
  179. {readio-0.2.0 → readio-0.2.2}/tests/test_paths.py +0 -0
  180. {readio-0.2.0 → readio-0.2.2}/tests/test_progress.py +0 -0
  181. {readio-0.2.0 → readio-0.2.2}/tests/test_pykokoro_09_regressions.py +0 -0
  182. {readio-0.2.0 → readio-0.2.2}/tests/test_reader_markdown.py +0 -0
  183. {readio-0.2.0 → readio-0.2.2}/tests/test_reader_selection.py +0 -0
  184. {readio-0.2.0 → readio-0.2.2}/tests/test_reader_ssmd.py +0 -0
  185. {readio-0.2.0 → readio-0.2.2}/tests/test_reader_synthesis.py +0 -0
  186. {readio-0.2.0 → readio-0.2.2}/tests/test_skill_integrity.py +0 -0
  187. {readio-0.2.0 → readio-0.2.2}/tests/test_spotify.py +0 -0
  188. {readio-0.2.0 → readio-0.2.2}/tests/test_spotify_lifecycle.py +0 -0
  189. {readio-0.2.0 → readio-0.2.2}/tests/test_ssmd_cli.py +0 -0
  190. {readio-0.2.0 → readio-0.2.2}/tests/test_ssmd_integration.py +0 -0
  191. {readio-0.2.0 → readio-0.2.2}/tests/test_ssmd_model_roster.py +0 -0
  192. {readio-0.2.0 → readio-0.2.2}/tests/test_ssmd_preflight.py +0 -0
  193. {readio-0.2.0 → readio-0.2.2}/tests/test_synthesis.py +0 -0
  194. {readio-0.2.0 → readio-0.2.2}/tests/test_template_validate.py +0 -0
  195. {readio-0.2.0 → readio-0.2.2}/tests/test_templates.py +0 -0
  196. {readio-0.2.0 → readio-0.2.2}/tests/test_text.py +0 -0
  197. {readio-0.2.0 → readio-0.2.2}/tests/test_voice_resolution_workflow.py +0 -0
  198. {readio-0.2.0 → readio-0.2.2}/tests/test_voices_cli.py +0 -0
  199. {readio-0.2.0 → readio-0.2.2}/tests/test_wave.py +0 -0
@@ -9,6 +9,7 @@ include = [
9
9
  "**/*.toml",
10
10
  "**/*.rst",
11
11
  "**/*.md",
12
+ "**/*.ssmd",
12
13
  "**/*.json",
13
14
  "**/*.jsonl",
14
15
  "**/*.ipynb",
@@ -35,3 +35,23 @@
35
35
  {"data":{"entry_ids":["entry-0004"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0035","record_revisions":{"commit_audit_sheet":6,"entry:v0.2.0/entry-0004":1,"release:v0.2.0":7},"release_version":"v0.2.0","schema_version":2}
36
36
  {"data":{"fields":["released_at"]},"event":"release.updated","event_id":"event-0036","record_revisions":{"release:v0.2.0":8},"release_version":"v0.2.0","schema_version":2}
37
37
  {"data":{"entry_ids":["entry-0005","entry-0006"],"synced_audit_rows":2},"event":"entry.batch_added","event_id":"event-0037","record_revisions":{"commit_audit_sheet":7,"entry:v0.2.0/entry-0005":1,"entry:v0.2.0/entry-0006":1,"release:v0.2.0":9},"release_version":"v0.2.0","schema_version":2}
38
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0038","record_revisions":{"release:v0.2.1":1},"release_version":"v0.2.1","schema_version":2}
39
+ {"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-0039","record_revisions":{"release:v0.2.1":2},"release_version":"v0.2.1","schema_version":2}
40
+ {"data":{"row_count":1},"event":"audit.created","event_id":"event-0040","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.2.1","schema_version":2}
41
+ {"data":{"updated_rows":1},"event":"audit.updated","event_id":"event-0041","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.2.1","schema_version":2}
42
+ {"data":{"entry_ids":["entry-0001"],"synced_audit_rows":1},"event":"entry.batch_added","event_id":"event-0042","record_revisions":{"commit_audit_sheet":3,"entry:v0.2.1/entry-0001":1,"release:v0.2.1":3},"release_version":"v0.2.1","schema_version":2}
43
+ {"data":{"released_at":"2026-09-05"},"event":"release.finalized","event_id":"event-0043","record_revisions":{"release:v0.2.1":4},"release_version":"v0.2.1","schema_version":2}
44
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0044","record_revisions":{"release:v0.2.2":1},"release_version":"v0.2.2","schema_version":2}
45
+ {"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-0045","record_revisions":{"release:v0.2.2":2},"release_version":"v0.2.2","schema_version":2}
46
+ {"data":{"row_count":4},"event":"audit.created","event_id":"event-0046","record_revisions":{"commit_audit_sheet":1},"release_version":"v0.2.2","schema_version":2}
47
+ {"data":{"kind":"added","status":"accepted"},"entry_id":"entry-0001","event":"entry.added","event_id":"event-0047","record_revisions":{"entry:v0.2.2/entry-0001":1,"release:v0.2.2":3},"release_version":"v0.2.2","schema_version":2}
48
+ {"data":{"kind":"docs","status":"accepted"},"entry_id":"entry-0002","event":"entry.added","event_id":"event-0048","record_revisions":{"entry:v0.2.2/entry-0002":1,"release:v0.2.2":4},"release_version":"v0.2.2","schema_version":2}
49
+ {"data":{"kind":"added","status":"accepted"},"entry_id":"entry-0003","event":"entry.added","event_id":"event-0049","record_revisions":{"entry:v0.2.2/entry-0003":1,"release:v0.2.2":5},"release_version":"v0.2.2","schema_version":2}
50
+ {"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0004","event":"entry.added","event_id":"event-0050","record_revisions":{"entry:v0.2.2/entry-0004":1,"release:v0.2.2":6},"release_version":"v0.2.2","schema_version":2}
51
+ {"data":{"released_at":"2026-09-05"},"event":"release.finalized","event_id":"event-0051","record_revisions":{"release:v0.2.2":7},"release_version":"v0.2.2","schema_version":2}
52
+ {"data":{"updated_rows":4},"event":"audit.updated","event_id":"event-0052","record_revisions":{"commit_audit_sheet":2},"release_version":"v0.2.2","schema_version":2}
53
+ {"data":{"fields":["git_commit_count","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0053","record_revisions":{"release:v0.2.2":8},"release_version":"v0.2.2","schema_version":2}
54
+ {"data":{"new_rows":3,"preserved_reviewed_rows":4,"removed_rows":0},"event":"audit.updated","event_id":"event-0054","record_revisions":{"commit_audit_sheet":3},"release_version":"v0.2.2","schema_version":2}
55
+ {"data":{"kind":"quality","status":"accepted"},"entry_id":"entry-0005","event":"entry.added","event_id":"event-0055","record_revisions":{"entry:v0.2.2/entry-0005":1,"release:v0.2.2":9},"release_version":"v0.2.2","schema_version":2}
56
+ {"data":{"kind":"quality","status":"accepted"},"entry_id":"entry-0006","event":"entry.added","event_id":"event-0056","record_revisions":{"entry:v0.2.2/entry-0006":1,"release:v0.2.2":10},"release_version":"v0.2.2","schema_version":2}
57
+ {"data":{"kind":"internal","status":"accepted"},"entry_id":"entry-0007","event":"entry.added","event_id":"event-0057","record_revisions":{"entry:v0.2.2/entry-0007":1,"release:v0.2.2":11},"release_version":"v0.2.2","schema_version":2}
@@ -0,0 +1,52 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 3
6
+ release_version: v0.2.1
7
+ git_base_ref: v0.2.0
8
+ git_base_sha: b19733656477b73d888aae8d63a6cc5ee085aa3a
9
+ git_head_ref: HEAD
10
+ git_head_sha: 4fe1bcb7220173f9fae51ec0ad942649fdf6250b
11
+ git_range: b19733656477b73d888aae8d63a6cc5ee085aa3a..4fe1bcb7220173f9fae51ec0ad942649fdf6250b
12
+ commit_count: 1
13
+ rows:
14
+ - sha: 4fe1bcb7220173f9fae51ec0ad942649fdf6250b
15
+ source_ref: git:4fe1bcb7220173f9fae51ec0ad942649fdf6250b
16
+ short_sha: 4fe1bcb
17
+ changed_paths:
18
+ - README.md
19
+ - docs/index.md
20
+ - readio/cli.py
21
+ - readio/spotify_cli.py
22
+ - skill/readio/references/cli.md
23
+ - skill/readio/references/troubleshooting.md
24
+ - tests/test_cli.py
25
+ - tests/test_spotify_cli.py
26
+ stats:
27
+ files_changed: 0
28
+ insertions: 304
29
+ deletions: 6
30
+ inspected: true
31
+ inspected_paths:
32
+ - README.md
33
+ - docs/index.md
34
+ - readio/cli.py
35
+ - readio/spotify_cli.py
36
+ - skill/readio/references/cli.md
37
+ - skill/readio/references/troubleshooting.md
38
+ - tests/test_cli.py
39
+ - tests/test_spotify_cli.py
40
+ observed_behavior:
41
+ The CLI resolves one existing positional document path for speak,
42
+ render, and Spotify publish, infers Markdown, SSMD, or text input formats, rejects
43
+ missing path-like tokens and non-regular files, and preserves literal filename
44
+ handling with --input-format text; focused tests cover these behaviors.
45
+ public_impact: public
46
+ decision: accepted
47
+ stale: false
48
+ evidence_subject: "feat: automatic file detection"
49
+ target_entry_id: entry-0001
50
+ notes:
51
+ User-facing input handling change documented in the README, CLI guide, and
52
+ troubleshooting reference.
@@ -0,0 +1,35 @@
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.2.1
9
+ kind: added
10
+ summary:
11
+ Added positional file detection for speak, render, and Spotify publish with
12
+ clear literal-text and missing-path handling
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:4fe1bcb7220173f9fae51ec0ad942649fdf6250b
18
+ paths:
19
+ - README.md
20
+ - docs/index.md
21
+ - readio/cli.py
22
+ - readio/spotify_cli.py
23
+ - skill/readio/references/cli.md
24
+ - skill/readio/references/troubleshooting.md
25
+ - tests/test_cli.py
26
+ - tests/test_spotify_cli.py
27
+ issues: []
28
+ prs: []
29
+ sources:
30
+ - git:4fe1bcb7220173f9fae51ec0ad942649fdf6250b
31
+ contributors: []
32
+ breaking: false
33
+ internal: false
34
+ order: 1
35
+ ---
@@ -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.2.1
8
+ status: released
9
+ history_state: curated
10
+ title: null
11
+ released_at: "2026-09-05"
12
+ previous_version: v0.2.0
13
+ cancel_reason: null
14
+ superseded_by: null
15
+ changelog_file: docs/changelog.md
16
+ boundary_ref: null
17
+ source_refs: []
18
+ source_count: null
19
+ entry_count: 1
20
+ artifact_count: 0
21
+ git_base_ref: v0.2.0
22
+ git_base_sha: b19733656477b73d888aae8d63a6cc5ee085aa3a
23
+ git_head_ref: HEAD
24
+ git_head_sha: 4fe1bcb7220173f9fae51ec0ad942649fdf6250b
25
+ git_range: b19733656477b73d888aae8d63a6cc5ee085aa3a..4fe1bcb7220173f9fae51ec0ad942649fdf6250b
26
+ git_commit_count: 1
27
+ ---
@@ -0,0 +1,213 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 3
6
+ release_version: v0.2.2
7
+ git_base_ref: v0.2.1
8
+ git_base_sha: 52c6084a8dfc3fbf46ac5fca8ff670cb1e97bf35
9
+ git_head_ref: HEAD
10
+ git_head_sha: 0302f797298f78a7f56bf85fdccd2fa977110870
11
+ git_range: 52c6084a8dfc3fbf46ac5fca8ff670cb1e97bf35..0302f797298f78a7f56bf85fdccd2fa977110870
12
+ commit_count: 7
13
+ rows:
14
+ - sha: 5827dda1b6efda39c08b3cc38da8c6ebd867e24d
15
+ source_ref: git:5827dda1b6efda39c08b3cc38da8c6ebd867e24d
16
+ short_sha: 5827dda
17
+ changed_paths:
18
+ - .codecrate.toml
19
+ - README.md
20
+ - llm-guides/README.md
21
+ - llm-guides/ssmd/audio-drama.md
22
+ - llm-guides/ssmd/debate-pro-con.md
23
+ - llm-guides/ssmd/document-summary.md
24
+ - llm-guides/ssmd/dramatic-story.md
25
+ - llm-guides/ssmd/educational-explainer.md
26
+ - llm-guides/ssmd/funny-story.md
27
+ - llm-guides/ssmd/general-narration.md
28
+ - llm-guides/ssmd/guided-meditation.md
29
+ - llm-guides/ssmd/kids-story.md
30
+ - llm-guides/ssmd/language-learning.md
31
+ - llm-guides/ssmd/news-briefing.md
32
+ - llm-guides/ssmd/podcast-interview.md
33
+ - llm-guides/ssmd/podcast-roundtable.md
34
+ - llm-guides/ssmd/podcast-solo.md
35
+ - llm-guides/ssmd/quiz-trivia.md
36
+ - tests/test_llm_guides.py
37
+ stats:
38
+ files_changed: 0
39
+ insertions: 4998
40
+ deletions: 0
41
+ inspected: true
42
+ inspected_paths:
43
+ - llm-guides/README.md
44
+ - llm-guides/ssmd/
45
+ observed_behavior:
46
+ Added comprehensive LLM guides for SSMD audio content creation
47
+ covering podcasts, stories, educational content, meditation, news, and more
48
+ public_impact: public
49
+ decision: accepted
50
+ stale: false
51
+ evidence_subject: "feat: llm guides added"
52
+ target_entry_key: entry-0002
53
+ target_entry_id: entry-0002
54
+ notes: ""
55
+ - sha: 1ef0e91959f5986fed3bc6fdffcc32982649f5f5
56
+ source_ref: git:1ef0e91959f5986fed3bc6fdffcc32982649f5f5
57
+ short_sha: 1ef0e91
58
+ changed_paths:
59
+ - pyproject.toml
60
+ - readio/cli.py
61
+ - readio/models.py
62
+ - readio/plan.py
63
+ - readio/reader.py
64
+ - readio/ssmd.py
65
+ - skill/readio/SKILL.md
66
+ - tests/test_plan.py
67
+ - tests/test_plan_cli.py
68
+ - tests/test_plan_no_tts_load.py
69
+ - tests/test_pykokoro_09_contract.py
70
+ stats:
71
+ files_changed: 0
72
+ insertions: 2804
73
+ deletions: 3
74
+ inspected: true
75
+ inspected_paths:
76
+ - readio/plan.py
77
+ - tests/test_plan.py
78
+ observed_behavior:
79
+ New synthesis plan resolution system with explicit plan domain,
80
+ resolution pipeline, validation, and comprehensive test coverage
81
+ public_impact: public
82
+ decision: accepted
83
+ stale: false
84
+ evidence_subject: "feat: new plan feature"
85
+ target_entry_key: entry-0001
86
+ target_entry_id: entry-0001
87
+ notes: ""
88
+ - sha: 6449c24426d1f4e4d318b553b4ce2fa46b0f3c1e
89
+ source_ref: git:6449c24426d1f4e4d318b553b4ce2fa46b0f3c1e
90
+ short_sha: 6449c24
91
+ changed_paths:
92
+ - README.md
93
+ - docs/index.md
94
+ - readio/cli.py
95
+ - readio/plan.py
96
+ - readio/reader.py
97
+ - readio/ssmd.py
98
+ - skill/readio/references/cli.md
99
+ - skill/readio/references/ssmd.md
100
+ - skill/readio/references/troubleshooting.md
101
+ - tests/test_cli.py
102
+ - tests/test_plan.py
103
+ - tests/test_plan_cli.py
104
+ - tests/test_plan_no_tts_load.py
105
+ - tests/test_plan_validation.py
106
+ - tests/test_render_from_plan.py
107
+ - tests/test_ssmd_single_source.py
108
+ stats:
109
+ files_changed: 0
110
+ insertions: 1428
111
+ deletions: 335
112
+ inspected: true
113
+ inspected_paths:
114
+ - readio/cli.py
115
+ - readio/plan.py
116
+ observed_behavior: Improved plan feature with enhanced CLI commands and validation
117
+ public_impact: public
118
+ decision: accepted
119
+ stale: false
120
+ evidence_subject: "feat: improve plan feature"
121
+ target_entry_key: entry-0004
122
+ target_entry_id: entry-0004
123
+ notes: ""
124
+ - sha: 33b44019d3d4899a551a6e621e8a78189bf52b60
125
+ source_ref: git:33b44019d3d4899a551a6e621e8a78189bf52b60
126
+ short_sha: 33b4401
127
+ changed_paths:
128
+ - README.md
129
+ - docs/index.md
130
+ - readio/cli.py
131
+ - readio/errors.py
132
+ - readio/jsonutil.py
133
+ - readio/manifest.py
134
+ - readio/plan.py
135
+ - skill/readio/SKILL.md
136
+ - skill/readio/references/cli.md
137
+ - skill/readio/references/troubleshooting.md
138
+ - tests/test_manifest.py
139
+ - tests/test_render_manifest_cli.py
140
+ stats:
141
+ files_changed: 0
142
+ insertions: 719
143
+ deletions: 22
144
+ inspected: true
145
+ inspected_paths:
146
+ - readio/manifest.py
147
+ - tests/test_manifest.py
148
+ observed_behavior:
149
+ Added manifest module for project metadata and package information
150
+ management
151
+ public_impact: public
152
+ decision: accepted
153
+ stale: false
154
+ evidence_subject: "feat: add manifest"
155
+ target_entry_key: entry-0003
156
+ target_entry_id: entry-0003
157
+ notes: ""
158
+ - sha: 9ec43c0c70d5badaf282547142af78fe9e986ca4
159
+ source_ref: git:9ec43c0c70d5badaf282547142af78fe9e986ca4
160
+ short_sha: 9ec43c0
161
+ changed_paths:
162
+ - .ledger/releaseledger/data/ledgers/main/events/events.jsonl
163
+ - .ledger/releaseledger/data/ledgers/main/releases/v0.2.2/audit/commit-audit.yaml
164
+ - .ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0001.md
165
+ - .ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0002.md
166
+ - .ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0003.md
167
+ - .ledger/releaseledger/data/ledgers/main/releases/v0.2.2/entries/entry-0004.md
168
+ - .ledger/releaseledger/data/ledgers/main/releases/v0.2.2/release.md
169
+ - CHANGELOG.md
170
+ stats:
171
+ files_changed: 0
172
+ insertions: 315
173
+ deletions: 0
174
+ inspected: false
175
+ inspected_paths: []
176
+ observed_behavior: ""
177
+ public_impact: unknown
178
+ decision: needs_review
179
+ stale: false
180
+ evidence_subject: "doc: changelog"
181
+ - sha: 6656cdd980d30a65d403961909d5e911e3e81dbc
182
+ source_ref: git:6656cdd980d30a65d403961909d5e911e3e81dbc
183
+ short_sha: 6656cdd
184
+ changed_paths:
185
+ - tests/test_plan_no_tts_load.py
186
+ stats:
187
+ files_changed: 0
188
+ insertions: 2
189
+ deletions: 0
190
+ inspected: false
191
+ inspected_paths: []
192
+ observed_behavior: ""
193
+ public_impact: unknown
194
+ decision: needs_review
195
+ stale: false
196
+ evidence_subject: "fix: pytest"
197
+ - sha: 0302f797298f78a7f56bf85fdccd2fa977110870
198
+ source_ref: git:0302f797298f78a7f56bf85fdccd2fa977110870
199
+ short_sha: 0302f79
200
+ changed_paths:
201
+ - readio/jsonutil.py
202
+ - tests/test_plan_no_tts_load.py
203
+ stats:
204
+ files_changed: 0
205
+ insertions: 3
206
+ deletions: 2
207
+ inspected: false
208
+ inspected_paths: []
209
+ observed_behavior: ""
210
+ public_impact: unknown
211
+ decision: needs_review
212
+ stale: false
213
+ evidence_subject: "chore: pytest and pre-commit fix"
@@ -0,0 +1,27 @@
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.2.2
9
+ kind: added
10
+ summary:
11
+ Added synthesis plan resolution system with explicit plan domain, resolution
12
+ pipeline, and validation
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:1ef0e91959f5986fed3bc6fdffcc32982649f5f5
18
+ paths:
19
+ - readio/plan.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: 1
7
+ entry_id: entry-0002
8
+ release_version: v0.2.2
9
+ kind: docs
10
+ summary:
11
+ Added comprehensive LLM guides for SSMD audio content creation including
12
+ podcasts, stories, educational content, and more
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:5827dda1b6efda39c08b3cc38da8c6ebd867e24d
18
+ paths:
19
+ - llm-guides/README.md
20
+ issues: []
21
+ prs: []
22
+ sources: []
23
+ contributors: []
24
+ breaking: false
25
+ internal: false
26
+ order: 2
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-0003
8
+ release_version: v0.2.2
9
+ kind: added
10
+ summary: Added manifest module for project metadata and package information management
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:33b44019d3d4899a551a6e621e8a78189bf52b60
16
+ paths:
17
+ - readio/manifest.py
18
+ issues: []
19
+ prs: []
20
+ sources: []
21
+ contributors: []
22
+ breaking: false
23
+ internal: false
24
+ order: 3
25
+ ---
@@ -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.2.2
9
+ kind: changed
10
+ summary: Improved plan feature with enhanced CLI commands and validation
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:6449c24426d1f4e4d318b553b4ce2fa46b0f3c1e
16
+ paths:
17
+ - readio/cli.py
18
+ issues: []
19
+ prs: []
20
+ sources: []
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_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0005
8
+ release_version: v0.2.2
9
+ kind: quality
10
+ summary: Fixed pytest and pre-commit configuration for plan feature tests
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:0302f797298f78a7f56bf85fdccd2fa977110870
16
+ paths:
17
+ - readio/jsonutil.py
18
+ - tests/test_plan_no_tts_load.py
19
+ issues: []
20
+ prs: []
21
+ sources: []
22
+ contributors: []
23
+ breaking: false
24
+ internal: true
25
+ order: 5
26
+ ---
@@ -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-0006
8
+ release_version: v0.2.2
9
+ kind: quality
10
+ summary: Fixed pytest test setup for plan feature without TTS dependency
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:6656cdd980d30a65d403961909d5e911e3e81dbc
16
+ paths:
17
+ - tests/test_plan_no_tts_load.py
18
+ issues: []
19
+ prs: []
20
+ sources: []
21
+ contributors: []
22
+ breaking: false
23
+ internal: true
24
+ order: 6
25
+ ---
@@ -0,0 +1,24 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 1
7
+ entry_id: entry-0007
8
+ release_version: v0.2.2
9
+ kind: internal
10
+ summary: Initialized releaseledger state and changelog for v0.2.2
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:9ec43c0c70d5badaf282547142af78fe9e986ca4
16
+ paths: []
17
+ issues: []
18
+ prs: []
19
+ sources: []
20
+ contributors: []
21
+ breaking: false
22
+ internal: true
23
+ order: 7
24
+ ---
@@ -0,0 +1,27 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 11
7
+ version: v0.2.2
8
+ status: released
9
+ history_state: curated
10
+ title: Readio v0.2.2
11
+ released_at: "2026-09-05"
12
+ previous_version: v0.2.1
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: 7
20
+ artifact_count: 0
21
+ git_base_ref: v0.2.1
22
+ git_base_sha: 52c6084a8dfc3fbf46ac5fca8ff670cb1e97bf35
23
+ git_head_ref: HEAD
24
+ git_head_sha: 0302f797298f78a7f56bf85fdccd2fa977110870
25
+ git_range: 52c6084a8dfc3fbf46ac5fca8ff670cb1e97bf35..0302f797298f78a7f56bf85fdccd2fa977110870
26
+ git_commit_count: 7
27
+ ---
@@ -0,0 +1,18 @@
1
+ # Changelog
2
+
3
+ ## [v0.2.2] - 2026-09-05
4
+
5
+ ### Added
6
+
7
+ - Added synthesis plan resolution system with explicit plan domain, resolution pipeline, and validation
8
+ - Added manifest module for project metadata and package information management
9
+
10
+ ### Changed
11
+
12
+ - Improved plan feature with enhanced CLI commands and validation
13
+
14
+ ### Documentation
15
+
16
+ - Added comprehensive LLM guides for SSMD audio content creation including podcasts, stories, educational content, and more
17
+
18
+ <!-- generated by releaseledger -->