The carriage grows in base64 groups of three bytes, so the frame is not
injective in the payload: payload_bytes_for_frame returns the largest payload
whose frame fits, and the tests say so. The slack of the not-wildly-above check
covers the real nonce being shorter than the worst one.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
c23d913 does not build with default features under clippy -D warnings: the
result encoder and invocation decoder are server-side only.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ids become gamecult.model.*.v3. Every document is encoded by one named
MessagePack codec in contract.rs with unknown fields refused, and publishes a
JSON Schema generated from its type (schemas/). The envelope's ciphertext is
binary. Each frame is a cultnet.operation_request.v0 / operation_response.v0
for service gamecult.model.connector, operation invoke, its message_id the
request id, its payload the base64 of the sealed envelope; the carriage is
checked before any decryption. frame_bytes_for_payload and
payload_bytes_for_frame measure the carriage. Golden v3 fixtures and their
generator (tests/wire_golden_v3.rs) pin drift. The test debt of the kit lift
(each identity field, each contract_refusal arm, request ids measured in bytes)
is paid in the rewritten code.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The typed-outcome commit left one test reading the retired transport field, so
its tests did not build.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The previous commit does not build with the daemon feature: the pinned
CultCache returns a Result there.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
ProviderRequest loses reasoning_summary, service_tier, output_format_name,
previous_response_id and prompt_cache_key; reasoning_effort is a ReasoningEffort,
max_output_tokens is required and cache_retention is added. Completed carries a
StopReason and Usage, Failed a FailureKind, and the receipt names its provider.
Refusal::Policy becomes ModelNotAllowed, OutputBound and PayloadBound, each its
own branch in begin. cultcache-rs moves to the one CultLib pin a4eae90.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ruling connector-v3-only: no v2 peer is kept. The test's header already named
this cut as its deletion line.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The v2 contract, encrypted envelope and framing, client, caller admission
and replay, and the serve loop move into the model-connector crate behind
one ProviderBackend trait, relicensed AGPL-3.0-only by the sole copyright
holder (ruling connector-kit-relicense-agpl). Same schema ids and wire bytes
as v2, pinned by golden fixtures generated from fd7cec4. The Codex backend
is not ported (ruling codex-connector-park).
Serve owns the frame bounds: it measures the sealed envelope, refuses
configurations that cannot deliver their payload bound, answers over-bound
payloads and over-long ids with v2 refusals, and never records or replays
an undeliverable result.
Spec eureka-body:cut_spec:cut-connector-kit-lift.r1; reports h1-h5;
Soul s5 holds (verdict eureka-body:verdict:cut-connector-kit-lift.s5).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>