Controlled experiments #
AvailableThe /experiments route evaluates new assistance without delegating a business decision.
Controlled assistant #
An administrator explicitly enables the experiment for the organization. A contributor creates a typed proposal with JSON context and visible sources. RiskPilot records source coverage, requester, status and validation. Requesters cannot approve their own proposals: another authorized user must approve or reject them.
No automatic action #
An approved proposal never changes a risk, control or result directly. Automated decisions remain disabled, and transferring a proposal into operational data requires a separate human action.
Internal library #
The library stores a stable key, resource type, JSON content, dependencies, source and licence. Its lifecycle covers draft, review submission, approval and retirement. Revisions create a new version instead of erasing history; import and export support governed exchange.
Good practices #
Enable the workspace only for a defined protocol. Require verifiable sources, separate author and reviewer, examine licences and dependencies, and retire obsolete items while retaining traceability.
Proposal types and separation of duties #
Delivered types are MAPPING_SUGGESTION, GAP_SUMMARY, REPORT_DRAFT and QUESTION_SUGGESTIONS. They use only organization-visible resources and expose their sources. A proposal starts as PENDING; a Risk manager other than the requester chooses APPROVED or REJECTED with a comment. Even after approval, appliedAutomatically remains false.
Library lifecycle #
A resource starts as draft, enters review, then is approved by an administrator or retired. Revision is allowed only from an approved or retired version and increments the version. Every dependency must name a key and an already approved minimum version in the same tenant. Invalid transitions return INVALID_TRANSITION; invalid content, dependency or uniqueness returns INVALID_LIBRARY_ITEM.
Imports support dryRun. A real import is atomic and uniqueness conflicts return HTTP 409. Export returns up to 100 approved items with schema version and export timestamp.
Experiments API #
| Method | Endpoint | Right | ||
|---|---|---|---|---|
| `GET | PUT` | /api/experiments/settings | read; administrator write | |
| `GET | POST` | /api/experiments/assistant/proposals | read; Risk manager create | |
POST | /api/experiments/assistant/proposals/{id}/validate | different Risk manager | ||
GET | /api/experiments/assistant/evaluation | administrator metrics | ||
| `GET | POST` | /api/experiments/library | read; Risk manager create | |
POST | /api/experiments/library/import | Risk manager import or dry-run | ||
POST | /api/experiments/library/{id}/revisions | create a version | ||
POST | `/api/experiments/library/{id}/submit | approve | retire` | governed transitions |
GET | /api/experiments/library/export | approved JSON export |
Governed proposals and copilot #
The former Controlled assistant label is now Governed proposals to avoid ambiguity. This screen retains the tenant-scoped proposal engine and internal library, with separate validation and appliedAutomatically: false. Interactive conversation does not run here; use the global floating button or the AI copilot button attached to each result under Compliance.