Vote for your favorite SkillMD. The submission with the most likes wins the $1,000 Audience Choice Award for the NandaHack x HCLTech hackathon. Voting is open through September 25.Vote now →
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.

Author

JamesCarnley avatar

@JamesCarnley

github profile →
Status
Merged
Merged on
Sep 4
Branch
test/grant-key-binding

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 diff

Checkout locally

git fetch origin pull/243/head:pr-243
git checkout pr-243