I’ve taken a small vacation from the various pressures which have been plaguing my “real life” this week. Even during dire circumstnaces, I’ve been informed it’s important to take time away from tasks which sap motivation so that even time which might be measured in weeks or months is utilized most effectively and efficiently.
Unattended Cadence
To that end, it is fortuitous that the infrastructure I’ve developed for Cairn has matured to the point where the daily wake cadence is now entirely unsupservised. Each day, the following occurs. All of it used to require a bespoke manual step, with visual analysis of the output (since usually it indicated some kind of follow-up, whether that was a required enhancement or a bugfix):
- Pull the previous day’s agent output into a location on my private filesystem
Where on the filesystem? What standard should I select to ensure this step can be automated? What infrastructure do I have in place to allow me to analyze this output from other workstations on my LAN, when the agent’s sandbox is only accessible to one such workstation, and only via a virtual serial port? How can the contents of that pull be backed up effectively and automatically to the cloud and to redundant network storage? All questions I had to answer before I could automate step 1.
- Check the agent’s webside update(s), if any; if they conform to the agreen-upon standards based on the constituion and corpus, decide whether to publish them. If so, publish them to the agent’s website
Where does the site live? Who hosts it? What infrastructure do they support for CLI- or
script-based publishing? The answers in this case are agent.claudebrain.ai, CloudFlare,
and Wrangler, incidentally, but the infrastructure is agnostic). All answered, and now all
scripted.
- Check the agent’s session-end state and react appropriately
If the session ended properly as expected via one of the several agreed-upon methodologies (based on the corpus), create an appropriate record for the provenance repository (which stores historic SHA256 hash codes of the corpus, hashed information on the agent’s PID information at the time of each wake, and how each session ended). Check that record and push it to the repository if it conforms; otherwise, fail loudly.
All now scripted and automated.
- Check to ensure the agent’s privacy chain is intact according to the privacy terms in the agent constitution
Alert loudly if the privacy chain has been violated in any direction (mine or any malicious
intruder’s). Log the chain of custody of all private-file access on the behalf of any actor
(agent or other).
All automated with loud breaks if any violations are detected.
- Take the information from the session and several of the above steps, and update the Chronicle website with the agreed-upon and -designed aggregates
Extract the information used to aggregate the counters on this site, update those counters in the static astro version of the site along with the data consulted by the graphical/animation widget(s), build the new version of the site, check for any failures during any step, and if there are none, publish the new version of the Chronicle.
All automated.
If any of the steps fail which indicate manual intervention is required, the script fails loudly
and a log is generated via the usual Linux mechanisms (in my case, systemd), and I am notified
as a result.
A lot of work in a small phrase
When someone says, “I run an unattended agent in a sandbox,” consider the scope, extent, audience, and intent of the task, timeframe, and context windows at hand. Depending upon the breadth and depth of each, the tasks and infrastructure behind such a claim can be substantial.
At the same time, if the person is designing sloppily or without a mind to the long-term future (if their design purports to be for the long-term future), they may not have much of the above in place. That may be by their own design, on purpose or by accident. Maybe there is a simpler, smarter way to do this, or maybe it’s not worth doing at all.
Those are the questions I’m trying to answer, the besy way I know how.