P0 tick finding (#238): the merge leg as shipped handled two conflict-shaped cases only by luck. This puts both into the written protocol.
Changed
.pi/skills/yj-loop/SKILL.md — merge authority: refresh before every merge (a behind-main branch is refused by block_on_outdated_branch; the refresh is where textual conflicts surface as resolvable diff text, hunk ownership deciding resolve vs. abandon-with-comment), re-poll required contexts on the refreshed head, merge one at a time, and watch the post-merge push run on main — a red main halts the loop.
.planning/plans/active/020-autonomous-backlog-loop.md — same three rules under Merge lifecycle, with the argument: the semantic-conflict class (two PRs, one file, clean merge, self-contradiction) is only visible in that post-merge run.
Verification run
make skill-check — green (47 targets, the hook's run and CI's)
Docs-only change: no Go, no frontend — lint/test/ui-test/e2e not demanded; CI still runs them on this PR
The conflict model this encodes was measured against the six PRs awaiting adoption: all mergeable today, three touching CLAUDE.md — the refresh step is what makes that overlap safe
## What this is
P0 tick finding (#238): the merge leg as shipped handled two conflict-shaped cases only by luck. This puts both into the written protocol.
## Changed
- `.pi/skills/yj-loop/SKILL.md` — merge authority: **refresh before every merge** (a behind-main branch is refused by `block_on_outdated_branch`; the refresh is where textual conflicts surface as resolvable diff text, hunk ownership deciding resolve vs. abandon-with-comment), re-poll required contexts on the refreshed head, merge one at a time, and **watch the post-merge push run on main** — a red main halts the loop.
- `.planning/plans/active/020-autonomous-backlog-loop.md` — same three rules under Merge lifecycle, with the argument: the semantic-conflict class (two PRs, one file, clean merge, self-contradiction) is only visible in that post-merge run.
## Verification run
- `make skill-check` — green (47 targets, the hook's run and CI's)
- Docs-only change: no Go, no frontend — `lint`/`test`/`ui-test`/`e2e` not demanded; CI still runs them on this PR
- The conflict model this encodes was measured against the six PRs awaiting adoption: all mergeable today, three touching `CLAUDE.md` — the refresh step is what makes that overlap safe
Closes #238
Adopting the six v0-era PRs surfaced two conflict-shaped cases the merge
leg handled only by luck. Behind-main branches are refused outright by
the repo's block_on_outdated_branch protection, so the leg now refreshes
every branch against origin/main before merging — which is also where a
textual conflict should surface, as diff text the loop resolves only
where it authored the hunks, otherwise abandoning the PR to a human
with a comment. And the one guard no mergeability check provides is the
push run on main after the merge: three PRs touching the same file can
merge cleanly and contradict each other, so a red main now halts the
loop instead of the tick reporting merged and moving on.
Closes#238
logan
merged commit 7b90633456 into main2026-09-03 13:53:45 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
What this is
P0 tick finding (#238): the merge leg as shipped handled two conflict-shaped cases only by luck. This puts both into the written protocol.
Changed
.pi/skills/yj-loop/SKILL.md— merge authority: refresh before every merge (a behind-main branch is refused byblock_on_outdated_branch; the refresh is where textual conflicts surface as resolvable diff text, hunk ownership deciding resolve vs. abandon-with-comment), re-poll required contexts on the refreshed head, merge one at a time, and watch the post-merge push run on main — a red main halts the loop..planning/plans/active/020-autonomous-backlog-loop.md— same three rules under Merge lifecycle, with the argument: the semantic-conflict class (two PRs, one file, clean merge, self-contradiction) is only visible in that post-merge run.Verification run
make skill-check— green (47 targets, the hook's run and CI's)lint/test/ui-test/e2enot demanded; CI still runs them on this PRCLAUDE.md— the refresh step is what makes that overlap safeCloses #238