utterplan 0.1.2__tar.gz → 0.2.0__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 (195) hide show
  1. {utterplan-0.1.2 → utterplan-0.2.0}/.github/workflows/codecov.yml +1 -1
  2. {utterplan-0.1.2 → utterplan-0.2.0}/.github/workflows/tests.yml +2 -2
  3. {utterplan-0.1.2 → utterplan-0.2.0}/.gitignore +3 -0
  4. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/events/events.jsonl +18 -0
  5. {utterplan-0.1.2/.ledger/releaseledger/data/ledgers/main/releases/0.1.2 → utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3}/audit/commit-audit.yaml +98 -5
  6. {utterplan-0.1.2/.ledger/releaseledger/data/ledgers/main/releases/0.1.2 → utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3}/entries/entry-0001.md +2 -2
  7. {utterplan-0.1.2/.ledger/releaseledger/data/ledgers/main/releases/0.1.2 → utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3}/entries/entry-0002.md +2 -2
  8. {utterplan-0.1.2/.ledger/releaseledger/data/ledgers/main/releases/0.1.2 → utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3}/entries/entry-0003.md +2 -2
  9. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3/entries/entry-0004.md +25 -0
  10. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3/entries/entry-0005.md +25 -0
  11. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3/entries/entry-0006.md +27 -0
  12. {utterplan-0.1.2/.ledger/releaseledger/data/ledgers/main/releases/0.1.2 → utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.1.3}/release.md +8 -8
  13. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/audit/commit-audit.yaml +241 -0
  14. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0001.md +74 -0
  15. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0002.md +31 -0
  16. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0003.md +38 -0
  17. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/entries/entry-0004.md +53 -0
  18. utterplan-0.2.0/.ledger/releaseledger/data/ledgers/main/releases/0.2.0/release.md +27 -0
  19. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/audit-decisions.yaml +131 -0
  20. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/audit.yaml +135 -0
  21. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/entries.yaml +165 -0
  22. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/evidence/9637182.patch +991 -0
  23. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/evidence/c52aa68.patch +3109 -0
  24. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/evidence/e49a6dd.patch +178 -0
  25. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/evidence/manifest.json +123 -0
  26. utterplan-0.2.0/.ledger/releaseledger/work/0.2.0/range.json +13 -0
  27. {utterplan-0.1.2 → utterplan-0.2.0}/AGENTS.md +2 -2
  28. {utterplan-0.1.2 → utterplan-0.2.0}/PKG-INFO +8 -6
  29. {utterplan-0.1.2 → utterplan-0.2.0}/README.md +5 -5
  30. {utterplan-0.1.2 → utterplan-0.2.0}/docs/architecture.md +3 -1
  31. {utterplan-0.1.2 → utterplan-0.2.0}/docs/changelog.md +31 -1
  32. {utterplan-0.1.2 → utterplan-0.2.0}/docs/cli.md +2 -3
  33. {utterplan-0.1.2 → utterplan-0.2.0}/docs/conf.py +0 -1
  34. {utterplan-0.1.2 → utterplan-0.2.0}/docs/consumer-guide.md +6 -0
  35. {utterplan-0.1.2 → utterplan-0.2.0}/docs/coordinate-spaces.md +1 -1
  36. {utterplan-0.1.2 → utterplan-0.2.0}/docs/debugging.md +2 -0
  37. {utterplan-0.1.2 → utterplan-0.2.0}/docs/format.md +10 -10
  38. {utterplan-0.1.2 → utterplan-0.2.0}/docs/getting-started.md +3 -2
  39. {utterplan-0.1.2 → utterplan-0.2.0}/docs/index.md +1 -1
  40. {utterplan-0.1.2 → utterplan-0.2.0}/docs/phase-a-completion.md +8 -13
  41. {utterplan-0.1.2 → utterplan-0.2.0}/docs/pykokoro-integration.md +18 -9
  42. {utterplan-0.1.2 → utterplan-0.2.0}/docs/python-api.md +3 -0
  43. utterplan-0.2.0/examples/basic.py +17 -0
  44. utterplan-0.2.0/examples/chapter.ssmd +1 -0
  45. utterplan-0.2.0/examples/compile_file.py +29 -0
  46. utterplan-0.2.0/examples/inspect_plan.py +29 -0
  47. utterplan-0.2.0/examples/multilingual.py +12 -0
  48. utterplan-0.2.0/examples/ssmd_example.py +12 -0
  49. {utterplan-0.1.2 → utterplan-0.2.0}/pyproject.toml +1 -0
  50. utterplan-0.2.0/spec/schemas/v2.schema.json +311 -0
  51. {utterplan-0.1.2/utterplan → utterplan-0.2.0/spec}/utterplan.schema.json +38 -5
  52. {utterplan-0.1.2 → utterplan-0.2.0}/tests/golden/basic_en.utterplan.json +18 -5
  53. {utterplan-0.1.2 → utterplan-0.2.0}/tests/golden/directives.utterplan.json +18 -5
  54. {utterplan-0.1.2 → utterplan-0.2.0}/tests/golden/markers.utterplan.json +21 -6
  55. {utterplan-0.1.2 → utterplan-0.2.0}/tests/golden/multilingual.utterplan.json +38 -5
  56. {utterplan-0.1.2 → utterplan-0.2.0}/tests/golden/parenthetical.utterplan.json +32 -7
  57. {utterplan-0.1.2 → utterplan-0.2.0}/tests/golden/spokenform_offsets.utterplan.json +25 -5
  58. {utterplan-0.1.2 → utterplan-0.2.0}/tests/golden/ssmd_breaks.utterplan.json +22 -7
  59. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_cli.py +20 -5
  60. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_explain.py +6 -1
  61. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_format.py +10 -1
  62. utterplan-0.2.0/tests/test_linguistics.py +225 -0
  63. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_migration_framework.py +6 -5
  64. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_public_identity.py +1 -1
  65. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_schema_history.py +15 -5
  66. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_schema_registry.py +13 -7
  67. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/__init__.py +2 -0
  68. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/_version.py +3 -3
  69. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/cli.py +11 -2
  70. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/explain.py +31 -7
  71. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/hashing.py +17 -1
  72. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/linguistics.py +72 -37
  73. utterplan-0.2.0/utterplan/migrations/__init__.py +6 -0
  74. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/migrations/registry.py +5 -1
  75. utterplan-0.2.0/utterplan/migrations/v1_to_v2.py +213 -0
  76. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/model.py +170 -16
  77. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/planner.py +34 -6
  78. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/schema_registry.py +4 -1
  79. utterplan-0.2.0/utterplan/schemas/v2.schema.json +311 -0
  80. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/units.py +9 -3
  81. {utterplan-0.1.2/spec → utterplan-0.2.0/utterplan}/utterplan.schema.json +38 -5
  82. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/versioning.py +2 -3
  83. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan.egg-info/PKG-INFO +8 -6
  84. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan.egg-info/SOURCES.txt +28 -12
  85. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan.egg-info/requires.txt +3 -0
  86. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan.egg-info/scm_file_list.json +28 -12
  87. utterplan-0.2.0/utterplan.egg-info/scm_version.json +8 -0
  88. utterplan-0.1.2/docs/pykokoro-reference.md +0 -57
  89. utterplan-0.1.2/examples/basic.py +0 -7
  90. utterplan-0.1.2/examples/compile_file.py +0 -7
  91. utterplan-0.1.2/examples/inspect_plan.py +0 -5
  92. utterplan-0.1.2/examples/multilingual.py +0 -4
  93. utterplan-0.1.2/examples/ssmd.py +0 -6
  94. utterplan-0.1.2/tests/reference/cases.py +0 -15
  95. utterplan-0.1.2/tests/reference/dump_pykokoro_frontend.py +0 -266
  96. utterplan-0.1.2/tests/reference/test_pykokoro_parity.py +0 -232
  97. utterplan-0.1.2/tests/test_linguistics.py +0 -77
  98. utterplan-0.1.2/utterplan/migrations/__init__.py +0 -5
  99. utterplan-0.1.2/utterplan/stages/segmentation/__init__.py +0 -0
  100. utterplan-0.1.2/utterplan.egg-info/scm_version.json +0 -8
  101. {utterplan-0.1.2 → utterplan-0.2.0}/.codecrate.toml +0 -0
  102. {utterplan-0.1.2 → utterplan-0.2.0}/.github/workflows/pre-commit.yml +0 -0
  103. {utterplan-0.1.2 → utterplan-0.2.0}/.github/workflows/python-publish.yml +0 -0
  104. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/ledger.toml +0 -0
  105. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/.ledger-project.toml +0 -0
  106. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/config.toml +0 -0
  107. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/.ledger-project.toml +0 -0
  108. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/releases/0.1.0/entries/entry-0001.md +0 -0
  109. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/releases/0.1.0/entries/entry-0002.md +0 -0
  110. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/releases/0.1.0/entries/entry-0003.md +0 -0
  111. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/releases/0.1.0/entries/entry-0004.md +0 -0
  112. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/releases/0.1.0/release.md +0 -0
  113. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/entries/entry-0001.md +0 -0
  114. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/data/ledgers/main/releases/0.1.1/release.md +0 -0
  115. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/audit-decisions.yaml +0 -0
  116. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/audit.yaml +0 -0
  117. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/entries.yaml +0 -0
  118. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/evidence/2c64e29.patch +0 -0
  119. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/evidence/4022753.patch +0 -0
  120. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/evidence/66a88b6.patch +0 -0
  121. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/evidence/manifest.json +0 -0
  122. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/work/0.1.2/range.json +0 -0
  123. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/releaseledger/write.lock +0 -0
  124. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/taskledger/.ledger-project.toml +0 -0
  125. {utterplan-0.1.2 → utterplan-0.2.0}/.ledger/taskledger/config.toml +0 -0
  126. {utterplan-0.1.2 → utterplan-0.2.0}/.pre-commit-config.yaml +0 -0
  127. {utterplan-0.1.2 → utterplan-0.2.0}/LICENSE +0 -0
  128. {utterplan-0.1.2 → utterplan-0.2.0}/NOTICE +0 -0
  129. {utterplan-0.1.2 → utterplan-0.2.0}/docs/Makefile +0 -0
  130. {utterplan-0.1.2 → utterplan-0.2.0}/docs/make.bat +0 -0
  131. {utterplan-0.1.2 → utterplan-0.2.0}/docs/requirements.txt +0 -0
  132. {utterplan-0.1.2 → utterplan-0.2.0}/setup.cfg +0 -0
  133. {utterplan-0.1.2 → utterplan-0.2.0}/spec/schemas/v1.schema.json +0 -0
  134. {utterplan-0.1.2 → utterplan-0.2.0}/tests/__init__.py +0 -0
  135. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/__init__.py +0 -0
  136. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/cases.py +0 -0
  137. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/goldens/multilingual_preparation.json +0 -0
  138. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/goldens/spokenform_numbers.json +0 -0
  139. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/goldens/ssmd_break.json +0 -0
  140. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/goldens/ssmd_language_detection.json +0 -0
  141. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/goldens/ssmd_marker.json +0 -0
  142. {utterplan-0.1.2 → utterplan-0.2.0}/tests/migration/goldens/ssmd_pronunciation.json +0 -0
  143. /utterplan-0.1.2/tests/migration/test_pykokoro_frontend_parity.py → /utterplan-0.2.0/tests/migration/test_semantic_migration_regressions.py +0 -0
  144. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/README.md +0 -0
  145. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/v1/basic.json +0 -0
  146. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/v1/directives.json +0 -0
  147. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/v1/markers.json +0 -0
  148. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/v1/multilingual.json +0 -0
  149. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/v1/parenthetical.json +0 -0
  150. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/v1/spokenform_offsets.json +0 -0
  151. {utterplan-0.1.2 → utterplan-0.2.0}/tests/schema_history/v1/ssmd_breaks.json +0 -0
  152. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_boundaries.py +0 -0
  153. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_consumer_contract.py +0 -0
  154. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_consumer_readiness.py +0 -0
  155. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_coordinates.py +0 -0
  156. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_directives.py +0 -0
  157. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_fake_renderer.py +0 -0
  158. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_golden.py +0 -0
  159. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_identity_units.py +0 -0
  160. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_import_boundaries.py +0 -0
  161. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_language.py +0 -0
  162. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_pauses.py +0 -0
  163. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_planner.py +0 -0
  164. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_preparation.py +0 -0
  165. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_schema_strict.py +0 -0
  166. {utterplan-0.1.2 → utterplan-0.2.0}/tests/test_version.py +0 -0
  167. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/__main__.py +0 -0
  168. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/config.py +0 -0
  169. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/diagnostics.py +0 -0
  170. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/directives.py +0 -0
  171. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/exceptions.py +0 -0
  172. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/format.py +0 -0
  173. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/language.py +0 -0
  174. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/migration.py +0 -0
  175. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/parsers.py +0 -0
  176. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/pauses.py +0 -0
  177. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/preparation.py +0 -0
  178. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/py.typed +0 -0
  179. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/schemas/v1.schema.json +0 -0
  180. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/serialization.py +0 -0
  181. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/spacy_models.py +0 -0
  182. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/spans.py +0 -0
  183. {utterplan-0.1.2/tests/reference → utterplan-0.2.0/utterplan/stages}/__init__.py +0 -0
  184. {utterplan-0.1.2/utterplan/stages → utterplan-0.2.0/utterplan/stages/document}/__init__.py +0 -0
  185. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/stages/document/plain.py +0 -0
  186. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/stages/document/ssmd.py +0 -0
  187. {utterplan-0.1.2/utterplan/stages/document → utterplan-0.2.0/utterplan/stages/preparation}/__init__.py +0 -0
  188. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/stages/preparation/identity.py +0 -0
  189. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/stages/preparation/spokenform.py +0 -0
  190. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/stages/protocols.py +0 -0
  191. {utterplan-0.1.2/utterplan/stages/preparation → utterplan-0.2.0/utterplan/stages/segmentation}/__init__.py +0 -0
  192. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan/stages/segmentation/phrasplit.py +0 -0
  193. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan.egg-info/dependency_links.txt +0 -0
  194. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan.egg-info/entry_points.txt +0 -0
  195. {utterplan-0.1.2 → utterplan-0.2.0}/utterplan.egg-info/top_level.txt +0 -0
@@ -17,7 +17,7 @@ jobs:
17
17
  python -m pip install --upgrade pip
18
18
  python -m pip install coverage pytest pytest-cov
19
19
  python -m pip install -e ".[dev]"
20
- python -m pytest -m "not reference" --cov=utterplan --cov-report=xml --junitxml=junit.xml
20
+ python -m pytest --cov=utterplan --cov-report=xml --junitxml=junit.xml
21
21
  - name: Upload coverage to Codecov
22
22
  uses: codecov/codecov-action@v5
23
23
  with:
@@ -30,7 +30,7 @@ jobs:
30
30
  if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
31
31
  run: python -m ruff check .
32
32
  - name: Run tests
33
- run: python -m pytest -q -m "not reference"
33
+ run: python -m pytest -q
34
34
 
35
35
  lower-bounds:
36
36
  runs-on: ubuntu-latest
@@ -51,7 +51,7 @@ jobs:
51
51
  "typing_extensions>=4.0"
52
52
  python -m pip install --no-deps -e .
53
53
  - name: Run lower-bound tests
54
- run: python -m pytest -q -m "not reference"
54
+ run: python -m pytest -q
55
55
 
56
56
  package-smoke:
57
57
  runs-on: ubuntu-latest
@@ -219,3 +219,6 @@ __marimo__/
219
219
  context_utterplan*.*
220
220
 
221
221
  utterplan/_version.py
222
+
223
+ # Generated outputs from the runnable examples
224
+ examples/*.utterplan.json
@@ -18,3 +18,21 @@
18
18
  {"data":{"changed_releases":["0.1.0","0.1.1","0.1.2"]},"event":"release.chain_repaired","event_id":"event-0018","record_revisions":{"release:0.1.0":9,"release:0.1.1":4,"release:0.1.2":5},"schema_version":2}
19
19
  {"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0001","event":"entry.added","event_id":"event-0019","record_revisions":{"entry:0.1.1/entry-0001":1,"release:0.1.1":5},"release_version":"0.1.1","schema_version":2}
20
20
  {"data":{"fields":["git_base_ref","git_base_sha","git_commit_count","git_range"]},"event":"release.updated","event_id":"event-0020","record_revisions":{"release:0.1.1":6},"release_version":"0.1.1","schema_version":2}
21
+ {"data":{"audit_rewritten":true,"old_release_version":"0.1.2","reason":null,"replace_canceled_target":false,"rewrote_successors":false},"event":"release.renamed","event_id":"event-0021","record_revisions":{"audit:0.1.3":4,"entry:0.1.3/entry-0001":2,"entry:0.1.3/entry-0002":2,"entry:0.1.3/entry-0003":2,"release:0.1.3":6},"release_version":"0.1.3","schema_version":2}
22
+ {"data":{"fields":["git_commit_count","git_head_sha","git_range"]},"event":"release.updated","event_id":"event-0022","record_revisions":{"release:0.1.3":7},"release_version":"0.1.3","schema_version":2}
23
+ {"data":{"new_rows":3,"preserved_reviewed_rows":3,"removed_rows":0},"event":"audit.updated","event_id":"event-0023","record_revisions":{"commit_audit_sheet":5},"release_version":"0.1.3","schema_version":2}
24
+ {"data":{"kind":"docs","status":"accepted"},"entry_id":"entry-0004","event":"entry.added","event_id":"event-0024","record_revisions":{"entry:0.1.3/entry-0004":1,"release:0.1.3":8},"release_version":"0.1.3","schema_version":2}
25
+ {"data":{"kind":"internal","status":"accepted"},"entry_id":"entry-0005","event":"entry.added","event_id":"event-0025","record_revisions":{"entry:0.1.3/entry-0005":1,"release:0.1.3":9},"release_version":"0.1.3","schema_version":2}
26
+ {"data":{"kind":"changed","status":"accepted"},"entry_id":"entry-0006","event":"entry.added","event_id":"event-0026","record_revisions":{"entry:0.1.3/entry-0006":1,"release:0.1.3":10},"release_version":"0.1.3","schema_version":2}
27
+ {"data":{"added_source_refs":[],"fields":["summary"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0004","event":"entry.updated","event_id":"event-0027","record_revisions":{"entry:0.1.3/entry-0004":2},"release_version":"0.1.3","schema_version":2}
28
+ {"data":{"added_source_refs":[],"fields":["kind"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0006","event":"entry.updated","event_id":"event-0028","record_revisions":{"entry:0.1.3/entry-0006":2},"release_version":"0.1.3","schema_version":2}
29
+ {"data":{"added_source_refs":[],"fields":["internal","kind"],"removed_source_refs":[],"source_refs_mode":"unchanged"},"entry_id":"entry-0005","event":"entry.updated","event_id":"event-0029","record_revisions":{"entry:0.1.3/entry-0005":2},"release_version":"0.1.3","schema_version":2}
30
+ {"data":{"updated_rows":3},"event":"audit.updated","event_id":"event-0030","record_revisions":{"commit_audit_sheet":6},"release_version":"0.1.3","schema_version":2}
31
+ {"data":{"released_at":"2026-09-19"},"event":"release.finalized","event_id":"event-0031","record_revisions":{"release:0.1.3":11},"release_version":"0.1.3","schema_version":2}
32
+ {"data":{"status":"planned"},"event":"release.created","event_id":"event-0032","record_revisions":{"release:0.2.0":1},"release_version":"0.2.0","schema_version":2}
33
+ {"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-0033","record_revisions":{"release:0.2.0":2},"release_version":"0.2.0","schema_version":2}
34
+ {"data":{"row_count":3},"event":"audit.created","event_id":"event-0034","record_revisions":{"commit_audit_sheet":1},"release_version":"0.2.0","schema_version":2}
35
+ {"data":{"updated_rows":3},"event":"audit.updated","event_id":"event-0035","record_revisions":{"commit_audit_sheet":2},"release_version":"0.2.0","schema_version":2}
36
+ {"data":{"updated_rows":3},"event":"audit.updated","event_id":"event-0036","record_revisions":{"commit_audit_sheet":3},"release_version":"0.2.0","schema_version":2}
37
+ {"data":{"entry_ids":["entry-0001","entry-0002","entry-0003","entry-0004"],"synced_audit_rows":3},"event":"entry.batch_added","event_id":"event-0037","record_revisions":{"commit_audit_sheet":4,"entry:0.2.0/entry-0001":1,"entry:0.2.0/entry-0002":1,"entry:0.2.0/entry-0003":1,"entry:0.2.0/entry-0004":1,"release:0.2.0":3},"release_version":"0.2.0","schema_version":2}
38
+ {"data":{"released_at":"2026-09-22"},"event":"release.finalized","event_id":"event-0038","record_revisions":{"release:0.2.0":4},"release_version":"0.2.0","schema_version":2}
@@ -2,14 +2,14 @@ schema_version: 1
2
2
  object_type: commit_audit_sheet
3
3
  versioning:
4
4
  schema_version: 1
5
- revision: 3
6
- release_version: 0.1.2
5
+ revision: 6
6
+ release_version: 0.1.3
7
7
  git_base_ref: v0.1.1
8
8
  git_base_sha: a56a3513d403d3d3e0eddccc10990f32d1a1b367
9
9
  git_head_ref: HEAD
10
- git_head_sha: 66a88b6a7fbe4cf9e0247cfd81675050f5934fea
11
- git_range: a56a3513d403d3d3e0eddccc10990f32d1a1b367..66a88b6a7fbe4cf9e0247cfd81675050f5934fea
12
- commit_count: 3
10
+ git_head_sha: 7cd977966475fd9c03056e5f25aaffd3501a846d
11
+ git_range: a56a3513d403d3d3e0eddccc10990f32d1a1b367..7cd977966475fd9c03056e5f25aaffd3501a846d
12
+ commit_count: 6
13
13
  rows:
14
14
  - sha: 402275374979b9372c1491072c4e29b642da523f
15
15
  source_ref: git:402275374979b9372c1491072c4e29b642da523f
@@ -162,3 +162,96 @@ rows:
162
162
  target_entry_key: entry-0003
163
163
  target_entry_id: entry-0003
164
164
  notes: ""
165
+ - sha: c31f53fb4ded2a0e805ad5f75b20cf98e47fb169
166
+ source_ref: git:c31f53fb4ded2a0e805ad5f75b20cf98e47fb169
167
+ short_sha: c31f53f
168
+ changed_paths:
169
+ - .ledger/releaseledger/data/ledgers/main/events/events.jsonl
170
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.0/release.md
171
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.1/entries/entry-0001.md
172
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.1/release.md
173
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.2/audit/commit-audit.yaml
174
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.2/entries/entry-0001.md
175
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.2/entries/entry-0002.md
176
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.2/entries/entry-0003.md
177
+ - .ledger/releaseledger/data/ledgers/main/releases/0.1.2/release.md
178
+ - .ledger/releaseledger/work/0.1.2/audit-decisions.yaml
179
+ - .ledger/releaseledger/work/0.1.2/audit.yaml
180
+ - .ledger/releaseledger/work/0.1.2/entries.yaml
181
+ - .ledger/releaseledger/work/0.1.2/evidence/2c64e29.patch
182
+ - .ledger/releaseledger/work/0.1.2/evidence/4022753.patch
183
+ - .ledger/releaseledger/work/0.1.2/evidence/66a88b6.patch
184
+ - .ledger/releaseledger/work/0.1.2/evidence/manifest.json
185
+ - .ledger/releaseledger/work/0.1.2/range.json
186
+ - .ledger/releaseledger/write.lock
187
+ - docs/changelog.md
188
+ - tests/test_cli.py
189
+ - tests/test_migration_framework.py
190
+ - utterplan/cli.py
191
+ - utterplan/exceptions.py
192
+ - utterplan/migration.py
193
+ stats:
194
+ files_changed: 24
195
+ insertions: 5851
196
+ deletions: 18
197
+ inspected: true
198
+ inspected_paths:
199
+ - docs/changelog.md
200
+ observed_behavior:
201
+ Updated changelog with release entries for v0.1.0, v0.1.1, and
202
+ v0.1.2
203
+ public_impact: docs
204
+ decision: accepted
205
+ stale: false
206
+ evidence_subject: "doc: changelog"
207
+ target_entry_id: entry-0004
208
+ - sha: 972d21bdfefcdc7ee04fc0d9ce00d1143dda4e78
209
+ source_ref: git:972d21bdfefcdc7ee04fc0d9ce00d1143dda4e78
210
+ short_sha: 972d21b
211
+ changed_paths:
212
+ - tests/reference/dump_pykokoro_frontend.py
213
+ stats:
214
+ files_changed: 1
215
+ insertions: 11
216
+ deletions: 1
217
+ inspected: true
218
+ inspected_paths:
219
+ - tests/reference/dump_pykokoro_frontend.py
220
+ observed_behavior: Fixed obsolete migration test for PyKokoro frontend dump
221
+ public_impact: none
222
+ decision: accepted
223
+ stale: false
224
+ evidence_subject: "test: fix obsolete migration test"
225
+ target_entry_id: entry-0005
226
+ - sha: 7cd977966475fd9c03056e5f25aaffd3501a846d
227
+ source_ref: git:7cd977966475fd9c03056e5f25aaffd3501a846d
228
+ short_sha: 7cd9779
229
+ changed_paths:
230
+ - .github/workflows/codecov.yml
231
+ - .github/workflows/tests.yml
232
+ - AGENTS.md
233
+ - README.md
234
+ - docs/conf.py
235
+ - docs/phase-a-completion.md
236
+ - docs/pykokoro-integration.md
237
+ - docs/pykokoro-reference.md
238
+ - tests/migration/test_semantic_migration_regressions.py
239
+ - tests/reference/__init__.py
240
+ - tests/reference/cases.py
241
+ - tests/reference/dump_pykokoro_frontend.py
242
+ - tests/reference/test_pykokoro_parity.py
243
+ stats:
244
+ files_changed: 13
245
+ insertions: 22
246
+ deletions: 611
247
+ inspected: true
248
+ inspected_paths:
249
+ - docs/pykokoro-reference.md
250
+ - tests/reference/dump_pykokoro_frontend.py
251
+ - tests/reference/test_pykokoro_parity.py
252
+ observed_behavior: Removed PyKokoro references and related test infrastructure
253
+ public_impact: public
254
+ decision: accepted
255
+ stale: false
256
+ evidence_subject: "feat: remove ref to pykokoro"
257
+ target_entry_id: entry-0006
@@ -3,9 +3,9 @@ schema_version: 2
3
3
  object_type: release_entry
4
4
  versioning:
5
5
  schema_version: 1
6
- revision: 1
6
+ revision: 2
7
7
  entry_id: entry-0001
8
- release_version: 0.1.2
8
+ release_version: 0.1.3
9
9
  kind: added
10
10
  summary:
11
11
  Added explain CLI command that renders compiled plans as human-readable speech
@@ -3,9 +3,9 @@ schema_version: 2
3
3
  object_type: release_entry
4
4
  versioning:
5
5
  schema_version: 1
6
- revision: 1
6
+ revision: 2
7
7
  entry_id: entry-0002
8
- release_version: 0.1.2
8
+ release_version: 0.1.3
9
9
  kind: changed
10
10
  summary:
11
11
  Improved consumer contract with stable renderer input view and directive
@@ -3,9 +3,9 @@ schema_version: 2
3
3
  object_type: release_entry
4
4
  versioning:
5
5
  schema_version: 1
6
- revision: 1
6
+ revision: 2
7
7
  entry_id: entry-0003
8
- release_version: 0.1.2
8
+ release_version: 0.1.3
9
9
  kind: added
10
10
  summary: Added schema versioning with frozen v1 schema and migration framework
11
11
  status: accepted
@@ -0,0 +1,25 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 2
7
+ entry_id: entry-0004
8
+ release_version: 0.1.3
9
+ kind: docs
10
+ summary: Documented changelog with release entries for v0.1.0, v0.1.1, and v0.1.2
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:c31f53fb4ded2a0e805ad5f75b20cf98e47fb169
16
+ paths:
17
+ - docs/changelog.md
18
+ issues: []
19
+ prs: []
20
+ sources: []
21
+ contributors: []
22
+ breaking: false
23
+ internal: false
24
+ order: 4
25
+ ---
@@ -0,0 +1,25 @@
1
+ ---
2
+ schema_version: 2
3
+ object_type: release_entry
4
+ versioning:
5
+ schema_version: 1
6
+ revision: 2
7
+ entry_id: entry-0005
8
+ release_version: 0.1.3
9
+ kind: quality
10
+ summary: Fixed obsolete migration test for PyKokoro frontend dump
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:972d21bdfefcdc7ee04fc0d9ce00d1143dda4e78
16
+ paths:
17
+ - tests/reference/dump_pykokoro_frontend.py
18
+ issues: []
19
+ prs: []
20
+ sources: []
21
+ contributors: []
22
+ breaking: false
23
+ internal: false
24
+ order: 5
25
+ ---
@@ -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-0006
8
+ release_version: 0.1.3
9
+ kind: removed
10
+ summary: Removed PyKokoro references and related test infrastructure
11
+ status: accepted
12
+ audience: null
13
+ scopes: []
14
+ source_refs:
15
+ - git:7cd977966475fd9c03056e5f25aaffd3501a846d
16
+ paths:
17
+ - docs/pykokoro-reference.md
18
+ - tests/reference/dump_pykokoro_frontend.py
19
+ - tests/reference/test_pykokoro_parity.py
20
+ issues: []
21
+ prs: []
22
+ sources: []
23
+ contributors: []
24
+ breaking: false
25
+ internal: false
26
+ order: 6
27
+ ---
@@ -3,12 +3,12 @@ schema_version: 2
3
3
  object_type: release
4
4
  versioning:
5
5
  schema_version: 1
6
- revision: 5
7
- version: 0.1.2
8
- status: planned
6
+ revision: 11
7
+ version: 0.1.3
8
+ status: released
9
9
  history_state: curated
10
10
  title: null
11
- released_at: null
11
+ released_at: "2026-09-19"
12
12
  previous_version: 0.1.1
13
13
  cancel_reason: null
14
14
  superseded_by: null
@@ -16,12 +16,12 @@ changelog_file: null
16
16
  boundary_ref: null
17
17
  source_refs: []
18
18
  source_count: null
19
- entry_count: 3
19
+ entry_count: 6
20
20
  artifact_count: 0
21
21
  git_base_ref: v0.1.1
22
22
  git_base_sha: a56a3513d403d3d3e0eddccc10990f32d1a1b367
23
23
  git_head_ref: HEAD
24
- git_head_sha: 66a88b6a7fbe4cf9e0247cfd81675050f5934fea
25
- git_range: a56a3513d403d3d3e0eddccc10990f32d1a1b367..66a88b6a7fbe4cf9e0247cfd81675050f5934fea
26
- git_commit_count: 3
24
+ git_head_sha: 7cd977966475fd9c03056e5f25aaffd3501a846d
25
+ git_range: a56a3513d403d3d3e0eddccc10990f32d1a1b367..7cd977966475fd9c03056e5f25aaffd3501a846d
26
+ git_commit_count: 6
27
27
  ---
@@ -0,0 +1,241 @@
1
+ schema_version: 1
2
+ object_type: commit_audit_sheet
3
+ versioning:
4
+ schema_version: 1
5
+ revision: 4
6
+ release_version: 0.2.0
7
+ git_base_ref: v0.1.3
8
+ git_base_sha: 35a631ed89a676484546d62bccf08203f93b01e9
9
+ git_head_ref: HEAD
10
+ git_head_sha: 9637182acbf51763706e1047283b6df27def4bb8
11
+ git_range: 35a631ed89a676484546d62bccf08203f93b01e9..9637182acbf51763706e1047283b6df27def4bb8
12
+ commit_count: 3
13
+ rows:
14
+ - sha: e49a6ddc97c789574098a635fc823da885b48439
15
+ source_ref: git:e49a6ddc97c789574098a635fc823da885b48439
16
+ short_sha: e49a6dd
17
+ changed_paths:
18
+ - .gitignore
19
+ - examples/basic.py
20
+ - examples/chapter.ssmd
21
+ - examples/compile_file.py
22
+ - examples/inspect_plan.py
23
+ - examples/multilingual.py
24
+ - examples/ssmd.py
25
+ - examples/ssmd_example.py
26
+ stats:
27
+ files_changed: 8
28
+ insertions: 93
29
+ deletions: 19
30
+ inspected: true
31
+ inspected_paths:
32
+ - .gitignore
33
+ - examples/basic.py
34
+ - examples/chapter.ssmd
35
+ - examples/compile_file.py
36
+ - examples/inspect_plan.py
37
+ - examples/multilingual.py
38
+ - examples/ssmd.py
39
+ - examples/ssmd_example.py
40
+ observed_behavior:
41
+ Example scripts now run through main() entry points. basic.py,
42
+ compile_file.py, and inspect_plan.py gained argparse interfaces with defaults
43
+ resolved next to the script and outputs written beside it. multilingual.py demonstrates
44
+ inline SSMD language switching. examples/ssmd.py was replaced by examples/ssmd_example.py,
45
+ examples/chapter.ssmd was added as sample SSMD input, and generated examples/*.utterplan.json
46
+ outputs are excluded from git.
47
+ public_impact: docs
48
+ decision: accepted
49
+ stale: false
50
+ evidence_subject: "fix: examples"
51
+ target_entry_id: entry-0003
52
+ notes:
53
+ Examples-only change with documentation impact; covered by the fixed entry
54
+ for the examples rework.
55
+ - sha: c52aa684cc872d348d90972001a8c5194ae7c7f8
56
+ source_ref: git:c52aa684cc872d348d90972001a8c5194ae7c7f8
57
+ short_sha: c52aa68
58
+ changed_paths:
59
+ - README.md
60
+ - docs/architecture.md
61
+ - docs/cli.md
62
+ - docs/consumer-guide.md
63
+ - docs/coordinate-spaces.md
64
+ - docs/debugging.md
65
+ - docs/format.md
66
+ - docs/getting-started.md
67
+ - docs/index.md
68
+ - docs/pykokoro-integration.md
69
+ - docs/python-api.md
70
+ - pyproject.toml
71
+ - spec/schemas/v2.schema.json
72
+ - spec/utterplan.schema.json
73
+ - tests/golden/basic_en.utterplan.json
74
+ - tests/golden/directives.utterplan.json
75
+ - tests/golden/markers.utterplan.json
76
+ - tests/golden/multilingual.utterplan.json
77
+ - tests/golden/parenthetical.utterplan.json
78
+ - tests/golden/spokenform_offsets.utterplan.json
79
+ - tests/golden/ssmd_breaks.utterplan.json
80
+ - tests/test_cli.py
81
+ - tests/test_explain.py
82
+ - tests/test_format.py
83
+ - tests/test_linguistics.py
84
+ - tests/test_migration_framework.py
85
+ - tests/test_public_identity.py
86
+ - tests/test_schema_history.py
87
+ - tests/test_schema_registry.py
88
+ - utterplan/__init__.py
89
+ - utterplan/cli.py
90
+ - utterplan/explain.py
91
+ - utterplan/hashing.py
92
+ - utterplan/linguistics.py
93
+ - utterplan/migrations/__init__.py
94
+ - utterplan/migrations/registry.py
95
+ - utterplan/migrations/v1_to_v2.py
96
+ - utterplan/model.py
97
+ - utterplan/planner.py
98
+ - utterplan/schema_registry.py
99
+ - utterplan/schemas/v2.schema.json
100
+ - utterplan/units.py
101
+ - utterplan/utterplan.schema.json
102
+ - utterplan/versioning.py
103
+ stats:
104
+ files_changed: 44
105
+ insertions: 1714
106
+ deletions: 215
107
+ inspected: true
108
+ inspected_paths:
109
+ - README.md
110
+ - docs/architecture.md
111
+ - docs/cli.md
112
+ - docs/consumer-guide.md
113
+ - docs/coordinate-spaces.md
114
+ - docs/debugging.md
115
+ - docs/format.md
116
+ - docs/getting-started.md
117
+ - docs/index.md
118
+ - docs/pykokoro-integration.md
119
+ - docs/python-api.md
120
+ - pyproject.toml
121
+ - spec/schemas/v2.schema.json
122
+ - spec/utterplan.schema.json
123
+ - tests/golden/basic_en.utterplan.json
124
+ - tests/golden/directives.utterplan.json
125
+ - tests/golden/markers.utterplan.json
126
+ - tests/golden/multilingual.utterplan.json
127
+ - tests/golden/parenthetical.utterplan.json
128
+ - tests/golden/spokenform_offsets.utterplan.json
129
+ - tests/golden/ssmd_breaks.utterplan.json
130
+ - tests/test_cli.py
131
+ - tests/test_explain.py
132
+ - tests/test_format.py
133
+ - tests/test_linguistics.py
134
+ - tests/test_migration_framework.py
135
+ - tests/test_public_identity.py
136
+ - tests/test_schema_history.py
137
+ - tests/test_schema_registry.py
138
+ - utterplan/__init__.py
139
+ - utterplan/cli.py
140
+ - utterplan/explain.py
141
+ - utterplan/hashing.py
142
+ - utterplan/linguistics.py
143
+ - utterplan/migrations/__init__.py
144
+ - utterplan/migrations/registry.py
145
+ - utterplan/migrations/v1_to_v2.py
146
+ - utterplan/model.py
147
+ - utterplan/planner.py
148
+ - utterplan/schema_registry.py
149
+ - utterplan/schemas/v2.schema.json
150
+ - utterplan/units.py
151
+ - utterplan/utterplan.schema.json
152
+ - utterplan/versioning.py
153
+ observed_behavior:
154
+ Serialized plans gain a v2 schema that embeds token annotations
155
+ with lemma, pos, tag, and morph fields plus linguistic run records carrying provider,
156
+ model, provider_version, and model_version provenance. Unit content hashes move
157
+ to the utterplan-unit-v2 payload that includes tokens. A registered v1-to-v2 migration
158
+ upgrades older files and the schema registry keeps v1 frozen. pyproject gains
159
+ a spacy optional extra. The inspect token view and detailed explain output report
160
+ provider and model provenance and per-segment tokens.
161
+ public_impact: public
162
+ decision: accepted
163
+ stale: false
164
+ evidence_subject: "feat: add v2 with spacy tokens embedded"
165
+ target_entry_id: entry-0001
166
+ notes:
167
+ "Two entries describe this commit: the schema v2 feature owns the git source
168
+ ref and the inspect/explain output detail references it as supporting source."
169
+ - sha: 9637182acbf51763706e1047283b6df27def4bb8
170
+ source_ref: git:9637182acbf51763706e1047283b6df27def4bb8
171
+ short_sha: "9637182"
172
+ changed_paths:
173
+ - docs/cli.md
174
+ - docs/consumer-guide.md
175
+ - docs/getting-started.md
176
+ - docs/pykokoro-integration.md
177
+ - docs/python-api.md
178
+ - spec/schemas/v2.schema.json
179
+ - spec/utterplan.schema.json
180
+ - tests/golden/basic_en.utterplan.json
181
+ - tests/golden/directives.utterplan.json
182
+ - tests/golden/markers.utterplan.json
183
+ - tests/golden/multilingual.utterplan.json
184
+ - tests/golden/parenthetical.utterplan.json
185
+ - tests/golden/spokenform_offsets.utterplan.json
186
+ - tests/golden/ssmd_breaks.utterplan.json
187
+ - tests/test_cli.py
188
+ - tests/test_format.py
189
+ - tests/test_linguistics.py
190
+ - tests/test_schema_history.py
191
+ - utterplan/explain.py
192
+ - utterplan/hashing.py
193
+ - utterplan/migrations/v1_to_v2.py
194
+ - utterplan/model.py
195
+ - utterplan/planner.py
196
+ - utterplan/schemas/v2.schema.json
197
+ - utterplan/utterplan.schema.json
198
+ stats:
199
+ files_changed: 25
200
+ insertions: 159
201
+ deletions: 193
202
+ inspected: true
203
+ inspected_paths:
204
+ - docs/cli.md
205
+ - docs/consumer-guide.md
206
+ - docs/getting-started.md
207
+ - docs/pykokoro-integration.md
208
+ - docs/python-api.md
209
+ - spec/schemas/v2.schema.json
210
+ - spec/utterplan.schema.json
211
+ - tests/golden/basic_en.utterplan.json
212
+ - tests/golden/directives.utterplan.json
213
+ - tests/golden/markers.utterplan.json
214
+ - tests/golden/multilingual.utterplan.json
215
+ - tests/golden/parenthetical.utterplan.json
216
+ - tests/golden/spokenform_offsets.utterplan.json
217
+ - tests/golden/ssmd_breaks.utterplan.json
218
+ - tests/test_cli.py
219
+ - tests/test_format.py
220
+ - tests/test_linguistics.py
221
+ - tests/test_schema_history.py
222
+ - utterplan/explain.py
223
+ - utterplan/hashing.py
224
+ - utterplan/migrations/v1_to_v2.py
225
+ - utterplan/model.py
226
+ - utterplan/planner.py
227
+ - utterplan/schemas/v2.schema.json
228
+ - utterplan/utterplan.schema.json
229
+ observed_behavior:
230
+ "Formatter-only normalization: golden fixtures compacted to single-line
231
+ JSON arrays, schema required arrays expanded and rewrapped, and Python modules,
232
+ tests, and migrations rewrapped to formatter style. Hashing, validation, migration,
233
+ and planning behavior are unchanged."
234
+ public_impact: none
235
+ decision: internal
236
+ stale: false
237
+ evidence_subject: "chore: pre-commit"
238
+ target_entry_id: entry-0004
239
+ notes:
240
+ Formatting-only change with no user-visible behavior; represented by an internal
241
+ entry and excluded from the public changelog.
@@ -0,0 +1,74 @@
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: 0.2.0
9
+ kind: added
10
+ summary:
11
+ Added schema version 2 with embedded token annotations, linguistic run provenance,
12
+ and a v1-to-v2 migration
13
+ status: accepted
14
+ audience: null
15
+ scopes: []
16
+ source_refs:
17
+ - git:c52aa684cc872d348d90972001a8c5194ae7c7f8
18
+ paths:
19
+ - README.md
20
+ - docs/architecture.md
21
+ - docs/cli.md
22
+ - docs/consumer-guide.md
23
+ - docs/coordinate-spaces.md
24
+ - docs/debugging.md
25
+ - docs/format.md
26
+ - docs/getting-started.md
27
+ - docs/index.md
28
+ - docs/pykokoro-integration.md
29
+ - docs/python-api.md
30
+ - pyproject.toml
31
+ - spec/schemas/v2.schema.json
32
+ - spec/utterplan.schema.json
33
+ - tests/golden/basic_en.utterplan.json
34
+ - tests/golden/directives.utterplan.json
35
+ - tests/golden/markers.utterplan.json
36
+ - tests/golden/multilingual.utterplan.json
37
+ - tests/golden/parenthetical.utterplan.json
38
+ - tests/golden/spokenform_offsets.utterplan.json
39
+ - tests/golden/ssmd_breaks.utterplan.json
40
+ - tests/test_cli.py
41
+ - tests/test_explain.py
42
+ - tests/test_format.py
43
+ - tests/test_linguistics.py
44
+ - tests/test_migration_framework.py
45
+ - tests/test_public_identity.py
46
+ - tests/test_schema_history.py
47
+ - tests/test_schema_registry.py
48
+ - utterplan/__init__.py
49
+ - utterplan/cli.py
50
+ - utterplan/explain.py
51
+ - utterplan/hashing.py
52
+ - utterplan/linguistics.py
53
+ - utterplan/migrations/__init__.py
54
+ - utterplan/migrations/registry.py
55
+ - utterplan/migrations/v1_to_v2.py
56
+ - utterplan/model.py
57
+ - utterplan/planner.py
58
+ - utterplan/schema_registry.py
59
+ - utterplan/schemas/v2.schema.json
60
+ - utterplan/units.py
61
+ - utterplan/utterplan.schema.json
62
+ - utterplan/versioning.py
63
+ issues: []
64
+ prs: []
65
+ sources:
66
+ - git:c52aa684cc872d348d90972001a8c5194ae7c7f8
67
+ contributors:
68
+ - "@holgern"
69
+ breaking: false
70
+ internal: false
71
+ order: 1
72
+ ---
73
+
74
+ Serialized plans can now be written as schema version 2, which embeds token annotations with lemma, pos, tag, and morph fields and records linguistic run provenance (provider, model, provider version, model version). Unit content hashes move to the utterplan-unit-v2 payload that includes tokens. Older v1 files upgrade through the registered v1-to-v2 migration while v1 stays frozen, and spaCy support is available through the spacy optional extra.