Commit graph

15 commits

Author SHA1 Message Date
Meta Vens
a0a6ccbf0d connector-contract-v3: the decoder refuses every dialect the wire does not name; the ciphertext is published as binary
wire_decode accepts a document only when its MessagePack value equals the
named form wire_encode writes for the decoded value (key order, integer width
and an absent optional field aside), so a positional envelope or invocation, an
integer-array ciphertext, an enum sent as its index and bytes after the
document are refused Encoding through the real carriage. The schema describes
the ciphertext as binary, and a test pins schema and wire agreeing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:03:57 +01:00
Meta Vens
03bc88ae97 connector-contract-v3: pin the carriage's service id, operation and message shapes against the committed frame and the wire
The golden carriage frame is read and re-encoded by the kit's own carriage
functions, and both directions' frames are asserted field by field on the
CultNet wire, so a renamed service id or operation fails.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 12:02:32 +01:00
Meta Vens
aed07a4b71 connector-contract-v3: drop the unreachable short-string arms of the str header width
Mutation survivors on 2101602: the worst-case payload is the base64 of an
envelope holding two 256-byte ids, so it never fits a one- or two-byte str
header.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:38:11 +01:00
Meta Vens
2101602b8f connector-contract-v3: bracket the over-long-id refusal by the carriage frame
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:24:21 +01:00
Meta Vens
b6ad75c610 connector-contract-v3: the smallest frame has no smaller payload bound
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:23:21 +01:00
Meta Vens
face15ec16 connector-contract-v3: the payload bound a frame allows is the largest payload that fits
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>
2026-10-28 11:22:45 +01:00
Meta Vens
618475b159 connector-contract-v3: the server-side carriage functions exist with the daemon feature
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>
2026-10-28 11:21:52 +01:00
Meta Vens
c23d91391d connector-contract-v3: the v3 wire - named MessagePack documents over a CultNet operation carriage
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>
2026-10-28 11:21:11 +01:00
Meta Vens
5894632829 connector-contract-v3: the replay-seed test handles the Result of add_generic_backing_store
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 11:18:02 +01:00
Meta Vens
33f092ea7f connector-contract-v3: the stand-in test reads the receipt's provider
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>
2026-10-28 11:16:50 +01:00
Meta Vens
e669d2b867 connector-contract-v3: handle the Result of add_generic_backing_store (CultLib a4eae90)
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>
2026-10-28 11:13:28 +01:00
Meta Vens
5a4d8bd477 connector-contract-v3: delete the Responses fields and Refusal::Policy; type the request, outcome and refusals
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>
2026-10-28 11:11:53 +01:00
Meta Vens
685f449ddb connector-contract-v3: delete the v2 golden test and fixtures
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>
2026-10-28 11:04:44 +01:00
Meta Vens
ec0519d9ff connector-kit-lift: the provider-neutral connector kit, lifted from CodexConnector fd7cec4 (squash of eureka-body/connector-kit-lift 1cf879f..ba1f7eb)
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>
2026-10-28 07:12:42 +01:00
1cf879f1e0 Initial commit: LICENSE and README front door
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-28 03:49:49 +01:00