diff --git a/app/mix.exs b/app/mix.exs index 3f00c10..8db0bd0 100644 --- a/app/mix.exs +++ b/app/mix.exs @@ -192,12 +192,14 @@ defmodule Firehose.MixProject do # land; never lower it. A drop means the change (or an exclusion) is wrong, # not the floor. # - # Measured 2026-10-28 (PostgreSQL on localhost:5432, exclusions below): - # 88.19% after the web-controller/auth edge-case behavior tests (87.56% after - # the editorial-LiveView ones, 86.97% before them, and 86.79% / 86.17% at - # earlier exclusion revisions), identical via `mix test --cover` and via + # Measured 2026-10-29 (PostgreSQL on localhost:5432, exclusions below): + # 94.01% on `main` = 9c0f33e, with boundary enforcement, credo, the mutation + # scope and the core-components behavior tests all landed (88.19% after the + # web-controller/auth edge-case tests, 87.56% after the editorial-LiveView + # ones, 86.97% before them, and 86.79% / 86.17% at earlier exclusion + # revisions), identical via `mix test --cover` and via # `mix test --cover --export-coverage default` + `mix test.coverage`. Floor is - # the integer below that — so a floor of 88 means "at least 88.00%". + # the integer below that — so a floor of 94 means "at least 94.00%". # # `test.coverage` deletes stale exports before sampling: `mix test.coverage` # imports *every* .coverdata it finds, so leftover exports from earlier runs @@ -243,7 +245,7 @@ defmodule Firehose.MixProject do # that is where the behavior-test work shows up as a higher floor. defp test_coverage do [ - summary: [threshold: 88], + summary: [threshold: 94], ignore_modules: [ Firehose.Repo, Firehose.Mailer, diff --git a/blogex/mix.exs b/blogex/mix.exs index 08097cd..1caecb6 100644 --- a/blogex/mix.exs +++ b/blogex/mix.exs @@ -62,22 +62,22 @@ defmodule Blogex.MixProject do # in blogex/). Rule: the threshold is a FLOOR. Raise it as behavior-test yaks # land; never lower it. A drop means the change (or an exclusion) is wrong. # - # Measured 2026-10-28, with the test scaffolding below excluded: 99.69% — the - # same via `mix test --cover` and via `mix test --cover --export-coverage + # Measured 2026-10-29, with the test scaffolding below excluded: 100.00% — + # the same via `mix test --cover` and via `mix test --cover --export-coverage # default` + `mix test.coverage`. Floor is the integer below that. # # Excluded: the test scaffolding in `ignore_modules` below. The two registry # blog doubles (Blogex.Test.AlphaBlog/BetaBlog) are deliberately not listed - # there: they are fully exercised, and excluding them measures 99.69% too — - # the 99 floor holds either way. + # there: they measure 100.00% too, so counting them costs nothing. # - # Everything in lib/blogex counts, and one gap is left: - # Blogex.LinkError is at 88.89% (8 of 9 lines). The rendered-HTML behavior - # tests closed the rest: Blogex.Components and Blogex.Layout went from 0% to - # 100%, and Blogex.Router now covers its browser arms and `match _`. + # Everything in lib/blogex counts, and nothing is uncovered: Blogex.LinkError + # was the last gap at 88.89% (8 of 9 lines) until the credo yak's tests closed + # it. The rendered-HTML behavior tests took Blogex.Components and Blogex.Layout + # from 0% to 100%, and Blogex.Router covers its browser arms and `match _`. + # A floor of 100 means every new line needs a test before `make verify` passes. defp test_coverage do [ - summary: [threshold: 99], + summary: [threshold: 100], ignore_modules: [ Blogex.Test.FakeBlog, Blogex.Test.PostBuilder,