Skip to content

Changelog

All notable changes to this project will be documented in this file.

Unreleased

Bug Fixes

  • Keep service tiers and output-only settings out of the pin key
  • Drop a leftover draw for a boundary already covered
  • Keep logprobs and usage reporting in the pin key

Performance

  • Walk each branch of an unmerge once per re-key plan

Refactoring

  • Keep each claim's merge path only in identity_claim_paths

[0.1.0] - 2026-10-13

Bug Fixes

  • Make Upcast and ExtractFn real type aliases, relative root import
  • Savepoints for nested transactions, crash-safe rebuild
  • Close the replay contract holes
  • Canonicalization edge cases, enforce the reserved namespace
  • PinLedger accepts any conforming store; honest resolver docs
  • JSON-concrete pin results, runtime replay-mode guard, floor stragglers
  • Order-independent split folding, index the audit query
  • Merges gather aliases; establish takes pin material
  • The writer records its mints; re-keys compose across a batch
  • Coalesce concurrent draws; key the whole request
  • Coordinate the plain and streamed draws on one gate
  • Draw outside the write lock, and four smaller review fixes
  • Tier 3 could not reach a provider, and five more review findings
  • Higher-order belief is derived, not stored — R28
  • The view aliased a bound method, so nothing was guarded
  • Review round 2 — a lesson applied by halves, and a test that proved its own negation
  • The chronicle handed every party a private remark
  • The update call's reading never reached a decision
  • Send a misnamed clause back to the model, and run the direct route
  • Address review on #17 -- seat checks before the table opens, and tighter contracts
  • Run on Opus 5.5 and Sonnet 5.5, and keep prompt caching out of the pin key
  • Draw the timeline's transport icons as one SVG set
  • Give a long answer its own line in the Story view's cards
  • A bottom line is one of three words, by schema
  • Address review on #18 -- loopback-only UI, CSRF guard, failure logging, a11y
  • A replayed batch re-lays the edges of a state it reuses
  • Close the four bypasses review found
  • Small pre-existing issues found writing the docs
  • Replay and unmerge keep alias effects exact
  • Refuse merging an already-merged entity; planner follows the store
  • An unmerge follows forms a later merge of the survivor carried on
  • BeliefFold takes a required durable flag
  • Refuse owned-position folds inside an open transaction
  • Record-mode replay draws into a PinLedger
  • Drop announce from ReplayPins; cover streamed record mode
  • An unmerge of the survivor gives back the claim still standing on it
  • Replay refuses an old event version without upcasts=
  • Refuse an async summariser before any work on the sync path
  • StaleRead only when the gap holds an event the fold claims
  • Ask the store whether the log reaches a slice, not an upcast read
  • A successor must keep the range it supersedes
  • An unmerge follows the rows its merge moved, not their names
  • Keep session and user ids out of the pin key
  • Only an established, unmerged entity survives a merge
  • An unmerge's re-key rows name where the survivor stands now
  • Redraw every unit when a failed batch is retried

Features

  • Envelope, event-type registry, canonical serialization
  • EventStore port, user_version migrations, SQLite adapter
  • Upcast-on-read registry and EventReader
  • ProjectionFold dispatch and watermark-guarded Projector
  • Pin ledger, scratch lifecycle, builtin events
  • ReplayPins — generation-replay with announced divergence
  • Public API surface and milestone-1 acceptance
  • Entities as events, with the registry as a fold
  • Register every library event in one call
  • Belief-id minting, the entity index, and identity's re-key seam
  • The pin resolver gains an awaited twin
  • The model call, pinned
  • Add resolve_stream to the pin resolver
  • Pin streamed model calls instead of refusing them
  • Fold determinism is a declared property of the fold
  • The anchoring discipline as a generative projection
  • A negotiation demo with several believing parties
  • Tier 3 exists, and it gates a release
  • M8b — two agents, four rounds, and a mind read wrongly
  • A model per role, and one role compared with the rest held fixed
  • The demo takes a model per slot on the command line
  • A recorded run on disk, in the log's own format
  • Every route with a key, four checks each, and no green run that called nothing
  • The harness runs on a real model, and a real recording replays with no key
  • Log model calls, pins, appends and folds under anagrapheus.*
  • A browser UI that shows the workings, and just recipes for the demo
  • A plain-language Story view, the UI's new default
  • Pin the timeline controls under the header while scrolling
  • Open a finished run at its first step
  • Check second-order belief in both directions
  • A functional predicate may declare the words its value can be
  • Beliefs are a fold over the log, not a write beside it
  • What a model is shown, built only from what its role was granted
  • Key model settings that change the draw
  • Withdraw a merge with an Unmerged decision
  • An awaited catch-up path for generative folds
  • Brief takes admit= and upto_seq=; timeline.is_bookkeeping
  • Reconsolidate() and a store that refuses forks

Miscellaneous

  • Scaffold project from cookiecutter-python-uv-library
  • Use @opengsd/gsd-core in place of get-shit-done-cc
  • Raise floor to 3.14, add pydantic, record package-shape decisions
  • Bump the github-actions group with 7 updates
  • Bump the python-uv group across 1 directory with 7 updates
  • Bump MishaKav/pytest-coverage-comment
  • Bump MishaKav/pytest-coverage-comment

Performance

  • Find an unmerge's claims through an indexed path table

Refactoring

  • Class-kwarg frozen config; explain the envelope fields
  • Conventional terminology, RESERVED_NAMESPACE everywhere
  • Rename watermark to position throughout
  • Version the schema per component, not per file
  • Stance is an opaque token ranked by an app ladder
  • Folds no longer declare a schedule

Testing

  • The suite, the acceptance story, and design note 03
  • The suite, the acceptance story, and design note 04
  • Fix a context test that passed by allocator accident
  • Cover the streamed pin, and amend design note 04
  • Prove anchor-replay, and record the layer in note 05
  • Acceptance for M7, and record the demo in note 06
  • A route also reads its key from TIER3__API_KEY
  • Read each route's key from the provider's own variable only
  • Migrate a populated v1 projection to v2

Build

  • Take doxastica as a dependency, retiring the pydantic-only line
  • No upper bound on pydantic-ai
  • No upper bounds on doxastica and pydantic

Style

  • Fix a D205 docstring and a format nit missed before pushing
  • Fix lint the gates skipped because the files were untracked