Skip to content

docs: add concrete agent-failure example to README#100

Merged
constk merged 2 commits into
developfrom
docs/91-agent-failure-example
May 26, 2026
Merged

docs: add concrete agent-failure example to README#100
constk merged 2 commits into
developfrom
docs/91-agent-failure-example

Conversation

@constk

@constk constk commented May 25, 2026

Copy link
Copy Markdown
Owner

What & why

Adds a 3-line blockquoted sidebar to the "Why a harness" section in README.md demonstrating one realistic agent-failure path: a reverse import from src.models into src.tools, caught by the lint-imports "src.models depends on nothing in src/" contract, routed through docs/BOUNDARIES.md. The example names a real gate, cites the real contract, and links the real doc, so a reader can verify the failure mode is genuine.

Closes #91.

Test plan

  • Visual diff only on README.md "Why a harness" section
  • Pre-commit hooks pass

Invariants affected

None — references existing invariant (one-way layer flow) but adds no new rule.

New deps / actions / external surface

None.

Linked issue

Closes #91

constk added a commit that referenced this pull request May 26, 2026
pip-audit on develop is flagging two transitive-dep CVEs:

- idna 3.13            CVE-2026-45409   (fix in 3.15+)
- starlette 1.0.0      PYSEC-2026-161   (fix in 1.0.1+)

Both are surfaced via fastapi/httpx. Bumps via:

    uv lock --upgrade-package idna --upgrade-package starlette

Resolves to idna 3.16 (3.15 was the listed fix; 3.16 is a further
patch with the same fix) and starlette 1.1.0 (minor bump; FastAPI is
compatible with it). All 192 unit tests pass on the upgraded lock.

Bumps the project self-version 0.2.10 -> 0.2.11 per
docs/DEVELOPMENT.md.

Unblocks the pip-audit CI gate on #99, #100, #101, #102 (and any
other PRs currently sitting on develop), all of which inherit the
flagged transitive CVEs from develop and cannot pass that gate until
this lands.
constk added a commit that referenced this pull request May 26, 2026
…sed post-#103/#104)

main moved ahead of develop on 2026-05-25 when PR #86 was merged
directly to main rather than via develop -> release flow. The
divergence is one squash commit (eff5b1c) carrying:

  - docs/BEADS.md (optional Beads issue-queue guidance)
  - .github/pull_request_template.md (Beads PR-template block)
  - .github/scripts/check_aspirational_tickets.py (PEP 758 reformat)
  - .github/scripts/check_pin_freshness.py / check_tests_present.py /
    check_version_bump.py (touch-ups)
  - .gitattributes / .gitignore (.beads/ ignore, Windows renormalise)
  - CONTRIBUTING.md (line-ending normalisation)
  - tests/test_scripts_compile.py (new CI-script compile gate)
  - docs/DEVELOPMENT.md / docs/HARNESS.md / docs/HARNESS_PRIMER.md
    cross-refs
  - pyproject.toml + uv.lock self-version 0.2.10 -> 0.2.11

This PR was rebased after #103 (CVE fix, develop -> 0.2.11) and
#104 (eval pattern examples, develop -> 0.2.12) merged. The version
on main (0.2.11) is now behind develop (0.2.12); the conflict is
resolved by bumping develop -> 0.2.13.

After this lands, develop is at 0.2.13 and contains everything main
has. Remaining in-flight PRs (#99, #100, #101, #105) need to rebase
to bump 0.2.13 -> 0.2.14 (and onward sequentially as they merge).

No behaviour change beyond what #86 already added to main.

# Conflicts:
#	pyproject.toml
#	uv.lock
constk added 2 commits May 26, 2026 15:34
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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

1 participant