Follow-up from the PR 706 review. F0.2 landed the sponsor predicate with the correct semantics, but one input is hardcoded false because the hub has nothing to read it from.
Today: a named sponsor who is a real key-bound member evaluates as Undecidable(VouchNotAttested) → operator review. SponsorVerdict::Satisfied is unreachable, so requires_sponsor: true effectively means "every applicant goes to a human." Honest, but not the end state.
Why: identity existence is not evidence of an act. The sponsorship relation is a field the applicant types, and member ids are not secret (public identity file, presence roster, member-to-member knowledge). Crediting resolvability would grant a peer factor the named member never gave.
Work:
- A witnessed sponsoring act — a member signs a vouch bound to (applicant, society, and ideally the applicant's pubkey + a nonce so it is neither forgeable nor replayable to another applicant/society).
- Project it, and have
resolve_sponsor_verdict read it into SponsorFacts::vouch_is_attested (the seam already exists; the law predicate already handles both arms and is tested — see sponsor_consent_tests::an_attested_vouch_satisfies).
- Revocation/expiry semantics for a vouch.
- e2e: an attested vouch auto-admits; a vouch for a DIFFERENT applicant does not transfer; a revoked vouch stops satisfying.
Design note: this is the natural place to reuse the 17A conferral pattern (quorum of witnesses with backing attestations recorded) rather than inventing a second vouching mechanism — worth checking whether sponsorship should simply BE a single-witness conferral.
Follow-up from the PR 706 review. F0.2 landed the sponsor predicate with the correct semantics, but one input is hardcoded
falsebecause the hub has nothing to read it from.Today: a named sponsor who is a real key-bound member evaluates as
Undecidable(VouchNotAttested)→ operator review.SponsorVerdict::Satisfiedis unreachable, sorequires_sponsor: trueeffectively means "every applicant goes to a human." Honest, but not the end state.Why: identity existence is not evidence of an act. The sponsorship relation is a field the applicant types, and member ids are not secret (public identity file, presence roster, member-to-member knowledge). Crediting resolvability would grant a peer factor the named member never gave.
Work:
resolve_sponsor_verdictread it intoSponsorFacts::vouch_is_attested(the seam already exists; the law predicate already handles both arms and is tested — seesponsor_consent_tests::an_attested_vouch_satisfies).Design note: this is the natural place to reuse the 17A conferral pattern (quorum of witnesses with backing attestations recorded) rather than inventing a second vouching mechanism — worth checking whether sponsorship should simply BE a single-witness conferral.