public (wzorce/schematy, bez IP/portow/sciezek hostow): observer, capability-model, event-system, standards, agent-operating-procedures, service-model, action-approval-model. private: recon-multiagent, fleet-inventory, fleet-inventory-verify, kb-mail-pillar, kb-documents-pillar, topology, agent-system. deprecated (martwe stuby z 2026-04-15) — visibility private wg rozstrzygniecia 6: access-model, core-stack, legacy-services-list, networking. git mv + frontmatter, tresc nietknieta. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2.1 KiB
2.1 KiB
| okf | type | visibility | status | updated | links |
|---|---|---|---|---|---|
| 0.1 | subsystem | public | active | 2026-05-20 |
Action Approval Data Model
Actions are JSON files stored in /opt/homelab/actions/{status}/{action_id}.json.
Statuses
pending: Waiting for operator approval. AI agents create actions in this state.approved: Approved by operator, ready for execution.rejected: Rejected by operator, will not be executed.running: Currently being executed by an agent (e.g.materializer).completed: Successfully executed.failed: Execution failed.
Human-in-the-Loop (HIL) Protocol
- Request: Agent identifies a required change and writes a JSON to
actions/pending/. - Notification: System notifies the human operator.
- Audit: Human reviews
details.reasonanddetails.diff. - Authorization: Human moves file to
approved/. - Execution: Agent monitors
approved/and executes the task.
Schema
{
"action_id": "string",
"service": "string",
"node": "string",
"type": "deploy_service | restart_service | rollback | scale",
"risk": "nominal | guarded | critical",
"status": "pending | approved | rejected | ...",
"created_at": <unix_seconds>,
"updated_at": <unix_seconds>,
"details": {
"image": "string",
"reason": "string",
"diff": "string"
},
"transition_history": [
{
"from": "string | null",
"to": "string",
"timestamp": <unix_seconds>,
"by": "string (system | operator-tg-12345 | webui)"
}
]
}
Workflow
- A system component (e.g.
runtime-materializeror a future analyzer) creates a file inactions/pending/. telegram-botdetects the file, sends a message to allowed users.- Operator clicks "Approve" or "Reject".
telegram-botmoves the file toactions/approved/oractions/rejected/atomically, appending a transition totransition_history.- The responsible agent (e.g.
stability-agenton the target node) picks up theapprovedaction, moves it torunning, executes it, and finally moves it tocompletedorfailed.