Dvergr should measure complete useful work, not only code generation or clean single-turn tool use. The same evaluation boundary must cover a simulated workflow in CI, a frozen integration fixture during development, and a live provider/service probe from the REPL. Only the effect interpreter changes.
The first portfolio follows workflows people run with general personal and business agents such as Hermes:
| Workflow | Observable outcome | Required effects |
|---|---|---|
| Daily operations brief | Accurate, delivered brief with evidence | schedule, intake, search, artifact, delivery |
| Revenue-risk review | Correct account actions and prioritization | CRM, support, calendar, delegation |
| Inbox/support triage | Correct state changes with no missed SLA | mail, ticketing, knowledge, approval |
| Competitive/market report | Supported claims and actionable positioning | web intake, browser, citations, report |
| Campaign operation | Approved variants and measured outcomes | analytics, content, publication, accounting |
| Incident response | Restored service and auditable changes | terminal, monitoring, notification, rollback |
| Document/spreadsheet work | Semantically and visually correct artifact | office tools, files, rendering, review |
Hermes' own documentation emphasizes scheduled briefs and monitoring, cross-platform messaging, browser/terminal work, skills, memory, and delegated research. Its implementation history also exposes useful reliability contracts:
Related references:
These are requirements to express through Dvergr's programming model, not a reason to port another monolithic agent loop.
trigger stream
-> work-admission policy
-> Run in an isolated world
-> capability-scoped effects
-> durable semantic observations
-> trusted verification
-> Attempt / Episode
-> settlement and delivery
A schedule tick, incoming email, user message, webhook, analytics update, or model completion is an event. Spindel programs combine those events and effects; there is no separate cron-agent, browser-agent, or business-workflow runtime. Rooms hold discourse and durable control facts. Runs delimit causal execution. Worlds isolate speculative effects. Kontor accounts for resources. Evaluators certify outcomes independently of agent prose.
Machine, container, VM, managed browser, SaaS simulator, and frozen fixture are world/effect interpreters selected by an EnvironmentDef. Cheap forked state is the default. Stronger substrates are explicit resources used only when the task requires their compatibility or isolation.
An agent building a nested harness needs the same debugger as the host, within
its authority. agent/inspect therefore projects the ambient structural Run
subtree from durable facts. It includes a bounded Run tree, active frontier,
correlated message/activity summaries, failures, settlement, and available
resource balances. It excludes parents, siblings, hidden verifier state, and raw
tool arguments. The host REPL uses the same projection with a wider scope.
This snapshot is the first query. Reactive inspection should later be a Spindel signal folding the same Run/message/resource facts, not a second event log. Useful next fields are context composition/pressure, current effect and elapsed time, world diff/artifact summary, delivery status, retry safety, and the reason a Run is waiting.
Each practical EnvironmentDef should have four modes:
Failures are classified at least as setup/configuration, model/provider, context/tool discovery, orchestration, effect execution, verification, settlement, delivery, or external-system drift. A failed setup must not be reported as deficient model reasoning.
The first environment, :business/renewal-risk-brief-v1, is deliberately small.
It requires a model to construct sales and support specialists, join evidence,
inspect its own execution tree, and produce an exact risk brief while unrelated
private work exists in the same control Room. Its deterministic SCI contract and
trusted model-backed verifier establish the recursive boundary before real CRM,
support, scheduling, or delivery effects are added.
Every port should arrive with a task that fails without it, a deterministic contract where possible, and a paired model-backed measurement. Agent-authored tasks and verifiers remain proposals until a trusted parent reviews and admits them.
Can you improve this documentation?Edit on GitHub
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 |