Skip to content

fix(abi): accept runtogether form for multi-cap acronym variants (ise…#35

Merged
hyperpolymath merged 1 commit into
mainfrom
fix/abi-multicap-runtogether-candidate
May 20, 2026
Merged

fix(abi): accept runtogether form for multi-cap acronym variants (ise…#35
hyperpolymath merged 1 commit into
mainfrom
fix/abi-multicap-runtogether-candidate

Conversation

@hyperpolymath
Copy link
Copy Markdown
Owner

…riser#18)

zig_variant_candidates previously only emitted the snake_case form. That choked on cartridges whose hand-written Zig FFI spells multi-cap acronyms as a single run-together word (verified on boj-server/main):

Idris2 Emitter said Zig actually has
GitHub git_hub github
GitLab git_lab gitlab
RabbitMQ rabbit_mq rabbitmq
DynamoDB dynamo_db dynamodb

Per iseriser#18, the runtogether form (snake with all _ removed) is added as an additional candidate. The verifier already accepts any candidate, so cartridges using snake_case (manifest_loaded, etc.) stay green and cartridges using runtogether (github, etc.) now also pass. No cartridge files are touched.

Single-word variants (Emptyempty) do NOT get a duplicate candidate — the runtogether form is only added when it actually differs from the snake form.

End-to-end verified against boj-server/main:
git-mcp: abi-verify OK (was Class B drift)
queues-mcp: abi-verify OK (was Class B drift)
aws-mcp: still drifts, but on a different class
(variant-extra-in-zig: sqs_send_message, sts_*,
not the DynamoDB normalisation case) — separate fix

8 manifest_schema unit tests pass; full suite (46 lib + 9 integration) stays green.

Refs hyperpolymath/standards#92 (Phase 2 allowlist expansion). Refs #18.

Summary

Changes

RSR Quality Checklist

Required

  • Tests pass (just test or equivalent)
  • Code is formatted (just fmt or equivalent)
  • Linter is clean (no new warnings or errors)
  • No banned language patterns (no TypeScript, no npm/bun, no Go/Python)
  • No unsafe blocks without // SAFETY: comments
  • No banned functions (believe_me, unsafeCoerce, Obj.magic, Admitted, sorry)
  • SPDX license headers present on all new/modified source files
  • No secrets, credentials, or .env files included

As Applicable

  • .machine_readable/STATE.a2ml updated (if project state changed)
  • .machine_readable/ECOSYSTEM.a2ml updated (if integrations changed)
  • .machine_readable/META.a2ml updated (if architectural decisions changed)
  • Documentation updated for user-facing changes
  • TOPOLOGY.md updated (if architecture changed)
  • CHANGELOG or release notes updated
  • New dependencies reviewed for license compatibility (PMPL-1.0-or-later / MPL-2.0)
  • ABI/FFI changes validated (src/interface/abi/ and src/interface/ffi/ consistent)

Testing

Screenshots

…riser#18)

`zig_variant_candidates` previously only emitted the snake_case form.
That choked on cartridges whose hand-written Zig FFI spells multi-cap
acronyms as a single run-together word (verified on boj-server/main):

| Idris2     | Emitter said | Zig actually has |
| ---------- | ------------ | ---------------- |
| GitHub     | git_hub      | github           |
| GitLab     | git_lab      | gitlab           |
| RabbitMQ   | rabbit_mq    | rabbitmq         |
| DynamoDB   | dynamo_db    | dynamodb         |

Per iseriser#18, the runtogether form (snake with all `_` removed) is
added as an additional candidate. The verifier already accepts any
candidate, so cartridges using snake_case (`manifest_loaded`, etc.)
stay green and cartridges using runtogether (`github`, etc.) now also
pass. No cartridge files are touched.

Single-word variants (`Empty` → `empty`) do NOT get a duplicate
candidate — the runtogether form is only added when it actually
differs from the snake form.

End-to-end verified against boj-server/main:
  git-mcp:    abi-verify OK (was Class B drift)
  queues-mcp: abi-verify OK (was Class B drift)
  aws-mcp:    still drifts, but on a *different* class
              (variant-extra-in-zig: sqs_send_message, sts_*,
              not the DynamoDB normalisation case) — separate fix

8 manifest_schema unit tests pass; full suite (46 lib + 9 integration)
stays green.

Refs hyperpolymath/standards#92 (Phase 2 allowlist expansion).
Refs #18.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@hyperpolymath hyperpolymath merged commit fc496da into main May 20, 2026
16 of 29 checks passed
@hyperpolymath hyperpolymath deleted the fix/abi-multicap-runtogether-candidate branch May 20, 2026 21:44
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.

1 participant