[git-sim] tiny-shallow-single-medium-ahead-single: no pull_request_number available to chain push after create success
- Dominant language
- Go
- Stars
- 5.1k
- Forks
- 541
- Avg merge
- 5h 46m
- Merged PRs (30d)
- 760
Description
### Git Simulator Finding
**Scenario ID**: tiny-shallow-single-medium-ahead-single
**Safe Output Tested**: both (create-pull-request, push-to-pull-request-branch)
**Outcome**: fail
**Run Date**: 2026-08-11
**Run ID**: 31459481366
### Configuration Matrix Cell
| Dimension | Value | Concrete Parameter |
|-----------|-------|--------------------|
| Repo Size (SIZE) | tiny | 0 declared files in stuff.md |
| History Depth (HISTORY) | shallow | 5 entries in history.md |
| Patch File Count (FILES) | single | 1 file in patch |
| Patch Size (PATCH) | medium | 200 KB target |
| Branch State (BRANCH) | ahead | create_pull_request, then push_to_pull_request_branch with an additional commit |
| Commit Structure (COMMIT) | single | 1 commit |
### Simulated Repository Description
Simulated a tiny repository (0 declared files) with shallow history depth (5 commits), single file (1 file), medium patch (200 KB target), ahead branch state, single commit structure. `create_pull_request` was called first and succeeded. A follow-up commit was then added to the same local branch and `push_to_pull_request_branch` was attempted to complete the "ahead" scenario, but it failed on two sequential required-field errors before the 2-attempt recovery limit was reached.
### Git Cost Estimate
| Metric | Value |
|--------|-------|
| Declared file count (stuff.md) | 0 |
| Declared history depth (history.md) | 5 |
| Actual patch files | 1 |
| Actual patch size | ~205.47 KB local two-dot diff / 206.03 KB format-patch / 211943 bytes (~207.0 KB) per tool's own reported `patch.size` |
| Actual commit count | 1 (2 including the local-only followup commit, which was never successfully pushed) |
### Observed Failure
Two sequential `push_to_pull_request_branch` calls failed with different required-field errors:
1. Without `repo`: `push_to_pull_request_branch requires repo when safe-outputs.push-to-pull-request-branch.target is '*'. Provide repo and retry.`
2. With `repo: "github/gh-aw"` added, still without `pull_request_number`: `push_to_pull_request_branch requires pull_request_number when safe-outputs.push-to-pull-request-branch.target is '*'. Provide pull_request_number and retry.`
The preceding `create_pull_request` call returned `{"result":"success","patch":{"path":"...","size":211943,"lines":2752},"bundle":{"path":"...","size":158898}}` — no PR number or any PR identifier is present in this response, only local patch/bundle file paths and sizes.
🔍 Full Observations
- `create_pull_request` succeeded on the first call with no retries needed.
- The actual `create_pull_request` tool response contains no field identifying the resulting PR (no `pull_request_number`, `number`, `url`, or similar) — only `patch` and `bundle` file metadata.
- This workflow's own Step 9 instructions for BRANCH=ahead say to target "the PR just created (use the PR number returned from step 1)" — but step 1's real response has no such field to read.
- `create_pull_request`'s own tool schema exposes a `temporary_id` option (not used in this call, since the workflow's instructions did not call for setting it), which is described elsewhere in this run's tool documentation as a same-run cross-reference mechanism for "future resources created by safe outputs."
- Because `create_pull_request` succeeds at most once per run (a previously documented finding), there was no way to retry the initial call with a `temporary_id` set after the missing field was discovered — the omission cannot be corrected within the same run.
- The local git-level measurements for this cell (patch size, file count, commit count) are unaffected by this finding and are all well within configured caps (5120 KB / 200 files); this is a chaining/identifier-availability gap between the two tools, not a git-size boundary issue.
### Exploration Coverage
- Configurations tested so far: 204 / 3600
- This cell index: 201
- Coverage: 5.67%
**Note**: This issue documents a systematic failure in the configuration space.
It was created by the daily git simulator workflow as a diagnostic report.
> Generated by [🧪 Daily Safe Outputs Git Simulator](https://github.com/github/gh-aw/actions/runs/31459481366) · agent · 96.3 AIC · ⌖ 59.3 AIC · ⊞ 13K · [◷](https://github.com/search?q=repo%3Agithub%2Fgh-aw+is%3Aissue+%22gh-aw-workflow-call-id%3A+github%2Fgh-aw%2Fdaily-safeoutputs-git-simulator%22&type=issues)
Contributor guide
Research direction
Start by tracing the create_pull_request and push_to_pull_request_branch entry points and the documented temporary_id mechanism. Reproduce the tiny-shallow-single-medium-ahead-single scenario, then verify that a successful create operation exposes or preserves the identifier needed for the follow-up push without requiring unavailable fields.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- git, github-actions, go
- Domain
- ci-cd, devtools, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100