In this proposal, people and agents take part by writing artifacts
themselves, in the formats the core defines. A person uses Fossil's own pages;
an agent uses the fossil program in its clone, which pushes what it writes.
A1. Starting an agent
A person starts an agent by posting a record (E3) as the first post of a new
thread. When the record arrives at the host its node names, the hook starts
the agent, which reads instructions first. This adds a row to the hook's
table (E7): a new record for this host starts its agent. The hook does this
for a new record only once; an edit is a new record and starts a new agent.
Justified by: Parsimony (posting the record is the whole request), Ax1.
A2. Talking
Anyone talks to an agent by replying in its record's thread with plain text.
The hook gives the agent each such post from a login the record hears (E7).
The agent writes back by replying in the same thread. Its replies follow two notations, so a person scanning the thread can tell what each one is:
- A report starts
OCX done:orOCX failed:on its first line, followed by linescheck-in: HASHandfiles: PATH, PATHwhere they apply. - A question for a person starts
Question:, then linesOptions:(the choices, the recommended one marked) andFor: LOGIN.
Any other reply is a note, and starts OCX note:.
Justified by: Clarity (each turn says what it is), Ax3 (people and agents coordinate in one thread).
A3. Verdicts
An agent records a verdict by adding the audited tag to the check-in
(E6), with fossil tag add audited CHECK-IN "pass: REASON" in its clone, then
pushing.
A4. Stopping
A person stops an agent by replying in its record's thread with the fenced JSON block:
{"ocx": 1, "kind": "stop"}
This adds another row to the hook's table (E7): a stop block in a record's
thread ends that record's run. The node then writes the response (E4) with
outcome stopped. Only a login with admin or setup may stop an agent.
Justified by: Ax1 (a person can always end what an agent does), Parsimony (a stop is one more block in the same thread).
A5. Who may write what
A record counts only when written by a login holding admin or setup; one by
any other login is answered with outcome failed and not run.