In an interactive fiction app, the generative model could produce scenes and dialogue. The challenge was keeping the consequences: who discovered a secret, which promise was left pending, how a relationship changed and which theme was still open.
A long chat is not a stable source for reconstructing all of that. Repeating the whole history to the narrator eats context and does not guarantee it can tell a lasting fact from an interpretation or an everyday gesture. v2 added a Director that observes every turn and keeps a narrative state separate from the prose.
The orchestration
The flow splits responsibilities:
Narrator: writes the scene and returns actions with the characters identified.
Candidate builder: builds relationship pairs from those identifiers. A small compiler proposes claims about facts, themes and promises.
Jev: answers typed questions about relationship changes, narrative categories, equivalence with recorded matters and who found out.
Domain code: turns valid decisions into events, limits their effect and rebuilds state through replay.
Next-turn context: summarizes what matters for the narrator and retrieves only the memories that belong to that point in the story.
The Director has a core of events and reducers with no model calls; the part that queries Jev lives separately. That way the state logic can be tested without a network and you can check where each consequence came from.
Relationships: a moment mattering does not mean everything changes
Candidates are directed pairs between the protagonist and the other characters present. Direction matters: A’s trust in B can change even if B’s trust in A does not. The first call to Jev asks, in batch, whether there was a genuine change; a second call evaluates dimension, direction and magnitude only for the selected candidates.
Tests showed that a pleasant gesture could get too much weight if you only looked at the intensity of the moment. The calculation added two more signals: the probability that the relationship actually changed and whether someone learned something new about the other person. An everyday coffee and a revelation leave different marks.
The code caps the maximum delta per scene and flips the sign when it relates to tension: improving a relationship can lower tension while trust or closeness go up. It also correctly normalizes Score before applying the change; the raw value represents the criteria scale defined in the question.
Facts: knowing something is not the same as being nearby
For the narrative state, a compiler proposes third-person claims. Jev classifies them as a lasting fact, an open theme, a promise or nothing. Then it compares candidates against what is already recorded and against others from the same turn to avoid semantic duplicates.
The question “who found out?” is asked separately. A character being in the scene does not mean they heard a private conversation or understood an allusion. If they find out several turns later, the list of those who know the same fact is updated; no new identical fact is invented.
The resulting events feed a log from which the state is rebuilt. The summary the narrator receives includes facts known to someone present, relationships expressed in words and pending matters. Memories are also filtered by timeline: a future event or one that happened only on another branch does not get in. That last filter is a code rule, not a Jev decision.
What the test lets us claim
The Director is implemented on a v2 branch and was calibrated with hand-annotated story fragments. There was also a blind comparison of the narrator’s response with and without the Director’s summary on a real session: 20 pairs; 7 preferences for the version with the summary, 5 for the one without it and 8 ties. It is limited evidence of coherence; it does not show a clear improvement in writing quality.
Attributing who knows what still fails in implicit scenes; in manual tests, a generative model used as a judge solved some examples better. Conditional promises also go undetected, and a network failure when querying Jev can still cut the turn short. v2 is under evaluation, with work pending before treating it as a finished solution.
The architectural decision
The separation leaves a readable contract: one model writes, another helps decide what consequences there were, and the code determines what gets recorded and what can be remembered. Jev contributes structured decisions where the question is small and verifiable; the Director contributes rules, traceability and temporal limits.
The value of the case is not in adding a model to the pipeline. It is in being able to point to a turn, a decision and an event when the story remembers something it should not, or forgets something that did happen.
Case based on a working v2 under evaluation. Product, characters, sessions and repository details were anonymized; the figures come from a limited comparative test, not a production measurement.
Agent Development Environment: an environment built to run, organize and supervise development agents.
Agent
A system that combines a model, instructions and tools to carry out tasks within a defined scope. Its ability to act depends on the harness, environment and permissions.
Agent-to-agent
Delegation between full agents that work in separate conversations and environments, exchange instructions or files and return results.
Amp
Agentic development environment that brings models, threads, remote machines, Git and coordination together on a single platform.
Benchmark
An evaluation with defined tasks, conditions and scoring rules. It compares results within that protocol; a score does not demonstrate the same performance in your project.
BYOK
Bring Your Own Key: a setup where you supply your own provider API key. Usage follows that account and integration’s terms; it is not the same as using a chat subscription.
Choice
A Jev decision primitive that chooses among application-defined options and returns an option with a probability distribution.
Claude Code
Anthropic’s coding agent, combining project context and tools. Instructions, skills, hooks and subagents can specialize its work, depending on configuration.
CLI
Command-line interface. Lets you work with tools and agents from a terminal, with direct access to the project and its environment.
Cline
A coding agent that can work interactively or through its CLI without an interactive interface. Automation requires a bounded goal, authorized changes and output validation.
Codex CLI
The Codex terminal interface for working on a repository with an agent. The sandbox limits execution, while the approval policy determines which actions require authorization.
Context window
The token capacity a model can handle in an interaction, depending on its configuration. The advertised maximum, actual context usage and information-retrieval quality are different things.
Control plane
The layer used to organize and supervise agents, sessions and execution environments. It coordinates work without being the model or the machine running it.
Cost per completed task
The cost of work that meets its acceptance criteria, including failed attempts, tools and review. It evaluates productivity beyond price per token or session.
Cost per session
Observed spending in an agent session. Comparisons must fix the harness, turn-count range and aggregation; a cheap session may have failed and is not the same as a completed task.
CRM
A system that centralizes relationships, data and commercial processes. In these cases it also acts as the operational source of truth.
Curated memory
A selection of decisions, conventions and discoveries useful to later sessions. Each memory retains context and must be checked against the current state before use.
Daemon
A process that keeps running in the background and sustains services, sessions or tasks even when an interface is closed.
Decision gate
A checkpoint that stops progress until a decision is resolved or a condition is met. Confidence in an answer does not replace required authorization.
DESIGN.md
A portable file that encodes colors, typography, composition and visual rules so different agents produce consistent artifacts.
Engram
A local, persistent memory system for agents that lets them save and search project observations through a CLI, MCP and other interfaces.
Gentle AI
A coding-agent configurator that prepares integrations, memory, skills and workflow or review components to tailor the environment’s governance.
Grant
A Tailscale rule that grants network or application capabilities between defined sources and destinations. Permissions add together; one rule does not subtract access granted by another.
Handoff
A transfer of context and responsibility to another agent or person: goal, changes, tests, limits, open issues and the result’s location. It lets work continue without reconstructing it from scratch.
Harness
The system that manages the agent loop: preparing context, exposing tools, executing calls, collecting results and applying controls. A CLI is an interface to it, not a synonym.
Healthcheck
A service health check. It must validate a signal that represents the expected capability, rather than merely receiving an HTTP response.
Hermes
An operational agent that can live on a server, connect to channels and integrations and run tasks with continuity.
Jev
A TypeSafe model for structured decisions: it takes text or state and returns typed answers using options and criteria defined by the application.
Latency
Waiting time between a request and a response milestone. Specify whether it ends at the first token or the complete response, and under which conditions and percentile.
Least privilege
The principle of granting only the permissions, credentials and network access a task requires. It reduces the impact of mistakes and prevents a broad request from becoming unlimited authority.
Liveness
A signal that checks whether a process is alive. On its own, it does not establish that the service can handle traffic correctly.
MagicDNS
A Tailscale feature that makes tailnet devices discoverable by name. It helps locate a destination but does not grant access.
MCP
Model Context Protocol: an open protocol connecting AI applications to tools and data sources. A connection does not replace permissions or approval for actions.
Median
A measure that divides an ordered dataset into two halves. It describes the center but does not show spread or the cost of extreme sessions. It is not the same as the mean.
Model
A trained component that processes inputs and generates outputs, including proposed tool calls. An agent adds instructions, context, execution and controls around that model.
n8n
A visual automation platform used to coordinate integrations, webhooks and steps across different systems.
Negative test
A check that a forbidden action actually fails. For networking, test against an available service so an outage is not mistaken for an effective restriction.
Noul
A Jev primitive that estimates, between 0 and 1, the probability that a defined condition holds.
Observability
Evidence for understanding what a system is doing: state, output, events and health signals. It distinguishes active work, waiting, blockage and failure instead of relying on an open interface.
ODD
Organic Driven Development: Gentle AI’s approach to exploring, implementing authorized changes, verifying results and leaving recoverable references in proportion to the work’s size.
OpenCode
An open coding-agent tool with configurable models and providers. Catalog flexibility requires checking compatibility, permissions and results for each task.
OpenDesign
A local-first workspace that combines coding agents, skills, templates and DESIGN.md systems to produce visual artifacts as real files.
OpenRouter
A platform that provides access to models from different providers through a common API. Its rankings describe the data included in each view, not the entire market or the quality of every task.
Oracle
A second-opinion role inside Amp, used by the main agent to consult on reasoning, planning or hard decisions.
Orb
A fresh, isolated remote machine where an Amp agent can work with code, tools and services even while the user’s computer is off.
Orca
An ADE and control plane for organizing agents, repositories, workspaces, terminals and hosts without replacing the model.
Orchestration
Coordination of agents through a shared goal, tasks, dependencies, ownership and completion evidence. Parallel sessions alone do not establish who decides or integrates.
Pareto frontier
Options for which no other is at least as good on every chosen dimension and better on at least one, such as cost and score. The frontier changes when dimensions or candidates change.
Preflight
A pre-deployment check that runs the actual production command in a test environment and verifies that the service starts and responds.
Process tree
An organization of business workflows and the functions in each branch. It bounds analysis and defines verifiable evidence for a unit of work.
Provider
A service that receives requests and runs a model. It may differ from the model’s author; the endpoint, limits and performance are part of the configuration being compared.
Read-only
Access that allows inspection without changing the source system. A real boundary is enforced through credentials, tools and architecture, not just an instruction to the agent.
Readiness
A signal that checks whether a service is ready to handle traffic. It can fail even while the process remains alive.
Reasoning effort
A control for a model’s deliberation effort, depending on provider and harness options. It can increase time and usage; it does not replace context, tools or verification.
Routing
Selection of the model or provider that will handle a request, using rules or a router. It changes cost, availability and behavior, so it should be recorded when comparing results.
Runner
A self-owned or managed machine that Amp can use as its execution environment instead of an Orb from its own infrastructure.
Sandbox
An environment with technical limits on resources such as files, processes or network access. It reduces what execution can affect; protection depends on the actual configured boundaries.
Score
A Jev primitive that scores a case on a configured scale. Its raw value should not automatically be interpreted as a number between 0 and 1.
Share of spend
The percentage of observed spending attributable to a model or task in a view. It combines price and usage; it is not token share, user count or quality.
Skill
A reusable package of instructions and resources for a specialized task. It helps repeat a working method; it does not grant permissions or guarantee a correct result.
SSH
A secure protocol for accessing and running work on another machine or environment, such as WSL or a remote server.
Subagent
An agent delegated part of a task by another agent, with its own context. A separate conversation does not necessarily mean independent machines, files or permissions.
Tailnet
A private Tailscale network that groups authenticated identities and devices. Membership does not replace each service’s own permissions.
Tailscale
A tool that connects users and devices in an identity-based private network, with encrypted traffic and explicit access rules.
Tailscale Funnel
A feature that exposes a local service to the public internet. It should be used with a deliberate public audience, application controls and a defined exposure period.
Tailscale Serve
A feature that shares a local service within the tailnet, subject to its access rules. Useful for previews and internal dashboards.
Tailscale SSH
A feature that manages SSH authentication and authorization on supported nodes through separate policy rules. Allowing TCP 22 on the tailnet is not enough to configure it.
The Dial
Amp’s selector for how much effort a task needs, through the low, medium, high and ultra modes, regardless of which model sits behind it.
Thread
A conversation that retains a task’s context and results. In Amp it can coordinate work in its own environment; a persistent thread does not guarantee that the machine keeps running.
Throughput
Generation speed, usually measured in tokens per second. Compare it under equivalent conditions; it does not by itself include an agent’s tool, turn and retry time.
Token
A unit used by a model to represent and process content. It is not always a word: segmentation depends on the tokenizer. More usage tokens do not mean more users or more completed tasks.
Tool calling
A mechanism through which a model requests a tool execution with arguments. The surrounding system performs it and may require permissions; counting calls does not establish correctness.
TTFT
Time to First Token: elapsed time from sending a request to receiving the first token. It describes the initial wait, not the time to finish the full response or task.
Usage share
The portion of a total attributable to a model or author within a population and period. It can be measured in tokens or requests; the denominator is essential to interpreting the percentage.
WireGuard
The protocol Tailscale uses to encrypt traffic between devices. Encryption is maintained over both direct connections and relays.
Worker
An executing agent assigned a bounded task. It receives scope, permissions and completion criteria, then returns verifiable results to the coordinator.
Workspace
A visible work front that groups tabs, terminals, editors and a task; on its own it is not the same as Git isolation.
Worktree
An additional working directory of a Git repository, usually on another branch. It separates files for parallel tasks but shares repository data and is not a security sandbox.
WSL
Windows Subsystem for Linux: a Linux environment built into Windows where repositories, runtimes and CLI agents can live.