Skip to content

Compile the C ABI in CI so the verification layer cannot rot - #14

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

Compile the C ABI in CI so the verification layer cannot rot#14
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

Turns TAP_RATIO_BUILD_CAPI on in the primary CI matrix (Linux and macOS legs).

Why

This repo ships a C ABI under tools/capi that the executed notebook drives via ctypes, but the option defaults to OFF and CI never turned it on — so nothing in the pipeline compiled it. A change to a kernel signature could break the ABI, and the notebook with it, while CI stayed green. AmbiTap and DspTap already build theirs in CI; this brings RatioTap in line.

Verification

  • Configure and build succeed with TAP_RATIO_WERROR=ON and the new flag.
  • libratio_capi.so links and exports its 11 ratio_* entry points (nm -D).
  • Full suite passes 58/58.

Notes for the reviewer

  • Enabled on Linux and macOS only. tools/capi carries no __declspec(dllexport) (unlike DspTap's), so an MSVC build would link a DLL that exports nothing — it would pass CI without gating anything, which is worse than not running it, because it reads as coverage. Recorded in the matrix comment and in taphouse's known-divergences list, to be flipped on in the same change that gives the C ABI an export decoration.
  • This repo is one of only two libraries that already fully complied with taphouse's namespace convention on all three counts (tap::ratio namespace, tap::ratio alias, include/tap/ratio/ headers) — it was simply missing from the table. Record the namespace convention's real state, and the family's open divergences TapHouse#6 adds it.
  • No contract change, no submodule pin moved, and the notebook is untouched, so its committed executed outputs remain valid. The instruction-count baselines in bench/baselines.json are unaffected — this change adds a target, it does not touch codegen.

Generated by Claude Code

This repo ships a C ABI under tools/capi that the executed notebook drives via
ctypes, but TAP_RATIO_BUILD_CAPI defaults to OFF and CI never turned it on -- so
nothing in the pipeline compiled it. A change to a kernel signature could break
the ABI and the notebook with it, and CI would stay green. AmbiTap and DspTap
already build theirs in CI; this brings RatioTap in line.

Enabled on the Linux and macOS legs only. tools/capi carries no
__declspec(dllexport) (unlike DspTap's), so an MSVC build would link a DLL that
exports nothing -- it would pass without gating anything. That is recorded in the
matrix comment and in taphouse's known-divergences list, to be flipped on in the
same change that gives the C ABI an export decoration.

Verified locally: configure and build succeed with TAP_RATIO_WERROR=ON, the shared
library links, it exports its 11 ratio_* entry points, and the full suite passes
58/58.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JhhQ93r2E1QTnCx46YfX8j
@tap
tap merged commit 1d7ba8d into main Jul 28, 2026
20 checks passed
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