-
-
Notifications
You must be signed in to change notification settings - Fork 0
0.18.0
Hussein Jarrar edited this page Sep 12, 2026
·
2 revisions
42 changes · 12 Bugfixes, 14 New Features, 7 New UI Features, 5 Chores, 4 Uncategorized · 253 points.
-
RADD-822 field scope and field grants both say "project", so per-project restriction reads as missing
accessauthfieldsux· 3 pts ·3c560737Audit finding F12. A capability that exists but reads as missing is worth about as little as one that does not exist — and this one was reported as a suspected gap by the person who designed the system. -
RADD-810 ten client gates check a non-global atom globally, and nothing can tell
authuxweb· 5 pts ·0aa40f32RADD-808 fixed the Pages nav askingperms.global(page.read)for an atom that has been SPACE-scoped since RADD-791. A mechanical audit says it was not alone. -
RADD-824 nine manage atoms are never checked, and view.manage hides a button the API allows
accessauthux· 5 pts ·12ecc7ceAudit finding F13, from a direct question: doesmanageserve any real purpose? Measured rather than argued. -
RADD-840 search leaks read-restricted description text, and SLQ is a value oracle for restricted fields
accessaifieldssearch· 5 pts ·7bcdcadcThe corrected H3 (docs/specs/115-review/01-corrections.md§1). The audit worried about custom fields reaching the search index; they never do —search_indexhas four text columns (search/models.py:19-30), the indexer writes only those (indexer.py:81-87), andFieldDefinition.indexedis dead code. What IS live… -
RADD-839 five cross-project read leaks: timesheet, link/parent/epic hydration, SLQ autocomplete, rollup descendants
accessauthitemstimelogging· 5 pts ·9eb88ae6Found by the spec-115 review (docs/specs/115-review/01-corrections.md§2): fivereadable_projects-level holes in the CURRENT model — live today, no relations involved. They belong in phase 0 beside RADD-834, both because they leak now and because fixing them builds exactly the plumbing relations (RADD-823/817)… -
RADD-834 bulk MOVE skips field grants, workflow guards and approvals; history publishes restricted field values
accessauthitems· 5 pts ·7294e05fTwo live holes. Re-pointed by the spec-115 review (docs/specs/115-review/01-corrections.md§1): the audit cited bulk edit; the code says bulk edit is clean and the hole is bulk move — and it is worse than filed, because it skips more than field grants. -
RADD-807 CD downloads Helm from the internet on every deploy, so an outbound blip fails a release
cideploy· 3 pts ·7c36b576 -
RADD-807 CD downloads Helm from the internet on every deploy, so an outbound blip fails a release
cideploy· 3 pts ·78b7a6b7 -
RADD-807 CD downloads Helm from the internet on every deploy, so an outbound blip fails a release
cideploy· 3 pts ·744e8617 -
RADD-834 bulk MOVE skips field grants, workflow guards and approvals; history publishes restricted field values
accessauthitems· 5 pts ·fd4b4c87Two live holes. Re-pointed by the spec-115 review (docs/specs/115-review/01-corrections.md§1): the audit cited bulk edit; the code says bulk edit is clean and the hole is bulk move — and it is worse than filed, because it skips more than field grants. -
RADD-824 nine manage atoms are never checked, and view.manage hides a button the API allows
accessauthux· 5 pts ·1a1eb5f5Audit finding F13, from a direct question: doesmanageserve any real purpose? Measured rather than argued. -
RADD-822 field scope and field grants both say "project", so per-project restriction reads as missing
accessauthfieldsux· 3 pts ·3c503d1fAudit finding F12. A capability that exists but reads as missing is worth about as little as one that does not exist — and this one was reported as a suspected gap by the person who designed the system.
-
RADD-828 no anonymous reporting: email ingest provisions a requester account instead
accessauthformsservicedesk· 8 pts ·1eca1ad1Decision (Hussein, D9 + review Q1): drop anonymous reporting entirely. Email ingest auto-provisions a requester account for the sender, holding a dedicated seeded Requester role — not the Baseline./public/pagesand/public/csatstay. Rewritten by the spec-115 review to match the recorded decisions… -
RADD-820 grants carry an expiry and a granted-by, so access reviews are possible
accessauth· 5 pts ·cb1a561cAudit finding F11. The smallest item in the epic and independent of every other one — it can land whenever. -
RADD-826 project admins assign roles on their own project
accessauthux· 5 pts ·03cf43e5Decision D3 (Hussein): a project admin grants and revokes existing roles on their own project without holding globalrole.manage. Creating and editing role definitions stays instance-wide. -
RADD-818 plugins can register access resources, and uninstall sweeps their atoms
accessauthpluginmgr· 8 pts ·241be006From the brief: "we need to make sure that new plugins dynamically can register with the RBAC / CRUD system so their permissions can be managed by the same entities Team, User, Role etc." -
RADD-819 deny precedence, so "this team cannot edit Priority" is one rule
accessauth· 5 pts ·c3d31f11Audit finding F3. Every layer of the access system is additive, and field grants are allowlists, so the most natural way an admin phrases a restriction is the one shape the model cannot take. -
RADD-816 every verb means one thing: normalise CRUD and make ownership a modifier
accessauth· 8 pts ·4b47586aFrom the brief: "the Manage, Create, Update, Edit, Delete need to actually represent what they do." They do not. Audit findings F4, F5, F6. -
RADD-817 items adopt relations: own, assigned, and team
accessauthitems· 8 pts ·0a46ef0cThe single largest capability gap the audit found (F2), and the one scenario in the brief that is outright impossible today. -
RADD-823 relations: a kernel mechanism for "mine / my team's / anyone's" on any resource
accessauthkernel· 13 pts ·1b382dc9The single missing concept behind six impossible scenarios across four different resources. Spec 115 §5.4a has the full design. -
RADD-831 the LDAP sync syncs groups, not linked teams
authldapteams· 8 pts ·99387397The directory half of RADD-827.modules/ldap/groupsync.pycurrently pushes users into teams that are linked to an AD group. After this it syncs groups as groups, including their nesting, and stops knowing that teams exist. -
RADD-830 the subject graph: one memoised resolution of who an actor is
accessauthteams· 8 pts ·41e5ec7fThe performance-critical half of RADD-827, and the piece every other part of the wave resolves through. Spec 115 §5.6a. -
RADD-829 the groups entity, nesting, and the migration off linked teams
authldapteams· 8 pts ·6e9addc5The foundation of RADD-827. Spec 115 §5.6a has the design. -
RADD-814 scope becomes a property of the grant, not the atom
accessauth· 13 pts ·c89cd0e4The root cause behind six shipped bugs, and the thing that makes the roles matrix confusing to read. Audit finding F1 (docs/specs/115-access-control-audit.md§2). -
RADD-809 the permission inspector: resource grants, Team view, and backlinks to the source
authux· 8 pts ·5b9dbfacRADD-779 shipped the inspector and it works:GET /users/{id}/permissions[?project_id=]returns every atom with its provenance — baseline, which named role, whether an umbrella implied it, or the instance-admin short-circuit. -
RADD-823 relations: a kernel mechanism for "mine / my team's / anyone's" on any resource
accessauthkernel· 13 pts ·6fd0e984The single missing concept behind six impossible scenarios across four different resources. Spec 115 §5.4a has the full design.
-
RADD-836 make access legible: View as, audience indicator, a real refusal, impact preview
accessauthuxweb· 13 pts ·cfea85c2Four usability pieces that are not polish: each is what makes the model in spec 115 operable, and each is cheapest built beside the thing it explains. Spec 115 §5.10. -
RADD-815 the roles matrix groups by resource, and scope is chosen on the grant
authuxweb· 5 pts ·15a0aa59The UI half of RADD-814, and the part the brief actually complains about: "this messiness of needingitem.viewon global scope even when I want it limited to a project must be solved, because it is confusing and not obvious to someone managing permissions." -
RADD-833 Groups admin screen, and the inspector shows the path
authteamsuxweb· 5 pts ·339477acThe visible half of RADD-827. Without it, groups are a mechanism nobody can see — which is the failure spec 87 recorded when all 47 global atoms were ungrantable for a year because nothing could deliver them. -
RADD-843 the nav shows only what is useful to the actor — one predicate source for sidebar, rail, palette, pins
accessuxweb· 5 pts ·97e93befRequested by Hussein during the spec-115 review; full inventory and per-area rules indocs/specs/115-review/05-nav-gating.md. A user with no access to worklogs should not see the Timesheet link; no readable project → no Projects nav; no readable space → no Docs; cycles the same. -
RADD-842 per-item writability: the SPA gets a per-row capability answer once relations exist
accessfieldsweb· 5 pts ·679c2467Split out by the spec-115 review (docs/specs/115-review/03-execution-plan.mdNEW-D,02-decision-review.mdD10): relations + D10 break a shipped contract nobody listed. -
RADD-832 groups are grant subjects, and teams can contain them
accessauthteamsweb· 8 pts ·c751bd57The half of RADD-827 that delivers the actual ask: "I also want to be able to provide grants to AD groups directly not just through teams." -
RADD-836 make access legible: View as, audience indicator, a real refusal, impact preview
accessauthuxweb· 13 pts ·e581d730Four usability pieces that are not polish: each is what makes the model in spec 115 operable, and each is cheapest built beside the thing it explains. Spec 115 §5.10.
-
RADD-835 sweep every surface that names, counts, links to or notifies about a row
accessauthtesting· 13 pts ·15dd6e95Relations (RADD-823) hide rows. Every surface that names, counts, links to, exports or notifies about a row must resolve through the same seam, or it becomes the leak. Spec 115 §5.9 has the checklist; this issue is the sweep. -
RADD-825 narrow the Baseline to item.read@own, with a pre-flight report first
accessauth· 5 pts ·b2027697Decision D2 (Hussein): the Baseline narrows fromitem.readtoitem.read@own, so a signed-in user sees only issues they reported until granted more. Correct destination — safe-by-default, and the right posture for a service desk with external requesters. -
RADD-841 search_index carries relation columns so relations can reach search
accesssearch· 3 pts ·a830de63Prerequisite for RADD-823/817 reaching search, split out by the spec-115 review (docs/specs/115-review/03-execution-plan.mdNEW-C) because it is a schema change with its own migration and must land before the relations kernel. -
RADD-825 narrow the Baseline to item.read@own, with a pre-flight report first
accessauth· 5 pts ·b4392600Decision D2 (Hussein): the Baseline narrows fromitem.readtoitem.read@own, so a signed-in user sees only issues they reported until granted more. Correct destination — safe-by-default, and the right posture for a service desk with external requesters. -
RADD-821 audit the access system end to end and write spec 115
accessauthdocs· 5 pts ·c2dc0a22A full sweep of the access system — atoms, roles, grant scoping, the spec-92 resource ACL framework, plugin contribution and the inspector — against a brief asking for control at global, project, component and field level, with ~20 named scenarios.
-
docs: codebase scan findings for later review
92c9e7a0 -
RADD-827 Groups are their own entity: teams stop pretending to be directory objects
accessauthldapteams·595ef81cDecision (Hussein): an AD group should be a first-class entity, not something linked to a team. Groups can be members of teams; groups can be granted access directly; teams stay flat. -
RADD-813 access control: full control at every scope, and a model that explains itself
accessauthux·a0c18759The audit is written up in full atdocs/specs/115-access-control-audit.md. This epic carries the work. -
RADD-813 access control: full control at every scope, and a model that explains itself
accessauthux·78f2c653The audit is written up in full atdocs/specs/115-access-control-audit.md. This epic carries the work.
Changes from v0.17.2 to v0.18.0.
Mirrored from project.radd-hq.com on 2026-09-12. Documentation is written there; this copy is regenerated by scripts/publish_wiki.py and hand edits do not survive it.
-
Developer guide
- Architecture: the kernel and plugins
- Develop, test and deploy
- Events and consumers
- Permissions and access control
- The MCP server
- The query language for developers
- The REST API and authentication
- Write a backend plugin
- Write a page editor extension
- Write a plugin user interface
- Write an automation node
-
Release notes
- 0.36.4
- 0.36.3
- 0.36.2
- 0.36.1
- 0.36.0
- 0.35.0
- 0.34.0
- 0.33.0
- 0.32.0
- 0.31.1
- 0.31.0
- 0.30.0
- 0.29.0
- 0.28.0
- 0.27.0
- 0.26.0
- 0.25.1
- 0.25.0
- 0.24.1
- 0.24.0
- 0.23.1
- 0.23.0
- 0.22.0
- 0.21.0
- 0.20.0
- 0.19.0
- 0.18.1
- 0.18.0
- 0.17.2
- 0.17.1
- 0.17.0
- 0.16.0
- 0.15.0
- 0.14.1
- 0.14.0
- 0.13.1
- 0.13.0
- 0.12.0
- 0.11.0
- 0.10.0
- 0.9.2
- 0.9.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.1
- 0.7.0
- 0.6.6
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.1
- 0.4.0
- 0.3.2
- 0.3.0
- 0.2.0
- 0.1.0
-
User guide
- AI features
- Attachments
- Automations
- Cycles and releases
- Instance settings
- Intake forms and the portal
- Notifications and the inbox
- Personal settings
- Project settings
- Projects
- Reports and dashboards
- Search and the query language
- Start here
- The application window
- The card designer
- The roadmap
- The service desk
- The wiki
- Time logging and the timesheet
- Views
- Work items