Skip to content

Wireframe: Workbench Policy Enforcement IA - #4022

Closed
wailingwombat wants to merge 6 commits into
masterfrom
workbench-policy-enforcement
Closed

Wireframe: Workbench Policy Enforcement IA#4022
wailingwombat wants to merge 6 commits into
masterfrom
workbench-policy-enforcement

Conversation

@wailingwombat

@wailingwombat wailingwombat commented Aug 18, 2026

Copy link
Copy Markdown
Collaborator

Summary

Clickable wireframes for programmable workbench policies (backend in #4014). Screens are aligned to the GraphQL types:

  • Policyname, type, description, policy, project, policyEvaluations, bindingPolicies
  • PolicyEvaluationinput, output, policyIds (read-only samples)
  • WorkbenchPolicy — nested policy + matches.regexes (no ignore on the API)

Prototype: http://127.0.0.1:8080/index.html (or open docs/wireframes/workbench-policy-enforcement/index.html)
IA + field map: docs/wireframes/workbench-policy-enforcement/README.md

This PR does not implement the Console UI.

CRUD vs types (corrected)

Type Create Read Update Delete
Policy createPolicy({ name, type, description, policy, projectId }) list + detail (all scalars) same attributes; editor is the policy string plus name/type/description/project deletePolicy(id)
PolicyEvaluation none (evaluator writes samples) policy.policyEvaluations as input/output/policyIds maps none; evaluatePolicy is a query replay none
WorkbenchPolicy createWorkbenchPolicy(workbenchId, { policyId, matches: { regexes } }) workbench list; name/type from nested policy updateWorkbenchPolicy matches only — policy is immutable deleteWorkbenchPolicy(id)

Policy has no workbenches connection. Attachments live on the workbench. Policy’s child tabs are Evaluations and Bindings.

WorkbenchPolicyMatches only has regexes. Ignore names were removed from the attach form until they exist on GraphQL.

Screens

Policies list

Rego editor

Simulate evaluation

Gatekeeper rename

Attach policy to workbench

Workbench launch with policies in side panel

Screenshots above are from the previous pass; open the HTML for the GraphQL-aligned fields (Bindings tab, evaluation maps, matches.regexes-only attach, edit-matches-only).

Test Plan

Visual review of the HTML prototype. No product tests.

Checklist

  • I have added a meaningful title and summary to convey the impact of this PR to a user.
  • If required, I have updated the Plural documentation accordingly.
  • I have added tests to cover my changes.
  • I have deployed the agent to a test environment and verified that it works as expected (required only when changing agent code).

Plural Flow: console

To show artifacts inline, enable in settings.

Open in Web Open in Cursor 

Interactive Console-style prototype for programmable OPA/Rego policies:
security sidenav (Policies vs Gatekeeper), policy CRUD with editor and
evaluation simulation, and workbench attach matching chatbot/webhook flow.

Co-authored-by: Anna Nguyen <wailingwombat@users.noreply.github.com>
@soffi-ai

soffi-ai Bot commented Aug 18, 2026

Copy link
Copy Markdown
Soffi AI Summary

This PR delivers interactive HTML wireframes and an information architecture (IA) document for the upcoming Workbench Policy Enforcement feature (backend tracked in #4014). It is purely a design/prototype artifact — no production Console UI code is included.

The wireframes model the GraphQL API surface accurately across three core types:

  • Policy — CRUD screens: list (with separate tabs for Enforcement vs. Auto-attach policies), create/edit form (name, type, description, Rego policy body as an open text field, project), detail view with Evaluations and Bindings child tabs, and delete.
  • PolicyEvaluation — read-only evaluation samples shown as input/output/policyIds maps; a "Simulate" flow replays evaluatePolicy.
  • WorkbenchPolicy — attach-policy modal on the Workbench (captures policyId + matches.regexes only, since ignore names don't yet exist on the GraphQL API), edit-matches-only update, and delete.

The prototype went through several iterations: initial IA scaffolding → alignment to GraphQL CRUD fields → a short-lived simplification of the policy body to a plain textarea (reverted) → reintroduction of the body field inline in the create flow → splitting the policy list into Enforcement and Auto-attach tabs. A README documents the full field map, screen inventory, and CRUD matrix for handoff to frontend engineers.

Commits

Commit Summary
1fbfa82 Bootstraps the wireframe prototype: adds the HTML file with app chrome, sidenav, and placeholder screens for Policies list, Policy detail (body/simulate tabs), Workbench attach modal, and Workbench launch panel. Also adds the README with initial IA and field map, plus screenshot assets.
060f754 Realigns all wireframe screens to the actual GraphQL CRUD model: Policy gets Evaluations and Bindings tabs (not a workbenches connection), WorkbenchPolicy attach form is restricted to matches.regexes only, and edit is constrained to matches (policy is immutable after attach).
fd9e2d5 Simplifies the policy body field to a plain open textarea, removing the Rego-specific editor chrome — later reverted.
0b1b5e9 Reverts the textarea simplification, restoring the Rego editor presentation in the policy body screen.
4e7934d Adds the policy body text form inline to the Create Policy flow so the full Rego editor is visible during creation, not just on the detail view.
c4ef41e Splits the Policies list into two tabs — Enforcement and Auto-attach — making the policy type distinction visible at the list level rather than only in the detail view.

Updated: 2026-08-18 20:40 UTC

Deploy in Soffi

cursoragent and others added 5 commits August 18, 2026 18:26
Policy list/detail now use name, type, description, project, policy, and
bindingPolicies. Evaluations show input/output/policyIds maps only.
WorkbenchPolicy attach is policyId plus matches.regexes; ignore and
immutable policy-on-edit are corrected.

Co-authored-by: Anna Nguyen <wailingwombat@users.noreply.github.com>
The Body tab is now a single textarea for Policy.policy instead of a
split metadata form plus highlighted editor.

Co-authored-by: Anna Nguyen <wailingwombat@users.noreply.github.com>
Create policy step two is now an open textarea for Policy.policy instead
of jumping to the edit screen.

Co-authored-by: Anna Nguyen <wailingwombat@users.noreply.github.com>
Keep WORKBENCH/STACK as place icons on the default Enforcement tab
and BINDING on Auto-attach, instead of a flat type chip.

Co-authored-by: Anna Nguyen <wailingwombat@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants