{
	"actionTypeId": "amber.session.approve",
	"version": 1,
	"title": "Approve session gate",
	"goal": "Record human approval for a session gate.",
	"mode": "interactive",
	"parameters": {
		"sessionId": {
			"type": "string",
			"required": true,
			"description": "Session id whose gate is being approved."
		},
		"gate": {
			"type": "string",
			"required": true,
			"description": "Gate id to approve (e.g. user-approval-plan)."
		}
	},
	"submissionCriteria": ["session exists", "gate id is known for the session route"],
	"effects": {
		"edits": [
			".amber/sessions/<id>/manifest.json",
			".amber/sessions/<id>/ledger.jsonl",
			".amber/sessions/<id>/gates/<gate>.decision.json",
			".amber/sessions/<id>/timeline.jsonl"
		],
		"sideEffects": ["timeline-event", "ledger-append"],
		"rollback": true
	},
	"evidenceRequired": ["approval-record"],
	"timeout": 120,
	"governance": {
		"policy": "governance/policy.md#approval-gates",
		"approver": ["human"],
		"evidence": ["approval-record"],
		"circuitBreaker": true,
		"worktreeIsolation": false
	},
	"execution": {
		"command": "session",
		"subcommand": "approve",
		"args": [
			{ "flag": "--session", "source": "parameters.sessionId" },
			{ "flag": "--gate", "source": "parameters.gate" }
		]
	}
}
