Repository navigation
Releases: inferogenesis/cpomdp
Release list
v0.5.1
A bug-fix release for the November workshop. No number changes. GATE-D4 moves from
v0.5.1 to v0.5.2 (ADR-092).
Fixed
- The sdist leaves out CI's JAX compilation cache.
.gitignorenamed.jax_cache/and
CI writes.jax-cache/, so the publish job built its sdist after the test step had
filled the cache. PyPI refused CI's 0.5.0 sdist at its 100 MB limit, so the wheel went
out alone and a clean sdist was uploaded by hand the next day. - A type checker accepts
CallableSensorandFixedSensoras anObservationModel, and
CallableDynamicsNoiseas aDynamicsNoiseModel. Both protocols declaredis_fixed
as a writable attribute, which a frozen dataclass cannot satisfy, soty0.0.91
refused every sensor passed asobservation_model.is_fixedis read-only to a type
checker on both now (#206). The lock movestyfrom 0.0.46 to 0.0.91, so CI's type gate
checks this. The older version never checked whether a protocol member is writable.
At runtimeis_fixedstays the plain attribute 0.5.0 declared, so a subclass that
sets it on the instance still runs (#211). - The
Raisessections ofAgentandAgent.from_backendname theValueErrorfor a
built-inselector=built for another model or graph (#191).
v0.5.0
What's Changed
- chore: doc prep-work for paper 2 by @DanBoringName in #63
- 64 pr 1 warrant plumbing and the slogdet oracle audit by @DanBoringName in #75
- 65 pr 2 r10 hardening opening work by @DanBoringName in #78
- 65 warrant symbolic evidence by @DanBoringName in #79
- 65 gap series c2 gate by @DanBoringName in #80
- 65 gap series c4 by @DanBoringName in #81
- feat(workspace): extract warrantlib and make the repo a uv workspace by @DanBoringName in #82
- ci(review): raise the turn budget and pick the review model by event by @DanBoringName in #87
- refactor(api): name the observation channel for the literature by @DanBoringName in #83
- refactor: align every variable name, and close the remaining positional swaps by @DanBoringName in #85
- docs: correct four audit claims the code contradicts by @DanBoringName in #88
- docs(warrantlib): give Evidence a page, and a docstring that renders by @DanBoringName in #89
- ci(publish): allow a manual warrantlib publish, without a cpomdp release by @DanBoringName in #90
- Feat/warrantlib provenance by @DanBoringName in #91
- ci(test): parallelise pytest and persist the jax compilation cache by @DanBoringName in #92
- Feat/warrantlib serialisation by @DanBoringName in #95
- Feat/d3 refinement axis by @DanBoringName in #96
- Fix/docs citation rendering by @DanBoringName in #97
- Feat/warrant pytest plugin by @DanBoringName in #98
- Feat/66 world agent seam by @DanBoringName in #99
- Feat/rx world by @DanBoringName in #100
- Exact reference filter, the averaged inference gap, and its closed form by @DanBoringName in #104
- feat(hooks): refuse a change that rewrites a landed line in a protected file by @DanBoringName in #106
- ci: run the symbolic suites only on a change that can reach them by @DanBoringName in #107
- feat(warrantlib): hold the completeness contract in a base, with a le… by @DanBoringName in #109
- feat(research): the Spinello-Stilwell rung's open questions, derivation, and prerequisite routes by @DanBoringName in #105
- docs: ADR-057 ships R_mod for the Spinello-Stilwell rungs and declares no unit choice by @DanBoringName in #110
- feat(research): routes 3 and 5, and the declared iteration budget by @DanBoringName in #111
- Paper 2 scoring: the evaluator, the cross, the additivity check, and the error on a difference by @DanBoringName in #112
- feat(reference): the gap reports a declined reading as Void, and one function puts a Gaussian on a lattice by @DanBoringName in #113
- Paper 2 control: the finite-horizon schedule and the control bracket by @DanBoringName in #114
- The rule ladder, five rungs behind one seam by @DanBoringName in #116
- The ladder's first reading, and the R6 gap by @DanBoringName in #120
- PR-8 splits into the derivation, the bound and the gate by @DanBoringName in #121
- The discretisation bound, part 1: checked, and what the run corrects by @DanBoringName in #125
- Noise defaults for Q and ModelSpec, and the fixed-noise guard in one place by @DanBoringName in #129
- Surge margin: a Coriolis meter flips the offset and settles past surge by @DanBoringName in #130
- Surge margin: an Applications page, results first, and a shorter gallery entry by @DanBoringName in #131
- Release v0.5.0, with GATE-D4 moved to v0.5.1 by @DanBoringName in #132
- The Agent refuses inputs it would get wrong, and shows what it chose by @DanBoringName in #134
- Two review nits left over from #134 by @DanBoringName in #136
- The graph path refuses inputs it would get wrong by @DanBoringName in #135
- Review nits left over from #135 by @DanBoringName in #137
- The Agent map's legend and fixed-sensor cells match what the Agent does by @DanBoringName in #138
- A name is private until a user needs it by @DanBoringName in #139
- The review bot runs Opus 5.5 and Sonnet 5.5, with room for a large PR by @DanBoringName in #141
- The README says how v0.5 is built and what its correctness rests on by @DanBoringName in #140
- The review bot posts its comment from a file, so a long review is not refused by @DanBoringName in #149
- The review bot knows what a blocker is, and shows why it did not post by @DanBoringName in #150
- The graph backend reads like the flat model, with one place for each quantity by @DanBoringName in #142
- revert: #142, which the graph-backend stack #158–#161 replaces by @DanBoringName in #180
- Each noise field holds one value, and C is passed once by @DanBoringName in #151
- The two noises are named alike, and each name means one thing by @DanBoringName in #152
- The graph model's message passing is private, and its wiring is read-only by @DanBoringName in #153
- A graph node takes the flat model's sensor by @DanBoringName in #154
- A coupling has no unused tau, and malformed graph inputs say what is wrong by @DanBoringName in #155
- An edge is one class by @DanBoringName in #156
- CouplingGraph's names say what they hold, and its root comes from its couplings by @DanBoringName in #157
- The graph backend reads its sizes and C off its model, under one protocol by @DanBoringName in #158
- The graph backend filters a sequence like infer_states, and reads a node one way by @DanBoringName in #159
- ChainBackend is private, and the graph backend's state is read-only by @DanBoringName in #160
- Every graph-backend surface cuts the prior by its partition by @DanBoringName in #161
- The control pair is lqr_schedule and kalman_schedule, and every EFE function returns one record by @DanBoringName in #162
- The EFE trace names each matrix, and the EFE functions take a Preference by @DanBoringName in #163
- The LQR schedule takes the goal's cost names, and every scorer checks its Preference by @DanBoringName in #164
- A goal configures the Agent's selector, and selector= takes a Preference by @DanBoringName in #165
- An ObservationGoal goes to EFE wherever a noise depends on the state by @DanBoringName in #166
- The grid selectors answer the same questions and compile once by @DanBoringName in #167
- The goal, the preference and LQRController share target, precision and effort by @DanBoringName in #168
- One horizon check, role-named tests, and the Agent refuses Q(x) past horizon 1 by @DanBoringName in #169
- SearchWarrant goes, a search reports cost_per_plan, and an action set refuses NaN by @DanBoringName in #170
- The two exhaustive searches answer one evaluate with one result shape by @DanBoringName in #171
- Each search compiles its scorer once, and an all-NaN search names no winner by @DanBoringName in #172
- The front-loaded search refuses a set past its policy budget by @DanBoringName in #173
- ExhaustiveEfeSearch names the kind both searches are by @DanBoringName in https...
v0.4.4 — multi-step EFE, exhaustive search, demo rebuild & extend
What's Changed
Full Changelog: v0.4.3...v0.4.4
v0.4.3
v0.4.2
Archival release accompanying the paper. No library code changed — the public API and
numerics are identical to 0.4.1. The changes are in the example check suite, which the
paper's reproducibility claims quote, and are now gated in CI.
Added
- Single-chain theorem-instance check on the EFE-collapse demo
(examples/efe_collapse_figure.py --check): Section 3.1's model class via the flat
KalmanBackend(CallableSensor) route, asserting Theorem 1 clauses (i) and (iii). - tests/test_example_checks.py runs both demos' check() gates in CI.
Changed
- Result 4 of the epistemic-dissociation demo now asserts the horizon-1 ordering
epistemic pull < pragmatic gradient (previously an unasserted diagnostic number).
What's Changed
- chore: release version 0.4.2 with archival updates and example checks by @DanBoringName in #43
Full Changelog: v0.4.1...v0.4.2
v0.4.1
Maintenance release for the paper-1 Zenodo archive. No library code changed —
public API and numerics are identical to 0.4.0. Reworked the epistemic-dissociation
flagship figure and regenerated its asset. See CHANGELOG.md.
v0.4.0 — FFG message passing
What's Changed
- This version accompanies the paper "State-Dependent Observation Noise Reintroduces Epistemic Value in Linear-Gaussian Active Inference" - Daniel Corva
- fix: ci badge by @DanBoringName in #8
- fix: readme spelling and grammer by @DanBoringName in #9
- Add GitHub issue templates by @Psych-Kev in #19
- docs: added PR template by @DanBoringName in #23
- Dev/v0 4 scaffolding by @DanBoringName in #24
- 25 feature branching ffg backend conforming to inferencebackendinfer states by @DanBoringName in #29
- 30 feature carry partition factorisation by @DanBoringName in #31
- feat: add E. coli chemotaxis generative model and associated tests by @DanBoringName in #33
- 26 epistemic efe ffg by @DanBoringName in #34
- 27 e2e ai on branching ffg by @DanBoringName in #35
- 36 feature ship the rfc 005 dissociation flagship v04 release tidy up by @DanBoringName in #37
New Contributors
- @Psych-Kev made their first contribution in #19
Full Changelog: v0.3.0...v0.4.0
v0.3.0 — Expected Free Energy action selection
What's Changed
- Dev/jax refactor by @DanBoringName in #2
- feat: q(x) in perception by @DanBoringName in #3
- docs: demo for v0.3 and examples gallery by @DanBoringName in #4
- Dev/v0.3 final touches by @DanBoringName in #5
- Dev/v0.3 final touches - extra by @DanBoringName in #6
Full Changelog: v0.2.0...v0.3.0
JAX migration
Full Changelog: v0.1.1...v0.2.0
v0.1.1: continuous active inference, first cut
Full Changelog: v0.1.0...v0.1.1