deal-session-memory — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited deal-session-memory (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
deal_session_memory is the table that turns OloLand from a stateless reasoning engine into a persistent deal record. Every fact persisted via remember_deal_fact survives across conversation sessions, analyst handoffs, and even LLM-provider changes.
The marketing claim "OloLand captures the institution, not the session" is load-bearing only if there is somewhere durable to capture to. Conversation history is per-session and stale within hours. Document ingestion is per-corpus and doesn't capture analyst judgment. Risk corrections and outcomes have dedicated tables but cover their own narrow domains.
deal_session_memory is the catch-all for analyst-confirmed facts. It is the place where you write:
ebitda_fy24_confirmed: 34200000.sponsor_lead_partner: "Jim Smith (MidOcean)".wc_normalization_convention: "3yr_average" with a note.loi_signed_date: "2026-05-20".Conversations are noisy — they contain hypotheses, partial answers, dead-end branches. deal_session_memory is the curated subset: only facts an analyst has confirmed. The discipline matters; otherwise the recall surface fills with noise and stops being useful.
| Field | Constraint |
|---|---|
deal_id | Foreign key to deals — facts are deal-scoped, not user-scoped. |
company_id | Inherited from the deal. Multi-tenant isolation. |
key | ≤ 200 chars. Short, stable, kebab-case. |
value | Any JSON value. Scalar, list, or small object. |
note | ≤ 1000 chars. Optional provenance. |
updated_at | Set on every write. |
Re-writing the same (deal_id, key) is idempotent — value and note are replaced.
The right workflow on any non-trivial deal session:
recall_deal_facts(deal_id) (or /recall) to load every confirmed fact before doing anything else.remember_deal_fact (or /remember) it. Don't wait until end-of-session.| Wrong table | Belongs in |
|---|---|
| Risks (severity, financial impact, materiality) | deal_risks — surfaced via get_deal_risks. |
| Materialized risks (post-close outcomes) | materialized_risks — surfaced via record_materialized_risks. |
| Deal outcome (IRR, MoIC, hold period, etc.) | deal_outcomes — surfaced via record_deal_outcome. |
| Claim-level AI errors | analyst_corrections — surfaced via submit_agent_claim_correction. |
| Assumption status (open/blocking/approved) | deal_assumptions — surfaced via set_assumption_status. |
| Conversation-scoped TODO list | write_todo / update_todo — turn-scoped, not persistent. |
Putting these in deal_session_memory muddies the dedicated surfaces; the flywheel can't train on miscategorized data.
mcp__ololand__remember_deal_fact — write.mcp__ololand__recall_deal_facts — read (with optional keys filter).mcp__ololand__search_extracted_knowledge — semantic search over AI-extracted insights (different surface; not analyst-confirmed).Companion commands: /remember, /recall.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.