Tasks
Part of the team file — The team's one task source — a file the owner committed, or a tracker behind the owner's broker — and the policy that decides what crosses.
Names the team's one task source. It is an owner section: only the owner writes it. Omitted, it
reads as null and team issues refuses rather than inventing a path.
tasks:
source: file
path: .agents/tasks.yamlor, for a tracker behind the owner's broker:
tasks:
source: linear
linear:
project: 01234567-89ab-cdef-0123-456789abcdef
keychainService: team.linear.acme
policy:
omit: [description]
transform:
id: baresourceisfileorlinear. A file source is the list the owner committed; a broker source is a tracker the owner's broker reads — the credential stays with the broker (team broker), andteam nextasks it over.agents/broker.sock.team issueslists a file source only.pathis required forsource: fileand refused forsource: linear. It is relative to the checkout and must stay inside it. An absolute path, a~path, or a..that leaves the checkout is refused:tasks.path must stay inside the checkout. The linear block is refused the other way:tasks.linear is for source: linear.linearis required forsource: linear, with exactlyprojectandkeychainService. A missing half istasks.linear.project is requiredortasks.linear.keychainService is required.policyis forsource: linear— forsource: fileit is refused withtasks.policy is for a broker source; source: file has no broker. It says which record fields cross the broker's boundary:allownames the set,omitremoves from the default, the two are not used together (tasks.policy: allow and omit are not used together), andidandtitleare the record itself —allowmust name both,omitmust name neither. A name that is not a task field istasks.policy.allow lists "foo", not a task field(likewiseomit). With nopolicythe nine typed fields cross anddescriptiondoes not.transformhas one defined value,id: bare: an id that arrives as its source URL crosses as its last/-separated segment. Anything else istasks.policy.transform: only id: bare is defined in this build.pullis optional:selforany. Omitted,team nexttreats it asselfand the parsed section does not gain the key. Any other value istasks.pull must be self or any.fallbackis optional:fileorid. It orders records that have no priority. Omitted, those records keep file order. It does not reorder a record that has a priority. Any other value istasks.fallback must be file or id.cadenceis optional: a duration with its unit written, ins,morh, such as120sor10m. Omitted, the parsed section does not gain the key, and no default is supplied.cadenceis the paceteam next --waitre-reads the source at. It governs nothing else: not the watch, not the lease. Zero is not a pause: a value that measures to zero, such as0sor0.0m, istasks.cadence must be greater than zero. Any other value, including a quoted one, istasks.cadence needs a value with its unit (s, m, h), such as 120s or 10m.- Any other key, including
backoffandquiet_hours, is an unknown field.
The file at path is a YAML list of task records. team issues reads it. team next claims one
record from it, and claims one from a broker source's read the same way — the lease stays local
either way. Nothing in this build writes the file or the tracker.