DOMAIN. The link to GIMP's MCP server as a value, and the decision of what to do about it as a value.
Nothing here touches a socket, a process or a bus. An adapter OBSERVES the
world into an Observation; this namespace CLASSIFIES it into a
LinkState and PLANS a HealPlan; the executor in
hive-gimp.lifecycle.heal runs the plan's steps through the port. The
decision is therefore testable with nothing but maps.
Two open sets, both extended by registration (OCP):
classify rules are data in classification, checked in order; a new
state is a new row.
plan-for a multimethod on the state; a new state's remedy is a
defmethod, never an edit to a case.
Escalation is a function of HISTORY, the step kinds already run in this
heal. A remedy that was tried and did not take is not tried again the same
way: restart-server before kill-listener, one relaunch before giving
up. That is what keeps heal! bounded without a retry counter per state.
DOMAIN. The link to GIMP's MCP server as a value, and the decision of what
to do about it as a value.
Nothing here touches a socket, a process or a bus. An adapter OBSERVES the
world into an `Observation`; this namespace CLASSIFIES it into a
`LinkState` and PLANS a `HealPlan`; the executor in
`hive-gimp.lifecycle.heal` runs the plan's steps through the port. The
decision is therefore testable with nothing but maps.
Two open sets, both extended by registration (OCP):
classify rules are data in `classification`, checked in order; a new
state is a new row.
plan-for a multimethod on the state; a new state's remedy is a
`defmethod`, never an edit to a `case`.
Escalation is a function of HISTORY, the step kinds already run in this
heal. A remedy that was tried and did not take is not tried again the same
way: `restart-server` before `kill-listener`, one relaunch before giving
up. That is what keeps `heal!` bounded without a retry counter per state.Ordered [state predicate] rows. Order is meaning: answering beats
everything, and a listener that does not answer is wedged whoever owns it.
Ordered `[state predicate]` rows. Order is meaning: answering beats everything, and a listener that does not answer is wedged whoever owns it.
(classify observation)The LinkState of an Observation.
The `LinkState` of an `Observation`.
Headless GIMP 3.2 takes 10-25 s to load its plug-ins before the MCP procedure runs, so a minute is the honest wait, not a generous one.
Headless GIMP 3.2 takes 10-25 s to load its plug-ins before the MCP procedure runs, so a minute is the honest wait, not a generous one.
Step kinds already run in this heal, oldest first.
Step kinds already run in this heal, oldest first.
What an adapter saw, all at one instant.
:listening? something accepts TCP on the port
:answering? the MCP plug-in answered check_server with running true
:gui? a GUI GIMP owns org.gimp.GIMP.UI on the session bus
:owned? a headless GIMP that hive-gimp launched is still alive
What an adapter saw, all at one instant. :listening? something accepts TCP on the port :answering? the MCP plug-in answered `check_server` with running true :gui? a GUI GIMP owns `org.gimp.GIMP.UI` on the session bus :owned? a headless GIMP that hive-gimp launched is still alive
(plan observation history)(plan observation history policy)The HealPlan for observation, given the History of this heal.
[observation history] uses default-policy.
The `HealPlan` for `observation`, given the `History` of this heal. `[observation history]` uses `default-policy`.
The remedy for one LinkState, given what this heal already tried.
The remedy for one `LinkState`, given what this heal already tried.
A headless GIMP hive-gimp launched: enough to report and to stop it.
A headless GIMP hive-gimp launched: enough to report and to stop it.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |