Changelog¶
Each package keeps its own changelog, with a section for every version:
| Package | Changelog | First published version |
|---|---|---|
harnessweaver |
python/harnessweaver | 0.18.0 |
harnessweaver-cli |
python/harnessweaver-cli | 0.7.1 |
harnessweaver-sidecar |
python/harnessweaver-sidecar | 0.2.1 |
harnessweaver-openai |
python/plugins/openai | 0.2.0 |
harnessweaver-anthropic |
python/plugins/anthropic | 0.2.0 |
harnessweaver-otel |
python/plugins/otel | 0.2.1 |
harnessweaver-pydantic-ai |
python/plugins/pydantic-ai | 0.1.2 |
harnessweaver-monty |
python/plugins/monty | 0.2.1 |
harnessweaver-cel |
python/plugins/cel | 0.1.1 |
@harnessweaver/core |
typescript/packages/core | 0.5.0 |
@harnessweaver/ai-sdk |
typescript/packages/ai-sdk | 0.2.0 |
Below are the changes that belong to the repository rather than to one package: the examples, the docs site, CI and the release tooling. The format follows Keep a Changelog.
[Unreleased]¶
Added¶
- The website has a landing page at
/, and the docs move under/docs/(ADR-0046). The page is plain HTML and CSS inwebsite/;make docsbuilds the docs intosite/docs/and copies the landing page tosite/, which Vercel serves. The docs header's logo leads to the landing page, Vercel redirects/docsto/docs/and serves the landing page's404.htmlfor a missing path, and a test checks the landing page's links into the docs.make site-servebuilds the website and serves it as Vercel does, with the 404 page for a missing path (scripts/serve_site.py).CONTRIBUTING.mdexplains how to preview and publish the website. - The docs compare
openai.chatandanthropic.messages: what Claude loses through Chat Completions, and thatinstrument()follows the client, notmodels.provider(docs/reference/providers.md). - The
Releaseworkflow (.github/workflows/release.yml) runs the checks, builds the tagged packages, attests their provenance and SBOMs (RULES S5) and publishes those same files with trusted publishing. A release that creates more than one PyPI project, which PyPI's pending publishers can't do, uploads with an account-wide token from thePYPI_TOKENsecret instead, and a package's first npm release with one fromNPM_TOKEN.scripts/release.py uploaduploads an earlier build unchanged. The@harnessweaverpackages name their repository, which npm's provenance requires.
Changed¶
make releasepublishes TypeScript packages withnpm publishinstead ofpnpm publish, because pnpm only warns when trusted publishing fails. It needs an npm login, not a pnpm one.
Fixed¶
- The Vercel build installs uv 0.13.6 into a virtual environment of its own. The build image's
python3is now managed by uv and marked externally managed (PEP 668), sopip installinto it failed and no deployment could build.
2026-11-01¶
Added¶
- Each package has its own
CHANGELOG.md, with a section per version, and a test requires a section for its current version. This file now holds only repository-wide changes, and the docs site's Release Notes has a page per package.
Security¶
- Dependencies with known advisories are updated: certifi 2026.10.23 (GHSA-6q48-6c7w-9gw2, a bundled root CA whose intermediates have compromised keys), uv 0.13.6 in the harnessd image and the Vercel docs build (GHSA-hq85-5cpj-mr62, the same root in uv's CA store), and zod 4.6.7 in the development dependencies of
@harnessweaver/ai-sdkand Example 04 (GHSA-mrhx-c7xc-m3w5, memory exhaustion on oversized arrays).
Fixed¶
make releasepublishesharnessweaverand@harnessweaver/corefirst, so a failure partway never leaves a published package whose core isn't there. It also no longer refuses to run because of.claude/, which is now ignored.
2026-10-26¶
Added¶
vercel.jsondeploys the docs site on Vercel from the GitHub repository, built from thedocsdependency group alone, which now includes ruff so that mkdocstrings formats signatures asmake docsdoes.
2026-10-25¶
Added¶
- The docs site (ADR-0041, ADR-0042):
mkdocs.ymlanddocs/, built with MkDocs and Material bymake docs(strict: broken links and anchors fail) and served bymake docs-serve, with its tools in adocsdependency group and a CI job. It follows the structure of FastAPI's documentation, with top-level tabs for Home, Features, Learn, Reference, Resources, About and Release Notes: - Home shows a first example and an upgraded one, the requirements, the dependencies and the license; Features lists what the framework does.
- Learn holds the quickstart and the concepts (lifecycle and hook points, the hook bus, outcomes and errors, the envelope and budgets, the spec, integration styles, adoption levels), a nineteen-chapter Tutorial - User Guide that builds one support-desk app from first steps through models, prompts, typed output, repairs, budgets, guardrails, profiles and the org baseline, sessions, routing, retrieval, tools, policy, approvals, state and replay, observability, testing, evals and debugging, each ending with a Recap, an Advanced User Guide (layers, locks and bounds; the tool governor; approvals in depth; TypeScript; harnessd; plugins, providers, middleware, runners and adapters, conformance), the CLI reference, Deployment (installation, versions, configuration, gateways and the dev stack, security) and How To - Recipes (governing an existing client, writing an org baseline, troubleshooting).
- Reference holds the spec's section reference, every provider's settings, the built-in profiles, tool manifests, cel-lite, the modules, the contracts, and a Python API reference generated from the docstrings with mkdocstrings (a new docs-only dependency).
- Resources (getting help, the examples, project templates, contributing, the security policy) and About (alternatives and comparisons, history, design and future, the ADRs).
- The tutorial's code lives in
docs_src/tutorial/, one folder per chapter, anddocs_src/testsruns every chapter offline and checks it prints what its page shows. consoleblocks play as typed terminal sessions (termynal, vendored with its MIT license), and the footer links to GitHub.- Its theme (
docs/stylesheets/brand.css) has the HarnessWeaver logo (an H woven from two threaded strands,docs/assets/logo.svg) and a favicon rendered from it, the Inter font, a dark navy palette by default and a light one behind the toggle. QUICKSTART.md(an offline walk from a clone to a governed, traced and tested task of your own, checked from a fresh clone),CONTRIBUTING.mdandSECURITY.md; READMEs for@harnessweaver/coreand@harnessweaver/ai-sdk.make buildandmake releasebuild, and publish to PyPI and npm, the packages that the Git tags on HEAD name (scripts/release.py). A release tag is<package>@<version>, and its SemVer version must equal the package's manifest version (RULES V1).PACKAGE=<name>releases just the named packages.make cleanremoves caches and build output (__pycache__, the pytest, ruff, pyright and Hypothesis caches, coverage data,build/,dist/,*.egg-info,*.tsbuildinfoand the docssite/), keeping.venv,node_modules, local run state and.claude/.make distcleanalso removes.venvandnode_modules.
Changed¶
- Each ADR now has its own file under
docs/adr/, carried over word for word, and DESIGNS.md No. 28 indexes them; ADR-0041 records the docs toolchain.
Fixed¶
- AGENTS.md named a test that doesn't exist, and gave a plugin-conformance command that, at the repository root, runs the normal tests and no conformance checks (the suite file sits inside the
pythontest path); it now names the suite file, asmake conformancedoes. The plugin READMEs say to run their command from the package's directory. - DESIGNS.md's example spec set
observability.exporter: otlpwithoutconfigure_sdk: true, which fails loading; its YAML now parses and loads as written. Theanthropic.messagessettings tables now show the provider's owntimeout(600s),max_retries(2) andcost_headerdefaults. - The README's and the docs home page's first example is now Example 01's real spec and code, runnable as written, instead of a fragment with undefined names.
2026-10-23¶
Added¶
- CI runs the TypeScript workspace (types, tests, build) on Node 22 and 24, with SHA-pinned actions.
- Example 04 (
examples/04_polyglot_typescript): Example 02's spec from TypeScript, in process with the Vercel AI SDK and through harnessd. Its tests pass Example 02's golden set with the TypeScript graders, require the same answers from the app and from harnessd, and run the README'scurlwalkthrough as written. The example is part of the pnpm workspace, and the CI TypeScript job installs the Python workspace to start harnessd.
2026-10-20¶
Added¶
- Example 02,
examples/02_support_rag: a customer-facing support assistant in the Session style with routing, ACL-checked context, injection guards on questions and retrieved articles, citations, arun.startpolicy, and tests that Acme's baseline locks hold. - Example 03,
examples/03_refund_agent: a refund agent in the Run style (thepydantic_ai.agentrunner) and the Wrap style (harness.wrapon an existing agent), with governed tools, policy rules, the lethal-trifecta check, finance approvals, Acme's own middleware and guard as a local plugin,policy_tests.yaml, and a red-team eval set that passes offline. deploy/harnessd/Dockerfile: harnessd built fromuv.lockon digest-pinned bases (S5), running as an unprivileged user.- Examples 02 and 03 keep the configs
harnessweaver gatewaygenerates undergateway/, tested as golden files.
Changed¶
examples/_org/acme-baseline.yaml1.1.0 also allows thepydantic_aiandacmeplugins (a loosening, so a minor version, V3).- Example 01's offline overlay answers every golden case, so
harnessweaver eval run -e offlinepasses on it, and it tests its golden set.
2026-10-18¶
Added¶
- Example 01,
examples/01_invoice_extraction: typed invoice extraction at L1 in the Run style, with PII redaction, a secrets check, business rules, a repaired answer, budgets and prices, andl0_instrument.py, which governs an existing OpenAI client in three lines. It runs offline and its tests run in CI, with no app-level retry or tracing code. examples/_org/acme-baseline.yaml: an org baseline profile (v1) with a locked plugin allow-list, locked guards and content capture, budget bounds and a required level per risk tier, with tests that each lock and bound fails loading.make conformanceruns the conformance suite on every first-party plugin and is part ofmake check.
2026-10-17¶
Added¶
- uv workspace with the core package
harnessweaver, the developer toolingharnessweaver-cli(theharnessweavercommand), the sidecarharnessweaver-sidecar(harnessd), and the first-party plugin packagesharnessweaver-openai,harnessweaver-anthropic,harnessweaver-pydantic-ai,harnessweaver-monty,harnessweaver-otelandharnessweaver-cel. make check(ruff, ruff format, pyright, pytest), CI on Python 3.12-3.14 with SHA-pinned actions, pre-commit hooks and a pull request template.make checkalso rejects characters that aren't on a standard keyboard (scripts/check_ascii.py, RULES D5).