Skip to content

Canonical merge of #761 - #762

Merged
MongLong0214 merged 3 commits into
mainfrom
canonical/pr-761
Aug 18, 2026
Merged

Canonical merge of #761#762
MongLong0214 merged 3 commits into
mainfrom
canonical/pr-761

Conversation

@commitlore-canonical-build

Copy link
Copy Markdown
Contributor

The commit that will land for #761: main plus that source plus a canonical rebuild, built together so all eleven required contexts run on the tree that merges rather than on one that resembles it.

#761 carries source only, which is what a contributor on a host that cannot run a linux/amd64 Docker build can produce (#720). Nothing was rebuilt by hand.

Merge this with a merge commit, not a squash. This branch merged #761 with --no-ff, so its head commit is an ancestor here: a merge commit lands that commit on main, and GitHub then records #761 as merged because its head is reachable -- which is what T-1502 asks for. A squash lands new bytes instead, and #761 stays open with nothing to point at.

This body deliberately carries no closing keyword. GitHub binds one only to the number straight after it, and a pull request closed by keyword is recorded closed rather than merged -- the opposite of the line above. Reachability does the closing here.

Opened by canonical-merge.yml for #719.

MongLong0214 and others added 3 commits August 18, 2026 15:35
Pushing the v1.1.3 tag printed `notes mirror (origin) failed: spawnSync git
ETIMEDOUT`. Nothing was wrong with the transport, and nothing needed doing that
the rest of the line did not already say -- but the sentence names the call that
returned rather than the decision that was made, so it reads as git having
failed and sends whoever gets it to look at a remote that is fine.

The two seconds are this hook's. A notes mirror is auxiliary to a branch push,
so the budget exists to stop an offline push feeling stuck, and declining to
wait is the hook working. `spawnSync` had no way to say that, and the raw code
reached the operator unchanged.

The line now says whose budget ran out, and interpolates the value from
`PRE_PUSH_NOTES_SYNC_TIMEOUT_MS` so the sentence cannot drift from the constant
it describes. Every other failure detail is untouched -- a refused connection
still reports as a refused connection, because that one is about the transport.

This is #746 in a second hook: a message accurate about the mechanism and wrong
about the situation costs more than a vague one.

Limit: only ETIMEDOUT is rewritten, so a transport that hangs without setting that code still surfaces its raw detail
Blast: local
Undo: easy
Certainty: firm
Record-Id: r-etimeout
Provenance: authored
Verified: with dist unrebuilt the extended timeout test fails naming the real string it still matched, and passes after the rebuild with all six pre-push tests green; the assertions were first added to the wrong test in the same file and a deliberately impossible expectation still passed, which is how that was caught
CommitLore-Version: 2.0.0
`build:canonical` on the merged tree, so the commit that lands matches the source it lands with. The pull request carried source only, which is what a contributor on a host that cannot run a linux/amd64 Docker build can produce (#720).

Limit: this proves the bundle matches this tree; whether this tree is what a reviewer wants is what the pull request is for
Blast: system
Undo: easy
Certainty: firm
Record-Id: r-canonmerge761
Provenance: authored
Verified: artifact:verify passed against the regenerated manifest in the same job, before any credential was available to it
CommitLore-Version: 2.0.0
@github-actions

Copy link
Copy Markdown

CommitLore — record lint

Trailers: clean — 3 commits in origin/main..6a88f2f4e0674d6a98061226f2af61cd4bbb1f6e
Active constraints: not read — commitlore: git log --follow accepts exactly one pathspec, so renames are not followed for 6 paths; query one path at a time to follow its rename chain (6 changed paths)

Trailer violations fail this check. Active constraints are informational — they are what the repository already decided, not a verdict on this PR.

@MongLong0214
MongLong0214 merged commit e4e5154 into main Aug 18, 2026
12 checks passed
MongLong0214 added a commit that referenced this pull request Aug 18, 2026
The inline version required the canonical branch tip to have two parents. A
real tip has one. #762's `6a88f2f4` is a rebuild commit whose parent
`acfed4a5` is the two-parent merge, because the rebuild commits on top of the
merge whenever `dist/` actually changes -- which is the ordinary case, not an
edge one.

The tests I wrote for it passed. They grep the workflow as text, and text
cannot be run. So the check moves into `scripts/verify-canonical-handoff.mjs`,
where the invariant is a commit graph and a graph can be built and mutated.

`test/verify-canonical-handoff.test.ts` builds a repository shaped like a real
run -- main with a committed bundle, a source-only branch, a `--no-ff` merge, a
rebuild on top -- and applies one mutation per case:

  a workflow file added to the rebuild commit      refused, names the path
  a source file added to the rebuild commit        refused, names the path
  the merge's second parent replaced               refused, names both commits
  an edit amended into the merge itself            refused on the tree, right parents
  a source branch carrying `dist/` itself          refused before anything else
  two commits stacked on the merge                 refused -- one rebuild, not two
  the two honest shapes                            accepted

The tree check is the one the parent check cannot do. `git merge-tree
--write-tree` recomputes the merge here from the two commits the caller
resolved from GitHub, so a merge with the right parents and a smuggled edit
does not survive having the right shape.

The workflow-text test now asserts the inline form is *gone*, so it cannot
return without the graph tests coming with it.

Limit: the script trusts the two shas it is given, so it is only as good as the caller resolving them from GitHub rather than from the bundle
Blast: module
Undo: easy
Certainty: firm
Record-Id: r-handoffgraph
Provenance: authored
Verified: run against the real #762 handoff -- base ba9b0cf, source 09a1890, tip 6a88f2f -- which it accepts and which the inline version would have refused; deleting the script fails all eight graph tests and restoring it passes them
CommitLore-Version: 2.0.0
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