ic-auth-wire 0.15.3

Bounded IC Wire transport contracts for portable IC Auth sessions
Documentation
# IC Auth Wire

Bounded IC Wire contracts for portable credentials, session admission, local
session reads and logout. This package depends on passive Auth types and published
IC Wire; it has no Candid, CDK, crypto, Canic, Toko or storage dependency.

Convert domain credentials with `model::PortableCredential::try_from`, then use
`CredentialEnvelope::encode_request` for detached data. Conversion back
retains the signed claim bytes and validates checked identifier syntax. It does
not authenticate any proof. Admission still requires the complete Auth session
engine against protected host authority, caller, clock and atomic storage.

The method IDs, Serde field/variant declaration order, bounded field types and
explicit native traversal allowances are the transport contract. Consumers own actual endpoint names, ingress authentication, raw
argument/reply allocation, dispatch, cancellation and retries. No endpoint is
installed by linking this library. Response encoding failure after mutation must
trap so local effects roll back. Never retry an unknown issuance as new work.

`typescript` enables the upstream host generator only. Canister dependencies
should leave it disabled. Generated TypeScript and Rust use the same layouts and
IC Wire's canonical bounded codec. Signed claims and session records retain their
existing independent formats.

The earlier Auth 0.9 application-transport cut retired the old token-store reader
after the maintainer confirmed no deployed records or unresolved issuance effects
used that old format. There is no Candid fallback. Current portable logout
journals retain unknown issuance and durable invalidation; this migration does
not authorize discarding them.

Auth 0.15 exposes IC Wire 0.6 through `wire`. Earlier
Auth 0.14 uses Wire 0.5. The finite `Method` trait, serializer derive and typed
retained frames are removed. Use the contract's pure `encode_request`,
`decode_request`, `encode_response` and `decode_response` functions. They bind
the concrete DTO, method identity and limits to Wire's native codec and return
ordinary owned bytes. Retain those bytes unchanged across uncertain effects.
Generic native Testkit callers supply `WireCallSpec`; no replacement method trait
is provided. `typescript` derives host-only Serde metadata for regeneration.

Admission keeps its name but changes its ID from `0x415554480002` to
`0x415554480012`. Serde uses zero-based refusal tags; the new ID prevents
misinterpreting old tags. Update admission clients and receivers together.
Credential, read and logout IDs and their frozen bytes remain unchanged, as do
signed claims, session/replay records and browser logout journals. No fallback
reader, implicit reissuance or storage reset is introduced.

Hosts project `SessionError::admission_refusal()` into `model::AdmissionRefusal`
and retain detailed diagnostics locally. `NotYetValid` is a same-credential retry
hint, never permission for early admission or extending the original deadline.