Current limits
What the current version cannot do, what to do in the meantime, and where the target version solves it.
| missing | consequence today | in the meantime | in the target |
|---|---|---|---|
| A playbook's conditions on data | a task's or a method's when reads only the chosen kinds ($selection.kinds): not a room fact, nor a total, nor what a task read; and the model does not pick a method (choose: clm) | one kind per case (pickup, delivery), read by when; a guard on the skill (require, check) for a condition on data | Playbooks: when on $read or $result, and choose: clm |
| Playbook activation | nothing opens a journey in the agent's place: it opens it if it wants to, on its goal | auto_trigger on the entry skill | Activation: seek_guidance and three levels |
| One identity per person | one API key per station: everyone is the same user for the tenant | keep sensitive writes for a single-user station | Identity |
| Several calls in one submit | a submit has one call per skill or per kind; a list of two is refused at load | two skills, each with its call, each the task of a playbook, the second reading the first through $submitted[<task>.<call>] | Skills: several calls in order, cited by task, $submitted[task.call] |
| Who submits | always a human, always the person in the room | — | submitted_by, in The submit |
| An approval before the choice | the submit confirmation serves as approval | — | the approval guard, in Guards |
| Reads in the selection | a read leaves no trace; the person who submits does not see what the action is based on | — | read traces, in Concepts |
| Where an argument comes from | the station fixes an argument through invoke.args, to a literal or to a parameter (params) whose value is its default; the model fills the other invoke parameters. A playbook task binds a parameter read at submit to what another task filed ($submitted[…]), not to what a task read ($read[…]) nor to a sub-playbook's result ($result[…]); neither the model nor set_by sets a parameter | have the tenant compute amounts (update: {price: …} guard, invoke) | set_by, and a task's params bound to $read or $result, in Budget: data & time |
| Data going out | data that was read can go back out in a write | do not list an operation that reads confidential data | data classes and audiences |
| Automations | nothing starts on an event from a tool | — | Automations |
| "Smart" rules | no fraud or injection detection by Core | instructions in agent.rules (not guaranteed) | smart policies, which can only tighten |
| Long journeys | a journey lasts as long as one conversation | — | the run belongs to the room |
| Station versions | a modified config applies immediately | test locally before publishing | staging, production, contract tests |
The decisions behind these points: ADR-028 §6, ADR-029, ADR-030, in convoy/docs/adr/.