# Changelog — `jis-core`

All notable changes to this package. Versions follow SemVer; pre-releases use `aN` (alpha) and `bN` (beta) suffixes.

## 0.4.0b1 — 2026-05-28

The fork → main move. `jis-core` graduates from "identity-library" to **identity-OSAPI** — packages now bind to a central runtime, identity-side of the v1.0 OSAPI-pair.

### Added
- **OSAPI v1.0 — bootstrap handshake** (mirror of `tibet-core`, same wire-protocol)
- **`jis_core.osapi.bootstrap(actor, actor_claim, ...)`** client API → returns a `Session`
- **`Session.claim(claim_data)`** — submit a JIS-claim for verification (verdict + denials)
- **`Session.bind(actor=, intent=, ttl_seconds=)`** — bind identity to an action/intent
- **`Session.fira(peer=, phase=)`** — First-Initiation/Revoke/Accept peer-trust handshake
- **`OSAPIServer`** reference implementation (threaded, request-response per op)
- **Error hierarchy** mirroring `tibet-core`: `OSAPIError` → `BootstrapError` / `IdentityError` / `VersionError` / `ProtocolError`
- **Shared `TIBET_SOFT_BOOTSTRAP=1`** opt-out (one env-var, both OSAPIs degrade)
- **Discovery**: env-var `JIS_OSAPI_URL` → well-known UDS → TCP fallback (`127.0.0.1:18444`)
- **27 new tests** (11 handshake + 16 ops)
- Spec: [`docs/specs/osapi-protocol-v1.md`](../../docs/specs/osapi-protocol-v1.md)

### Discipline
- **No-fail-open at pair-level**: a package that cannot bind to BOTH OSAPI's fails closed. Identity nooit optioneel.
- **Pair-companion**: [`tibet-core 0.5.0b1`](https://pypi.org/project/tibet-core/) released in tandem (port 18443, `emit`/`query`/`fork`).
- **Rust kernel unchanged** — Ed25519 signing/verifying still via the compiled extension; v1.0 will wire the `claim_verifier` to real `jis_core.jis_core` verify-calls.

### v1.0 release-criteria progress
- [x] HELLO/WELCOME/ACK handshake + tests
- [x] claim/bind/fira ops + tests
- [x] Shared soft-bootstrap discipline (env-var)
- [ ] Real Ed25519 actor-claim verification via Rust kernel (currently shape-check stub)
- [ ] Full JisPolicy integration (currently clearance-stub)
- [ ] FIR/A persistent peer-trust ledger (currently per-session)
- [ ] Heartbeat + missed-heartbeat detection (v0.4.0b2)

## 0.3.0 — earlier

- Ed25519 Rust kernel via PyO3
- Python / JavaScript-WASM / C bindings
- IETF draft `draft-vandemeent-jis-identity`
- Bilateral consent + FIR/A handshake design

## 0.x — Earlier

See git log: identity-as-substrate, .aint domain resolution, TIBET provenance integration.
