<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>compliance-primitives changelog</title>
  <link href="https://stellar-compliance-kit.github.io/compliance-primitives/changelog.html"/>
  <link rel="self" href="https://stellar-compliance-kit.github.io/compliance-primitives/feed.xml" type="application/atom+xml"/>
  <id>https://stellar-compliance-kit.github.io/compliance-primitives/feed.xml</id>
  <updated>2026-08-27T00:00:00Z</updated>
  <author><name>Stellar Compliance Kit contributors</name></author>

  <entry>
    <title>Unreleased — compliance-primitives</title>
    <link href="https://stellar-compliance-kit.github.io/compliance-primitives/changelog.html#unreleased"/>
    <id>https://stellar-compliance-kit.github.io/compliance-primitives/changelog.html#unreleased</id>
    <updated>2026-10-26T11:07:43.390Z</updated>
    <content type="text">### Fixed

- **allowlist-token**: `pause` now blocks `add_to_allowlist`,
  `add_to_allowlist_delegated`, and `remove_from_allowlist`, matching the
  doc comment &quot;Pause all mutating operations&quot;. Previously only `transfer`
  checked the pause flag, so a compromised key could keep mutating the
  allowlist while the contract appeared paused. Admin rotation
  (`propose_admin` / `accept_admin` / `transfer_admin`) and `unpause`
  remain available while paused so an operator can always recover
  (fixes #583, matching the behaviour of `denylist-gate`).

### Added

- **circuit-breaker**: Guardian set for faster incident response. Admin-managed
  `add_guardian` / `remove_guardian` / `is_guardian`; guardians can call
  `freeze`, while `unfreeze` remains admin-only. `Frozen` event topic renamed
  from `admin` to `caller`.
- **compliance-aggregator**: Admin-gated `upgrade(admin, new_wasm_hash)`
  entrypoint with an `UpgradePerformed` event, a migration test that
  deploys, writes state, upgrades, and verifies state is intact and callable,
  and module-level upgrade documentation (#195)
- **compliance-aggregator**: `check_address` budget-regression benchmark
  with a `[compliance-aggregator.check_address]` entry in
  `budget-baselines.toml` (#196)
- **multisig-admin**: Expanded module-level docs covering purpose, callers,
  and composition with the other contracts in the repo (#197)
- **multisig-admin**: Instance TTL is extended on every write path
  (`INSTANCE_TTL_THRESHOLD` / `INSTANCE_TTL_EXTEND_TO`), with tests that
  advance the ledger past the original TTL (#198)
- **multisig-admin**: `upgrade(new_wasm_hash)` entrypoint, gated by the M-of-N
  threshold, with a migration test confirming state survives the upgrade
- **multisig-admin**: `__check_auth` resource-fee benchmark and
  `[multisig-admin.__check_auth]` baseline in `budget-baselines.toml`
- **policy-engine**: Instance-storage TTL extension on every write path
  (threshold ~7 days, extend-to ~90 days)

### Changed

- **policy-engine**: Expanded module-level docs covering purpose, callers,
  composition with the other contracts, and the TTL policy</content>
  </entry>

  <entry>
    <title>v0.1.0 — compliance-primitives</title>
    <link href="https://stellar-compliance-kit.github.io/compliance-primitives/changelog.html#0-1-0"/>
    <id>https://stellar-compliance-kit.github.io/compliance-primitives/changelog.html#0-1-0</id>
    <updated>2026-08-27T00:00:00Z</updated>
    <content type="text">### Added

- **multisig-admin**: Proposal workflow with ledger-sequence-based expiry
  - `propose()` — Create a new governance proposal with an expiry ledger
  - `approve()` — Approve a proposal (restricted to registered signers)
  - `execute()` — Execute a proposal once threshold is met
  - `get_proposal()` — Query proposal details and current approvals
  - `ExpiredProposal` error variant — Rejects approval/execution after expiry

- **multisig-audit-trail**: New example demonstrating governance audit trail
  - Shows how to integrate `multisig-admin` proposals with `audit-log`
  - Pattern for recording proposal creation, approvals, execution, and expiry
  - Test suite covering successful proposal flow, expiry handling, and approval history

- **CI**: Changelog version sync check
  - `scripts/check-changelog.sh` enforces CHANGELOG.md updates alongside version bumps
  - New GitHub Actions job `changelog-version-sync` validates in CI

- **Documentation**: QUICKSTART.md
  - Step-by-step guide from clone → build → test → example → testnet → web playground
  - Linked prominently from README.md
  - Includes troubleshooting and key file reference

### Changed

- README.md: Added prominent link to QUICKSTART.md for new contributors
- CONTRIBUTING.md: Documented CHANGELOG.md requirement for version bumps</content>
  </entry>
</feed>
