Skip to content

v3.18.0 — Loop-Ready Contract

Choose a tag to compare

@farmountain farmountain released this 28 Sep 14:34
· 2 commits to main since this release

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