feat: enforce input_schema at call time (ADR-016 INVALID_INPUT leg)
- OperationSpec.input_schema was advertise-only: services/schema disclosed it but no dispatch entry point consulted it (the only enforced schema was publish_schema per-chunk on Pub ops, P-03). - compile input_schema once at registration, same fail-closed rule as publish_schema/CF-003: an un-compilable schema is a registration error, never a silently-skipped contract. Validator cache mirrored on fork and in OperationRegistryBuilder like the publish validators. - check after the ACL gate in all three dispatch entry points: invoke, invoke_streaming, invoke_sink (via resolve_sink_handler, preserving the P-08 single-source-of-truth property). Violations return INVALID_INPUT with the input echoed in details. - raw-JSON-Schema semantics (permissive on unknown keys); adapters wanting closed-by-default keep their own hardening (alkhttp's CompiledInputSchema composes unchanged). - motivated by alktty review #001 L1: the channels open-op wrapper hands the registry-checked input to the OpenHandler as the authoritative params, which requires the registry to validate it. Verification: cargo test 596 lib (6 new: invoke/streaming/sink enforcement, fail-closed registration, permissive-{} compile, fork-carries-validator); --all-features 613; clippy -D warnings clean; fmt clean; doc 0 warnings; publish --dry-run ok. alkhttp 438+16 tests pass against 0.3.1 (registry) — re-verify against the published 0.4.0 after upload.
This commit is contained in:
1 parent
ba94c70eb2
commit
574f58442a
4 files changed
+358
-9
No files matched your search
+1
-1
@@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "alkcall"
|
||||
version = "0.3.1"
|
||||
version = "0.4.0"
|
||||
edition = "2021"
|
||||
rust-version = "1.85"
|
||||
license = "MIT OR Apache-2.0"
|
||||
|
||||
Reference in new issue
Block a user