Memory, Skills, and Embodiment

Memory lifecycle

FileMemory implements three forms with different lifetimes:

MEMORY.md
TASK_NOTES.md
tool_experience/
  pick_object.md

MEMORY.md contains:

# Memory

## Preferences
- [user-preference] Prefer concise completion reports.
## Conventions
- [convention] Ask before choosing among equally plausible destinations.
## General Lessons
- [general-lesson] Use current physical evidence before local action.

The sections provide the durable scope; the labels make each entry’s kind visible in an abridged artifact or prompt excerpt. Only these three controlled sections enter Resident context. Other Markdown sections, if present in an operator-managed file, are not projected to the model.

Each tool ledger contains:

# Tool Experience: pick_object

## Success
## Failure

Use the LLM-backed reference components:

from harness import (
    FileMemory,
    ModelMemoryConsolidator,
)

memory_model = build_memory_model()
memory = FileMemory(
    "./runtime/memory",
    consolidator=ModelMemoryConsolidator(memory_model),
)

When the reference ModelMemoryConsolidator is used, FileMemory automatically uses the same model through ModelToolExperienceSummarizer. Pass another ToolExperienceSummarizerProtocol implementation only when the deployment needs a different summarization policy.

During a task, the Harness resets Task Notes, records compact events, and renders changed snapshots before model decisions. When a task completes normally, the consolidator extracts accepted durable Memory entries and tool-scoped Success/Failure experience; Task Notes then expire. Aborted tasks skip durable consolidation but still expire their Task Notes. FileMemory accepts only entries at or above its configured confidence threshold (default 0.75) and rejects transient refs or one-run state. Tool success lessons require an evaluator-confirmed success in the completed trajectory. Failure lessons require a failure followed by evaluator-confirmed success of the same tool, so an unrelated successful action cannot validate a tool-specific diagnosis.

At the next task start, MEMORY.md enters Resident context and each tool ledger is summarized by the configured model into its Tool Definition. Applications can replace the LLM-backed components through MemoryConsolidatorProtocol and ToolExperienceSummarizerProtocol. Without a consolidator, durable task-end writes are an explicit no-op. If Tool Experience files exist, a custom non-model consolidator must be paired with an explicit summarizer; the Harness never substitutes concatenated ledger entries for the model-generated summary described above.

Embodiment Profile

The profile is a deployment-owned Markdown document with three sections and seven required items:

# Embodiment Profile

## Operational Envelope

### Base Footprint
Circular footprint with radius 0.38 m.

### Base Mobility
Planar translation and yaw rotation.

### Reachable Workspace
End-effector operating region relative to the base.

## Perception Configuration

### Sensor Modalities
RGB images, depth, and four-direction base clearance.

### Model-Visible Views
front, torso, wrist

## Base-Relative Positions

### Camera Positions
Fixed camera positions relative to the base center.

### Initial Gripper Positions
Initial gripper positions relative to the base center.

Configure its path:

embodiment_profile_file: ./profiles/robot.md

When a Profile is configured, Harness validates this required structure at startup. load_embodiment_profile_document_from_config() exposes the same validation boundary to deployment code.

Skills

Each directory-backed Skill uses skills/<name>/SKILL.md:

---
name: tidy-workspace
description: Decide what to remove, retain, and report while tidying a desk.
---

## Working order

...
skills:
  dir: ./skills

Only the Skill name and description enter Resident context by default. The model uses load_skill to load the body and load_skill_resource to load one declared UTF-8 resource. Loaded Skill content expires at task end.

Skills provide task instructions. Tools and hooks remain the execution, authorization, and safety boundaries.