Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 26 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,23 @@ Universal (9): `all help setup clean test test-fast lint format install-deps`,
plus one `lint-<tool>` 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-<tool>` 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
Expand Down Expand Up @@ -295,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
Expand Down
Loading