Releases: crescerelabs/sentience-governor
Release list
pydantic-ai-governor 0.1.0
Sentience Governor for Pydantic AI 0.1.0
Initial release of Sentience Governor for Pydantic AI, providing Agent Execution Evidence at the Pydantic AI runtime execution boundary.
What it captures
- one Sentience Governor session per Pydantic AI run
- run objective and scope declarations
- explicit-first tool classification
- scope assertions immediately before validated tool dispatch
- matching context snapshots after normal tool returns
- per-turn model, provider and measured token evidence
- tool-call identity through
tool_use_id - concurrent-run and parallel-tool isolation
- visible fail-open behavior for malformed governance metadata
The integration records and flags runtime evidence. It does not intervene in tool execution.
Install
pip install pydantic-ai-governorCompatibility
- Python
>=3.10 sentience-governor >=0.3.1.2,<0.3.2pydantic-ai-slim >=2.37.0,<2.38
Release verification
This release was validated through TestPyPI and then published to production PyPI using the exact same frozen artifacts, without rebuilding.
SHA256:
pydantic_ai_governor-0.1.0-py3-none-any.whl
22da2534a3965c15a1d4e4439d07f0195be35e57844cedfbf9821275c32624f1
pydantic_ai_governor-0.1.0.tar.gz
1402c8780907ec1531985673d004b16d5ed12c7bd6856d3d8e6be0a3144e5c72
Production PyPI installation and installed-package behavior were verified from a clean external environment.
Links
- PyPI:
https://pypi.org/project/pydantic-ai-governor/0.1.0/ - Sentience Governor:
https://getsentience.ai - Governor's Log:
https://getsentience.ai/governor-log
v0.3.1.2 — MCP Summary Context
v0.3.1.2 adds richer summary context to sentience_scan without changing the tool signature or CLI presentation.
What’s new
- Adds
session_activity[]to summary responses, with one row per reviewed session. - Adds
session_idcorrelation acrosssession_activity[],standout[], andother_reviewed[]. - Adds
retrospective_findingswith three states:present,absent, orunknown. - Adds
target_countforanother_projectsummary groups, separating distinct targets from total write operations.
Exactness and bounds
target_count is an exact integer only when both targets_omitted == 0 and findings_omitted == 0.
If either bound is non-zero, target_count is null rather than presenting a partial count as exact.
target_count remains absent from no_identifiable_project, global_configuration, and detail responses.
Scope
The sentience_scan(detail, since) signature is unchanged, and the existing CLI screens are unchanged.
The separate boundedness issue affecting write_operations is not repaired in this release and remains tracked in #11.
The retrospective Reader remains a reviewer of recorded Claude Code history, not a statement that actions were safe, compliant, or clean.
v0.3.1.1 — The evidence behind the retrospective review
v0.3.1.1 — The evidence behind the retrospective review
v0.3.1 could tell you a session wrote into another project directory, and how many times, and then stopped. This release shows the paths behind that number.
sentience scan --detailsentience_scan(detail, since)on the opt-in MCP server
The summary names the evidence path itself, so it is not something you have to discover from --help. The same review and the same evidence are reachable inside a Claude Code session, so you can ask for the evidence and get it back in the conversation.
Highlights
sentience scan --detail: the same review at greater depth, grouped by session- Cross-project evidence grouped by destination project, each with its own paths and per-path operation counts
- Sessions reviewed without standing out shown under a heading that says exactly that
- One line accounting for reviewed sessions that produced no findings, which does not claim they were clean
- A continuation line on the summary, shown only when detail would show something
--detailand--jsonare mutually exclusive: one renders a screen for a person, the other emits data for a program- MCP progressive disclosure through one capability, not two tools, with
detail_availableso a client knows a continuation exists - User-facing MCP vocabulary; Reader's internal finding classes never reach a client
sincevalidated against the supported windows before any scan runs, returning the establishedinvalid_requeststatus rather than raising- Summary and evidence share one vocabulary, and neither claims an aggregate count of destination projects
- GEO readiness pass on the public README: property table, category-positioning and data-artifact contrast tables, and the six governed event types re-verified against the shipped schema
Boundary
sentience_scan is not an eighth governance tool. The seven governance tools read a Sentience session; this reviews another system's history. Read-only in every mode, invalid input included.
--detail is depth, never breadth: the same scan over the same window, finding nothing the summary did not already find.
Validation
- 1,231 tests, Python 3.10–3.13 CI matrix green
- Semantic parity between CLI and MCP pinned by test and verified on a real 11-session history at every supported window
- Zero-write verified by snapshotting 790 real files before and after every surface, including invalid input
- The exact release artifacts were validated on TestPyPI before merge, then published unchanged to production PyPI
Important boundary
Sentience Reader is a retrospective reviewer, not live governance. It reports what the recorded history shows; it cannot establish what you intended or authorized, or whether an action complied with policy.
v0.3.1 — Retrospective Claude Code session reader
v0.3.1 — Retrospective Claude Code session reader
This release adds a new retrospective discovery surface for Claude Code history:
sentience scan/sentience-review
The Reader inspects existing Claude Code transcripts and surfaces recorded write activity that crosses identifiable project boundaries or targets locations where a project cannot be identified today.
It is deliberately separate from live governance. The Reader emits no GovernanceEvent, writes no trace, does not mutate ~/.sentience, and does not participate in capture, policy evaluation, enforcement, or session management.
Highlights
- Bounded streaming reader for large Claude Code histories
- Project-root resolution and suppression of known Claude infrastructure noise
- Three-state retrospective review UX
- Read-only
sentience scanpath with zero writes /sentience-reviewClaude Code skill--since 7d,30d, andall- JSON output for structured inspection
- Conservative handling of Git worktrees and unidentified destinations
- Improved ranking so weaker
non_projectevidence does not overshadow stronger cross-project findings - Reader surfaces added to command and skill discovery
- PyPI README changelog link fixed and verified in the packaged long description
Validation
Validated against a real 39-file / 246 MB Claude Code history:
- 78,637 records scanned
- ~43 MB peak RSS
- read-only transcript verification
- real cross-project findings manually checked
- 84 Reader tests
- 1,140 full-suite tests
- Python 3.10–3.13 CI matrix green
The exact release artifacts were validated on TestPyPI before merge and then published unchanged to production PyPI.
Important boundary
Sentience Reader is a retrospective reviewer, not live governance. It can show what recorded execution history reveals, but it cannot establish what you intended or authorized, or whether an action complied with policy.
Sentience Governor provides that stronger runtime evidence by evaluating declared objective, scope, execution, and policy while the agent is running.
v0.3.0.4 — Fix empty transient Claude Code sessions
Fixes empty transient Claude Code sessions created during app restarts. Sentience now avoids creating trace artifacts when an unseen SessionEnd is positively established to contain no emittable activity, while preserving fail-open behavior on uncertain transcript reads. Existing transient traces remain untouched and are labeled appropriately by CLI surfaces.
Sentience Governor v0.3.0.3: Self-Converging Claude Code Hook Configuration
Sentience Governor v0.3.0.3
This release fixes silent capture loss after a package uninstall or reinstall, by moving the Claude Code hook binding to the machine-local settings layer and keeping it current automatically.
The problem this fixes
Uninstalling or relocating the package left projects wired to a hook path that no longer existed. The hook fails open by design — it must never break your agent — so nothing visibly broke: capture just stopped, silently, while the project still looked configured.
Hook configuration is now machine-local and self-converging
- The hook binding lives in
.claude/settings.local.json— it is an absolute path to your install's binary, so it never belonged in the team-shared, committedsettings.json. Sentience no longer writes the shared file at all; legacy entries there are treated as read-only migration evidence. sentience init claude-codeis now a convergence, not a merge: exactly one Sentience hook entry per event for the running install — stale bindings updated, partial historical installs completed, duplicates collapsed, already-current configuration a no-op.- Any
sentiencecommand repairs an already-configured project. Reinstall the package, run anysentiencecommand in the project, and capture resumes — no separate repair step. This never configures a project with no Sentience configuration, and it never blocks the command you ran. - Hand-customised entries are respected: anything Sentience-looking that doesn't exactly match the generated shape is reported, never rewritten. Foreign hooks are never touched.
The governance output itself — events, violations, evaluation — is unchanged, and the hook runtime is byte-identical to 0.3.0.2.
Requires Claude Code v2.1.211 or later
Sentience performs no version detection and cannot determine which Claude Code version will read the configuration it writes; on older versions the integration may silently capture nothing. Earlier versions are out of scope.
Install
pip install --upgrade sentience-governor
Full details: CHANGELOG · user changelog · PR #4
Sentience Governor v0.3.0.2: Reliable Governance for LangGraph Runs
Sentience Governor v0.3.0.2
This release fixes LangGraph session continuity and false POL-001 findings in nested agent runs.
LangGraph governance now follows the root invocation
A single LangGraph .invoke() can trigger callbacks at both the graph and node level.
Previously, Sentience could interpret those nested callbacks as separate governance sessions. That meant later sessions could lose the original intent baseline and incorrectly raise POL-001 on a tool the caller had explicitly declared.
v0.3.0.2 keeps one governance session for the root invocation and correctly attributes nested tool and LLM activity back to it.
Concurrent callback runs are isolated
A single SentienceCallbackHandler can now govern overlapping LangGraph runs without one run closing, overwriting, or contaminating another.
Isolation now covers:
- governance sessions
- declared intent baselines
- tool attribution
llm_turn_id- token usage
- model and provider telemetry
- parallel graph branches
SentienceMiddleware is not covered by this concurrency guarantee. LangChain does not provide it with run identifiers, so it remains one middleware instance per agent run. If more than one run is open, it reports a governance error rather than attributing a tool call to a guess.
Existing non-concurrent SessionManager behavior remains unchanged unless a caller explicitly opts into concurrent sessions.
True policy violations still fire
This release fixes the false positive without weakening the underlying governance check.
- Declared tool inside a nested LangGraph run → no false
POL-001 - Undeclared tool →
POL-001still fires
Documentation is now GitHub-native
The public documentation has been consolidated into the repository's docs/ tree, including:
- installation and quickstart
- command reference
- integrations
- governance profiles
- troubleshooting
- user guide
- user-facing changelog
The user-facing changelog was also brought current through v0.3.0.2. This corrected stale documentation that still described sentience-sync as an available command after it had been removed in v0.3.0.1.
Verification
v0.3.0.2 was verified against real LangGraph executions, including nested graphs, overlapping root invocations, parallel branches, and default SessionManager behavior.
- 959 repository tests passed locally on Python 3.14.6
- required CI passed on Python 3.10, 3.11, 3.12, and 3.13
- public-surface release checks passed
- production PyPI artifacts verified byte-for-byte against the pre-release artifacts
- fresh install from production PyPI verified
- 21/21 targeted LangGraph release checks passed
Install
pip install -U sentience-governorOr pin this release:
pip install sentience-governor==0.3.0.2Full documentation: https://github.com/crescerelabs/sentience-governor/blob/main/docs/index.md
v0.3.0.1: public source
This is the first public source release for Sentience Governor 0.3.0.1.
The tag v0.3.0.1 points at e179008, the final verified sanitized public
source commit.
Provenance
PyPI holds the canonical packaged artifacts. Install from there:
pip install "sentience-governor[mcp]"
https://pypi.org/project/sentience-governor/0.3.0.1/
This repository and the PyPI artifacts are intentionally not byte-identical.
The difference comes from two things and nothing else: private references were
removed, and reviewed public-surface edits were applied (documentation wording,
a rewritten README, and repointed links).
No product behavior was added, changed or removed by publishing this
repository. The runtime source here is equivalent to the source the published
package was built from. Publication is a sanitization and documentation step,
not a code change.
This is a source release. No new PyPI artifact accompanies it; 0.3.0.1 was
published to PyPI on 2026-08-04 and is unchanged.
What 0.3.0.1 fixes
The [mcp] extra previously declared an unbounded mcp>=1.0. MCP SDK 2.0.0
removed mcp.server.fastmcp, which the server imports, so every fresh install
of the extra produced a server that could not start. The dependency is now
bounded at mcp>=1.0,<2.
The diagnostic is repaired as well. v0.3.0 reported an incompatible SDK as a
missing one and suggested a command that does not fix it, because pip treats the
requirement as already satisfied. The server now distinguishes an absent
dependency from an incompatible one, and gives a remediation command matched to
whether the package was installed with pip or pipx.
Also in this release: the sunset sentience-sync surface is removed, the
website and user documentation are corrected, and a standing fresh-resolve
release gate is added that installs every declared extra into a genuinely fresh
environment with no pins and runs a feature smoke test.