Skip to content

Implement the GuildPass V2 access-control engine #417

Description

@Lakes41

Difficulty

Hard

Type

Feature / Security

Background

Access evaluation is one of the core capabilities of GuildPass. It must produce predictable decisions based on membership, roles, Pass ownership, and configured policies.

Problem

There is currently no V2 access-control engine with a stable request and decision model.

Expected Outcome

Core exposes deterministic access evaluation with explainable results that can be consumed through the SDK and integrations.

Suggested Implementation

Define an access request similar to:

{
  guildId,
  account,
  resource?,
  action?
}

Define a deterministic result similar to:

{
  allowed: boolean,
  reason: string
}

Implement initial policy evaluation for:

  • Guild membership.
  • Member roles.
  • Pass ownership/eligibility abstraction.
  • Combined policy requirements.

Keep blockchain ownership resolution behind an interface so the engine can initially be tested without Soroban.

Acceptance Criteria

  • Canonical access request and result types exist.
  • Membership-based rules are supported.
  • Role-based rules are supported.
  • Pass-based rules have an implementation-independent evaluation boundary.
  • Combined conditions are deterministic.
  • Every decision includes an explainable reason/code.
  • Deny behaviour is explicit and tested.
  • Unit tests cover positive, negative, boundary, and conflicting-policy cases.

Likely Affected Files/Directories

  • src/access/
  • src/services/access/
  • src/domain/
  • src/errors/
  • test/

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Third CampaignOfficial FWC26 campaign issue — eligible for campaign scoring and rewards

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions