docs: abilities (scopes) - #10
Merged
Merged
Conversation
Covers the whole surface: setup, the two route gates, wildcards, the `TokenContext` argument, derived vs pinned grants, lukk's own gated routes, response codes and the `TokenAbilityDenied` event, the client composable, multi-guard, and the feature flag. Two things get the strongest wording, because both are load-bearing and neither is obvious: - **Name abilities after resources, never after facts about a person.** An ability name travels in the `scope` claim past every proxy and gateway, is published on the user resource, and appears as a literal string in the app's public JavaScript bundle. `hiv_clinic.records.read` is a special-category disclosure at each hop; lukk validates the syntax of a name and can say nothing about its meaning. - **Scope says what a token may do, never which records it may touch.** Per-object authorization stays the app's Policies and Gates — confusing the two is OWASP API1. Also moves abilities from Planned to Shipped on the roadmap, and updates the personal-access-token entry: pinned grants supply the half it was waiting on, so what remains is naming, listing and revocation.
The page already said abilities are re-derived on every mint; it did not say whether the client follows. It does now, and the cost — one request per refresh, and only for apps whose user resource publishes `abilities` — is worth stating rather than leaving someone to discover in a network tab.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Documents lukk 0.6's abilities feature. Server: stsepelin/lukk#29 · Client: stsepelin/lukk-js#50.
Covers setup, the two route gates, wildcards, the
TokenContextargument, derived vs pinned grants, lukk's own gated routes, response codes and theTokenAbilityDeniedevent, the client composable, multi-guard, and the feature flag.Two things get the strongest wording
Name abilities after resources, never after facts about a person. An ability name travels in the
scopeclaim past every proxy, gateway and APM on the path, is published on the user resource, and appears as a literal string in the app's public JavaScript bundle.hiv_clinic.records.readis a special-category disclosure at each hop;clinic_a.records.readis not. lukk validates the syntax of a name and can say nothing about its meaning — so this is the one control that actually works, and it's the integrator's to apply.Scope says what a token may do, never which records it may touch. Per-object authorization stays the app's Policies and Gates. Confusing the two is OWASP API1 (BOLA).
Roadmap
Abilities moves from Planned to Shipped. The personal-access-token entry is updated: pinned grants supply the half it was waiting on — a fixed, per-token set of permissions that survives rotation — so what remains is naming, listing and individual revocation.
Note
Every claim on the page was executed rather than read. That check caught two real defects: a documented ability that nothing granted, and a
TokenContextfield that is always false in the callback that receives it. Both are fixed in the server PR; the page describes actual behaviour.Greptile Summary
The PR documents the abilities/scopes functionality introduced for lukk 0.6 and updates the site navigation and roadmap accordingly.
Confidence Score: 5/5
The documentation-only PR appears safe to merge with no actionable defects identified.
The new page uses supported documentation syntax, its local links and navigation target resolve, and the roadmap changes remain consistent with the documented abilities feature.
Important Files Changed
Reviews (1): Last reviewed commit: "docs: abilities (scopes)" | Re-trigger Greptile