Skip to main content

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_close
  • email_draft
  • scope_flag
  • board_update