Skip to content

hub: witnessed vouch event — make sponsor Satisfied reachable (follow-up to PR 706) #707

Description

@dp-web4

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions