Skip to content

memory: drop personal preference extraction for multi-actor runs #776

Description

@dcramer

Policy

When a run has multiple actors (run.actors.length > 1), passive memory extraction must not record preference memories at all — not even preferences whose evidence citations all point at run-actor instructions.

Rationale: in a multi-actor turn, first-person statements from different people are interleaved in model-visible content. Citation verification (#773 Track 1) makes cross-actor personal writes require the model to mis-cite, but a mis-cite is still possible; multi-actor runs are exactly where the cost of that mistake is highest. Personal preferences can wait for a single-actor run to restate them. This is defense in depth on top of the deterministic router, not a replacement for it.

Implementation sketch

  • packages/junior-memory/src/process-session.ts routeExtractedMemory: add a deterministic gate — kind === "preference" && run.actors.length > 1drop (never downgrade to conversation scope, consistent with the existing rule).
  • run.actors is already exposed on the plugin run context (specs/multi-actor-runs.md; attribution-not-authority contract).
  • Spec: add the rule to specs/memory-plugin/policy.md (personal-scope authorship section).
  • Tests: junior-memory component test — multi-actor run + preference proposal citing only run-actor instructions → dropped; single-actor run unchanged. Eval: extend packages/junior-evals/evals/memory/multi-actor-provenance.eval.ts case 2/3 DB assertions if needed (they already assert no cross-actor personal writes; add an assertion that no preference row is written at all for the batched multi-actor case).

Depends on

Part of the #773 follow-up set: case-specific consumers of run.actors.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions