Skip to content

abi: canonicalise multi-cap Idris2 → Zig name normalisation (GitHub/RabbitMQ/DynamoDB) #18

Description

@hyperpolymath

Problem

The Idris2 → Zig name converter doesn't apply a single canonical rule for multi-cap variant names. Examples surfaced in the boj-server full-tree survey (standards#92 comment 4496082335):

CartridgeIdris2 variantEmitter says (Zig)Actual Zig FFI has
git-mcpGitHubgit_hubgithub
git-mcpGitLabgit_labgitlab
queues-mcpRabbitMQrabbit_mqrabbitmq
ums-mcpUmsProject / UmsLevelums_project / ums_levelunprefixed forms
aws-mcpDynamoDB(drift)(drift)

Either rule (snake_case or runtogether) is fine — it just needs to be consistent end-to-end. Today the emitter applies snake-case and the cartridges' hand-written Zig files do not (or apply a different snake-case grouping). Either generate the Zig FFI from the manifest (Phase 3 of standards#92), or apply the same rule both sides today.

~8 cartridges are in this Class B bucket; same root cause.

Fix shape

Two options, owner choice:

  1. Canonical-form: lowercased-runtogether (e.g. GitHub → github, RabbitMQ → rabbitmq). Matches what the Zig files actually have today. Lower-friction; emitter changes only.
  2. Canonical-form: snake_case (e.g. GitHub → git_hub, RabbitMQ → rabbit_mq). Matches what the emitter does today. Requires touching ~8 cartridges' Zig FFIs.

Option 1 is recommended (smaller blast radius, matches existing source-of-truth on the cartridge side).

Acceptance criteria

After fix: Class B drift count drops to 0 in the standards#92 survey. Run survey command (see #17 for example) on all 8 affected cartridges → exit 0.

Refs hyperpolymath/standards#92 (Phase 2 allowlist expansion).
Refs #17 (sibling Class A fix).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions