Skip to content

Record the namespace convention's real state, and the family's open divergences - #6

Merged
tap merged 1 commit into
mainfrom
claude/repository-inconsistencies-nkocvd
Jul 28, 2026
Merged

Record the namespace convention's real state, and the family's open divergences#6
tap merged 1 commit into
mainfrom
claude/repository-inconsistencies-nkocvd

Conversation

@tap

@tap tap commented Jul 28, 2026

Copy link
Copy Markdown
Owner

What this changes

Updates the namespace-convention section of README.md to say what is actually true across the family, and adds a Known divergences section recording the remaining unevenness with its known fix and the reason it has not been taken.

Why

The convention table claimed a tap::<library> CMake alias for every library, but only DspTap and RatioTap had ever created one. A table that documents a target as if it were current state is worse than no table: five repos looked compliant and were not. The companion PRs in AmbiTap, MuTap, SampleRateTap, TapTools and OscTap add the missing aliases, so the table can now be a description rather than an aspiration.

The rest of the unevenness found during the audit had no home. Written into a section here, it is decided; left in a session transcript, it gets rediscovered.

Verification

Documentation only — no build, and nothing here is consumed at build time or drift-checked (README.md is not in scripts/sync.sh's copy set, so no consumer re-sync is implied).

Every claim in the new text was checked against the repos rather than recalled:

  • tap::<library> alias now present in all seven libraries — grepped add_library(tap::… ALIAS …) across each CMakeLists.txt.
  • Header paths: tap/dsp/ and tap/ratio/ comply; ambitap/, srt/, mutap/, taptools/, osctap/ do not.
  • Namespaces already comply everywhere (tap::ambi, tap::dsp, tap::mu, tap::osc, tap::ratio, tap::samplerate, tap::tools).
  • install/export: 8 install() + config package in AmbiTap, 6 in TapTools, zero in DspTap/MuTap/RatioTap/SampleRateTap.
  • Option prefixes: six distinct forms across six libraries.
  • PythonTap is a host package, not a library — no include/, one Max external (MIN_EXTERNAL(python)), min-api submodule.

Notes for the reviewer

  • Canonical TapHouse file changed — but only README.md, which is deliberately outside the guarded set, so this needs no tag and no consumer re-sync. Merge order still matters for the reading of it: the ten companion PRs are what make the alias column true.
  • The table gained a Header path column precisely because that is the column still lagging, and for a real reason: renaming include/mutap/x.hinclude/tap/mu/x.h breaks every #include in every consumer. It stays a migrate-when-touched item, with a forwarding header during transition.
  • Two items in the divergences list are recorded as deliberate non-actions, not TODOs: install/export rules (all four repos lacking them are consumed via add_subdirectory, so the rules would be dead CMake) and the Catch2-vs-GoogleTest split (a real difference in kind — converting either way would discard working tests).
  • Two are recorded as blocked on a machine I do not have: PythonTap's C++17 targets (its build needs an embedded Python runtime whose installer is macOS/Windows only) and the macOS platform-string spelling in the Max packages (arm64 vs aarch64 — unverifiable without Max).

Generated by Claude Code

…ivergences

The namespace table claimed a `tap::<library>` CMake alias for every library,
but only DspTap and RatioTap actually exported one. The other five now do too
(separate commits in those repos), so the table is updated to say what is true:
namespaces and CMake aliases are done everywhere, and the older alias spellings
stay alongside the new ones so existing consumers keep working.

Split the header path out into its own column, because that is the part still
lagging and for a real reason -- renaming include/mutap/x.h to include/tap/mu/x.h
breaks every #include in every consumer, so it stays a migrate-when-touched item.
Adds RatioTap, which already complied on all three counts and was simply missing
from the table, and notes that the absent repos (the Max/Pd packages) are host
packages rather than libraries with a namespace of their own.

Adds a "Known divergences" section recording the remaining unevenness with the
known fix and the reason it has not been taken: option prefixes (cosmetic,
renaming breaks each repo's own CI invocations), install/export rules present in
only two of six (the other four are consumed via add_subdirectory, so install
rules would be dead CMake), the Catch2-vs-GoogleTest split (a real difference in
kind, not an accident), the GoogleTest version split, the C ABI's missing export
decoration outside DspTap (which is why the Windows CI legs cannot gate it), and
PythonTap's C++17 targets. Written down so they are decided rather than
rediscovered.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JhhQ93r2E1QTnCx46YfX8j
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants