Release 1.35.0
News ·
archied — The Messaging Service is severed from the store and workflow runtime
cmd/archie-messagingno longer linksmodernc.org/sqlite,internal/store,internal/domain/workfloworinternal/agentexec. All four arrived through a single import ofinternal/app/controlplane; the client half now lives ininternal/infrastructure/controlplanerpc, and the app package keeps the server, the registry, the seeds, the validators and the schema derivation.- The resource documents are type-aliased back into the app package, so there is one definition read under two names rather than a copy per side.
archied — Channel lifecycle reaches the dashboard
- The Messaging Service reports each channel’s state, recorded per channel: one channel’s failure
marks only itself, a channel that cannot start is marked failed with its reason rather than only
logged, and one that returns is marked stopped.
internal/channels/status.Managerreports each channel’s state. PutChannelStatus/ListChannelStatuscarry that to the dashboard, following the config-snapshot split. The store replaces the reported set, so a channel the reporter stops mentioning is deleted rather than left as a stalerunning; an empty report clears the table, because hosting no channels is a fact worth reporting; and an id-less row is refused, since it could never be replaced or removed by a later report.Service.ReloadChannelroutes to the channel’s own seam and refuses a channel that cannot reload with a reason rather than accepting and ignoring it.ReloadSupportedwas previously declared by name, so a channel could advertise reload with nothing behind it; one function now decides both.
archied — Action playbooks: a second playbook shape, with typed results
- A playbook is now one of two shapes: a workflow playbook (exactly one
workflowaction, unchanged) or an action playbook (one or moremoduleactions in order). A playbook does not mix them. argsandwhenshare one compilation path and one evaluation context, andactions.<id>is typed by the kind that action runs, so a misspelled result field, an unknown id, a map index,in, a comprehension, or a shape-foreign key (kindon aworkflowaction,workflowon amoduleaction) is a load failure rather than a dispatch failure.- Action playbooks load but do not run yet. Routing arrives with the first side-effecting position; the daemon warns at load rather than accepting them silently.
- The CEL environment is built per playbook, because result typing depends on the ids a playbook declares.
ModuleRegistry.DecodeResultturns a kind’s flat map result into its typedResultbefore a later expression reads it. Without it a typed read evaluated against a shape the run never produces, and so silently read null.
archie-agent
The sandboxed runtime links the same shared packages as archied, so this release carries the channel-lifecycle store contract and the stricter action-load errors with it:
- The channel-status store contract (
PutChannelStatus/ListChannelStatus) and its replace-the-set semantics. - Authoritative module ids and stricter action load errors: a misspelled result field, an unknown id,
or a dynamic
actionsread now fails the playbook load rather than the dispatch.
archied and archie-agent move together in this release.