mergedhumanPR #243Identity
test: preserve grant key-binding regressions from legacy #172
Retain the key-substitution regression requirement from #172 by @theCodeForgerHQ against current Run Grants.
Description
The pitch.
## Summary Retain the key-substitution regression requirement from #172 by @theCodeForgerHQ against current Run Grants. - Reject a genuine controller-signed grant presented with an unrelated session key's proof. - Reject an altered session-public-key field accompanied by that other key's valid proof and the original controller signature. - Exercise both the verifier and real coordinator join endpoint, including no minted session/permissions and no successful identity/join events on rejection. - Confirm the original authorized holder can still use the same genuine grant afterward. Current Town already signs the session public key and checks the full pinned controller key. This adds missing regression coverage, not a production fix. No runtime, wire format, evaluator version, trust policy or dependencies change. It does not port the legacy attested-peering protocol, operator roster or its empty-trace validator. ## Verification - Fresh baseline `f4e85d7`: **303 passed**. - Candidate: **307 passed**, same 8 existing warnings. - New file: **4 passed** against the real cryptography, coordinator and SQLite store. - Two disposable, process-only mutation runs separately disabled the controller-signature and session-proof checks. Each made its two corresponding tests fail (unexpected acceptance), confirming the discriminators. No mutation was saved into production files. - Self-review checked isolation, positive controls, rejection side effects, resource cleanup and scope. The first integration-test attempt used the wrong events-response shape; that test-only mistake was corrected against the actual API before the above verification. The source PR stays open until this replacement is verified merged. Its closing note will distinguish the retained current regression requirement from the retired implementation.
Try it
Open PR on GitHubView diffCheckout locally
git fetch origin pull/243/head:pr-243
git checkout pr-243