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
AddedcreateBusinessTransaction()(TypeScript) andcreate_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.2on npm,parmana@1.1.4on PyPI.- Documentation-site domain fixed to
docs.parmanasystems.com; repository links updated togithub.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/:keyIdandGET /.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_REQUIREDpolicy flag: an opted-in deployment now detects a stripped post-quantum signature on a record that should have one.
- A production deployment with real caller authentication surfaced a database constraint gap:
successful authenticated requests could fail closed with a
503before policy ever ran. Fixed via a migration. FileKeyProviderreported the wrong signature algorithm for any key other than the default.
2026-09-10
AddedPostgresRateLimitStore:/executerate limiting is now durable and fleet-wide whenDATABASE_URLis 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 forPOST /execute.
- A misconfigured KMS/HSM key provider (
KEY_PROVIDER=aws-kmsetc.) now fails closed at startup instead of silently falling back to storing keys on disk. GET /readynow reportsauthDisabledexplicitly 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
AddedPolicyValidator.findRuleConflicts(): flags policy rules whose conditions can both be true at once, advisory only, verified against every shipped policy with zero false positives.
- Policy validation now fails closed on any rule-referenced fact with no
boundSignalsbinding, 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.
PRIMARY_SIGNATURE_PROVIDER/SECONDARY_SIGNATURE_PROVIDERacceptml-dsa-65as an alias for the internaldilithium3identifier.
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).
PolicyChangeApprovalRecordsignatures 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.
- 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).
- 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) andGET /health/GET /ready(per IP, more permissive). - TypeScript SDK renamed
@parmana/legacy-referenceto@parmana/sdk, plus retry logic (backoff on idempotent GETs against 502/503/504).
- 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- Credential isolation and secure enterprise-connector handling, see Credential isolation and Content binding & TOCTOU.
- Execution Trust pipeline and hybrid signatures introduced.
Earlier
- 2026-07-01: Python SDK
v1.0.0released on PyPI, the first versioned artifact. - 2026-06-25: First commit.