Botworks manifest+Keccak regrind

080 November 30, 2018 -- (tech tmsr)

This post is a regrind proposal for Trinque's botworks patchset, including ircbot, logbot and trilemabot, as a result of multiple discussion threads in the forum of the Most Serene Republic1.

The new set of V patches is available in my repository. It can be pressed with e.g. as follows:

$ mkdir botworks; cd botworks; mkdir .wot
# Make sure to add spyked.asc key in .wot (via e.g. deedbot)
$ init
# Example: pressing to logbot-genesis
$ p v logbot-genesis logbot-genesis.vpatch

Some notes, starting from the structure of the new V tree:

This particular organization of V patches was chosen in order to preserve both history and the "based on" relation between botworks components -- currently ircbot, logbot and trilemabot. Thus: a. both trilemabot and logbot are based on ircbot, and the Python command router is based on logbot; b. logbot-genesis flows directly from ircbot-genesis; c. trilemabot flows from ircbot-multiple-channels-corrected2; and d. the {logbot,ircbot}-multiple-channels-corrected patches are also "merged" together in a new V patch3.

A consequence of this organization is that trilemabot and logbot being on two separate sides of the tree, at the moment they cannot be pressed together4.

Another consequence is that out of three tested V implementations, one ( is not able to generate a correct press, requiring that only one side of the tree exist in the patches directory5. The other two ( and Esthlos V) however work. For example:

$ ls -1 patches .seals


$ pp logbot_command_router_python_genesis.vpatch
ircbot-genesis.vpatch (spyked)
logbot-genesis.vpatch (spyked)
ircbot-logbot-multiple-channels-corrected.vpatch (spyked)
logbot_command_router_python_genesis.vpatch (spyked)

$ pp trilemabot-prefixed-cmd.vpatch
ircbot-genesis.vpatch (spyked)
ircbot-multiple-channels-corrected.vpatch (spyked)
trilemabot-voicer.vpatch (spyked)
trilemabot-prefixed-cmd.vpatch (spyked)

And yes, e.g. p v my-dir trilemabot-prefixed-cmd.vpatch produces a correct press. Neat, huh? So go grab the patches and tell me what you think!

  1. Long story short: a. the current Republican IRC bot components are to be unified under a single V tree; and b. no new Vtronic work shall be submitted using the heathen SHA hashes, which implies a Keccak regrind before anything. A few references below:

    The last point solves my earlier dilemma on what to prioritize.

  2. While trilemabot-voicer could in principle be a direct child of ircbot-genesis, I, as a trilemabot user who keeps all his bots in multiple channels, don't see any reason for keeping this functionality out. If you feel strongly about this, you're free to submit patches, test results and so on.

  3. This is, as far as I can tell, the cleanest way to represent the fact that the so-called "logbot-with-multiple-channels" depends on both "logbot-genesis" and "ircbot-with-multiple-channels", while at the same time adhering to the "V patch may have only one parent" philosophy that arises from the use of manifests.

  4. Which suggests that this might be the wrong way to cut it (at least for some). Let's take a deeper look at this problem, because it informs other decisions, such as the eventual replacement of ASDF with V.

    First off, we know from numerous discussions in the logs, e.g. 1, 2 or 3, that manifests enforce a linear flow of V patches, to sit well with the linear flow of history. Then a divergence in the V chain, i.e. the existence of a branching point in history, will denote changes that are (semantically) mutually exclusive, such as the particularization of some functionality to a specific hardware architecture.

    This is all good, but I reground the trilemabot and logbot patches -- that provide two disjunct but not mutually exclusive components of the botworks set -- as two divergent branches for a different reason: I for example want to exclude Postgres dependencies from the trilemabot-based spykedbot (I might later want to add a text or MySQL-based logging mechanism, or who knows), while on the other hand Lobbes needs both logging and voicing functionality into his own bot.

    This problem could be solved for example by extending one of the existing branches with the missing functionality -- but which one? Since I'm not sure how to proceed here, I'm submitting this to the forum for discussion. I'm eager to hear your comments!

  5. See also this discussion.