fabro/docs/public
Brandon McNama 465cc66283
feat(approvals): auto-approve child starts by parent workflow policy
A workflow agent that spawns child runs forces every dispatch through an
operator checkpoint, even for dispatcher workflows whose whole purpose is
unattended fan-out. The only workaround today is out-of-band approval
hooks that poll the runs API and click approve from the host, which needs
a server token inside the worker host and leaves the decision recorded
nowhere near the run it approved.

Give the platform a first-class policy path instead: a child start is
auto-approved only when the server enables
`[server.approvals] allow_child_auto_approval` and the spawning parent's
registered `workflow.toml` opts in with `[run.children] auto_approve`.
Both defaults stay false, so nothing changes for existing workflows.

The decision is read from the parent's persisted spec at start time, so a
config reload affects future starts only, reassigning a run's parent link
cannot change the policy, and `RunIntentArgs.auto_approve` keeps its
existing meaning (the child's own agent-interaction posture) without ever
bypassing the lifecycle checkpoint. A worker start outside its own
parentage fails closed to the operator gate.

Auto-approved children record a distinct `auto_approved` lifecycle
transition and project `approval.state = approved` with a decision
timestamp in one pass, so lifecycle history is auditable and no transient
pending state is ever observed.

Note: this commit depends on lithoscomputer/petri accepting the
platform-only `[run.children]` workflow.toml section; the Cargo.lock bump
to the merged rev lands with that PR.
2026-10-15 15:27:59 -04:00
..
administration feat(approvals): auto-approve child starts by parent workflow policy 2026-10-15 15:27:59 -04:00
agents Adopt Petri skill expansion boundaries 2026-10-14 17:34:34 -04:00
api-reference feat(approvals): auto-approve child starts by parent workflow policy 2026-10-15 15:27:59 -04:00
changelog Remove unsupported workflow playground 2026-09-03 12:04:35 -04:00
core-concepts Scope run model clients with session headers 2026-10-14 12:44:52 -04:00
examples Let a node execute max_visits times before the cycle guard fires 2026-08-05 21:01:53 -04:00
execution feat(approvals): auto-approve child starts by parent workflow policy 2026-10-15 15:27:59 -04:00
getting-started refactor: rationalize server secret scopes (vault-only for optional int… (#401) 2026-05-25 17:26:01 -04:00
human-tools fix(config): disable Slack unless configured 2026-06-02 18:41:36 -04:00
images Add system resources settings page (#328) 2026-05-20 17:22:53 -04:00
integrations Move stage credentials to Petri's spawn env and let the managed token win 2026-10-05 19:26:08 -04:00
languages refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
logo refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
reference Remove early-access banner from server docs 2026-10-06 16:16:58 -04:00
tutorials refactor(graphviz): parse node classes in one place 2026-07-29 22:15:30 -04:00
workflows Build the run's display graph from Petri's admission 2026-09-19 11:41:58 -04:00
.mintignore refactor(docs): move .mintignore into docs/public and update skill paths 2026-04-27 07:29:59 -07:00
docs.json Fix the Mintlify docs deployment 2026-09-28 17:26:49 -04:00
dot-highlight.js refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00
favicon.svg refactor(docs): split docs/ into public/ and internal/ 2026-04-27 07:21:13 -07:00