Changelog
Changelog
Dated changes to Harness. Every entry describes work on the main branch and names the commit it was checked against.
A Python SDK and scoped API tokens
Harness now has a Python SDK: a separate HTTP client for governed reads, rule evaluation and proposals. It authenticates with a business-scoped API token that carries either read or read-and-propose scope. The SDK has no approval or release method, so an application built on it can propose an action but cannot authorize one. It installs from the repository checkout and is not published.
Erasure alongside an append-only ledger
An owner can now erase decision payloads and inactive fact values while the audit chain stays verifiable. Erased values are replaced by commitments, holds can block an erasure, and a suppressed source cannot quietly restore what was removed. This has not been reviewed for regulated data, and the preview should not store any.
Guarded onboarding for a new source
Connecting a synthetic source is now a reviewed step. The owner previews one complete snapshot without installing or publishing anything, and scheduled pulls stay dormant until a reviewed snapshot has succeeded. Sources remain synthetic and loopback only.
Assessing an action before proposing it
A new read-only assessment evaluates an action against one named object or a bounded set of candidates and never proposes. When a person names the object, the proposal is bound to that choice and a model cannot substitute a different one. A writer lease now keeps a second writable process out of a database.
Model answers bound to kernel evidence
A model's answer is now shown only when it matches a kernel result the model actually read in that turn. Anything else is withheld and replaced with a fixed clarification. Questions that match a query declared in the contract are answered by Harness directly, with no model call.
A conversational terminal and a deterministic CLI
Harness gained its primary developer interface: a terminal that signs in to the local service and runs deterministic commands with no model configured, with conversation as an option. A separate CLI validates and diffs contracts, inspects objects as of a time and verifies the event chain. A native Anthropic Messages adapter joined the OpenAI-compatible one.
Field permissions and one operation set
Read and model visibility are now enforced per field and per relation, across the kernel and the model's tools alike. Every local interface routes through one versioned set of application operations, so the terminal, the CLI, the HTTP API and the model tools cannot drift apart.
Source pulls that publish whole or not at all
The synthetic pull connector validates a complete snapshot before publishing anything, then publishes facts and links atomically with an evidence manifest for the run. A snapshot that fails validation publishes nothing.
Identity corrections that keep their history
An owner can merge two objects that are the same thing, or split one that is not, and the previous identity is preserved. Every proposal records the identity revision it was evaluated under, so an approval cannot silently survive a correction.