Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
- uses: actions/setup-python@v5
with:
python-version: "3.13"
- run: make check-protocol check-conformance
- run: make check-protocol check-conformance check-licensing

dart-and-flutter:
runs-on: ubuntu-latest
Expand Down
7 changes: 7 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,13 @@ Keep product commands and billing policy outside the runtime. Provider-specific
dependencies belong behind adapters, with their licenses and model terms called
out in the pull request.

A change that adds or bumps an engine, native library, model, voice, tokenizer,
phonemizer, or test fixture follows the update procedure in
[licensing/README.md](licensing/README.md). Include the `licensing/manifest.json`
change and any legal review reference. Never rely on an SDK repository's license
alone for the artifacts it downloads. A pull request that adds a downloader or a
packaging path also adds its licensing cross-check in the same pull request.

## Connector pull requests

A connector contribution should document:
Expand Down
8 changes: 6 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
PROTO_FILES := $(shell find spec/proto -name '*.proto' -type f | sort)

.PHONY: check check-protocol check-conformance check-dart check-flutter check-flutter-plugin check-typescript check-python check-rust
.PHONY: check check-protocol check-conformance check-licensing check-dart check-flutter check-flutter-plugin check-typescript check-python check-rust

check: check-protocol check-conformance check-dart check-flutter check-flutter-plugin check-typescript check-python check-rust
check: check-protocol check-conformance check-licensing check-dart check-flutter check-flutter-plugin check-typescript check-python check-rust

check-protocol:
@descriptor="$$(mktemp)"; \
Expand All @@ -12,6 +12,10 @@ check-protocol:
check-conformance:
python3 tool/check_conformance.py

check-licensing:
python3 tool/check_licensing.py
python3 -m unittest discover -s tool -p 'test_check_licensing.py' -v

check-dart:
cd sdks/dart/murmur_protocol && dart pub get && dart format --output=none --set-exit-if-changed . && dart analyze && dart test

Expand Down
8 changes: 8 additions & 0 deletions THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,11 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
```

## Engine dependencies and model artifacts

Murmur does not currently distribute any native engine dependency, model
weight, voice, tokenizer, or phonemizer. The inventory, terms, and review state
live in [licensing/manifest.json](licensing/manifest.json) and
[licensing/README.md](licensing/README.md). An artifact's full notice is added
here before it may be packaged; `make check-licensing` enforces this.
12 changes: 8 additions & 4 deletions docs/voice-runtime.md
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,12 @@ atomic pack manager instead of making each screen infer readiness.
preparation
- unsupported components are explicit rather than reported as ready

Individual engine adapters remain responsible for their upstream licenses,
model terms, supported platforms, and redistribution rules.
Packs resolve only entries approved in [licensing/](../licensing/README.md),
verify each file's hash and size before activation, and present terms as each
entry's `terms.download.presentation` requires before the first network
request. An engine adapter's license never stands in for the terms of the
models, voices, tokenizers, or phonemizers it loads, and each adapter still
documents its supported platforms.

## Speech feedback and interruption

Expand Down Expand Up @@ -226,8 +230,8 @@ regressing.
- subscription, trial, entitlement, and usage-metering policy
- private services, endpoints, analytics, and account identifiers
- host UI components, IPC names, and application state
- native engines or model assets whose licenses and redistribution terms have
not been reviewed for Murmur
- native engines or model assets that are not approved in
[licensing/manifest.json](../licensing/manifest.json)
- constants tuned to one product without a public configuration and test basis

Murmur can define adapters for these capabilities without making any one
Expand Down
351 changes: 351 additions & 0 deletions licensing/README.md

Large diffs are not rendered by default.

Loading
Loading