Skip to content
Merged
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
5 changes: 3 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,10 @@ All notable changes to Tool-Semantics will be documented in this file.
### Added
- (none yet)

## [0.2.0] — 2026-08-04
## [0.2.0] — Unreleased

First PyPI release. Install with `pip install tool-semantics`.
The release artifacts and GitHub release tag have not yet been published. Until
then, install directly from the repository as documented in the README.

### Added
- `tool.output_schema_added` / `removed` / `changed` detection (#8)
Expand Down
10 changes: 6 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ AI agents do not call tools the way typed clients do. They choose tools from **d
| 4. Execution | Do calls still succeed with prior argument patterns? |
| 5. Intent / side effects | Did risk, confirmation needs, or outcomes change? |

The MVP implements deterministic interface snapshots and structural comparison (layers 1–2, with warnings that point at 3–5). Live MCP capture and model-based behavioral testing are on the [roadmap](ROADMAP.md).
The MVP implements deterministic interface snapshots and structural comparison (layers 1–2, with warnings that point at 3–5), plus local MCP capture over stdio. Remote MCP transport and model-based behavioral testing are on the [roadmap](ROADMAP.md).

## How it works

Expand Down Expand Up @@ -105,8 +105,10 @@ Result: breaking
## Install (library)

```bash
pip install tool-semantics
# or from source: pip install -e .
# The first PyPI release is not published yet.
# Install from this repository for now:
pip install "tool-semantics @ git+https://github.com/askmy-stack/tool-semantics.git"
# or, for local development: pip install -e .
```

```python
Expand Down Expand Up @@ -195,7 +197,7 @@ docs/assets/ # README visuals

## Roadmap

See [ROADMAP.md](ROADMAP.md) for milestones: live MCP capture, richer compatibility rules, behavioral contracts, model matrices, PR reporting, and migration adapters.
See [ROADMAP.md](ROADMAP.md) for milestones: remote MCP capture, richer compatibility rules, behavioral contracts, model matrices, PR reporting, and migration adapters.

## Contributing

Expand Down
3 changes: 2 additions & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@

| Version | Supported |
| --- | --- |
| 0.1.x | Yes |
| 0.2.x | Yes |
| 0.1.x | No |

## Reporting a vulnerability

Expand Down
10 changes: 5 additions & 5 deletions docs/github-action.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,9 @@ askmy-stack/tool-semantics/.github/actions/compare
## Versioning the Action

Pin the composite Action to a **release tag** (or commit SHA) so consumer CI stays
reproducible. Tags follow the package version (`v0.2.0`, …). A floating major pin
such as `@v0` is fine once a `v0` moving tag exists; prefer an exact tag for
production workflows.
reproducible. The Action has not been released under a version tag yet, so the
example below pins the current stable commit. After the first release, use the
matching version tag (`vX.Y.Z`); a floating major pin (`@v0`) can follow.

`@main` tracks the tip of the default branch and **may break** without notice —
use it only for local experiments.
Expand All @@ -41,10 +41,10 @@ jobs:
- uses: actions/checkout@v4
- name: Capture baseline and candidate
run: |
pip install "tool-semantics==0.2.0"
pip install "tool-semantics @ git+https://github.com/askmy-stack/tool-semantics.git@64befaa9f65f825d75c6ce088d1f40e35054fdf0"
tool-semantics capture manifests/baseline.json -o .tool-semantics/baseline.json
tool-semantics capture manifests/candidate.json -o .tool-semantics/candidate.json
- uses: askmy-stack/tool-semantics/.github/actions/compare@v0.2.0
- uses: askmy-stack/tool-semantics/.github/actions/compare@64befaa9f65f825d75c6ce088d1f40e35054fdf0
with:
baseline: .tool-semantics/baseline.json
candidate: .tool-semantics/candidate.json
Expand Down
7 changes: 4 additions & 3 deletions docs/publishing.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
# Publishing

Tool-Semantics is published to PyPI from GitHub Releases using
[trusted publishing](https://docs.pypi.org/trusted-publishers/) (OIDC).
No long-lived PyPI API token is stored in the repository.
Tool-Semantics will be published to PyPI from GitHub Releases using
[trusted publishing](https://docs.pypi.org/trusted-publishers/) (OIDC), after the
one-time PyPI configuration below is complete. No long-lived PyPI API token is
stored in the repository.

## One-time PyPI setup

Expand Down