utterplan 0.6.5__tar.gz → 0.6.7__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.
- {utterplan-0.6.5 → utterplan-0.6.7}/.github/workflows/tests.yml +12 -12
- {utterplan-0.6.5 → utterplan-0.6.7}/AGENTS.md +1 -1
- utterplan-0.6.7/MANIFEST.in +2 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/PKG-INFO +45 -72
- {utterplan-0.6.5 → utterplan-0.6.7}/README.md +44 -71
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/architecture.md +97 -94
- utterplan-0.6.7/docs/bundles.md +89 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/changelog.md +20 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/cli.md +11 -167
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/getting-started.md +12 -28
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/index.md +2 -4
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/python-api.md +14 -10
- {utterplan-0.6.5 → utterplan-0.6.7}/pyproject.toml +1 -1
- utterplan-0.6.5/tests/test_book_replan.py → utterplan-0.6.7/tests/test_bundle_book_replan.py +6 -5
- utterplan-0.6.5/tests/test_book_api.py → utterplan-0.6.7/tests/test_bundle_book_services.py +29 -89
- utterplan-0.6.5/tests/test_document_workspace.py → utterplan-0.6.7/tests/test_bundle_document_compile.py +36 -34
- utterplan-0.6.5/tests/test_document_render.py → utterplan-0.6.7/tests/test_bundle_document_render.py +12 -10
- utterplan-0.6.7/tests/test_bundle_replan.py +155 -0
- utterplan-0.6.7/tests/test_bundle_services.py +180 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_cli.py +23 -24
- utterplan-0.6.5/tests/test_cli_ssmdbook.py → utterplan-0.6.7/tests/test_cli_bundle_compile_book.py +93 -66
- utterplan-0.6.5/tests/test_cli_ssmdoc.py → utterplan-0.6.7/tests/test_cli_bundle_document.py +82 -62
- utterplan-0.6.5/tests/test_cli_render_book.py → utterplan-0.6.7/tests/test_cli_bundle_render_book.py +22 -21
- utterplan-0.6.5/tests/test_cli_render_document.py → utterplan-0.6.7/tests/test_cli_bundle_render_document.py +23 -32
- utterplan-0.6.5/tests/test_cli_replan_book.py → utterplan-0.6.7/tests/test_cli_bundle_replan_book.py +20 -17
- utterplan-0.6.7/tests/test_source_input.py +52 -0
- utterplan-0.6.7/tests/test_ssmd_bundle.py +262 -0
- utterplan-0.6.5/tests/test_ssmdbook.py → utterplan-0.6.7/tests/test_ssmd_bundle_book.py +83 -78
- utterplan-0.6.7/tests/test_ssmd_bundle_document.py +200 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/__init__.py +47 -69
- utterplan-0.6.5/utterplan/book_replan.py → utterplan-0.6.7/utterplan/_book_replan.py +22 -14
- utterplan-0.6.5/utterplan/book.py → utterplan-0.6.7/utterplan/_book_service.py +23 -16
- utterplan-0.6.5/utterplan/document_workspace.py → utterplan-0.6.7/utterplan/_document_service.py +53 -58
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/_version.py +3 -3
- utterplan-0.6.7/utterplan/bundle.py +348 -0
- utterplan-0.6.7/utterplan/bundle_replan.py +663 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/cli.py +141 -426
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/codecs/v4_toml.py +0 -14
- utterplan-0.6.7/utterplan/explain.py +295 -0
- utterplan-0.6.7/utterplan/source_input.py +77 -0
- utterplan-0.6.7/utterplan/ssmd_bundle.py +332 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan.egg-info/PKG-INFO +45 -72
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan.egg-info/SOURCES.txt +23 -20
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan.egg-info/scm_file_list.json +37 -20
- utterplan-0.6.7/utterplan.egg-info/scm_version.json +8 -0
- utterplan-0.6.5/MANIFEST.in +0 -2
- utterplan-0.6.5/docs/ssmdbook.md +0 -171
- utterplan-0.6.5/docs/ssmdoc.md +0 -80
- utterplan-0.6.5/tests/test_source_input.py +0 -104
- utterplan-0.6.5/tests/test_ssmdoc.py +0 -297
- utterplan-0.6.5/utterplan/explain.py +0 -643
- utterplan-0.6.5/utterplan/source_input.py +0 -123
- utterplan-0.6.5/utterplan/ssmdbook.py +0 -259
- utterplan-0.6.5/utterplan/ssmdoc.py +0 -212
- utterplan-0.6.5/utterplan.egg-info/scm_version.json +0 -8
- {utterplan-0.6.5 → utterplan-0.6.7}/.codecrate.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/.github/workflows/codecov.yml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/.github/workflows/pre-commit.yml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/.github/workflows/python-publish.yml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/.gitignore +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/.pre-commit-config.yaml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/LICENSE +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/NOTICE +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/Makefile +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/conf.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/consumer-guide.md +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/coordinate-spaces.md +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/debugging.md +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/format.md +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/make.bat +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/phase-a-completion.md +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/pykokoro-integration.md +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/docs/requirements.txt +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/examples/basic.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/examples/chapter.ssmd +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/examples/compile_file.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/examples/inspect_plan.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/examples/multilingual.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/examples/ssmd_example.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/setup.cfg +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/spec/schemas/v1.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/spec/schemas/v2.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/spec/schemas/v3.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/spec/schemas/v4.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/spec/utterplan.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/__init__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/compiler_helpers.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/fixtures/canonical_consumer_contract.expected.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/fixtures/canonical_consumer_contract.ssmd +0 -0
- {utterplan-0.6.5/tests/fixtures/ssmdoc-v1/story.ssmdoc → utterplan-0.6.7/tests/fixtures/document-bundle-v1/story.ssmd-bundle}/document.ssmd.md +0 -0
- {utterplan-0.6.5/tests/fixtures/ssmdoc-v1/story.ssmdoc → utterplan-0.6.7/tests/fixtures/document-bundle-v1/story.ssmd-bundle}/manifest.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/fixtures/ssmd_09_comprehensive.ssmd +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/basic_en.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/directives.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/markers.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/multilingual.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/parenthetical.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/spokenform_offsets.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/ssmd_09_comprehensive.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/golden/ssmd_breaks.utterplan.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/__init__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/cases.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/basic_en.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/directives.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/markers.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/multilingual.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/parenthetical.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/spokenform_offsets.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/ssmd_09_comprehensive.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/fixtures/v4/ssmd_breaks.utterplan.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/goldens/multilingual_preparation.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/goldens/spokenform_numbers.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/goldens/ssmd_break.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/goldens/ssmd_language_detection.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/goldens/ssmd_marker.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/goldens/ssmd_pronunciation.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/test_legacy_json_import.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/migration/test_semantic_migration_regressions.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/README.md +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v1/basic.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v1/directives.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v1/markers.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v1/multilingual.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v1/parenthetical.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v1/spokenform_offsets.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v1/ssmd_breaks.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v2/directives.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v3/multilingual.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v3/ssmd_09_comprehensive.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/schema_history/v5/canonical_consumer_contract.toml +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_atomic_io.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_batch.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_boundaries.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_cli_batch.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_compiler.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_consumer_contract.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_consumer_readiness.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_coordinates.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_dependency_architecture.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_directives.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_explain.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_fake_renderer.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_flow_compilation.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_format.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_golden.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_identity_units.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_import_boundaries.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_language.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_linguistics.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_migration_framework.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_migration_v3_to_v4.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_migration_v4_to_v5.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_pauses.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_planner.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_preparation.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_preview.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_progress.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_public_identity.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_renderability.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_renderability_repair.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_renderplan_batch.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_renderplan_dependency_contract.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_renderplan_export.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_renderplan_replan.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_renderplan_v7_contract.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_replacement_provenance.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_role_coverage.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_schema_history.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_schema_registry.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_schema_strict.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_schema_v6_source.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_schema_v7.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_segment_topology.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_segmentation_adapter.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_segmentation_recovery.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_semantic_boundaries.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_sentence_topology.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_ssmd_09_parser.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_ssmd_substitution_preparation.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_token_topology.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_toml_format.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_ttsready_preparation_adapter.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/tests/test_version.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/__main__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/atomic_io.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/attempt_serialization.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/attempts.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/batch.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/boundaries.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/codecs/__init__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/codecs/v5_toml.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/codecs/v6_toml.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/codecs/v7_toml.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/compiler.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/config.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/diagnostics.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/directives.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/exceptions.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/flow_projection.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/format.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/hashing.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/language.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/linguistics.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migration.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/__init__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/registry.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/v1_to_v2.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/v2_to_v3.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/v3_to_v4.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/v4_to_v5.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/v5_to_v6.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/migrations/v6_to_v7.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/model.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/parsers.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/pauses.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/planner.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/preparation.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/preview.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/progress.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/py.typed +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/renderability.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/renderplan_batch.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/renderplan_export.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/renderplan_grouping.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/renderplan_projection.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/renderplan_replan.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/renderplan_workspace.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/role_coverage.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/schema_registry.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/schemas/v1.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/schemas/v2.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/schemas/v3.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/schemas/v4.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/segmentation.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/serialization.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/spacy_models.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/spans.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/__init__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/document/__init__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/document/plain.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/document/ssmd.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/preparation/__init__.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/preparation/identity.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/preparation/ssmd.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/preparation/ttsready.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/stages/protocols.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/token_topology.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/toml_codec.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/trace_codec.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/units.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/utterplan.schema.json +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/versioning.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan/workspace_paths.py +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan.egg-info/dependency_links.txt +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan.egg-info/entry_points.txt +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan.egg-info/requires.txt +0 -0
- {utterplan-0.6.5 → utterplan-0.6.7}/utterplan.egg-info/top_level.txt +0 -0
|
@@ -78,7 +78,7 @@ jobs:
|
|
|
78
78
|
tests/test_renderplan_batch.py
|
|
79
79
|
tests/test_renderplan_export.py
|
|
80
80
|
tests/test_renderplan_replan.py
|
|
81
|
-
tests/
|
|
81
|
+
tests/test_cli_bundle_render_book.py
|
|
82
82
|
tests/test_renderplan_dependency_contract.py
|
|
83
83
|
package-smoke:
|
|
84
84
|
runs-on: ubuntu-latest
|
|
@@ -189,16 +189,16 @@ jobs:
|
|
|
189
189
|
> "$RUNNER_TEMP/test.utterplan.toml"
|
|
190
190
|
"$RUNNER_TEMP/utterplan-wheel-venv/bin/utterplan" validate \
|
|
191
191
|
"$RUNNER_TEMP/test.utterplan.toml"
|
|
192
|
-
|
|
193
|
-
mkdir -p "$
|
|
194
|
-
cat > "$
|
|
192
|
+
BUNDLE="$RUNNER_TEMP/render-bundle.smoke.ssmd-bundle"
|
|
193
|
+
mkdir -p "$BUNDLE/chapters" "$BUNDLE/utterplan"
|
|
194
|
+
cat > "$BUNDLE/chapters/chapter-0001.ssmd.md" <<'EOF'
|
|
195
195
|
---
|
|
196
196
|
ssmd_version: "0.9"
|
|
197
197
|
language: en-US
|
|
198
198
|
---
|
|
199
|
-
Installed wheel render
|
|
199
|
+
Installed wheel bundle render smoke.
|
|
200
200
|
EOF
|
|
201
|
-
cat > "$
|
|
201
|
+
cat > "$BUNDLE/manifest.json" <<'EOF'
|
|
202
202
|
{
|
|
203
203
|
"format": "ssmdconvert.book",
|
|
204
204
|
"schema_version": 1,
|
|
@@ -214,9 +214,9 @@ jobs:
|
|
|
214
214
|
}
|
|
215
215
|
EOF
|
|
216
216
|
"$RUNNER_TEMP/utterplan-wheel-venv/bin/utterplan" compile \
|
|
217
|
-
"$
|
|
218
|
-
-o "$
|
|
219
|
-
"$RUNNER_TEMP/utterplan-wheel-venv/bin/python" - "$
|
|
217
|
+
"$BUNDLE/chapters/chapter-0001.ssmd.md" --lang en-us --text-preparation identity \
|
|
218
|
+
-o "$BUNDLE/utterplan/chapter-0001.utterplan.toml"
|
|
219
|
+
"$RUNNER_TEMP/utterplan-wheel-venv/bin/python" - "$BUNDLE/narration.renderprofile.toml" <<'PY'
|
|
220
220
|
import sys
|
|
221
221
|
from pathlib import Path
|
|
222
222
|
|
|
@@ -231,9 +231,9 @@ jobs:
|
|
|
231
231
|
)
|
|
232
232
|
codec.save_profile(profile, Path(sys.argv[1]))
|
|
233
233
|
PY
|
|
234
|
-
"$RUNNER_TEMP/utterplan-wheel-venv/bin/utterplan" render
|
|
235
|
-
"$
|
|
236
|
-
"$RUNNER_TEMP/utterplan-wheel-venv/bin/python" - "$
|
|
234
|
+
"$RUNNER_TEMP/utterplan-wheel-venv/bin/utterplan" bundle render \
|
|
235
|
+
"$BUNDLE" --profile "$BUNDLE/narration.renderprofile.toml" --chapters 1
|
|
236
|
+
"$RUNNER_TEMP/utterplan-wheel-venv/bin/python" - "$BUNDLE" <<'PY'
|
|
237
237
|
import sys
|
|
238
238
|
from pathlib import Path
|
|
239
239
|
|
|
@@ -23,7 +23,7 @@ This file contains reviewed long-term project memory.
|
|
|
23
23
|
- Package version and schema version remain independent. Migration preserves a compiled plan; replanning is a separate operation.
|
|
24
24
|
- Optional compiler traces are sidecars; they must never alter executable plan content or identity.
|
|
25
25
|
- UtterPlan parses SSMD 0.9 only; it does not parse SSMD 0.8 or migrate source documents (`ssmd migrate` owns that).
|
|
26
|
-
-
|
|
26
|
+
- Bundle commands accept only a canonical <name>.ssmd-bundle/ root and select book or document behavior from manifest.json. Book items are selected by manifest source_number and produce independent plans; document bundles contain one item and support only the all selector. Compilation, RenderPlan projection, and replan leave manifests and source content unchanged and never create a book-level combined plan.
|
|
27
27
|
- RenderPlan projection is optional: VoiceRender creates and validates engine-backed RenderProfiles, while UtterPlan projects stored schema-v7 FlowPlans into profile-specific RenderPlans (with `renderplan-set.toml` and reports) and performs deterministic replan refinement only.
|
|
28
28
|
- UtterPlan depends directly on SSMD, PhraseSplit, TTSReady, and the renderplan contract package only; production code does not import Spokenform, and spaCy stays optional best-effort enrichment.
|
|
29
29
|
- Repository tests must be self-contained and must not require sibling consumer checkouts; consumer-specific compatibility testing belongs in the consumer repository.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: utterplan
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.7
|
|
4
4
|
Summary: Engine-independent text-to-speech planning compiler and interchange format
|
|
5
5
|
Author-email: Holger Nahrstaedt <nahrstaedt@gmail.com>
|
|
6
6
|
License: Apache License
|
|
@@ -251,9 +251,13 @@ Dynamic: license-file
|
|
|
251
251
|
|
|
252
252
|
UtterPlan is the canonical, engine-independent semantic compiler from one SSMD
|
|
253
253
|
document (or explicitly selected plain-text document) to an executable speech
|
|
254
|
-
plan. It produces deterministic prepared text, paragraph-local flow units, safe
|
|
255
|
-
|
|
256
|
-
|
|
254
|
+
plan. It produces deterministic prepared text, paragraph-local flow units, safe
|
|
255
|
+
boundary opportunities, authored pause intents, segment-local semantics,
|
|
256
|
+
portable document metadata, and typed directives for independent downstream
|
|
257
|
+
FlowPlan consumers. Its `bundle` lifecycle accepts canonical `.ssmd-bundle/`
|
|
258
|
+
roots and dispatches book or document behavior from `manifest.json`, without
|
|
259
|
+
modifying source manifests or chapters. It uses TTSReady for written-to-spoken
|
|
260
|
+
preparation and stops before G2P, synthesis, and audio.
|
|
257
261
|
|
|
258
262
|
## CLI
|
|
259
263
|
|
|
@@ -285,44 +289,26 @@ utterplan compile-many examples/*.ssmd --output-dir build/plans
|
|
|
285
289
|
|
|
286
290
|
This writes one `.utterplan.toml` per source plus an atomically refreshed `compile-report.toml`. Terminal diagnostics default to warnings; `--diagnostics all` also prints informational records, while `--diagnostics none` suppresses non-failure details. Failures are always reported, and the operational report retains every diagnostic. Use `--fail-fast` to skip later inputs after a failure, `--force` to replace existing plans, or `--report PATH` to choose another report location.
|
|
287
291
|
|
|
288
|
-
##
|
|
292
|
+
## Manifest-driven bundle lifecycle
|
|
289
293
|
|
|
290
|
-
|
|
294
|
+
Use the canonical `<name>.ssmd-bundle/` directory for either a book or a single-document bundle. UtterPlan reads `manifest.json` to determine the bundle kind; chapter directories and source files are not alternate bundle roots.
|
|
291
295
|
|
|
292
296
|
```bash
|
|
293
|
-
utterplan compile-
|
|
297
|
+
utterplan bundle compile novel.ssmd-bundle --chapters 5-17
|
|
298
|
+
utterplan bundle compile story.ssmd-bundle
|
|
299
|
+
utterplan bundle render novel.ssmd-bundle --chapters 5-17 --profile narration.renderprofile.toml
|
|
300
|
+
utterplan bundle render story.ssmd-bundle --profile narration.renderprofile.toml
|
|
294
301
|
```
|
|
295
302
|
|
|
296
|
-
|
|
303
|
+
Book manifests support source-number selectors such as `5-17` or `1,3-5`; omit `--chapters` to select all chapters. A document bundle accepts only `--chapters all`. Compilation writes independent FlowPlans and an operational report under `<bundle>/utterplan/`; rendering projects saved plans into profile-specific RenderPlans under `<bundle>/renderplan/`. Source manifests and source documents remain untouched. See the [bundle guide](docs/bundles.md) for manifest contracts, safe paths, reports, and examples.
|
|
297
304
|
|
|
298
|
-
|
|
305
|
+
When rendering feedback requests deterministic replanning, refine the active bundle variant and the selected book items (or the full document bundle):
|
|
299
306
|
|
|
300
307
|
```bash
|
|
301
|
-
utterplan
|
|
308
|
+
utterplan bundle replan novel.ssmd-bundle --chapters 5 --variant narration--28f616b6fe3b
|
|
302
309
|
```
|
|
303
310
|
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
Compile a selected chapter range directly from an editable SSMDBook workspace:
|
|
307
|
-
|
|
308
|
-
```bash
|
|
309
|
-
cd "Platform Decay - Martha Wells.ssmdbook"
|
|
310
|
-
|
|
311
|
-
utterplan compile-book chapters --chapters 5-17
|
|
312
|
-
```
|
|
313
|
-
|
|
314
|
-
The command reads the workspace manifest to discover chapters and writes independent v7 plans and a report under `utterplan/`:
|
|
315
|
-
|
|
316
|
-
```text
|
|
317
|
-
utterplan/
|
|
318
|
-
├── compile-report.toml
|
|
319
|
-
├── chapter-0005.utterplan.toml
|
|
320
|
-
├── chapter-0006.utterplan.toml
|
|
321
|
-
├── ...
|
|
322
|
-
└── chapter-0017.utterplan.toml
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
Omit `--chapters` to compile all manifest chapters. Use comma-separated source-number selections for non-contiguous ranges, for example `utterplan compile-book chapters --chapters 1,3-5`. `--diagnostics warnings|all|none` defaults to warnings; failures are always shown and reports retain complete diagnostics. The book root itself is also accepted as input; see the [SSMDBook guide](docs/ssmdbook.md).
|
|
311
|
+
Replanning uses stored profile snapshots and matching preflight feedback; it does not run synthesis or modify source content.
|
|
326
312
|
|
|
327
313
|
## Logical roles and complete RenderProfiles
|
|
328
314
|
|
|
@@ -370,17 +356,17 @@ Inspect symbolic role usage without a profile, then project a document or select
|
|
|
370
356
|
|
|
371
357
|
```bash
|
|
372
358
|
utterplan inspect story.utterplan.toml --roles
|
|
373
|
-
utterplan render
|
|
374
|
-
utterplan render
|
|
359
|
+
utterplan bundle render story.ssmd-bundle --profile printer-cast.renderprofile.toml
|
|
360
|
+
utterplan bundle render novel.ssmd-bundle --profile novel-cast.renderprofile.toml
|
|
375
361
|
```
|
|
376
362
|
|
|
377
363
|
Projection reports required and available roles and rejects incomplete coverage before writing the RenderPlan variant. The profile and its concrete role bindings remain separate from the source SSMD.
|
|
378
364
|
|
|
379
|
-
## From
|
|
365
|
+
## From bundles to RenderPlans
|
|
380
366
|
|
|
381
|
-
UtterPlan keeps one canonical semantic plan per
|
|
367
|
+
UtterPlan keeps one canonical semantic plan per source item. A RenderProfile is a
|
|
382
368
|
separate renderer configuration; create and validate it with VoiceRender, then
|
|
383
|
-
project
|
|
369
|
+
project saved plans from a canonical `.ssmd-bundle/` root:
|
|
384
370
|
|
|
385
371
|
```bash
|
|
386
372
|
voicerender profile create \
|
|
@@ -391,12 +377,11 @@ voicerender profile create \
|
|
|
391
377
|
--output narration.renderprofile.toml
|
|
392
378
|
voicerender profile validate narration.renderprofile.toml
|
|
393
379
|
|
|
394
|
-
utterplan compile
|
|
395
|
-
utterplan render
|
|
380
|
+
utterplan bundle compile novel.ssmd-bundle --chapters 5-17
|
|
381
|
+
utterplan bundle render novel.ssmd-bundle --chapters 5-17 --profile narration.renderprofile.toml
|
|
396
382
|
```
|
|
397
383
|
|
|
398
|
-
The
|
|
399
|
-
command writes independent renderer-specific plans into a deterministic variant:
|
|
384
|
+
The shared `renderplan/` area contains a profile-specific variant:
|
|
400
385
|
|
|
401
386
|
```text
|
|
402
387
|
renderplan/
|
|
@@ -413,45 +398,33 @@ first 12 hexadecimal characters of the canonical RenderProfile `profile_id`.
|
|
|
413
398
|
Changing identity-bearing profile semantics selects a different directory, so
|
|
414
399
|
multiple voices or planning policies can coexist without replacing one another.
|
|
415
400
|
Each variant snapshots the canonical profile; `renderplan-set.toml` records its
|
|
416
|
-
full identity, source profile reference, and
|
|
401
|
+
full identity, source profile reference, and source plan IDs. `--variant` changes
|
|
417
402
|
the human label without removing the fingerprint, and `--output-root` changes the
|
|
418
403
|
collection root while retaining the automatic variant directory.
|
|
419
404
|
|
|
420
|
-
`render
|
|
421
|
-
RenderProfile/RenderPlan contract. VoiceRender
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
405
|
+
`utterplan bundle render` consumes only existing schema-v7 FlowPlans and the
|
|
406
|
+
shared RenderProfile/RenderPlan contract. VoiceRender creates or refreshes
|
|
407
|
+
engine-backed profiles, then preflights and renders the resulting RenderPlans.
|
|
408
|
+
UtterPlan's single-file `render-plan` command remains the low-level projection and
|
|
409
|
+
deterministic replan primitive.
|
|
425
410
|
|
|
426
|
-
When VoiceRender reports `preflight.replan`,
|
|
427
|
-
|
|
428
|
-
from the selected variant, writes a fingerprinted child RenderPlan, and updates only
|
|
429
|
-
that chapter's active set entry. It does not replace the parent plan or rerun initial
|
|
430
|
-
projection:
|
|
411
|
+
When VoiceRender reports `preflight.replan`, refine the active bundle variant
|
|
412
|
+
using matching feedback:
|
|
431
413
|
|
|
432
414
|
```bash
|
|
433
|
-
# VoiceRender
|
|
434
|
-
|
|
435
|
-
--variant
|
|
436
|
-
--chapters 5 \
|
|
437
|
-
--emphasis-policy defer-to-compose
|
|
438
|
-
|
|
439
|
-
utterplan replan-book . \
|
|
440
|
-
--variant narration4--28f616b6fe3b \
|
|
415
|
+
# After VoiceRender reports preflight.replan for chapter 5:
|
|
416
|
+
utterplan bundle replan novel.ssmd-bundle \
|
|
417
|
+
--variant narration--28f616b6fe3b \
|
|
441
418
|
--chapters 5
|
|
442
|
-
|
|
443
|
-
# Measure/render the newly active child. Repeat these last two commands if it
|
|
444
|
-
# still reports preflight.replan; each cycle must use feedback for the active plan.
|
|
445
|
-
voicerender render-book . \
|
|
446
|
-
--variant narration4--28f616b6fe3b \
|
|
447
|
-
--chapters 5 \
|
|
448
|
-
--emphasis-policy defer-to-compose
|
|
449
419
|
```
|
|
450
420
|
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
421
|
+
Ask VoiceRender to measure and render the newly active plan. If it still reports
|
|
422
|
+
`preflight.replan`, repeat the feedback cycle against the active child.
|
|
423
|
+
|
|
424
|
+
Use the exact variant directory name (including its profile fingerprint). Bundle
|
|
425
|
+
replanning searches `preflight-recheck.toml` before `preflight.toml` and refuses
|
|
426
|
+
stale feedback, so a report for a parent can never be applied to its child. The
|
|
427
|
+
single-file `render-plan --previous ... --preflight ...` operation remains available for
|
|
455
428
|
low-level replanning.
|
|
456
429
|
|
|
457
430
|
This orchestration does not add a splitter, renderer-specific capacity estimate, or
|
|
@@ -600,7 +573,7 @@ renderer repository rather than UtterPlan's test suite.
|
|
|
600
573
|
|
|
601
574
|
- [Getting started](docs/getting-started.md)
|
|
602
575
|
- [CLI](docs/cli.md)
|
|
603
|
-
- [
|
|
576
|
+
- [Bundle workflows](docs/bundles.md)
|
|
604
577
|
- [Format and schema](docs/format.md)
|
|
605
578
|
- [Consumer guide](docs/consumer-guide.md)
|
|
606
579
|
- [Architecture](docs/architecture.md)
|
|
@@ -7,9 +7,13 @@
|
|
|
7
7
|
|
|
8
8
|
UtterPlan is the canonical, engine-independent semantic compiler from one SSMD
|
|
9
9
|
document (or explicitly selected plain-text document) to an executable speech
|
|
10
|
-
plan. It produces deterministic prepared text, paragraph-local flow units, safe
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
plan. It produces deterministic prepared text, paragraph-local flow units, safe
|
|
11
|
+
boundary opportunities, authored pause intents, segment-local semantics,
|
|
12
|
+
portable document metadata, and typed directives for independent downstream
|
|
13
|
+
FlowPlan consumers. Its `bundle` lifecycle accepts canonical `.ssmd-bundle/`
|
|
14
|
+
roots and dispatches book or document behavior from `manifest.json`, without
|
|
15
|
+
modifying source manifests or chapters. It uses TTSReady for written-to-spoken
|
|
16
|
+
preparation and stops before G2P, synthesis, and audio.
|
|
13
17
|
|
|
14
18
|
## CLI
|
|
15
19
|
|
|
@@ -41,44 +45,26 @@ utterplan compile-many examples/*.ssmd --output-dir build/plans
|
|
|
41
45
|
|
|
42
46
|
This writes one `.utterplan.toml` per source plus an atomically refreshed `compile-report.toml`. Terminal diagnostics default to warnings; `--diagnostics all` also prints informational records, while `--diagnostics none` suppresses non-failure details. Failures are always reported, and the operational report retains every diagnostic. Use `--fail-fast` to skip later inputs after a failure, `--force` to replace existing plans, or `--report PATH` to choose another report location.
|
|
43
47
|
|
|
44
|
-
##
|
|
48
|
+
## Manifest-driven bundle lifecycle
|
|
45
49
|
|
|
46
|
-
|
|
50
|
+
Use the canonical `<name>.ssmd-bundle/` directory for either a book or a single-document bundle. UtterPlan reads `manifest.json` to determine the bundle kind; chapter directories and source files are not alternate bundle roots.
|
|
47
51
|
|
|
48
52
|
```bash
|
|
49
|
-
utterplan compile-
|
|
53
|
+
utterplan bundle compile novel.ssmd-bundle --chapters 5-17
|
|
54
|
+
utterplan bundle compile story.ssmd-bundle
|
|
55
|
+
utterplan bundle render novel.ssmd-bundle --chapters 5-17 --profile narration.renderprofile.toml
|
|
56
|
+
utterplan bundle render story.ssmd-bundle --profile narration.renderprofile.toml
|
|
50
57
|
```
|
|
51
58
|
|
|
52
|
-
|
|
59
|
+
Book manifests support source-number selectors such as `5-17` or `1,3-5`; omit `--chapters` to select all chapters. A document bundle accepts only `--chapters all`. Compilation writes independent FlowPlans and an operational report under `<bundle>/utterplan/`; rendering projects saved plans into profile-specific RenderPlans under `<bundle>/renderplan/`. Source manifests and source documents remain untouched. See the [bundle guide](docs/bundles.md) for manifest contracts, safe paths, reports, and examples.
|
|
53
60
|
|
|
54
|
-
|
|
61
|
+
When rendering feedback requests deterministic replanning, refine the active bundle variant and the selected book items (or the full document bundle):
|
|
55
62
|
|
|
56
63
|
```bash
|
|
57
|
-
utterplan
|
|
64
|
+
utterplan bundle replan novel.ssmd-bundle --chapters 5 --variant narration--28f616b6fe3b
|
|
58
65
|
```
|
|
59
66
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
Compile a selected chapter range directly from an editable SSMDBook workspace:
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
cd "Platform Decay - Martha Wells.ssmdbook"
|
|
66
|
-
|
|
67
|
-
utterplan compile-book chapters --chapters 5-17
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
The command reads the workspace manifest to discover chapters and writes independent v7 plans and a report under `utterplan/`:
|
|
71
|
-
|
|
72
|
-
```text
|
|
73
|
-
utterplan/
|
|
74
|
-
├── compile-report.toml
|
|
75
|
-
├── chapter-0005.utterplan.toml
|
|
76
|
-
├── chapter-0006.utterplan.toml
|
|
77
|
-
├── ...
|
|
78
|
-
└── chapter-0017.utterplan.toml
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
Omit `--chapters` to compile all manifest chapters. Use comma-separated source-number selections for non-contiguous ranges, for example `utterplan compile-book chapters --chapters 1,3-5`. `--diagnostics warnings|all|none` defaults to warnings; failures are always shown and reports retain complete diagnostics. The book root itself is also accepted as input; see the [SSMDBook guide](docs/ssmdbook.md).
|
|
67
|
+
Replanning uses stored profile snapshots and matching preflight feedback; it does not run synthesis or modify source content.
|
|
82
68
|
|
|
83
69
|
## Logical roles and complete RenderProfiles
|
|
84
70
|
|
|
@@ -126,17 +112,17 @@ Inspect symbolic role usage without a profile, then project a document or select
|
|
|
126
112
|
|
|
127
113
|
```bash
|
|
128
114
|
utterplan inspect story.utterplan.toml --roles
|
|
129
|
-
utterplan render
|
|
130
|
-
utterplan render
|
|
115
|
+
utterplan bundle render story.ssmd-bundle --profile printer-cast.renderprofile.toml
|
|
116
|
+
utterplan bundle render novel.ssmd-bundle --profile novel-cast.renderprofile.toml
|
|
131
117
|
```
|
|
132
118
|
|
|
133
119
|
Projection reports required and available roles and rejects incomplete coverage before writing the RenderPlan variant. The profile and its concrete role bindings remain separate from the source SSMD.
|
|
134
120
|
|
|
135
|
-
## From
|
|
121
|
+
## From bundles to RenderPlans
|
|
136
122
|
|
|
137
|
-
UtterPlan keeps one canonical semantic plan per
|
|
123
|
+
UtterPlan keeps one canonical semantic plan per source item. A RenderProfile is a
|
|
138
124
|
separate renderer configuration; create and validate it with VoiceRender, then
|
|
139
|
-
project
|
|
125
|
+
project saved plans from a canonical `.ssmd-bundle/` root:
|
|
140
126
|
|
|
141
127
|
```bash
|
|
142
128
|
voicerender profile create \
|
|
@@ -147,12 +133,11 @@ voicerender profile create \
|
|
|
147
133
|
--output narration.renderprofile.toml
|
|
148
134
|
voicerender profile validate narration.renderprofile.toml
|
|
149
135
|
|
|
150
|
-
utterplan compile
|
|
151
|
-
utterplan render
|
|
136
|
+
utterplan bundle compile novel.ssmd-bundle --chapters 5-17
|
|
137
|
+
utterplan bundle render novel.ssmd-bundle --chapters 5-17 --profile narration.renderprofile.toml
|
|
152
138
|
```
|
|
153
139
|
|
|
154
|
-
The
|
|
155
|
-
command writes independent renderer-specific plans into a deterministic variant:
|
|
140
|
+
The shared `renderplan/` area contains a profile-specific variant:
|
|
156
141
|
|
|
157
142
|
```text
|
|
158
143
|
renderplan/
|
|
@@ -169,45 +154,33 @@ first 12 hexadecimal characters of the canonical RenderProfile `profile_id`.
|
|
|
169
154
|
Changing identity-bearing profile semantics selects a different directory, so
|
|
170
155
|
multiple voices or planning policies can coexist without replacing one another.
|
|
171
156
|
Each variant snapshots the canonical profile; `renderplan-set.toml` records its
|
|
172
|
-
full identity, source profile reference, and
|
|
157
|
+
full identity, source profile reference, and source plan IDs. `--variant` changes
|
|
173
158
|
the human label without removing the fingerprint, and `--output-root` changes the
|
|
174
159
|
collection root while retaining the automatic variant directory.
|
|
175
160
|
|
|
176
|
-
`render
|
|
177
|
-
RenderProfile/RenderPlan contract. VoiceRender
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
161
|
+
`utterplan bundle render` consumes only existing schema-v7 FlowPlans and the
|
|
162
|
+
shared RenderProfile/RenderPlan contract. VoiceRender creates or refreshes
|
|
163
|
+
engine-backed profiles, then preflights and renders the resulting RenderPlans.
|
|
164
|
+
UtterPlan's single-file `render-plan` command remains the low-level projection and
|
|
165
|
+
deterministic replan primitive.
|
|
181
166
|
|
|
182
|
-
When VoiceRender reports `preflight.replan`,
|
|
183
|
-
|
|
184
|
-
from the selected variant, writes a fingerprinted child RenderPlan, and updates only
|
|
185
|
-
that chapter's active set entry. It does not replace the parent plan or rerun initial
|
|
186
|
-
projection:
|
|
167
|
+
When VoiceRender reports `preflight.replan`, refine the active bundle variant
|
|
168
|
+
using matching feedback:
|
|
187
169
|
|
|
188
170
|
```bash
|
|
189
|
-
# VoiceRender
|
|
190
|
-
|
|
191
|
-
--variant
|
|
192
|
-
--chapters 5 \
|
|
193
|
-
--emphasis-policy defer-to-compose
|
|
194
|
-
|
|
195
|
-
utterplan replan-book . \
|
|
196
|
-
--variant narration4--28f616b6fe3b \
|
|
171
|
+
# After VoiceRender reports preflight.replan for chapter 5:
|
|
172
|
+
utterplan bundle replan novel.ssmd-bundle \
|
|
173
|
+
--variant narration--28f616b6fe3b \
|
|
197
174
|
--chapters 5
|
|
198
|
-
|
|
199
|
-
# Measure/render the newly active child. Repeat these last two commands if it
|
|
200
|
-
# still reports preflight.replan; each cycle must use feedback for the active plan.
|
|
201
|
-
voicerender render-book . \
|
|
202
|
-
--variant narration4--28f616b6fe3b \
|
|
203
|
-
--chapters 5 \
|
|
204
|
-
--emphasis-policy defer-to-compose
|
|
205
175
|
```
|
|
206
176
|
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
177
|
+
Ask VoiceRender to measure and render the newly active plan. If it still reports
|
|
178
|
+
`preflight.replan`, repeat the feedback cycle against the active child.
|
|
179
|
+
|
|
180
|
+
Use the exact variant directory name (including its profile fingerprint). Bundle
|
|
181
|
+
replanning searches `preflight-recheck.toml` before `preflight.toml` and refuses
|
|
182
|
+
stale feedback, so a report for a parent can never be applied to its child. The
|
|
183
|
+
single-file `render-plan --previous ... --preflight ...` operation remains available for
|
|
211
184
|
low-level replanning.
|
|
212
185
|
|
|
213
186
|
This orchestration does not add a splitter, renderer-specific capacity estimate, or
|
|
@@ -356,7 +329,7 @@ renderer repository rather than UtterPlan's test suite.
|
|
|
356
329
|
|
|
357
330
|
- [Getting started](docs/getting-started.md)
|
|
358
331
|
- [CLI](docs/cli.md)
|
|
359
|
-
- [
|
|
332
|
+
- [Bundle workflows](docs/bundles.md)
|
|
360
333
|
- [Format and schema](docs/format.md)
|
|
361
334
|
- [Consumer guide](docs/consumer-guide.md)
|
|
362
335
|
- [Architecture](docs/architecture.md)
|