docs(remediation): D-55e settled — the anomaly was a merge commit, and this repo shares the exposure
#1041 was never a squash. Verified on this repo: #1027, #1033 and #1032 have ONE parent and end with (#N); #1041 has TWO and begins "Merge pull request". A merge commit's author is whoever created the merge — ordinary git, not an anomaly. The rows differed by merge style, not by field, estate, path or account state, and the discriminator was one field nobody had read: parent count. Established with zero exceptions across four rows, two estates, two Gitea instances and three repos: squash merge sets author = poster and committer = merger. Of the three candidate discriminators I offered, merge path was correct and I had ranked it first. The 3-to-1 split was explicitly refused as a verdict, which is why the real answer stayed findable — a majority reported as a conclusion would have closed the question on the wrong side. And the resolution exposed a larger live problem, on THIS repo: mosaicstack/stack has default_merge_style = "merge", with both styles enabled and both in live use. The default path produces a merge commit, which attributes to the merger and loses authorship more completely than squash — squash at least keeps the poster in author, a merge commit keeps nobody. Same configuration as the USC repos, so this is not a USC problem. Merge style is itself load-bearing for attribution and must be explicit, never defaulted. Hard merge precondition for #1030: merged by the default path it becomes a merge commit and erases the poster as well as all three branch authors. It must be merged with an explicit squash style. The three prior deliveries are 1-parent only because merge-gate hardcodes {"Do":"squash"} — that fixed payload, criticised on the message-field axis, is protective on this one because it cannot silently fall to the repo default. Also confirmed here: default_delete_branch_after_merge = False, so the RM-02 branch retention is not on a timer. Co-authored-by: tl-mosaic <[email protected]> Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
@@ -794,6 +794,54 @@ required.
|
||||
> merge until `pr-merge.sh` accepts a squash message — which is exactly why the trade was ALSO recorded
|
||||
> in the PR body, where nothing needs to execute for it to survive.**
|
||||
|
||||
### D-55e — SETTLED: the anomaly was a MERGE COMMIT, and the discriminator was PARENT COUNT
|
||||
|
||||
**`#1041` was never a squash.** Verified independently on this repo:
|
||||
|
||||
| PR | parents | first line | author |
|
||||
| --------- | ------- | -------------------------------------------------------- | ---------- |
|
||||
| **#1027** | **1** | `RM-01: … (#1027)` | poster |
|
||||
| **#1033** | **1** | `RM-61: … (#1033)` | poster |
|
||||
| **#1032** | **1** | `fix(rm-03): … (#1032)` | poster |
|
||||
| **#1041** | **2** | **`Merge pull request 'chore(sync): merge main → next`** | **merger** |
|
||||
|
||||
**A merge commit's author is whoever created the merge — ordinary git, not an anomaly.** The rows
|
||||
differed by **MERGE STYLE**, not by field, estate, path, or account state. **The discriminator was one
|
||||
field nobody had read: parent count.**
|
||||
|
||||
> **★ ESTABLISHED, ZERO EXCEPTIONS — SQUASH MERGE: `author` = POSTER · `committer` = MERGER.**
|
||||
> Four rows, two estates, two Gitea instances, three repos.
|
||||
|
||||
**Of the three candidate discriminators offered, MERGE PATH was correct and was ranked first** — and the
|
||||
"3-to-1" was explicitly refused as a verdict, **which is why the real answer was still findable.** A
|
||||
majority reported as a conclusion would have closed the question on the wrong side.
|
||||
|
||||
> **★★ AND THE RESOLUTION EXPOSED A LARGER LIVE PROBLEM THAN THE ONE IT CLOSED — WHICH IS ON THIS REPO
|
||||
> TOO. MEASURED:**
|
||||
>
|
||||
> ```
|
||||
> mosaicstack/stack default_merge_style = "merge" allow_squash_merge = True
|
||||
> allow_merge_commits = True default_delete_branch_after_merge = False
|
||||
> ```
|
||||
>
|
||||
> **THE DEFAULT MERGE STYLE ON THIS REPO PRODUCES A MERGE COMMIT — AND A MERGE COMMIT ATTRIBUTES TO THE
|
||||
> MERGER, LOSING AUTHORSHIP MORE COMPLETELY THAN SQUASH.** Squash at least keeps the poster in `author`;
|
||||
> a merge commit keeps nobody. **Both styles are enabled and both are in live use here — `#1041` is the
|
||||
> proof.** Same configuration as the USC repos; **this is not a USC problem.**
|
||||
>
|
||||
> **⇒ MERGE STYLE IS ITSELF LOAD-BEARING FOR ATTRIBUTION AND MUST BE EXPLICIT, NEVER DEFAULTED.**
|
||||
|
||||
**★ DIRECT CONSEQUENCE FOR #1030 (the keystone), and it is now a hard merge precondition:** if `#1030` is
|
||||
merged by the DEFAULT path it becomes a **merge commit** and attributes to the merger — erasing not only
|
||||
`coder-mos1`/`coder-mos2`/`f10-coder` but the poster as well. **It MUST be merged with an EXPLICIT squash
|
||||
style.** The three prior deliveries (`#1027`/`#1033`/`#1032`) are 1-parent only because `merge-gate`'s
|
||||
payload hardcodes `{"Do":"squash"}` — **that fixed payload, criticised on the message-field axis, is
|
||||
PROTECTIVE on this one: it cannot silently fall to the repo default.** Keep it explicit when the message
|
||||
field is added.
|
||||
|
||||
**Also confirmed here:** `default_delete_branch_after_merge = False`, so `feat/rm-02-gate-registry`'s
|
||||
retention is **not on a timer** — consistent with the USC finding.
|
||||
|
||||
### D-55b — two parties quoting a third is not corroboration
|
||||
|
||||
The coordinator wrote _"installer-7's live-panel GREEN was the last thing before the command"_ **having
|
||||
|
||||
Reference in New Issue
Block a user