Releases: MontyGovernance/montycat_python
Release list
v1.1.2
[1.1.2] - 2026-07-29
Fixes a hang that affects any request whose payload contains the word
subscribe. Upgrade from 1.1.1 is recommended.
Fixed
-
A request whose value contained the substring
subscribenever returned.
Subscription mode was detected withb"subscribe" in query, so a call like
insert_value({"note": "please subscribe"})was routed into the streaming
branch — which has no read timeout and loops forever. Any record mentioning
the word was affected,unsubscribeincluded.A request is now a subscription because the caller supplied a
callback. That
was always the real distinction —_run_queryalready chose the subscription
port on exactly that basis — so the two signals can no longer disagree.
Intent is no longer inferred from user data.Present in every release before this one. The Rust and Dart clients carry the
same defect and are fixed in their matching releases; the Node client was
already correct.
v1.1.1
[1.1.1] - 2026-07-29
Documentation, tests, and CI only — no library code changed, so upgrading from
1.1.0 is optional.
Added
- README sections for behavior that was previously undocumented: response shape
({"status", "payload", "error"}and u128 keys arriving as strings),
real-time subscriptions returning(task, stop_event)on theport + 1
subscription port, TLS viatls=True, and owner/access management with
create_owner,grant_to,revoke_from, andPermission. - CI now installs the package and runs the test suite on Python 3.10 through
3.13. Thetestjob previously ran only a packaging dry run, so no test had
ever executed in CI. - Changelog link in the README.
Changed
- Declared Python support is now 3.10+, corrected from 3.9+. The package has
never been importable on 3.9:core/schema.pyandstore_classes/kv.pyboth
importtypes.UnionTypeat module scope, which was added in 3.10, so any 3.9
install failed withImportErroron the firstimport montycat. The metadata
and the README FAQ advertised a version that never worked. Nothing that
currently runs is affected, and 3.9 reached end of life in October 2025. - The CI packaging dry run moved into its own
packagejob, and the release job
now depends on bothtestandpackage.
Fixed
- The governance section omitted the storage-type and semantic-model constraint
bullets and thepolicy_explain/policy_historyparagraph that the Dart,
Node, and Rust clients document.
v1.1.0 - data mesh
[1.1.0] - 2026-07-28
Added
- Data-mesh governance policy API on
Engine:- inspection —
policy_view,policy_history,policy_explain,policy_export - mutation —
policy_grant,policy_revoke,policy_deny,policy_remove_denial - dry runs —
policy_preview_grant,policy_preview_revoke - manifests —
policy_validate,policy_plan,policy_apply(JSON or YAML documents)
- inspection —
- New enums, exported from the package root:
PolicyCapability,PolicyKeyspaceType,
SemanticModel,PolicyFormat. keyspace=onenable_semantic_search/disable_semantic_search, for enrolling or
dropping a single keyspace instead of the whole store. RaisesValueErrorwhen a
keyspace is given without a store.
Changed
grant_toandrevoke_fromnormalize the permission token (strip + lowercase), so
" ALL "and"WrItE"are accepted andPermissionenum members serialize correctly
instead of reaching the wire asPermission.ALL.policy_explainand the policy mutations dropkeyspacefor
PolicyCapability.PROVISION_KEYSPACE, which is a store-level capability.- Policy qualifiers are capability-specific:
models/modelapply to
PROVISION_KEYSPACEandMANAGE_SEMANTIC; storage-type qualifiers apply to
keyspace-scoped capabilities exceptMANAGE_SNAPSHOTS, where in-memory storage is
implicit. Invalid combinations raiseValueErrorbefore a command is sent.
Breaking
-
enable_semantic_search(model=...)now takes aSemanticModel, not astr. Passing a
string raisesAttributeError.# before await engine.enable_semantic_search(model="bge-small") # now from montycat import SemanticModel await engine.enable_semantic_search(model=SemanticModel.BGE_SMALL)
Internal
- Added
tests/test_governance_response_contract.py— offline unit tests covering
governance error/payload preservation throughrecursive_parse_orjsonand permission
token normalization. Not part of the distributed package.
v1.1.7
Merge pull request #8 from MontyGovernance/semantic_ranking Semantic ranking
v1.0.6
Merge pull request #7 from MontyGovernance/added_methods semantic resp structure - version
v1.0.5
Merge pull request #6 from MontyGovernance/added_methods Added methods
v1.0.4
chore: update version to 1.0.4 in build_and_push.sh and setup.py
v1.0.3-stable
Merge pull request #4 from MontyGovernance/args Args