Skip to content

Ship/expose the verify FFI (libciris_verify_ffi.so) in the ciris-server wheel so the agent rides us for verify — enables CIRISAgent#917 to drop the standalone ciris-verify pin (kills the v9.0.0-vs-v5.1.3 skew) #232

Description

@emooreatx

Summary

The agent is supposed to ride ciris-server for the WHOLE substrate — verify included — but today it can't: the agent loads libciris_verify_ffi.so from a separately-pinned ciris-verify wheel (ciris_adapters/ciris_verify/ffi_bindings/: jcs_canonicalize, operational_admit, hybrid_kex, key_grant, locale_merkle, self_enc, attestation). ciris-server bundles verify as a Rust cdylib inside its own wheel (symbols in ciris_server's .so), so a ffi_bindings that dlopens libciris_verify_ffi.so finds nothing in the ciris-server install → the agent must keep the standalone wheel → two verify lineages (bundled v9.0.0 vs standalone v5.1.3), the wire/canonical-hash skew (CIRISAgent#917).

For the agent to drop the standalone ciris-verify and ride us, ciris-server must PROVIDE the verify FFI surface the agent consumes, at the SAME version it bundles.

Ask

Ship/expose the verify FFI so ffi_bindings can source it from the ciris-server install. Two viable shapes (pick one):

  1. Ship the cdylib — include libciris_verify_ffi.so (+ .dylib/.dll) in the ciris-server wheel (built from the same ciris-verify-ffi at the bundled tag, v9.0.0), and expose its path (e.g. ciris_server.verify_ffi_path()), so the agent's ffi_bindings loader finds it there instead of the standalone wheel. Simplest for the agent (its ctypes loader just repoints).
  2. pyo3 re-export — surface the verify functions the agent calls as ciris_server pyo3 entries (jcs_canonicalize, self_enc_*, operational_admit, key_grant, hybrid_kex, locale_merkle, attestation). Cleaner API but a larger surface to wrap + keep in sync.

Recommend (1) — it's a packaging change (bundle the already-built FFI cdylib at the pinned tag), preserves the agent's existing ctypes bindings verbatim, and guarantees the FFI version == the bundled substrate version (no skew by construction).

Acceptance

  • The ciris-server wheel contains libciris_verify_ffi.{so,dylib,dll} at the bundled verify tag; a verify_ffi_path() (or documented location) resolves it.
  • CIRISAgent#917 drops ciris-verify from requirements and repoints ffi_bindings at the ciris-server-provided lib; jcs/attestation/etc. run against the SAME verify the substrate uses.
  • Version-skew impossible: one verify, bundled + FFI, one tag.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions