Repository navigation
v3.18.0 — Loop-Ready Contract
v3.18.0 — Loop-Ready Contract
Makes HipCortex consumable by an external control loop as "snapshot once, then follow the changes". The v3.17 feed could not carry that loop: it ignored its cursor, never evicted settled intents, reported failed receipts as ok and in-flight intents as settled, and a settle landing during a snapshot read could fall between the snapshot and the feed after it.
What's new
| Change | Details |
|---|---|
| Settle stamps | ActionIntent gains server-owned settled_tx + receipt_ok; only settles stamp (first receipt, late receipt after expiry, deadline expiry via new TxKind::IntentExpire). transitions?since=N returns settled_tx > N, ascending; ok = Received && receipt_ok, so a receipt with ok: false no longer reports ok: true and InFlight intents no longer appear as settled |
| Paged feed with a horizon | Retention 4096 (with_transition_retention); TransitionPage { transitions, next_cursor, horizon_tx, truncated } — truncated tells the consumer to re-bootstrap from the snapshot. Intents are not rehydrated on restart, so every pre-restart cursor reports truncated |
| Consistent cut | snapshot() reads tx_cursor before its content; stamps are allocated under the open_intents lock after every effect applies — snapshot → N then transitions(since=N) delivers every settle at least once (upsert by intent_id) |
| Canonical parent order | Structural-equation parents are sorted, so weights[i] binds to parents[i] (previously random per graph, from HashMap order) |
| SCM read model | ScmView — nodes, equations, edges, interventions, acyclic, as_of_tx; identical graphs give byte-identical JSON; served at GET /snapshot/:actor/scm |
| MCP + SDK parity | MCP snapshot_transitions + snapshot_scm (64 tools, 7 resources); HipCortexClient.snapshot_transitions() + snapshot_scm() |
Upgrade note: once 3.18 has written IntentExpire entries, downgrading to ≤ 3.17 is unsupported — older binaries skip unknown kinds when restoring the tx counter and can reuse tail tx ids.
Test coverage
379 lib + 597 unit (+42) + 194 integration (+4 SIT) + 59 property + 269 Python (+11) = 0 failures in the petgraph build. Failures that predate this release: web-server build — ac_g1_schema_mismatch_payload_returns_422_not_panic, clarify_ladder_sit::react_on_a_goal_that_is_still_unclarifiable_is_rejected, clarify_engine.rs doctest; VSIX jest — 99/100 (health-check timeout expectation).
Channel state
| Channel | Version |
|---|---|
| GitHub (this release) | 3.18.0 — platform binaries + hipcortex-memory-3.18.0.vsix attached by release.yml |
PyPI (pip install hipcortex) |
3.18.0 |
| VS Marketplace | 3.17.0 — 3.18.0 not yet published |
| Open VSX | not published |
npm (hipcortex) |
registry serves 0.5.2; TypeScript SDK source is 3.12.0 and lacks the 3.18 methods |