Briefs: a merge pass never rebases on a rejected push #20

Open
eureka wants to merge 2 commits from self/merge-never-rebases into main
3 changed files with 22 additions and 2 deletions

View file

@ -139,7 +139,10 @@ little reading. Map nothing further ahead (SKILL.md step 1, "Map only what is
about to run"): later cuts are one line each in the prose map's cut sequence.
Admit only cut_specs, their superseding resolutions, and questions. In the
prose map at <path>, edit body facts and rationale. Also edit the model page
prose map at <path>, edit body facts and rationale. <path> is in a worktree
Self names, at the current head of the map's branch; never the operator's
checkout (2026-10-13: a loot-2 pass edited an operator checkout whose map was
three days stale, beside the operator's uncommitted work). Also edit the model page
whenever a probe changes a row's identity, lifecycle or authority. Imagination
wrote that page in 0b, and a model a cut contradicts is stale steering text.
Do not commit; the root agent commits. Do not change code in any repo. Scratch probes under
@ -388,7 +391,11 @@ Commits:
- Stage explicit paths only; never `git add -A`.
- Never amend a commit or force-push. Self and other agents commit on the
same branch while you work. Fix a commit with a new commit. On a rejected
push, `git pull --rebase`, then push.
push of a cut branch, `git pull --rebase`, then push. A merge pass that
pushes to master never rebases on a rejected push: rebase flattens the merge
commit and drops merge-time fixes (master broke at Aetheria 07854ed5,
2026-10-13). It fetches, merges `origin/master` into its verified merge,
re-verifies what the new upstream commits change, and pushes.
- In Git Bash, one call: `git add <paths> && git commit -F- <<'MSG' ... MSG &&
git push`. Never commit from PowerShell (it writes a BOM and breaks
here-strings).

View file

@ -341,6 +341,11 @@ invariants, not-in-scope list and canonical implementations are the typed
- **Admit only the ruling that answers a question.** Its `Answered`
resolution is derived in the same commit; admitting that resolution by hand
is refused `IdentityCollision`.
- **Re-mapping a withdrawn cut takes two batches.** First admit a `Withdrawn`
resolution on the spec's withdrawal resolution, which reopens the spec. Then,
in a second batch, admit revision N+1 with a `Superseded` resolution on
revision N. One batch holding both is refused `WouldReinstateOverLater`
(loot-2 r3, 2026-10-13). A fresh cut label at revision 1 needs neither.
- **A finding cannot be resolved `Superseded`** (`IncompatibleResolution`).
Resolve it `Recorded`, naming its successor in the reason.
- **Test negative greps before publishing them** in a spec's

View file

@ -2,6 +2,14 @@
Record each change to the skill together with the evidence that motivated it.
## 2026-10-13: a merge pass never rebases on a rejected push
Self, session `self-2026-10-13-ag`.
Evidence. `aetheria-release:cut_report:cut-reveals-replace-tiers.h3`: the merge agent's first push to master was rejected because a docs commit had landed. Following the Hands brief ("On a rejected push, `git pull --rebase`, then push"), it rebased: that flattened the merge commit and dropped its merge-time fix to two test files, so Aetheria master 07854ed5 did not compile until the agent repaired it forward in 20cd1d7c. Master history now carries the cut's commits twice.
What changed. The Hands brief's commit rules keep `git pull --rebase` for cut branches only. A merge pass that pushes to master fetches, merges `origin/master` into its verified merge, re-verifies what the new upstream commits change, and pushes.
## 2026-10-12: no test run of any size on Starfire
Self, session `self-2026-10-12-eureka`.