Skip to content

Commit 8a7be1d

Browse files
Merge pull request #19 from quantumpipes/feat/cps-1.5.3-validation-and-structured-verify
2 parents dbf6296 + f80cc37 commit 8a7be1d

28 files changed

+2587
-235
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@ Versioning follows [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1111

1212
---
1313

14+
## [1.5.3] - 2026-03-23
15+
16+
### Added
17+
18+
- **`spec_version`** — Required top-level CPS field (default `"1.0"`) on `Capsule` / `CapsuleDict`, included in `to_dict()` / canonical hash. `from_dict()` defaults missing values to `"1.0"` for backward compatibility. Specification updated in `spec/README.md`; golden fixtures regenerated.
19+
- **`validate_capsule_dict` / `validate_capsule` (Python)** and **`validateCapsuleDict` (TypeScript)** — FR-002 runtime validation for CPS content dicts: required keys, section shapes, chain rules, numeric ranges, optional `claimed_hash` integrity check, and optional `strict_unknown_keys` / `strictUnknownKeys`. Exported from `qp_capsule` and `@quantumpipes/capsule`. Invalid vectors updated to include `spec_version` where appropriate; added `missing_spec_version` (16 negative vectors total).
20+
- **Structured verify (FR-003)** — Python: `SealVerifyCode`, `SealVerificationResult`, `Seal.verify_detailed()`, `Seal.verify_with_key_detailed()`; `verify()` / `verify_with_key()` unchanged (boolean, delegate to detailed). TypeScript: `verifyDetailed()`, `SealVerificationResult`, `SealVerifyCode`; `verify()` returns `(await verifyDetailed(...)).ok`.
21+
22+
---
23+
1424
## [1.5.2] - 2026-03-18
1525

1626
### Added

conformance/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ The URI spec is at [`spec/uri-scheme.md`](../spec/uri-scheme.md).
101101

102102
## Invalid Capsule Fixtures
103103

104-
The `invalid-fixtures.json` file provides 15 test vectors for **malformed or structurally invalid** capsules. A conformant verifier SHOULD reject each of these.
104+
The `invalid-fixtures.json` file provides 16 test vectors for **malformed or structurally invalid** capsules. A conformant verifier SHOULD reject each of these.
105105

106106
Each entry contains:
107107

conformance/fixtures.json

Lines changed: 49 additions & 33 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)