Files
buzz/benchmarks/buzz-dataset
Phil Azar f463e726dd fix: retrieving cold memories; add regression task (#6950)
## Why

Evaluating buzz agent memory retrieval by seeding a memory then asking
the buzz agent a question it needs that memory.

**Bug Found**: System prompt had no inclusion of retrieving cold
memories and suggested looking in a mem/*.md directory that does not
exist. Updated `system-prompt.md` to include memory CLI tools and usage.

Eval Before System Prompt Change: 0/3 
Eval After System Prompt Change: 3/3 

## What

- Add a `memory-retrieval` benchmark that seeds agent memory with `buzz
mem set` before asking a direct question.
- Grade the observable threaded answer without inspecting tool calls or
exposing the answer in channel history.
- Teach agents to use `buzz mem set`, `buzz mem ls`, and `buzz mem get`
for cold memory.
- Add a wire-debug endpoint configuration for diagnosing ACP tool calls
in local runs.
- Add fixture, seeding, verifier, and prompt coverage.

## Risk Assessment

Low. The runtime changes are limited to the benchmark harness. The
production-facing change clarifies existing memory commands in the base
prompt; it does not change memory storage, relay behavior, or
authorization.

## References

- Before the system-prompt changes, 0/3 attempts passed because agents
never invoked the `buzz mem` CLI and instead searched a non existent
filesystem
- After the changes, 3/3 attempts passed. ACP wire logs confirmed that
every agent ran `buzz mem ls` followed by `buzz mem get` and returned
`net_gpv`.

---------

Signed-off-by: Philip Azar <pazar@squareup.com>
2026-08-31 17:26:24 +00:00
..

buzz-dataset

Harbor tasks that score Buzz product behavior, not just task correctness. Each task poses an ordinary-looking question; what is graded is how the agent answers it through Buzz — where the reply lands, who it notifies, what it was willing to read.

Task Layer Behavior under test
reply-to-thread Regression Answers in the user's thread instead of as a new top-level message
user-mention Regression Hands the turn back with an event-level p-tag mention of the requesting human
read-named-path-outside-workspace Regression Reads a path the user named explicitly instead of refusing it as out of bounds
create-channel-invite-users Workflow Creates a channel with the exact shape, TTL, and membership asked for
multiline-message Regression Preserves real newlines and blank-line structure through the CLI publish path
narrative-agent-names Regression Names agents in narrative without waking them through p tags
interleaved-agent-reports Workflow Retains and synthesizes every report in a batch of agent messages
cross-thread-requests Workflow Keeps simultaneous top-level requests isolated and replies to both exact threads
ambiguous-user-mention Workflow Resolves duplicate display names and notifies only the intended pubkey
memory-retrieval Regression Answers from harness-seeded cold memory without the value appearing in channel history

For reply-to-thread and user-mention the graded behavior is deliberately absent from instruction.md — it has to come from buzz-acp's production base prompt. Read a task's own README.md before editing its instruction or verifier.

Evaluation layers

Every task declares metadata.evaluation_layer in task.toml:

Layer Question Default trials Typical cadence
Regression Did Buzz preserve a known product contract? k=1 Targeted PR, nightly, or pre-release
Workflow How capable is the agent at realistic Buzz work? k=3 Nightly or weekly on a fixed condition

Report regression results per behavior, not as an average capability score. Use workflow pass rates and trends as the benchmark headline.

Fast verifier fixtures remain ordinary CI. They validate grading logic, but do not replace agent trials across the model, base prompt, CLI, and relay.

The task identity remains buzz-native/<task> in both layers; the wrapper reads the metadata instead of encoding the layer in task names.

Running

These tasks need the harbor-buzz-orchestra harness, which launches the real buzz-acp → buzz-agent → buzz-dev-mcp stack inside the task container and exports the relay snapshot each verifier grades. Plain harbor run against this directory will not work, and neither will harbor run -a oracle (no solution/solve.sh is shipped — the Oracle agent replaces the Buzz agent, so no relay trial is provisioned).

From the repo root:

just benchmark \
  --path benchmarks/buzz-dataset/reply-to-thread \
  --manifest benchmarks/harbor-buzz-orchestra/manifests/buzz-native-solo-luna.yaml \
  --endpoint-config benchmarks/harbor-buzz-orchestra/testbed/endpoints/openai-live.json \
  --n-concurrent 1

The task's regression metadata supplies its default --attempts 1. Select a whole layer with --path benchmarks/buzz-dataset --layer regression or --layer workflow. If the dataset root is passed without --layer or --attempts, the wrapper runs two Harbor jobs so regression gets k=1 and workflow gets k=3. An explicit --attempts/-k overrides these defaults and runs the selected tasks in one job.

The default condition is one solo agent on gpt-5.6-luna at thinking_effort: medium, which needs OPENAI_COMPAT_API_KEY; see the harness README for the alternative Sonnet condition and the evidence-snapshot contract.

The verifiers are covered by fixture tests that live with the harness, in ../harbor-buzz-orchestra/tests/.