From 8183c1b0c69315122e8bfe48735f6198728b5ffe Mon Sep 17 00:00:00 2001 From: "const.koutsakis@aurecongroup.com" Date: Mon, 25 May 2026 23:17:52 +1000 Subject: [PATCH 1/2] docs: add concrete agent-failure example to "Why a harness" (#91) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "harness IS the product" claim reads abstract without a worked example. Adds a blockquoted, 3-line sidebar inside the "Why a harness" section showing one realistic failure mode: an agent reaches for a reverse import (src.models → src.tools), import-linter blocks it in CI against the "src.models depends on nothing in src/" contract, the agent's next iteration routes around it via docs/BOUNDARIES.md. Names a real gate, cites the real contract, links the real doc — so the example is verifiable, not theatre. Closes #91 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index da50e18..a69899a 100644 --- a/README.md +++ b/README.md @@ -98,6 +98,8 @@ analogous to "Hello page" above. The differentiator isn't the scaffold — it's that every layer of the pipeline catches a different failure class **without relying on the human or LLM coder remembering to run anything**. The same posture protects code regardless of who wrote it. +> **Example.** An agent added `from src.tools import ...` inside `src.models` for type reuse. `lint-imports` failed CI — the `src.models depends on nothing in src/` contract broke — and pointed the next iteration at [`docs/BOUNDARIES.md`](docs/BOUNDARIES.md). The type moved into `src.models` instead. Never shipped. + See [`docs/HARNESS.md`](docs/HARNESS.md) for the full umbrella. Highlights: - **Pydantic `StrictModel` everywhere a contract crosses a seam** (rejects unknown keys at construction). From 2218446b80219450b80ad57adb39febe9cc2bd9d Mon Sep 17 00:00:00 2001 From: "const.koutsakis@aurecongroup.com" Date: Mon, 25 May 2026 23:47:43 +1000 Subject: [PATCH 2/2] chore: bump version to 0.2.11 --- pyproject.toml | 2 +- uv.lock | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7961745..8e2df15 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "harness-python-react" -version = "0.2.15" +version = "0.2.16" description = "Production-quality LLM-driven coding harness — Python (FastAPI) backend, Vite + React + TypeScript frontend." readme = "README.md" requires-python = ">=3.14" diff --git a/uv.lock b/uv.lock index 9e4e858..8e9e9f8 100644 --- a/uv.lock +++ b/uv.lock @@ -337,7 +337,7 @@ wheels = [ [[package]] name = "harness-python-react" -version = "0.2.15" +version = "0.2.16" source = { virtual = "." } dependencies = [ { name = "fastapi" },