Skip to main content
Parmana ships continuously, there’s no separate server release train with its own version numbers (the running server’s GET /version reports an internal build identifier, not a product version). The SDKs are versioned independently on their own registries, see TypeScript SDK and Python SDK for their current versions and per-version notes. This page covers changes that affect what you can build against, not every commit, run git log in the repository for the complete record.

2026-09-14

Added
  • createBusinessTransaction() (TypeScript) and create_business_transaction() (Python): derives the three id pairs a Business Transaction must keep consistent, removing the most common integration mistake. Both SDKs published: @parmana/sdk@1.1.2 on npm, parmana@1.1.4 on PyPI.
  • Documentation-site domain fixed to docs.parmanasystems.com; repository links updated to github.com/pavancharak/parmana.

2026-09-11

Added
  • Standalone offline signature verifiers with no network/disk dependency, TypeScript (OfflineVerifier) and Python (offline_verifier.py), cross-verified against each other.
  • Public-key discovery: GET /keys/:keyId and GET /.well-known/jwks.json.
  • Verification-key rotation support (PARMANA_VERIFICATION_KEY_ID, a rotation script), so a key can be rotated without breaking verification of records signed under the old key.
  • Optional HYBRID_SIGNATURE_REQUIRED policy flag: an opted-in deployment now detects a stripped post-quantum signature on a record that should have one.
Fixed
  • A production deployment with real caller authentication surfaced a database constraint gap: successful authenticated requests could fail closed with a 503 before policy ever ran. Fixed via a migration.
  • FileKeyProvider reported the wrong signature algorithm for any key other than the default.

2026-09-10

Added
  • PostgresRateLimitStore: /execute rate limiting is now durable and fleet-wide when DATABASE_URL is configured (previously in-process only).
  • GET /trust-records: bulk, paginated export of full signed Execution Trust Records.
  • Structured, level-gated logging (createLogger/getLogger).
  • npm run loadtest: a load-testing script for POST /execute.
Fixed
  • A misconfigured KMS/HSM key provider (KEY_PROVIDER=aws-kms etc.) now fails closed at startup instead of silently falling back to storing keys on disk.
  • GET /ready now reports authDisabled explicitly in its JSON response.
  • The Gateway’s identity is now configurable (PARMANA_GATEWAY_ID) instead of hardcoded.
  • A long-lived HubSpot credential with no rotation in 90 days now triggers a startup warning.

2026-09-09

Added
  • PolicyValidator.findRuleConflicts(): flags policy rules whose conditions can both be true at once, advisory only, verified against every shipped policy with zero false positives.
Fixed
  • Policy validation now fails closed on any rule-referenced fact with no boundSignals binding, instead of a load-time warning nobody would see. All shipped policies updated.
  • TenantKeyResolver: Execution Authorizations now sign under a per-tenant key when one is provisioned, instead of always the shared default key.
Changed
  • PRIMARY_SIGNATURE_PROVIDER/SECONDARY_SIGNATURE_PROVIDER accept ml-dsa-65 as an alias for the internal dilithium3 identifier.

2026-09-06 to 2026-09-07

Added
  • Execution-time Policy Governance verification: a tampered or unapproved policy can now be refused before evaluation runs (feature-flagged, off by default).
  • PolicyChangeApprovalRecord signatures are now verified (not just content hashes), hash-chained, and re-checked periodically, not just at startup.
  • Per-caller tamper-evident audit-event chaining, with a standalone chain verifier.
  • Signed caller-capability claims in the Execution Authorization payload (defense-in-depth).

2026-08-16 to 2026-08-19

Added
  • GitHub connector, with ephemeral GitHub-App-installation credentials.
Fixed
  • Stale documentation and code-comment references to the removed Razorpay connector cleaned up across the repository.

2026-08-18

Added
  • Policy Governance: a maker-checker workflow for policy changes (propose, approve, reject, signed approval records), plus a read-only internal review UI.

2026-08-12

Added
  • Caller-to-capability scoping (allowedCapabilities).
Removed
  • The Razorpay connector was removed from the repository entirely. It is not a supported integration path; see Integrations for what’s currently live.

2026-08-11

Added
  • Rate limiting on POST /execute (per authenticated caller) and GET /health/GET /ready (per IP, more permissive).
  • TypeScript SDK renamed @parmana/legacy-reference to @parmana/sdk, plus retry logic (backoff on idempotent GETs against 502/503/504).
Fixed
  • Both SDKs’ documented quickstart examples are now run against a real server on every test run, not just syntax-checked. Found and fixed several real bugs in the process, including every TypeScript example importing a package name that never existed.

2026-08-09

Added
  • Hybrid signature support completed (classical + post-quantum), see Security.

2026-08-05

  • HubSpot Signed Approval Artifact support, closing a policy-verification gap for that connector.

2026-07-28

Security
  • Fixed an execution-authorization bypass: policy signals are now bound to the executed intent (Policy.boundSignals + SignalIntentBinder), closing a gap where a caller could declare one action’s signals while a different action actually executed. Found via an external adversarial security exercise. See Security.

2026-07-18

Added
  • Caller bearer-key authentication, gating every route except /health, /ready, /openapi.yaml, and /documentation. Any documentation describing an unauthenticated API predates this and is stale.

2026-07-14

Added
  • OpenAPI specification published, execution connector framework introduced.

2026-07-11 to 2026-07-13

Added

Earlier

  • 2026-07-01: Python SDK v1.0.0 released on PyPI, the first versioned artifact.
  • 2026-06-25: First commit.

A note on terminology in older commits

Commit messages from before 2026-08 sometimes use “Execution Governance” as an architecture name. The current, public-facing language avoids that term; if you find it in old commit history, it refers to what this site now calls Policy Governance and the Execution Gateway, not a separate product.

Full history