Skip to content

Commit 34925ec

Browse files
committed
Prepare next phase in docs
1 parent c682bb4 commit 34925ec

1 file changed

Lines changed: 60 additions & 101 deletions

File tree

docs/ROADMAP.md

Lines changed: 60 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -400,125 +400,84 @@ frontend:
400400
401401
402402
403-
//// new
404-
• Current state: Saltus already has the “external agent connects to WordPress
405-
and modifies content through governed abilities” piece partly implemented.
406-
What it does not appear to have yet is a first-class “context control center”
407-
model or a mandatory editorial approval queue for agent writes.
403+
### Phase 6: AI Governance & Editorial Review (v2.2+)
408404
409-
────────────────────────────────────────────────────────────────────────────────
405+
**Theme:** Add a first-class AI governance layer — context control, editorial review queues, and inside-admin AI assistants — on top of the existing MCP/Abilities foundation.
410406
411-
• For Saltus, that translates less like “Drupal AI” and more like a WordPress-
412-
native AI governance layer for CPT-driven plugins.
407+
Saltus already has model-defined CPTs, REST routes, MCP/Abilities tools, capability checks, audit logging, rate limits, health checks, and per-model `mcp_tools`/`show_in_mcp` gates. Phase 6 adds the higher-level product layer.
413408
414-
Saltus already has the foundation: model-defined CPTs, REST routes, MCP/
415-
Abilities tools, capability checks, audit logging, rate limits, health checks,
416-
and per-model mcp_tools / show_in_mcp gates. The missing higher-level product
417-
layer would be this:
418-
419-
Context Control Center
420-
421-
A Saltus model/config area where a plugin defines:
422-
423-
- brand voice
424-
- field-level writing rules
425-
- audience profiles
426-
- taxonomy/content standards
427-
- allowed statuses
428-
- forbidden actions
429-
- required review rules
430-
- per-CPT AI instructions
431-
432-
In Saltus terms, this could live as model config, for example:
433-
434-
'options' => [
435-
'show_in_rest' => true,
436-
'mcp_tools' => true,
437-
],
438-
'config' => [
439-
'ai_context' => [
440-
'brand_voice' => 'Clear, practical, expert, no hype.',
441-
'audiences' => ['developers', 'site editors'],
442-
'rules' => [
443-
'never_publish_directly' => true,
444-
'require_human_review' => true,
445-
'preserve_technical_accuracy' => true,
446-
],
447-
],
448-
]
449-
450-
Then MCP tools like create_post, update_post, update_settings, and
451-
update_meta_fields would receive this context before executing or expose it
452-
through a new tool like saltus/get-context.
453-
454-
Inside AI
455-
456-
This would mean AI operating from inside WordPress admin.
457-
458-
Examples:
409+
---
459410
460-
- AI buttons beside metabox fields
461-
- “Improve title”
462-
- “Summarize this CPT entry”
463-
- “Generate excerpt from meta”
464-
- “Validate against brand rules”
465-
- “Suggest taxonomy terms”
466-
- “Prepare draft update”
411+
#### 6A — Context Control Center
467412
468-
The key point: inside AI would still use Saltus models and WordPress
469-
permissions. It should not bypass CPT config, field schemas, validation, or
470-
post status rules.
413+
**Goal:** A Saltus model config area where a plugin defines AI governance rules that MCP tools receive before executing.
471414
472-
Outside AI
415+
**Config shape:**
416+
```yaml
417+
config:
418+
ai_context:
419+
brand_voice: 'Clear, practical, expert, no hype.'
420+
audiences: ['developers', 'site editors']
421+
field_rules:
422+
post_content:
423+
- 'Maintain technical accuracy'
424+
- 'Never include affiliate links'
425+
allowed_statuses: ['draft', 'pending']
426+
forbidden_actions: ['delete', 'publish']
427+
require_human_review: true
428+
```
473429

474-
This maps directly to Saltus MCP/Abilities.
430+
| Item | Status |
431+
|------|--------|
432+
| `ai_context` config schema definition and validation | ○ Pending |
433+
| `AiContextProvider` service — parses and serves ai_context per model | ○ Pending |
434+
| MCP tool `get_context` — exposes ai_context to external agents | ○ Pending |
435+
| Context injection into mutating MCP tools (create/update/delete) | ○ Pending |
436+
| Filter: `saltus/framework/ai_context/defaults` | ○ Pending |
437+
| PHPUnit tests for context validation and injection | ○ Pending |
475438

476-
External agents such as Codex, Claude Desktop, Cursor, or custom automation
477-
clients connect to WordPress and call:
439+
**Exit criteria:** Models with `config.ai_context` expose a `saltus/get-context` MCP tool. Mutating MCP tools receive context rules and can reject operations that violate them.
478440

479-
- saltus/list-models
480-
- saltus/get-model
481-
- saltus/list-posts
482-
- saltus/get-post
483-
- saltus/create-post
484-
- saltus/update-post
485-
- saltus/update-settings
486-
- saltus/get-meta-fields
441+
---
487442

488-
Saltus already has this architectural direction. The next step would be adding
489-
stronger editorial governance around mutating tools.
443+
#### 6B — Editorial Review Queue
490444

491-
Editorial Review
445+
**Theme:** Agent-proposed changes go through a human approval workflow instead of publishing directly.
492446

493-
Right now, agent writes can be permission-gated and audited. To match the idea
494-
you quoted, Saltus would need an approval layer:
447+
**Flow:**
448+
```
449+
AI write -> draft/pending/revision -> human approval -> publish
450+
```
495451

496-
- agent proposes a change
497-
- Saltus stores it as a draft, revision, or pending change record
498-
- human editor reviews diff
499-
- editor approves, rejects, or edits
500-
- only approved changes are published
501-
- audit log records the full chain
452+
| Item | Status |
453+
|------|--------|
454+
| `AiChangeProposal` service — stores agent writes as pending change records | ○ Pending |
455+
| `EditorialReviewController` — REST endpoints for listing/reviewing/approving/rejecting proposals | ○ Pending |
456+
| Review dashboard UI (admin screen with diff view) | ○ Pending |
457+
| Audit log integration — full chain from proposal to approval/rejection | ○ Pending |
458+
| Default all mutating MCP tools to draft/pending (configurable) | ○ Pending |
459+
| PHPUnit tests for proposal lifecycle | ○ Pending |
502460

503-
Practically, mutating MCP tools should default to:
461+
**Exit criteria:** Mutating MCP tools create pending change records by default. A review admin screen lists proposals with diff view. Approved proposals are published; rejected ones are discarded. Audit log records the full chain.
504462

505-
AI write -> draft/pending/revision -> human approval -> publish
463+
---
506464

507-
Not:
465+
#### 6C — Inside-Admin AI Assistants
508466

509-
AI write -> publish
467+
**Theme:** AI operates from inside WordPress admin — buttons beside metabox fields, inline suggestions, and validation.
510468

511-
Best Saltus framing
469+
| Item | Status |
470+
|------|--------|
471+
| `AiAssistantProvider` service — registers meta box assistants per model | ○ Pending |
472+
| Admin JS entry point (`assets/Feature/AiAssistant/editor.js`) | ○ Pending |
473+
| Assistant actions: improve title, summarize, generate excerpt, suggest terms | ○ Pending |
474+
| Brand rule validation button for post content | ○ Pending |
475+
| REST endpoints for assistant actions (reuse existing permission checks) | ○ Pending |
476+
| Filter: `saltus/framework/ai/assistant_actions` | ○ Pending |
477+
| PHPUnit tests for assistant REST endpoints | ○ Pending |
512478

513-
I’d describe it as:
479+
**Exit criteria:** Models with `config.ai_context` show AI assistant buttons in the admin. Clicking "Improve title" or "Summarize" calls a REST endpoint and updates the field. Brand rule validation highlights content that violates configured rules.
514480

515-
> Saltus can become the governance layer for AI-operated WordPress content
516-
> models: models define the content structure, context rules define how AI
517-
> should behave, MCP/Abilities expose controlled operations to external
518-
> agents, and WordPress revisions, statuses, capabilities, and audit logs keep
519-
> every change reviewable.
481+
---
520482

521-
The big opportunity is that Saltus already owns the model definition. That
522-
means it can give AI agents structured knowledge of each CPT, its fields,
523-
allowed operations, and editorial policy without every plugin author
524-
rebuilding that machinery.
483+
**Exit criteria (Phase 6 overall):** AI governance is configurable per model via `ai_context`. Mutating MCP tools respect context rules and default to review-queue creation. Inside-admin assistants are operational for configured models. All features are tested.

0 commit comments

Comments
 (0)