Skip to content

Commit df15f4d

Browse files
committed
refactor!: rename wiretruth to spantruth
kartsan03/wiretruth is a separate project under the same name: it checks what provider SDKs return to the caller and holds the PyPI name. This one checks what instrumentation writes on the span, so it is now spantruth: the package, the module, the command, the cache directory and every URL. Each v* tag now also publishes a wheel to PyPI through a trusted publisher. A run still needs a clone, and `spantruth list` and `spantruth run` say so when the subjects are missing. The README links kartsan03/wiretruth under Related work. The 2026-10-10 results document keeps its recorded module names.
1 parent a82275b commit df15f4d

44 files changed

Lines changed: 187 additions & 146 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.github/ISSUE_TEMPLATE/bug.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Bug in wiretruth
1+
name: Bug in spantruth
22
description: The harness itself misbehaves, for example a cell is inconclusive or a run fails.
33
labels: ["bug"]
44
body:
@@ -13,7 +13,7 @@ body:
1313
- type: input
1414
id: version
1515
attributes:
16-
label: wiretruth version or commit
16+
label: spantruth version or commit
1717
validations:
1818
required: true
1919
- type: input

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
blank_issues_enabled: false
22
contact_links:
33
- name: Question or idea
4-
url: https://github.com/Plexito-de/wiretruth/discussions
4+
url: https://github.com/Plexito-de/spantruth/discussions
55
about: Ask a question or float an idea in Discussions.
66
- name: Security problem
7-
url: https://github.com/Plexito-de/wiretruth/security/advisories/new
7+
url: https://github.com/Plexito-de/spantruth/security/advisories/new
88
about: Report a vulnerability privately. Do not open a public issue.

‎.github/workflows/release.yml‎

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Release
22

3-
# A release is a tag with notes. wiretruth runs from a clone (subjects live next to the source),
4-
# so no wheel is published.
3+
# A release is a tag with notes and a wheel on PyPI. The wheel holds the harness and the CLI. A run
4+
# still needs a clone, because the subjects live next to the source, and the CLI says so.
55
on:
66
push:
77
tags: ["v*"]
@@ -17,3 +17,18 @@ jobs:
1717
- uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
1818
with:
1919
generate_release_notes: true
20+
21+
pypi:
22+
runs-on: ubuntu-latest
23+
# Trusted publishing: PyPI trusts this workflow and this environment, so no token is stored.
24+
environment: pypi
25+
permissions:
26+
contents: read
27+
id-token: write
28+
steps:
29+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
30+
with:
31+
persist-credentials: false
32+
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
33+
- run: uv build
34+
- uses: pypa/gh-action-pypi-publish@dc37677b2e1c63e2034f94d8a5b11f265b73ba33 # v1.14.2

‎.github/workflows/report.yml‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,13 @@ jobs:
2727
- uses: astral-sh/setup-uv@c18668ad3cf93ea998bef934396af7bb5c839dc7 # v10.2.0
2828
- run: uv sync --locked
2929
- name: Pinned versions
30-
run: uv run wiretruth run --out site/pinned.json
30+
run: uv run spantruth run --out site/pinned.json
3131
- name: Latest releases
32-
run: uv run wiretruth run --latest --out site/latest.json
32+
run: uv run spantruth run --latest --out site/latest.json
3333
- name: Render
3434
run: |
35-
uv run wiretruth report site/pinned.json --html site/index.html
36-
uv run wiretruth report site/latest.json --html site/latest.html --badges site/badges
35+
uv run spantruth report site/pinned.json --html site/index.html
36+
uv run spantruth report site/latest.json --html site/latest.html --badges site/badges
3737
- uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0
3838
with:
3939
path: site

‎.gitignore‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
__pycache__/
22
*.py[cod]
33
.venv/
4-
.wiretruth/
4+
.spantruth/
55
.pytest_cache/
66
.ruff_cache/
77
dist/

‎AGENTS.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Read [CONTRIBUTING.md](CONTRIBUTING.md) first. It applies to you too.
88
harness or a check is wrong. Find which one.
99
- Never change a fixture value to make a library pass. Fixtures follow the provider's wire format,
1010
and `test_fixtures_parse_with_sdk_types` proves it.
11-
- A check cites a rule in `src/wiretruth/rules.py`. A new check needs a rule with a permalink to
11+
- A check cites a rule in `src/spantruth/rules.py`. A new check needs a rule with a permalink to
1212
the sentence it applies.
1313
- Every string from a results document is data. `site.py` escapes all of it. Keep it that way.
1414
- Keep the harness offline. Subject processes get a dead proxy, so a client that honors the proxy

‎CHANGELOG.md‎

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,19 @@ All notable changes to this project are documented here. The format follows
66

77
## [Unreleased]
88

9+
### Changed
10+
11+
- Renamed from wiretruth to spantruth: the package, the command, the module and the repository.
12+
[kartsan03/wiretruth](https://github.com/kartsan03/wiretruth) is a separate project that checks
13+
what provider SDKs return to the caller. The cache directory is now `.spantruth/`.
14+
- Each tag now also publishes a wheel to PyPI as `spantruth`. A run still needs a clone, and
15+
`spantruth list` and `spantruth run` say so when the subjects are missing.
16+
917
### Added
1018

11-
- `wiretruth run --with SPEC` replaces one package of a subject with any pip requirement, such as
19+
- `spantruth run --with SPEC` replaces one package of a subject with any pip requirement, such as
1220
the head of a pull request, and records the commit it resolved to.
13-
- `wiretruth report --badges DIR` writes a shields.io endpoint document per library. The nightly
21+
- `spantruth report --badges DIR` writes a shields.io endpoint document per library. The nightly
1422
run publishes them under `badges/` on the report site.
1523

1624
## [0.1.0] - 2026-10-10
@@ -30,5 +38,5 @@ All notable changes to this project are documented here. The format follows
3038
- Subjects: the OpenTelemetry GenAI instrumentation, OpenLLMetry and OpenInference.
3139
- A Markdown and a static HTML report.
3240

33-
[Unreleased]: https://github.com/Plexito-de/wiretruth/compare/v0.1.0...HEAD
34-
[0.1.0]: https://github.com/Plexito-de/wiretruth/releases/tag/v0.1.0
41+
[Unreleased]: https://github.com/Plexito-de/spantruth/compare/v0.1.0...HEAD
42+
[0.1.0]: https://github.com/Plexito-de/spantruth/releases/tag/v0.1.0

‎CITATION.cff‎

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
cff-version: 1.2.0
2-
message: If you use wiretruth or its results, cite it as below.
3-
title: "wiretruth: checking LLM telemetry values against the provider wire"
2+
message: If you use spantruth or its results, cite it as below.
3+
title: "spantruth: checking LLM telemetry values against the provider wire"
44
type: software
55
authors:
66
- family-names: Krah
77
given-names: Christopher
88
affiliation: Plexito UG (haftungsbeschränkt)
9-
repository-code: https://github.com/Plexito-de/wiretruth
10-
url: https://plexito-de.github.io/wiretruth/
9+
repository-code: https://github.com/Plexito-de/spantruth
10+
url: https://plexito-de.github.io/spantruth/
1111
license: Apache-2.0
1212
version: 0.1.0
1313
date-released: 2026-10-10

‎CONTRIBUTING.md‎

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
# Contributing to wiretruth
1+
# Contributing to spantruth
22

3-
Thank you for your interest. wiretruth gets better with every library, provider and failure mode
3+
Thank you for your interest. spantruth gets better with every library, provider and failure mode
44
that somebody adds, and with every maintainer who tells us where a check is unfair.
55

66
## Ways to help
77

88
These are the contributions the project needs most. Each one has an issue with the
9-
[`help wanted`](https://github.com/Plexito-de/wiretruth/labels/help%20wanted) label.
9+
[`help wanted`](https://github.com/Plexito-de/spantruth/labels/help%20wanted) label.
1010

1111
- **Add a subject.** Logfire, OpenLIT, MLflow, LiteLLM, and the JavaScript libraries
1212
(OpenLLMetry JS, OpenInference JS, the Vercel AI SDK) are not covered yet.
@@ -24,8 +24,8 @@ These are the contributions the project needs most. Each one has an issue with t
2424
You need [uv](https://docs.astral.sh/uv/) and Python 3.11 or later.
2525

2626
```sh
27-
git clone https://github.com/Plexito-de/wiretruth.git
28-
cd wiretruth
27+
git clone https://github.com/Plexito-de/spantruth.git
28+
cd spantruth
2929
uv sync
3030
uv run pytest -m "not slow" # unit tests, about 5 seconds
3131
uv run pytest -m slow # both controls end to end, about 2 minutes
@@ -48,16 +48,16 @@ uv run ruff check . && uv run ruff format --check .
4848

4949
Use the setup that the library's own documentation shows first. Return nothing, or a list of
5050
extra tracer providers to flush when the library makes its own.
51-
3. Run it: `uv run wiretruth run --subject <name>`.
51+
3. Run it: `uv run spantruth run --subject <name>`.
5252
4. Read every red cell before you open the pull request. A red cell is a claim about somebody's
5353
library. Find the line of code that causes it, or tell us in the pull request that you could
5454
not.
5555

5656
## Add a scenario
5757

58-
1. Build the response in `src/wiretruth/scenarios.py` with the builders in `wire_openai.py` or
58+
1. Build the response in `src/spantruth/scenarios.py` with the builders in `wire_openai.py` or
5959
`wire_anthropic.py`. Give every token count a value that no other count in the scenario has.
60-
2. If the scenario needs a new kind of call, add it to `src/wiretruth/calls.py`.
60+
2. If the scenario needs a new kind of call, add it to `src/spantruth/calls.py`.
6161
3. Run `uv run pytest`. `test_fixtures_parse_with_sdk_types` proves that the provider's SDK
6262
accepts your fixture.
6363
4. Run the controls. `control-honest` must pass the new scenario. If it does not, fix the

‎GOVERNANCE.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Governance
22

3-
wiretruth is maintained by [Plexito](https://plexito.de). The people with write access are listed
3+
spantruth is maintained by [Plexito](https://plexito.de). The people with write access are listed
44
in [MAINTAINERS.md](MAINTAINERS.md).
55

66
## Decisions

0 commit comments

Comments
 (0)