1.5 KiB
1.5 KiB
Action Approval Data Model
Actions are JSON files stored in /opt/homelab/actions/{status}/{action_id}.json.
Statuses
pending: Waiting for operator approval.approved: Approved by operator, ready for execution.rejected: Rejected by operator, will not be executed.running: Currently being executed by an agent.completed: Successfully executed.failed: Execution failed.
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.