From 24b8e669e2aec1cffec1272ead30136dfcfd4b45 Mon Sep 17 00:00:00 2001 From: "Matthew T. Hunter" Date: Thu, 30 Jul 2026 21:37:00 -0400 Subject: [PATCH 1/2] docs: state the cap as three counts, because one number hid a disagreement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit "Cap: 38 targets with every flag on" was not wrong so much as unfalsifiable, and it had already failed: the P0 prototype measured 38 too, and the two were different sets of 38. This plan counted the `lint-` dispatch rules and not the three enforcement gates; P0 counted the reverse. Two offsetting errors agreed on one number, which is how a cap stops being a check. Split into the three counts that scale differently — 35 user-facing, N dispatch (per-repo, one per configured tool), 3 enforcement (fixed) — and recorded where the 35 comes from, so it can be checked against the #555 group table target-for-target rather than in total. Summing to the right number is exactly what hid this. Found while reviewing just-buildit/just-makeit#636 (P0). Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01XLuSsmv88aheh7mNQgBDQK --- README.md | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ba81829..57e301d 100644 --- a/README.md +++ b/README.md @@ -213,7 +213,23 @@ Universal (9): `all help setup clean test test-fast lint format install-deps`, plus one `lint-` dispatch target per configured tool. Feature groups defined only when flagged — `HAS_DOCS`, `HAS_C`, `HAS_DOXYGEN`, `HAS_PYTHON`, `HAS_RUST`, `HAS_BENCH`, `HAS_COVERAGE`, `HAS_RELEASE`, `HAS_EXAMPLES` — plus `test-all` / `gates` -aggregates. **Cap: 38 targets with every flag on.** +aggregates. + +**Cap, with every flag on: 35 user-facing + N dispatch + 3 enforcement.** The +three counts are separate because they scale differently — `N` is per-repo (the +tools that repo configures) and the enforcement gates are fixed — and stating +them as one number is how a cap stops being a check. It had already happened +here: this line read "38 targets", the P0 prototype measured 38, and the two +were different sets of 38. The plan was counting `lint-` and not the +enforcement gates, and P0 counted the reverse, so two offsetting errors agreed. + +The 35 is the [#555](https://github.com/doppler-dsp/doppler/issues/555) group +table summed: 9 universal + 2 aggregates + 24 across the nine groups +(`HAS_DOCS` 3, `HAS_C` 3, `HAS_DOXYGEN` 2, `HAS_PYTHON` 3, `HAS_RUST` 1, +`HAS_BENCH` 3, `HAS_COVERAGE` 2, `HAS_RELEASE` 6, `HAS_EXAMPLES` 1). Check a +build against that table **target-for-target, not in total** — summing to the +right number is what hid this. Repo-local targets (`LOCAL_TARGETS`) are outside +the cap by definition: they are what criterion 1 bounds. `install-deps` is universal (system packages via `jbx install-deps`; a no-op where a repo declares none) and is distinct from `setup`, which installs From 9c01449c8df13ea111b9301e51a07ff192d669e4 Mon Sep 17 00:00:00 2001 From: "Matthew T. Hunter" Date: Thu, 30 Jul 2026 21:44:54 -0400 Subject: [PATCH 2/2] docs: tick P0, and record what prototyping first caught MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit just-buildit/just-makeit#636 merged. Noting the two faults the prototype surfaced — the GNU make 3.81 that macOS ships, and a `make -p` database whose wording changed in 3.82 — because both were in the file every adopter would have vendored, and they are the argument for the phase order. P1 therefore publishes the post-review file, not the one P0 opened with. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01XLuSsmv88aheh7mNQgBDQK --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 57e301d..e51b1a4 100644 --- a/README.md +++ b/README.md @@ -311,10 +311,17 @@ reasoned about. ### Phases -- [ ] **P0 — prototype** `standard.mk` in just-makeit; vendored, drift gate +- [x] **P0 — prototype** `standard.mk` in just-makeit; vendored, drift gate inert until P1 publishes canonical. Also collapses just-makeit's `install` (`uv sync --group dev`) into `setup`, of which it is a strict subset, so a - fourth deps-ish name never reaches the standard *(just-makeit)* + fourth deps-ish name never reaches the standard *(just-makeit)* — + **done**, [just-buildit/just-makeit#636](https://github.com/just-buildit/just-makeit/pull/636). + Prototyping in one repo before publishing paid for itself twice: the file + rejected the GNU make 3.81 that macOS ships, and the gates parsed a + `make -p` database whose wording changed in 3.82. Both would have gone out + to every adopter at once. **P1 must publish the post-review file**, which also + carries `coverage-gate`, `HAS_EXAMPLES` reduced to `test-examples`, and + `all` defaulting to `build` where `HAS_C`. - [ ] **P1 — publish** canonical `standard.mk` in this org; wire the drift gate live *(just-buildit)* - [ ] **P2 — doppler port**: `docs-check` first (deletes the three-way