Spec for the owner's request of 2026-10-13: create, edit, delete and query users and groups, plus IAM-style permission statements with a UI to build them.
What changes in the design
Owner decisions 17-22 (DESIGN.md section 0.1): policies are edited in QQQ and stored on Authentik groups; the statement model matches the existing IAM-style documents (Allow only; hasAccess/read/insert/edit/delete/*); the format belongs to this qbit with a configurable spec name; the editor UX; delete as an explicit action behind a new DELETE feature; the permission split (read / users / groups / policies, new authentik.policies.manage).
New section 12: storage (qqq.io/policy attribute, authentik_policy history table), how it reaches the session (scope mapping into the qqq_policy claim, AuthentikPolicyClaimMapper, resolver integration so the subset and last-admin rules see policy grants), config, the editor (catalog from metadata, matrix, live JSON, round-trip), CRUD additions, the Authentik permissions writes need, tests, and phases 5a-5c.
docs/POLICY-FORMAT.md: the format, fail-closed rules, canonical form, defaults and config, and how to get policies into the token.
Blueprint examplesrc/test/resources/blueprints/qqq-policy-claim.yaml (pinned by a contract test in phase 5a; not loaded by the existing stack).
Spec for the owner's request of 2026-10-13: create, edit, delete and query users and groups, plus IAM-style permission statements with a UI to build them.
## What changes in the design
- **Owner decisions 17-22** (DESIGN.md section 0.1): policies are edited in QQQ and stored on Authentik groups; the statement model matches the existing IAM-style documents (Allow only; hasAccess/read/insert/edit/delete/*); the format belongs to this qbit with a configurable spec name; the editor UX; delete as an explicit action behind a new `DELETE` feature; the permission split (read / users / groups / policies, new `authentik.policies.manage`).
- **New section 12**: storage (`qqq.io/policy` attribute, `authentik_policy` history table), how it reaches the session (scope mapping into the `qqq_policy` claim, `AuthentikPolicyClaimMapper`, resolver integration so the subset and last-admin rules see policy grants), config, the editor (catalog from metadata, matrix, live JSON, round-trip), CRUD additions, the Authentik permissions writes need, tests, and phases 5a-5c.
- **docs/POLICY-FORMAT.md**: the format, fail-closed rules, canonical form, defaults and config, and how to get policies into the token.
- **Blueprint example** `src/test/resources/blueprints/qqq-policy-claim.yaml` (pinned by a contract test in phase 5a; not loaded by the existing stack).
Docs only; no code.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Spec for the owner's request of 2026-10-13: create, edit, delete and query users and groups, plus IAM-style permission statements with a UI to build them.
What changes in the design
DELETEfeature; the permission split (read / users / groups / policies, newauthentik.policies.manage).qqq.io/policyattribute,authentik_policyhistory table), how it reaches the session (scope mapping into theqqq_policyclaim,AuthentikPolicyClaimMapper, resolver integration so the subset and last-admin rules see policy grants), config, the editor (catalog from metadata, matrix, live JSON, round-trip), CRUD additions, the Authentik permissions writes need, tests, and phases 5a-5c.src/test/resources/blueprints/qqq-policy-claim.yaml(pinned by a contract test in phase 5a; not loaded by the existing stack).Docs only; no code.
🤖 Generated with Claude Code