From 2d8c0dfca98f443ff7bf8c72eccfc3ff8fd28313 Mon Sep 17 00:00:00 2001 From: Frank Bria <136862992+frankbria@users.noreply.github.com> Date: Tue, 27 Oct 2026 21:05:43 -0700 Subject: [PATCH 1/3] docs(site): answer the TDD objection on the landing page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #1531 put "TDD protects your code. This protects your tests." on the README's first screen, directly under the demo. The site carried the same headline, the same install line and the same demo, but not this. It is the first objection an engineer raises after watching the clip, so it belongs next to the clip on both surfaces. Placed after the figure, inside the header, mirroring the README's order. The new paragraph has no stylesheet rule of its own, so it renders at body size and colour rather than the muted `.lede` treatment — which is wanted here, since it is the punchline rather than the subtitle. tests/ci: 81 passed. The limitations blockquote is untouched, so it stays pinned to the README's beta note. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_019cEymaSpmZ1arjngxx1VNM --- site/index.html | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/site/index.html b/site/index.html index 000cafa4..aa9bb147 100644 --- a/site/index.html +++ b/site/index.html @@ -90,6 +90,12 @@

Your coding agent can’t quietly undo what you already decided.

A real session on codeframe 0.9.7. Asked for a change that would undo a past decision, Claude finds the locked requirement and keeps it.
+ + +

TDD protects your code. This protects your tests. Your agent + can edit a test as easily as it can edit the code, and when a test is inconvenient that is + often what it edits. A requirement is a test it cannot quietly drop: releasing one takes a + waiver with a name, a reason and an expiry date.

From 98438a7639acf35a21b36497a641bdb482890316 Mon Sep 17 00:00:00 2001 From: Frank Bria <136862992+frankbria@users.noreply.github.com> Date: Tue, 27 Oct 2026 21:13:25 -0700 Subject: [PATCH 2/3] docs: one verified basis for the test and coverage figures The README said 5,000+ tests and an 80% floor; the site said 7,500+ tests and 85%+. The site's 7,500+ was right on 2026-10-14 (7,891 at d26a5c8) and is no longer true. The README's figures were true and undersold. Measured on main @ 507c6e0c, 2026-10-28, Backend Unit Tests job: 6,035 passed, 86.13% coverage against fail_under = 80. Both surfaces now say 6,000+ tests and 85%+ coverage with an 80% floor, rounded down per the site's convention, and both carry a comment with the measurement and a pointer to the other file. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_019cEymaSpmZ1arjngxx1VNM --- README.md | 9 ++++++--- site/index.html | 5 +++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 035ce359..a6252e77 100644 --- a/README.md +++ b/README.md @@ -69,8 +69,11 @@ The same CLI also covers the work before the code — requirements discovery, ta decomposition, and delegating each task to **Claude Code, Codex, OpenCode, Kilocode** or its built-in agent. See [Features](#features). -**Proof of substance.** 5,000+ tests with an 80% coverage floor enforced in CI, -and a [sample evidence report](https://codeframe.sh/sample-evidence-report.html) + +**Proof of substance.** 6,000+ automated tests passing in CI, 85%+ test coverage +with an 80% floor CI enforces, and a +[sample evidence report](https://codeframe.sh/sample-evidence-report.html) showing what a run actually produces. > [!NOTE] @@ -410,7 +413,7 @@ uv run pytest tests/ --ignore=tests/e2e -m "not lifecycle" # the CI gate uv run ruff check . ``` -The suite has 5,000+ tests, and contributions need 80% test coverage, the floor CI enforces. Code +The suite has 6,000+ tests, and contributions need 80% test coverage, the floor CI enforces. Code standards are ruff, type hints and tests with every change. During the beta, feature ideas go to [Discussions → Ideas](https://github.com/frankbria/codeframe/discussions/categories/ideas) before code. See [CONTRIBUTING.md](CONTRIBUTING.md) for what is stable and how diff --git a/site/index.html b/site/index.html index aa9bb147..cfbb6677 100644 --- a/site/index.html +++ b/site/index.html @@ -108,9 +108,10 @@

Who built it

Proof of substance

+ (CI on main @ 507c6e0c, 2026-10-28: 6,035 passed, 86.13% coverage, fail_under = 80). + Keep in step with "Proof of substance" in README.md. -->
-
7,500+automated tests passing in CI
+
6,000+automated tests passing in CI
85%+test coverage, with an 80% floor CI enforces

Every check leaves evidence. See a sample evidence report From 98cd107b2bc022f492a6b7ed8ebf1cc2a3aa33b6 Mon Sep 17 00:00:00 2001 From: Frank Bria <136862992+frankbria@users.noreply.github.com> Date: Tue, 27 Oct 2026 21:39:52 -0700 Subject: [PATCH 3/3] docs: state coverage as the enforced floor on both surfaces MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit tests/test_lifecycle_gates_948.py holds README.md to fail_under: any "NN% test coverage" it states must be a number CI will actually enforce. The previous commit wrote "85%+ test coverage" — true today (86.13%), enforced by nothing — and the guard failed it, which is what it exists to do. The README shipped an 88% badge and an 85%+ ask before #948 for the same reason: a measured figure nothing checks drifts until it is false. README now states the 80% floor. The site states the same, so neither surface carries a coverage figure nothing enforces. The measured value stays in the HTML comment with its commit, as a dated fact rather than a claim. Full CI selection locally (tests/ --ignore=tests/e2e -m "not lifecycle"): 6041 passed, 0 failed. Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_019cEymaSpmZ1arjngxx1VNM --- README.md | 6 ++++-- site/index.html | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index a6252e77..726417ab 100644 --- a/README.md +++ b/README.md @@ -70,9 +70,11 @@ decomposition, and delegating each task to **Claude Code, Codex, OpenCode, Kilocode** or its built-in agent. See [Features](#features). -**Proof of substance.** 6,000+ automated tests passing in CI, 85%+ test coverage -with an 80% floor CI enforces, and a +**Proof of substance.** 6,000+ automated tests passing in CI, an 80% test coverage +floor CI enforces, and a [sample evidence report](https://codeframe.sh/sample-evidence-report.html) showing what a run actually produces. diff --git a/site/index.html b/site/index.html index cfbb6677..ec0fa790 100644 --- a/site/index.html +++ b/site/index.html @@ -109,10 +109,12 @@

Who built it

Proof of substance

6,000+automated tests passing in CI
-
85%+test coverage, with an 80% floor CI enforces
+
80%test-coverage floor, enforced in CI

Every check leaves evidence. See a sample evidence report from the session above, made with cf proof export.