Act Layer
The act layer gives SABLE "hands" without giving it unsupervised authority.
Principle
- Propose, never write directly.
- No deletes.
- Never default unmatched owners to the project manager.
- Every proposal links back to source truth.
- Every executed action writes audit.
Canonical V1 Loop
Approval Payload
An asana_task_create approval payload may contain:
{
"action": "create",
"task_id": "task-uuid",
"project_id": "project-uuid",
"text": "Send the launch CSV",
"owner_id": "person-uuid",
"owner_email": "owner@example.com",
"owner_name": "Chris",
"due": "2026-07-01",
"unmatched_owner": false
}
edited_payload overlays payload at execution time.
Gated Execution
asana-act atomically claims an approved approval by moving it to executing before calling Asana. If Asana or follow-up persistence fails, the function records failed and the error result.
Future Action Kinds
The current code implements asana_task_create. The spec leaves room for:
asana_task_closeemail_draftscope_flagboard_update