Skip to content

Experiment PR disposition + serialization policy#166

Open
danReynolds wants to merge 1 commit into
mainfrom
experiment-merge-policy
Open

Experiment PR disposition + serialization policy#166
danReynolds wants to merge 1 commit into
mainfrom
experiment-merge-policy

Conversation

@danReynolds

Copy link
Copy Markdown
Owner

What

Adds three sections to resqlite-experiment/SKILL.md so scheduled experiment runners stop leaving PRs stacked open.

1. Closing out the PR: merge, auto-merge, or hold

Disposition is decided by the diff, not the verdict word:

  • No runtime code touched (lib//native//hook/ clean) → gh pr merge --squash --auto. Covers recorded rejections, measurement lanes, tooling/CI guards. Close instead of merge if the record adds no reusable signal.
  • Runtime code touched → hold open for human review, even if green and "rejected".

2. One experiment in flight at a time

Every experiment PR rewrites the same shared files (README.md, signals.json, generated history.json), and the freshness CI gate fails any PR whose history.json predates a merge — so concurrent PRs stale each other and pile up. Adds: atomic experiment-number reservation (check open PRs/branches, not just the README) and "don't open N+1 while a prior is unmerged." This is the root cause of the current pile and the three-way exp 168 number collision (#161/#162/#164 all claimed 168).

3. Resolving a stale derived-file conflict

The mechanical recipe: merge main, regenerate history.json/devices.json, hand-union signals.json, run the two CI checks locally, commit.

Why now

Five experiment PRs were open at once; three of them (#161/#162/#164) collided on experiment number 168, which made their signals.json/README impossible to union without a renumber. This policy prevents both failure modes going forward.

🤖 Generated with Claude Code

Codifies how scheduled experiment runs should close out their PRs so they
stop stacking up open:

- Disposition by diff, not verdict: PRs touching no runtime code
  (lib/native/hook) auto-merge on green; runtime-code PRs hold for review.
- One experiment in flight at a time + atomic number reservation — the root
  cause of both the stacking and the three-way exp-168 number collision.
- A recipe for resolving the shared derived-file (history.json/signals.json)
  conflicts when a PR does fall behind main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant