Skip to content
This repository was archived by the owner on Oct 16, 2026. It is now read-only.

feat(results): publish runs to results branch - #1403

Merged
christso merged 1 commit into
mainfrom
av-results-branch-storage
Jun 17, 2026
Merged

christso merged 1 commit into
mainfrom
av-results-branch-storage

Conversation

@christso

Copy link
Copy Markdown
Collaborator

Summary

  • Add branch-backed results config for results.repo_path, results.repo_url, results.branch, results.remote, and results.sync.require_push while keeping sync.auto_push false by default.
  • Publish completed runs from canonical .agentv/results/runs/... into a configured Git branch through Git object/index plumbing, so repo_path: . never checks out agentv/results/v1 in the source worktree.
  • Auto-create missing storage branches as empty/orphan result branches, stage only .agentv/results/**, and preserve existing separate results repo behavior.
  • Teach CLI eval flags, project registry YAML, Dashboard remote discovery/status, docs, and tests about branch-backed result storage.

Config shape

results:
  repo_path: .
  branch: agentv/results/v1
  remote: origin
  sync:
    auto_push: false
    require_push: false

branch defaults to agentv/results/v1 for repo_path configs. Existing managed-clone configs continue to use repo/repo_url; they can opt into the same branch, remote, and sync fields.

Validation

bun test packages/core/test/evaluation/results-repo.test.ts packages/core/test/evaluation/loaders/config-loader.test.ts packages/core/test/projects.test.ts packages/core/test/evaluation/validation/config-validator.test.ts
159 pass, 0 fail

bun test apps/cli/test/commands/eval
117 pass, 0 fail

bun test apps/cli/test/commands/results
191 pass, 0 fail

bun test apps/dashboard/src
93 pass, 0 fail

bun test packages/core/test/evaluation/validation/config-validator.test.ts
22 pass, 0 fail

bun run lint
Checked 728 files. No fixes applied.

bun run typecheck
@agentv/core typecheck: Exited with code 0
@agentv/phoenix-adapter typecheck: Exited with code 0
agentv typecheck: Exited with code 0

Functional UAT

Temp repo: /tmp/agentv-results-branch-uat-wITm8Z/source

Commands:

git init --initial-branch=main
git config user.email uat@example.com
git config user.name "AgentV UAT"
printf ".agentv/results/\n.agentv/cache.json\n" > .gitignore
# wrote .agentv/config.yaml with results.repo_path: . and sync.auto_push: false
# wrote .agentv/targets.yaml with a mock target
# wrote evals/uat.eval.yaml with one test
git add .gitignore .agentv/config.yaml .agentv/targets.yaml evals/uat.eval.yaml
git commit -m "test: seed branch storage uat"
AGENTV_HOME=/tmp/agentv-results-branch-uat-wITm8Z/home AGENTV_NO_UPDATE_CHECK=1 \
  bun /home/entity/projects/EntityProcess/agentv__worktrees/av-results-branch-storage/apps/cli/src/cli.ts \
  eval evals/uat.eval.yaml --dry-run --experiment branch-storage-uat --workers 1
git status --short --branch
git show-ref --verify refs/heads/agentv/results/v1
git ls-tree -r --name-only agentv/results/v1
git ls-tree -r --name-only main

Output evidence:

Artifact directory: /tmp/agentv-results-branch-uat-wITm8Z/source/.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z
RESULT: PASS  (1/1 scored >= 80%, mean: 100%)
Results written to: /tmp/agentv-results-branch-uat-wITm8Z/source/.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/index.jsonl
Results published locally to . (agentv/results/v1:branch-storage-uat/2026-06-17T11-51-53-501Z)

## main
97ef27fe91fe0ef2a3b266202426191139db5d0c refs/heads/agentv/results/v1
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/benchmark.json
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/index.jsonl
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/timing.json
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/transcript.jsonl
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/grading.json
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/input.md
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/outputs/answer.md
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/outputs/response.md
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/outputs/trace-envelope.json
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/outputs/transcript.jsonl
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/task/EVAL.yaml
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/task/targets.yaml
.agentv/results/runs/branch-storage-uat/2026-06-17T11-51-53-501Z/uat/uat-pass/timing.json
.agentv/config.yaml
.agentv/targets.yaml
.gitignore
evals/uat.eval.yaml

The UAT also checked git branch --show-current before and after the eval; both were main. The results branch tree was additionally filtered with grep -v '^\.agentv/results/' and produced no unexpected paths.

Notes

The branch writer follows the local Entire CLI pattern researched during this task: write blobs/trees/commits directly, update the configured branch ref, and push an explicit refs/heads/<branch>:refs/heads/<branch> refspec instead of creating or switching a source worktree.

Blockers: none.

@christso
christso marked this pull request as ready for review June 17, 2026 12:10
@christso
christso merged commit 922ac10 into main Jun 17, 2026
8 checks passed
@christso
christso deleted the av-results-branch-storage branch June 17, 2026 12:10
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant