From cc42a65887615729ec391478197051996804829b Mon Sep 17 00:00:00 2001 From: zuub-don Date: Thu, 13 Aug 2026 09:19:55 -0700 Subject: [PATCH] chore: prepare v0.3.1 release --- .claude-plugin/marketplace.json | 2 +- CHANGELOG.md | 6 ++++++ Cargo.lock | 20 +++++++++---------- Cargo.toml | 2 +- crates/kahea-plan/src/lib.rs | 2 +- fixtures/golden/create-invoice.plan.json | 2 +- .../generator-baseline.conformance.json | 4 ++-- .../golden/generator-surface.conformance.json | 2 +- packaging/mcpb/manifest.json | 2 +- plugins/kahea/.claude-plugin/plugin.json | 2 +- plugins/kahea/.codex-plugin/plugin.json | 2 +- server.json | 2 +- 12 files changed, 27 insertions(+), 21 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 20ddb60..b001f13 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,7 +11,7 @@ "name": "kahea", "source": "./plugins/kahea", "description": "Seal, test, and invoke HTTP and finite WebSocket APIs with exact capability grants.", - "version": "0.3.0", + "version": "0.3.1", "author": { "name": "copyleftdev", "url": "https://github.com/copyleftdev" diff --git a/CHANGELOG.md b/CHANGELOG.md index a2bdfbc..a94b3cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Changelog +## 0.3.1 - 2026-08-13 + +- Fixed YAML ingestion for OpenAPI documents that use unquoted numeric response status keys. + Finite numeric mapping keys are normalized to strings before indexing, while unsupported keys + such as booleans still fail closed ([#42](https://github.com/copyleftdev/kahea/issues/42)). + ## 0.3.0 - 2026-08-13 - **Breaking (`kahea/k1`):** a close frame the plan does not accept is reported as diff --git a/Cargo.lock b/Cargo.lock index 1b39cb9..d3da460 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -998,7 +998,7 @@ dependencies = [ [[package]] name = "kahea" -version = "0.3.0" +version = "0.3.1" dependencies = [ "clap", "kahea-conformance", @@ -1016,7 +1016,7 @@ dependencies = [ [[package]] name = "kahea-conformance" -version = "0.3.0" +version = "0.3.1" dependencies = [ "blake3", "kahea-core", @@ -1032,7 +1032,7 @@ dependencies = [ [[package]] name = "kahea-core" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "blake3", @@ -1043,7 +1043,7 @@ dependencies = [ [[package]] name = "kahea-evidence" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "kahea-core", @@ -1060,7 +1060,7 @@ dependencies = [ [[package]] name = "kahea-exec" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "httparse", @@ -1084,7 +1084,7 @@ dependencies = [ [[package]] name = "kahea-ingest" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "kahea-core", @@ -1098,7 +1098,7 @@ dependencies = [ [[package]] name = "kahea-mcp" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "kahea-conformance", @@ -1115,7 +1115,7 @@ dependencies = [ [[package]] name = "kahea-plan" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "kahea-core", @@ -1131,7 +1131,7 @@ dependencies = [ [[package]] name = "kahea-test-server" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "clap", @@ -1149,7 +1149,7 @@ dependencies = [ [[package]] name = "kahea-workflow" -version = "0.3.0" +version = "0.3.1" dependencies = [ "base64 0.23.1", "kahea-core", diff --git a/Cargo.toml b/Cargo.toml index d6468ae..729b083 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,7 +14,7 @@ members = [ ] [workspace.package] -version = "0.3.0" +version = "0.3.1" edition = "2024" rust-version = "1.95" license = "Apache-2.0" diff --git a/crates/kahea-plan/src/lib.rs b/crates/kahea-plan/src/lib.rs index bd13f42..91e449c 100644 --- a/crates/kahea-plan/src/lib.rs +++ b/crates/kahea-plan/src/lib.rs @@ -2424,7 +2424,7 @@ paths: assert!(first.verify_seal().unwrap()); assert_eq!( first.fingerprint, - "b3:354cca8ac7a2629abc42d2c9c1eee927c2d7f466b8394bd410c5058239deac2e" + "b3:d05ec0d1dc22b085d9415d1cff04d36db5ae7dc037d85d4a60f4513f3e820497" ); assert_eq!(first.target, "wss://socket.example.test/v1/events"); assert_eq!(first.risk, kahea_core::RiskClass::Write); diff --git a/fixtures/golden/create-invoice.plan.json b/fixtures/golden/create-invoice.plan.json index f566b8e..19c4a5c 100644 --- a/fixtures/golden/create-invoice.plan.json +++ b/fixtures/golden/create-invoice.plan.json @@ -1 +1 @@ -{"protocol":"kahea/k1","kind":"plan","version":"0.3.0","config_fingerprint":"b3:c801e7cd2a1b600d46b6abb6f855e6228135357f6a3541dc4b65465e33e9ad84","policy_fingerprint":"b3:9da0a9fe6ff93b35071e2e144fd5ee7cab39a837dc89f6137565d96fab434d3d","source_fingerprints":["b3:674b6af9c25af432babcf6db15693a4ad7de0b92df5f86066ccf2d433a2655f6"],"id":"plan:14b2e23060c8","operation":"op:86dc9c5c3f68","target":"https://sandbox.example.test/v1/invoices","method":"POST","risk":"write","required_grants":["http:POST","net:sandbox.example.test:443"],"secret_refs":[],"headers":[{"name":"Content-Type","value":"application/json"}],"auth":null,"body":{"media_type":"application/json","bytes":44,"blake3":"b3:a20ef0153c1bc8574adf10ee074c7d765dca13af98034ae3e24b0862be190e61","encoding":"utf-8","inline":"{\"amount\":125.5,\"customer_id\":\"cus_01KAHEA\"}"},"checks":["response-schema:openapi","status:any(201)"],"response_contract":{"components":{},"responses":{"201":{"description":"Invoice created"}}},"sensitive_headers":[],"redact_response_json_pointers":[],"derivations":[{"field":"body","source":"explicit-input","source_location":"input:/body","logical_value":{"amount":125.5,"customer_id":"cus_01KAHEA"},"wire_value":"{\"amount\":125.5,\"customer_id\":\"cus_01KAHEA\"}","transformations":["canonical-json"]}],"valid":true,"fingerprint":"b3:ba0466304332b7bc2a423d4916d602b85fd18c181bf4563fb4a8b65d28a0db25","exit":0} +{"protocol":"kahea/k1","kind":"plan","version":"0.3.1","config_fingerprint":"b3:c801e7cd2a1b600d46b6abb6f855e6228135357f6a3541dc4b65465e33e9ad84","policy_fingerprint":"b3:9da0a9fe6ff93b35071e2e144fd5ee7cab39a837dc89f6137565d96fab434d3d","source_fingerprints":["b3:674b6af9c25af432babcf6db15693a4ad7de0b92df5f86066ccf2d433a2655f6"],"id":"plan:ae2e16d2a2a9","operation":"op:86dc9c5c3f68","target":"https://sandbox.example.test/v1/invoices","method":"POST","risk":"write","required_grants":["http:POST","net:sandbox.example.test:443"],"secret_refs":[],"headers":[{"name":"Content-Type","value":"application/json"}],"auth":null,"body":{"media_type":"application/json","bytes":44,"blake3":"b3:a20ef0153c1bc8574adf10ee074c7d765dca13af98034ae3e24b0862be190e61","encoding":"utf-8","inline":"{\"amount\":125.5,\"customer_id\":\"cus_01KAHEA\"}"},"checks":["response-schema:openapi","status:any(201)"],"response_contract":{"components":{},"responses":{"201":{"description":"Invoice created"}}},"sensitive_headers":[],"redact_response_json_pointers":[],"derivations":[{"field":"body","source":"explicit-input","source_location":"input:/body","logical_value":{"amount":125.5,"customer_id":"cus_01KAHEA"},"wire_value":"{\"amount\":125.5,\"customer_id\":\"cus_01KAHEA\"}","transformations":["canonical-json"]}],"valid":true,"fingerprint":"b3:04d9a1186177329afc611aad8cfca76ad92ac7014c8e82affa111294aeee688d","exit":0} diff --git a/fixtures/golden/generator-baseline.conformance.json b/fixtures/golden/generator-baseline.conformance.json index 26c3395..bf00d23 100644 --- a/fixtures/golden/generator-baseline.conformance.json +++ b/fixtures/golden/generator-baseline.conformance.json @@ -376,7 +376,7 @@ "target": "https://api.example.test/surface/7777?count=40&kind=gamma&verbose=true" } ], - "fingerprint": "b3:9c2853190ab0d53916751f05635e7facbed87ca918bc94942e33b1d79cc07e9f", + "fingerprint": "b3:048e0480efda2d49de0360a5ca9341b923ed465d038416215d30cd5f6b39c522", "requested_cases": 6, "required_grants": [ "conformance:execute:6", @@ -558,7 +558,7 @@ "target": "https://api.example.test/optional?trace=a" } ], - "fingerprint": "b3:d1e994af668e396329bfc18d7082480bbabe824f62d9cc64ed61e21ca68db401", + "fingerprint": "b3:20c128b11c9d836d9c8ddf5b230cea18574c96d8019693b791f50996439bbda5", "requested_cases": 10, "required_grants": [ "conformance:execute:10", diff --git a/fixtures/golden/generator-surface.conformance.json b/fixtures/golden/generator-surface.conformance.json index a1e16aa..6649345 100644 --- a/fixtures/golden/generator-surface.conformance.json +++ b/fixtures/golden/generator-surface.conformance.json @@ -743,7 +743,7 @@ "target": "https://api.example.test/surface/7777?count=40&kind=alpha&verbose=true" } ], - "fingerprint": "b3:fef1483322c94a0866e5e2b724affabaf30c57e7751e6781ab16a1ffc59a6a07", + "fingerprint": "b3:ce3a5b222b5387db79c752ea267c12640d65331246ff9e3508d66b7ddee49d15", "requested_cases": 12, "required_grants": [ "conformance:execute:12", diff --git a/packaging/mcpb/manifest.json b/packaging/mcpb/manifest.json index 57db12d..46a80aa 100644 --- a/packaging/mcpb/manifest.json +++ b/packaging/mcpb/manifest.json @@ -2,7 +2,7 @@ "manifest_version": "0.3", "name": "kahea", "display_name": "Kāhea", - "version": "0.3.0", + "version": "0.3.1", "description": "Deterministic HTTP and WebSocket testing with policy-gated execution for AI agents.", "long_description": "Kāhea turns API descriptions, captured requests, workflows, and finite WebSocket sessions into sealed plans, invokes only with exact capability grants, and returns typed, replayable evidence.", "author": { diff --git a/plugins/kahea/.claude-plugin/plugin.json b/plugins/kahea/.claude-plugin/plugin.json index 25df06b..61fbb39 100644 --- a/plugins/kahea/.claude-plugin/plugin.json +++ b/plugins/kahea/.claude-plugin/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json", "name": "kahea", "displayName": "Kāhea", - "version": "0.3.0", + "version": "0.3.1", "description": "Deterministic HTTP and finite WebSocket planning, testing, and policy-gated execution for AI agents.", "author": { "name": "copyleftdev", diff --git a/plugins/kahea/.codex-plugin/plugin.json b/plugins/kahea/.codex-plugin/plugin.json index 4e0f091..8e64a35 100644 --- a/plugins/kahea/.codex-plugin/plugin.json +++ b/plugins/kahea/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "kahea", - "version": "0.3.0", + "version": "0.3.1", "description": "Deterministic HTTP and finite WebSocket planning, testing, and policy-gated execution for AI agents.", "author": { "name": "copyleftdev", diff --git a/server.json b/server.json index 136447e..9384e0b 100644 --- a/server.json +++ b/server.json @@ -8,6 +8,6 @@ "source": "github", "id": "1325401405" }, - "version": "0.3.0", + "version": "0.3.1", "websiteUrl": "https://github.com/copyleftdev/kahea" }