Skip to content

FEAT: Scorer Observation (Phase 3) - #2630

Merged
Richard Lundeen (richlundeen) merged 8 commits into
microsoft:mainfrom
richlundeen:rlundeen2-phase-3-plan
Sep 15, 2026
Merged

Richard Lundeen (richlundeen) merged 8 commits into
microsoft:mainfrom
richlundeen:rlundeen2-phase-3-plan

Conversation

@richlundeen

Copy link
Copy Markdown
Contributor

Adds durable LLM scorer observations, atomic score-to-observation persistence, and replay of stored judgments without another model call. It preserves exact scored evidence, scorer configuration, expectation, and response-parser contracts as described in the original Phase 3 design gist. This PR is intentionally large because the observation model, database migration, memory invariants, scorer integrations, documentation, and focused regression tests must ship together as one usable feature.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8dd850ac-5e7b-4c35-bdb4-a0a9e811d020
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8dd850ac-5e7b-4c35-bdb4-a0a9e811d020

@romanlutz Roman Lutz (romanlutz) left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments of my own and a few from GHCP that I agree with 🙂

Comment thread pyrit/memory/memory_models.py
Comment thread pyrit/score/true_false/self_ask_true_false_scorer.py Outdated
Comment thread pyrit/memory/memory_interface.py Outdated
Comment thread pyrit/models/score/score.py Outdated
Comment thread pyrit/models/score/observation.py Outdated
Comment thread pyrit/memory/memory_interface.py
Comment thread pyrit/memory/memory_interface.py
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8dd850ac-5e7b-4c35-bdb4-a0a9e811d020
Make observation persistence and retention transactional, require explicit subclass replay contracts, and use target-independent judgment names.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8dd850ac-5e7b-4c35-bdb4-a0a9e811d020
Comment thread pyrit/score/observation.py
Comment thread pyrit/score/scorer.py Outdated
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8dd850ac-5e7b-4c35-bdb4-a0a9e811d020
Comment thread pyrit/score/llm_scoring.py
Comment thread pyrit/memory/memory_session.py Outdated
Clarify expectation-bound replay and cover rescoring stored evidence.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8dd850ac-5e7b-4c35-bdb4-a0a9e811d020
Place the unpublished observation migration after the upstream attack score split, preserving one Alembic head.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8dd850ac-5e7b-4c35-bdb4-a0a9e811d020
@richlundeen
Richard Lundeen (richlundeen) added this pull request to the merge queue Sep 15, 2026
Merged via the queue into microsoft:main with commit ac0fbb6 Sep 15, 2026
49 checks passed
@richlundeen
Richard Lundeen (richlundeen) deleted the rlundeen2-phase-3-plan branch September 15, 2026 17:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants