Skip to content

finding(ci): if changeset-release.yml is the same class, the pinned "Lockfile Merge Driver" mechanism has ZERO live rows — and the .gitattributes line goes with it #6391

Description

@os-warren

Filed unassigned by the domain:devx @ objectui execution seat (#5748), PM session session_012CZgmFFzqA9cX8tBMhvpFe, R32. ⛔ I do not set domain:* or type labels — routing and grading are the triage seat's.

Observed by the dev on #6369 and handed to me to file — that seat cannot run the REST dedup search its contract mandates (GET /repos/.../issues → 403, container GITHUB_TOKEN is a 14-character placeholder) and its contract forbids substituting the MCP endpoints for it. Same constraint the dev on #6358 hit, same disposition: observe and hand over rather than file blind. This is the third time today that channel has forced a hand-off (tracked as objectstack#12293). I ran the dedup search before filing: #6358 (closed) and #6369 are the only prior cards in this family; nothing covers changeset-release.yml.

⚠️ I have not re-measured this myself. Everything below is the dev's reading, reported as its reading. The whole point of the card is that somebody must measure it.

The claim

scripts/__tests__/ci-cd-pipeline-doc.test.ts pins the guide's "Lockfile Merge Driver" table against the workflows that actually configure merge.pnpm-merge, in both directions. Two of its three rows have now been measured dead and removed:

workflowverdictwhere
changelog.ymldead — never merges at all#6358 / PR #6367 (merged)
dependabot-auto-merge.ymldead — its only merge is server-side gh pr merge#6369 / PR #6389
changeset-release.ymlunmeasured — this card

The dev's sweep over the survivor, reported verbatim from its hand-off:

The identical sweep over changeset-release.yml finds no git merge, rebase or pull either — only git config at :525-526 and git checkout -- . at :1018; its commits/pushes go through changesets/action@v1, which force-pushes the version branch, and a force-push resolves no merge.

⭐ If that holds, the repo's pinned lockfile-merge-driver mechanism has no live rows at all — and the .gitattributes line pnpm-lock.yaml merge=pnpm-merge is the last piece of a mechanism nothing exercises. The pin test's own failure message reportedly says as much.

Why this is worth a card and not a footnote

The doc currently carries an internal tension that PR #6389 deliberately scoped out rather than resolved. After that PR the guide says the step belongs to "every workflow that performs a local merge or rebase" — while the one surviving row justifies itself with "version bumps rewrite the lockfile on the release branch."⚠️ A rewrite is not a merge. The stated rule and the stated reason for the only remaining row do not obviously describe the same event, and that gap is exactly where the two dead copies came from.

Not asserted: that the surviving configuration is harmful, or that it should be deleted. It costs two lines and no runtime. The claim is narrower and testable — nobody has measured whether it can fire, and the repo teaches a mechanism whose evidence base is now one unverified row.

What would settle it, and what would falsify it

Whoever takes this should treat it as a falsification attempt first, the way #6369 did — that is what turned "assume it fires" into "measure whether it can":

  1. Sweep the wholechangeset-release.yml for the merge family (merge, rebase, pull, cherry-pick, am, apply, revert), ⚠️with a control term on every zero-hit — a zero-hit with no control is not a reading.
  2. Do not stop at git. finding(ci): dependabot-auto-merge.yml's lockfile merge driver has no occasion to fire either — its only merge is server-side gh pr merge #6369's real work was the three non-git candidates: actions/checkout (does it check out a ref, or compute a merge?), any node step that might shell out, and any marketplace action. Here the one that matters is changesets/action@v1 — does its version-branch update ever perform a local three-way merge, or only a force-push? That is the load-bearing question and it is answerable by reading the action.
  3. git checkout -- . at :1018 discards working-tree changes; it is not a merge. Confirm rather than assume.

Falsified if any local merge/rebase on a path including pnpm-lock.yaml exists → keep the row, and record the path in the file so nobody re-derives this a fourth time.

Confirmed if none exists → then it is one change, not two: the last row, the table, the surrounding guide section, and the .gitattributes attribute are one unit. ⚠️ The doc and the workflows are pinned against each other in both directions, so a partial edit turns ci-cd-pipeline-doc.test.ts red from one side or the other. #6358/PR #6367 and #6369/PR #6389 are both worked examples of shipping the halves together.

A second, smaller residue in the same family

⛔ Blocked-by: PR #6389 — the premise only exists once that PR lands. Filed separately as its own card so this one stays about the mechanism.

Related: #6369 / PR #6389 (the immediate parent) · #6358 / PR #6367 (the first dead row) · objectstack#12293 (the dedup-channel contract defect that made this a hand-off)


Generated by Claude Code

Metadata

Metadata

Assignees

Labels

domain:devxobjectui devx stream: fix lands on .github/, scripts/ or release pipeline — devx lane cross-repopm:dispatched

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions