Visual for ETM Task Memory ETM Episodic Task Memory is Nova’s task memory for recurring task types, concrete runs, progress, and completion conditions. Overview Stores Task model Agent info When it applies Completion MCP contract Agent Tools

ETM

ETM stands for Episodic Task Memory. Nova uses episodic task memory for task-shaped episodes: what the goal was, which context applied, what was checked, what remained open, and when the task was truly complete.

ETM is Nova’s task memory. It lets agents recognize recurring task types, start concrete task runs, keep progress visible, and resume work without pretending that an unfinished job is done.

ETM is different from PKS. PKS stores reusable website knowledge; ETM stores task-shaped knowledge. PKS can say how a known website pattern behaves. ETM can say which task is running, which units belong to it, and what evidence is still needed before completion.

ETM tools are mostly agent-facing. Users see the effect in resumable work, clearer automation, and fewer premature completions, while agents and integrators use the task-memory tools directly.

In short

  • ETM stores task knowledge, not general website behavior.
  • Task profiles describe reusable task types; task instances describe concrete runs.
  • Work units make large tasks measurable instead of relying on a narrative “done”.
  • Completion can require all units, a threshold, or an exploratory minimum.
  • Task URL Coverage belongs to ETM and checks URL coverage when a task claims exhaustive completion.
  • ETM can turn repeated successful runs into stronger guidance for later work.

What ETM stores

ETM stores the information an agent needs to understand work as a task, not just as a series of browser actions.

  1. Task profiles A profile describes a recurring task type: goal, domain or platform context, stable guidance, required checks, known exceptions, and a completion rule.
  2. Task instances An instance is one concrete run. It may start from a profile or from an ad-hoc task, then freezes the effective context so later profile changes do not rewrite the current run.
  3. Work units Work units are bounded items that need attention, such as pages, URLs, findings, records, checks, or other parts of the task.
  4. Progress and resume state ETM can keep checked, remaining, blocked, and failed work visible so an agent can resume instead of guessing what happened earlier.
  5. Completion conditions A completion rule says what “done” means for this task: all units processed, a threshold reached, or enough exploratory evidence collected.
  6. Guidance and learning Repeated runs can leave guidance behind. Useful guidance can later become part of a profile when enough evidence supports it.

When this matters

ETM belongs to tasks that are larger than one quick interaction or likely to return later. Typical examples are website reviews, repeated quality checks, scheduled automation, platform mapping, research across multiple sources, or any run where an agent must prove what was covered before it can stop.

Task model for agents

For an agent, ETM answers four questions: which reusable task is this, which concrete run is active, what work remains, and what evidence is required before completion?

Profile and match
A profile gives the agent a known task shape. Matching uses task description, task type, domain, platform, target URL, and current scope to find likely profiles.
Instance and context
An instance is the current run. It carries a frozen effective context, profile revision, target URL, current scope, progress, and resume state.
Task awareness
A compact agent-facing payload that can show a profile match, active instance, progress, completion rule, pending checks, and resume context.
Work units
Units move through discovered, checked, excluded, blocked, or failed states. Checked and excluded units count as done; blocked and failed units reject exhaustive completion and should be repaired before a final claim.
Discovery state
Discovery starts unknown, can become partial, and can be frozen when the agent believes the task frontier is complete. Exhaustive completion requires a frozen frontier.
Mandatory checks
Required checks must be satisfied, waived, or marked not applicable before completion should be accepted. Pending or failed checks block completion.
Completion condition
The rule that defines done. ETM supports exhaustive, threshold, and exploratory task shapes with explicit stop metrics.
Guidance logs
Agents can log task guidance, inspect repeated hints, and promote useful guidance into the reusable profile when it proves useful.

How agents use ETM information

For agents, ETM is a structured task surface: discovery hints, profile matches, active instances, progress counters, completion rules, revision guards, verification contracts, and coverage warnings tell the agent how to proceed.

  1. Search or match the task Before starting task-shaped work, the agent should search or match existing profiles. A match can return task awareness and reusable guidance.
  2. Start the right instance The agent creates a task instance from a profile or ad-hoc context. This instance becomes the stable anchor for progress, current scope, and later completion.
  3. Report progress with revision guards Progress updates use the current instance revision and an idempotency key. The agent reports discovered units, unit status changes, findings, mandatory-check updates, and resume-state deltas.
  4. Freeze discovery for exhaustive work For exhaustive tasks, the agent freezes discovery only after it has found the relevant frontier. A frozen empty frontier or open units can still reject completion.
  5. Check completion before claiming done ETM evaluates mandatory checks, unit state, completion mode, revision conflicts, verification evidence, and coverage state. A failed check means the task remains unfinished.
  6. Resume from task awareness When a run continues later, the agent reads the active instance, recent events, pending units, and resume state instead of reconstructing the task from memory.
  7. Promote useful guidance After repeated runs, guidance logs and match telemetry can show which instructions should become stable profile guidance.

When ETM state applies

ETM state is about the current task run, not permission to click on a page. An agent may only claim completion when the active instance and the current evidence satisfy the task contract.

Profile match taskAwareness.profileMatch
Meaning
A reusable task type may fit the current work.
Evidence required
Task description, target URL or current scope, and a ranked profile match.
Agent behavior
Use it as orientation. Start an instance from the profile only if it fits the current user goal.
May complete
No.
Open instance status: pending|active|blocked
Meaning
A concrete task run exists and can collect progress unless it has already reached a terminal state.
Evidence required
Instance ID, instance revision, effective context hash, progress counters, and current scope.
Agent behavior
Report progress with expectedInstanceRev and clientEventId; read the instance before continuing old work.
May complete
Only when completionAllowed is true.
Discovery partial discoveryState: partial
Meaning
The task frontier is still open; more units may appear.
Evidence required
Discovered units, remaining units, recent events, or resume state show unfinished exploration.
Agent behavior
Continue discovery or explicitly freeze only after the relevant frontier is known.
May complete
No for exhaustive tasks.
Discovery frozen discoveryState: frozen
Meaning
The agent has declared the task frontier stable.
Evidence required
A valid transition to frozen and a non-empty set of units for exhaustive work.
Agent behavior
Finish checking or excluding remaining units; do not unfreeze by assumption.
May complete
Yes, if all completion gates pass.
Blocked or failed unit status
Meaning
At least one unit needs repair, retry, or exclusion. Exhaustive completion rejects blocked or failed units.
Evidence required
Blocked units, failed units, pending mandatory checks, failed verification, or an evidence gap.
Agent behavior
Resolve, retry, exclude with a valid reason, waive or mark checks not applicable when appropriate.
May complete
No for exhaustive completion.
Completed or terminal completed|aborted|failed
Meaning
The task run is no longer a normal progress surface.
Evidence required
Terminal status, completion timestamp, or terminal completion response.
Agent behavior
Use it as history or profile-learning evidence. Start a new run for new work.
May complete
No further progress writes.

Completion and failure conditions

These are the contract checks that decide whether ETM accepts a task as complete. They are intentionally stricter than an agent saying that work feels done.

Condition Observed signal Agent behavior
Mandatory checks pending mandatoryChecks exist and one is pending or failed. Satisfy the check, provide evidence, waive it, or mark it not applicable through progress.
Exhaustive frontier not frozen coverageMode=exhaustive while discoveryState is not frozen. Finish discovery and freeze the frontier before attempting completion.
No units discovered The frontier is frozen but the task has zero known units. Add real units or use a different task shape.
Units remaining Known units are still discovered/open. Check or exclude units. For URL work, use coverage scan or reconciliation where needed.
Blocked or failed units coverageMode=exhaustive and one or more units are blocked or failed. Resolve, retry, exclude, or keep the exhaustive task unfinished. Threshold and exploratory modes use their own stop metrics.
Threshold not met checked_units, distinct_findings, or all_units_processed is below stopValue. Continue work until the threshold is satisfied.
Exploratory minimum not met Exploratory work has fewer checked units than required. Collect the minimum evidence before stopping.
Revision or duplicate event expectedInstanceRev is stale or clientEventId repeats. Read the current instance, then retry with the current revision or treat duplicate retries as already handled.
Verification or evidence gap A required verification step failed or claimed checked work lacks enough observed evidence. Run the verification contract, submit evidence, or gather more observations before retrying completion.

Task URL Coverage

TUC stands for Task URL Coverage. It belongs inside ETM and is used for tasks with an exhaustive completion claim. Agents can create URL units with nova.task_instance_create, gather server-trusted coverage evidence with nova.coverage_scan, and reconcile open coverage with nova.task_instance_reconcile_coverage. These are agent-facing tool identifiers, not normal UI controls for people.

Agent interpretation example

The example shows ETM as a task contract: the agent creates a run, reports progress, and may only complete when the completion checks allow it.

Task match

{
  "tool": "nova.task_match",
  "arguments": {
    "taskDescription": "Review all product pages for broken prices",
    "targetUrl": "https://example.com/products",
    "currentScope": {
      "route": "/products",
      "locale": "de-DE"
    }
  }
}

Progress update

{
  "tool": "nova.task_instance_progress",
  "arguments": {
    "instanceId": "task_123",
    "expectedInstanceRev": 4,
    "clientEventId": "price-check-page-18",
    "unitUpdates": [
      { "unitKey": "product-18", "status": "checked" }
    ],
    "mandatoryCheckUpdates": [
      { "checkId": "price-visible", "state": "satisfied", "evidenceRef": "product-18" }
    ]
  }
}

Agent interpretation

{
  "treatAs": "active task contract",
  "beforeCompletion": "read the instance, check remainingUnits and pendingMandatoryChecks",
  "mayComplete": "only when completionAllowed is true and revision is current",
  "onRejection": "use currentState.reason to continue, repair, exclude, or gather evidence"
}

MCP contract

This is the deterministic layer below the explanation. It lists ETM fields that agents and integrators should treat as contract signals rather than free prose.

Completion rule: No ETM completion may be claimed without current task state, revision, required checks, and evidence satisfying the active completion condition.

Variable Type / values Default Effect
taskDescription string, max 2000 chars required for matching Natural-language task description used by nova.task_match to find reusable profiles.
query / limit / includeArchived string; integer; boolean query required for search; limit tool-specific; includeArchived false Search and list controls for profile discovery. They narrow candidates without starting or changing a task instance.
taskType / displayName / goal / domain / platform strings taskType, displayName, and goal required for profile writes and ad-hoc context Defines the reusable task identity and optional scope used by matching, profile creation, and ad-hoc runs.
targetUrl string URL or null derived from currentScope when possible Canonical URL context for task matching and instance creation.
currentScope object {} Structured route, locale, auth, language, or task variables used for matching and effective context.
taskAwareness object computed Compact agent-facing profile or instance context with progress, completion condition, guidance, and resume hints.
profileId string or null null for ad-hoc runs Starts a task instance from a reusable profile when present.
instanceId / agentId / guidanceLogId strings context-specific Identifies the current task run, the reporting agent, or a guidance entry that should be read, updated, completed, verified, or promoted.
adHocContext object required when profileId is absent One-off task context with taskType, displayName, goal, and completionCondition.
stableGuidance[] / mandatoryChecks[] / knownExceptions[] arrays [] Reusable profile or ad-hoc context fields. Guidance travels with the task, checks define completion obligations, and exceptions describe accepted caveats.
overrides object {} Controlled instance-time changes. Mandatory checks cannot be removed through overrides.
profileRevApplied integer or null current profile revision Freezes which profile revision shaped a concrete instance.
effectiveContextHash string computed Identifies the frozen effective context used by the task instance.
instanceRev integer 0 on create Revision of a concrete task instance. Progress and completion use it for conflict protection and return the next revision after successful writes.
expectedInstanceRev integer required for writes Compare-and-set guard for progress and completion updates. Stale values return a revision conflict.
clientEventId string required for progress and completion Idempotency key so retries do not double-apply progress or completion events.
note / completionNote string optional Optional event note on progress or completion. completionNote is a compatibility alias for note; both must match when supplied together.
completionCondition.coverageMode exhaustive | threshold | exploratory exploratory Defines which completion policy ETM evaluates.
completionCondition.unitKind page | url | selector | file | item page in the default profile condition Names the kind of work unit the completion condition is counting. Supplied completionCondition objects must include a valid unitKind.
completionCondition.stopMetric all_units_processed | checked_units | distinct_findings checked_units Metric used by threshold and exploratory completion checks.
completionCondition.stopValue integer or null mode-specific Required value for thresholds; exploratory uses it as the minimum checked-unit count.
completionCondition.evidencePolicy object: mode, maxGapPercent, treatUnknownAs mode=none; maxGapPercent=10; treatUnknownAs=pass Optional TOB evidence-gap policy. When active, completion can reject unsupported checked work with reason=evidence_gap.
discoveryState unknown | partial | frozen unknown Shows whether the task frontier is still open. Exhaustive completion requires frozen discovery.
setDiscoveryState unknown | partial | frozen absent Progress request field that transitions discovery state. Runtime rejects backwards transitions such as frozen back to partial or unknown.
discoveredUnits[] array: unitKey required; unitKind and unitRef optional optional Adds newly discovered work units to the instance. Missing unitKind defaults to page; missing unitRef defaults to the unit key.
unitUpdates[].status / findingCount checked | excluded | blocked | failed; integer findingCount status required per update Changes known work-unit status and can attach finding counts. Checked and excluded are terminal done states; blocked and failed reject exhaustive completion.
findings[] array optional Appends structured findings to the progress event and contributes to distinct-findings completion policies.
mandatoryCheckUpdates[].state pending | satisfied | failed | waived | not_applicable pending Updates required checks. Pending or failed required checks block completion.
resumeStateDelta object optional Merges resume hints such as cursor, lastProcessedUrl, lastAction, or checkpoint into the task instance.
progress.*Units integer counters computed Shows total, checked, remaining, blocked, and failed units for the task run.
includePendingUnits / includeDiscoveredUnitsPreview / includeRecentEvents boolean flags with pendingUnitsLimit, discoveredUnitsPreviewLimit, recentEventLimit false; default limits 20 or 10 Read options on nova.task_instance_get for resumable context: still-discovered units and recent normalized events.
completionAllowed boolean computed Returned after progress or in task awareness to show whether the current task state satisfies the completion policy.
unitSource object: kind site_urls | crawler | explicit; scopeDomain; explicitUrls[]; freezeAfterPopulate absent Creates URL work units for Task URL Coverage when explicitUrls are supplied. kind labels the source, and freezeAfterPopulate can set discoveryState to frozen after population.
declaredTaskKind content_audit | compliance | ui_smoke | exploratory | accessibility | legal | security_review | route_inventory absent Optional TUC hint that describes the task kind for coverage policy reasoning.
scanId / targetId / scopeOptions / dryRun / observationCutoff string; string; object; boolean; ISO timestamp scanId required for coverage scan; dryRun true for reconcile Task URL Coverage tool arguments. They run registered coverage scans or reconcile existing observations without treating agent claims as trusted coverage.
urlCoverage object or null null without URL units Summarizes URL units, trusted observations, reconcile state, and remaining coverage work.
verificationContract object or null absent Defines verification steps an agent can execute and report before completion.
evidenceReport[] array: state passed | failed | inconclusive | skipped optional Agent-submitted evidence for verification steps. Required fast-gate failures can reject completion.
contentRev / expectedContentRev integer profile-specific Protects reusable profile updates from overwriting a newer profile revision.
sourceInstanceId / confidence string; float 0.0-1.0 absent; 0.5 Can seed a profile from a completed or inspected instance and records the profile confidence score.
payload / sourceRef / occurrenceCount / threshold object; string; integer; integer payload required for guidance logs; threshold default 3 Records guidance details, optional source references, repeated occurrence counts, and the minimum count used for promotion candidates.
guidanceKind / sourceKind / status guidanceKind style | terminology | scope_rule | workflow | quality | match_telemetry | custom; sourceKind user | agent | reviewer | migration | system; status logged | proposed | accepted | rejected | promoted status is computed by scope and promotion state Classifies task guidance logs, records their source, and shows whether guidance is ready to promote into a profile.
Agent Tools

MCP tools for agents. These variables and tool names are intended for agents and integrators. They are not normal user controls in the interface.

Variable Meaning
nova.get_instructions Read Learn Mode instructions
nova.goal_register Record a work goal
nova.task_search Search task memory
nova.task_match Recognize a recurring task
nova.task_profiles List task profiles
nova.task_profile_get Read a task profile
nova.task_profile_upsert Create or update a task profile
nova.task_instance_create Start a task run
nova.task_instance_get Read a task run
nova.task_instance_progress Report task progress
nova.task_instance_complete Check whether task completion is allowed
nova.task_instance_verify Read completion checks
nova.site_urls Read the site URL index
nova.coverage_scan Check URL coverage
nova.task_instance_reconcile_coverage Reconcile task coverage
nova.task_guidance_log_add Record task guidance
nova.task_guidance_logs Review task guidance
nova.task_promotion_candidates Find promotable guidance
nova.task_promote_guidance Promote useful guidance