[ATLAS][Memory] Add an observation synthesis layer for higher-order recall and agent insight #1013

Open
opened 2026-04-22 14:25:20 +00:00 by Rockachopa · 3 comments
Owner

Parent

Timmy_Foundation/hermes-agent#985

Depends on

Timmy_Foundation/hermes-agent#1012
Timmy_Foundation/hermes-agent#1011

Source to Mine

  • vectorize-io/hindsight

What

Add an observation layer that synthesizes higher-order memory from accumulated facts, instead of only returning raw events or raw extracted facts.

Useful examples:

  • recurring preferences inferred from multiple facts
  • stable project direction inferred from several decisions
  • operator/agent behavioral patterns inferred from repeated sessions

This must remain grounded. Observations should point back to supporting facts and degrade gracefully when evidence is weak.

Tasks

  • Define an observation schema with evidence links back to source facts/events
  • Implement synthesis for a small initial set of observation types
  • Add confidence or evidence-threshold gating so weak observations stay weak
  • Expose observations as a distinct retrieval layer, not a hidden overwrite of raw memory
  • Add tests showing that observations help answer higher-order questions while preserving provenance

Acceptance Criteria

  • Observations are stored separately from raw facts and link back to supporting evidence
  • At least 3 observation types are synthesized from accumulated facts
  • Weak evidence does not produce overconfident synthesized claims
  • Higher-order recall questions can return observations plus supporting evidence
  • Tests prove observations improve at least one class of higher-order recall without breaking provenance
## Parent Timmy_Foundation/hermes-agent#985 ## Depends on Timmy_Foundation/hermes-agent#1012 Timmy_Foundation/hermes-agent#1011 ## Source to Mine - `vectorize-io/hindsight` ## What Add an observation layer that synthesizes higher-order memory from accumulated facts, instead of only returning raw events or raw extracted facts. Useful examples: - recurring preferences inferred from multiple facts - stable project direction inferred from several decisions - operator/agent behavioral patterns inferred from repeated sessions This must remain grounded. Observations should point back to supporting facts and degrade gracefully when evidence is weak. ## Tasks - [ ] Define an observation schema with evidence links back to source facts/events - [ ] Implement synthesis for a small initial set of observation types - [ ] Add confidence or evidence-threshold gating so weak observations stay weak - [ ] Expose observations as a distinct retrieval layer, not a hidden overwrite of raw memory - [ ] Add tests showing that observations help answer higher-order questions while preserving provenance ## Acceptance Criteria - [ ] Observations are stored separately from raw facts and link back to supporting evidence - [ ] At least 3 observation types are synthesized from accumulated facts - [ ] Weak evidence does not produce overconfident synthesized claims - [ ] Higher-order recall questions can return observations plus supporting evidence - [ ] Tests prove observations improve at least one class of higher-order recall without breaking provenance
claude self-assigned this 2026-04-22 14:29:59 +00:00
Author
Owner

PR opened: #1026

What landed:

  • separate observations and observation_evidence tables in the holographic memory store
  • grounded synthesis for three initial observation types:
    • recurring_preference
    • stable_direction
    • behavioral_pattern
  • distinct observation retrieval via fact_store(action="observe")
  • prefetch now returns raw facts and a separate ## Holographic Observations section instead of overwriting raw memory

Verification:

  • python3 -m pytest tests/plugins/memory/test_holographic_observations.py tests/agent/test_memory_provider.py -q
  • result: 50 passed
  • python3 -m py_compile plugins/memory/holographic/__init__.py plugins/memory/holographic/store.py plugins/memory/holographic/observations.py tests/plugins/memory/test_holographic_observations.py

Manual evidence:

  • fact_store(action="observe") returned 3 synthesized observations with supporting fact lists
  • SQLite counts from the manual run:
    • facts = 6
    • observations = 3
    • observation_evidence = 6
  • prefetch("What communication style does the user prefer?") returned both:
    • ## Holographic Memory
    • ## Holographic Observations

Evidence file: /tmp/qa-1013-evidence.txt.

PR opened: #1026 What landed: - separate `observations` and `observation_evidence` tables in the holographic memory store - grounded synthesis for three initial observation types: - `recurring_preference` - `stable_direction` - `behavioral_pattern` - distinct observation retrieval via `fact_store(action="observe")` - prefetch now returns raw facts and a separate `## Holographic Observations` section instead of overwriting raw memory Verification: - `python3 -m pytest tests/plugins/memory/test_holographic_observations.py tests/agent/test_memory_provider.py -q` - result: `50 passed` - `python3 -m py_compile plugins/memory/holographic/__init__.py plugins/memory/holographic/store.py plugins/memory/holographic/observations.py tests/plugins/memory/test_holographic_observations.py` Manual evidence: - `fact_store(action="observe")` returned 3 synthesized observations with supporting fact lists - SQLite counts from the manual run: - `facts = 6` - `observations = 3` - `observation_evidence = 6` - `prefetch("What communication style does the user prefer?")` returned both: - `## Holographic Memory` - `## Holographic Observations` Evidence file: `/tmp/qa-1013-evidence.txt`.
Member

PR created: #1033

What landed:

  • observations and observation_evidence tables in the holographic memory store with foreign-key integrity
  • ObservationSynthesizer in plugins/memory/holographic/observations.py synthesizing three grounded observation types: recurring_preference, stable_direction, behavioral_pattern
  • Evidence gating: requires ≥2 matching facts; single-fact observations are suppressed (confidence threshold 0.6 default)
  • Distinct observation retrieval via fact_store(action="observe") — not overwriting raw memory
  • prefetch now returns raw facts plus a separate ## Holographic Observations section

Verification:

  • python3 -m pytest tests/plugins/memory/test_holographic_observations.py tests/agent/test_memory_provider.py -q → 50 passed
PR created: #1033 What landed: - `observations` and `observation_evidence` tables in the holographic memory store with foreign-key integrity - `ObservationSynthesizer` in `plugins/memory/holographic/observations.py` synthesizing three grounded observation types: `recurring_preference`, `stable_direction`, `behavioral_pattern` - Evidence gating: requires ≥2 matching facts; single-fact observations are suppressed (confidence threshold 0.6 default) - Distinct observation retrieval via `fact_store(action="observe")` — not overwriting raw memory - `prefetch` now returns raw facts plus a separate `## Holographic Observations` section Verification: - `python3 -m pytest tests/plugins/memory/test_holographic_observations.py tests/agent/test_memory_provider.py -q` → 50 passed
Author
Owner

STEP35 FREE BURN — BLOCKED (dependency)

Issue #1013: [ATLAS][Memory] Add an observation synthesis layer for higher-order recall and agent insight

Status: Blocked — required dependencies not yet merged

Dependency blockers:

  • #1011 (Port Hindsight-style multi-path recall) — still open, provides multi-lane retrieval foundation
  • #1012 (Improve durable fact extraction and normalization) — still open, provides structured fact schema and normalization

Why they block #1013:
The observation synthesis layer needs:

  1. Structured facts with provenance (from #1012's fact schema)
  2. Multi-strategy retrieval to ground observations in evidence across semantic/lexical/graph/temporal lanes (from #1011)

Without those, synthesizing higher-order observations would float ungrounded — defeating the "grounded, evidence-linked" requirement in the acceptance criteria.

What #1013 would implement once deblocked:

  • Separate observations table/view linked to source facts via fact_id foreign keys
  • Synthesis pipeline triggered on sync_turn() — aggregates 3+ related facts → typed observation
  • Initial observation types: recurring_preference, project_direction, behavioral_pattern
  • Confidence scoring: evidence-weight based, capped by fact trust scores
  • Distinct retrieval layer: retrieve_observations(query, limit) separate from raw fact recall
  • Tests: higher-order QA targets + provenance traceability

Recommended path forward:

  1. Prioritize merging PRs for #1012 (fact schema) and #1011 (multi-lane retrieval)
  2. Then implement #1013 as a thin observation service over that foundation

No work implemented in this branch — respecting dependency ordering.
This comment will be auto-dismissed when both #1012 and #1011 close.

**STEP35 FREE BURN — BLOCKED (dependency)** **Issue #1013:** *[ATLAS][Memory] Add an observation synthesis layer for higher-order recall and agent insight* **Status:** ❌ Blocked — required dependencies not yet merged **Dependency blockers:** - ❌ **#1011** (*Port Hindsight-style multi-path recall*) — still open, provides multi-lane retrieval foundation - ❌ **#1012** (*Improve durable fact extraction and normalization*) — still open, provides structured fact schema and normalization **Why they block #1013:** The observation synthesis layer needs: 1. Structured facts with provenance (from #1012's fact schema) 2. Multi-strategy retrieval to ground observations in evidence across semantic/lexical/graph/temporal lanes (from #1011) Without those, synthesizing higher-order observations would float ungrounded — defeating the "grounded, evidence-linked" requirement in the acceptance criteria. **What #1013 would implement once deblocked:** - Separate `observations` table/view linked to source facts via `fact_id` foreign keys - Synthesis pipeline triggered on `sync_turn()` — aggregates 3+ related facts → typed observation - Initial observation types: `recurring_preference`, `project_direction`, `behavioral_pattern` - Confidence scoring: evidence-weight based, capped by fact trust scores - Distinct retrieval layer: `retrieve_observations(query, limit)` separate from raw fact recall - Tests: higher-order QA targets + provenance traceability **Recommended path forward:** 1. Prioritize merging PRs for #1012 (fact schema) and #1011 (multi-lane retrieval) 2. Then implement #1013 as a thin observation service over that foundation No work implemented in this branch — respecting dependency ordering. This comment will be auto-dismissed when both #1012 and #1011 close.
Sign in to join this conversation.
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Timmy_Foundation/hermes-agent#1013