-
Notifications
You must be signed in to change notification settings - Fork 87
Implement a deterministic resource identifier codec with namespace isolation #388
Copy link
Copy link
Closed
Labels
GrantFox OSSGrantFox Open Source Sponsorship program tagGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesIssue may qualify for a reward upon successful completion per campaign rulesThird CampaignOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsaccess-controlAccess evaluation, permissions, authorisation rules, and protected resource logicAccess evaluation, permissions, authorisation rules, and protected resource logicadvancedAdvanced difficulty tasks requiring significant domain knowledge and implementation effortAdvanced difficulty tasks requiring significant domain knowledge and implementation effortbackendBackend services, application logic, persistence integration, and server-side functionalityBackend services, application logic, persistence integration, and server-side functionalitytype-safetyTypeScript type system improvements and strict type enforcementTypeScript type system improvements and strict type enforcement
Description
Activity
Metadata
Metadata
Assignees
Labels
GrantFox OSSGrantFox Open Source Sponsorship program tagGrantFox Open Source Sponsorship program tagMaybe RewardedIssue may qualify for a reward upon successful completion per campaign rulesIssue may qualify for a reward upon successful completion per campaign rulesThird CampaignOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsOfficial FWC26 campaign issue — eligible for campaign scoring and rewardsaccess-controlAccess evaluation, permissions, authorisation rules, and protected resource logicAccess evaluation, permissions, authorisation rules, and protected resource logicadvancedAdvanced difficulty tasks requiring significant domain knowledge and implementation effortAdvanced difficulty tasks requiring significant domain knowledge and implementation effortbackendBackend services, application logic, persistence integration, and server-side functionalityBackend services, application logic, persistence integration, and server-side functionalitytype-safetyTypeScript type system improvements and strict type enforcementTypeScript type system improvements and strict type enforcement
Difficulty: Advanced
Type: Feature
Recommended labels (if available in this repo): access-control, backend, type-safety, advanced
Background
GuildPass access-control systems will eventually need to reference many kinds of protected resources, including communities, governance objects, channels, documents or external integrations.
Using unstructured strings for resource identifiers creates ambiguity and makes permission matching harder to validate safely.
This issue introduces a standalone namespaced resource identifier codec.
Problem
There is currently no canonical Core representation for identifiers such as
community:abc,document:123or nested resource paths.Manual string concatenation can introduce escaping errors, namespace collisions and multiple textual representations for the same logical resource.
Expected Outcome
Implement a strongly typed resource identifier parser and formatter with explicit namespace and segment validation.
Suggested Implementation
A parsed identifier may resemble:
The module should:
For example, if
/is used as a segment delimiter, literal/inside a segment must either be forbidden or encoded unambiguously.Acceptance Criteria
pnpm typecheckpasses.pnpm buildpasses.pnpm testpasses.Likely Affected Files/Directories
Independence Requirement
This issue must be independently implementable from
mainand must not depend on a resource service, policy engine or another campaign contribution.