Skip to content

sync-skill: catch balanced -X ours seam damage, and stop typechecking the retired mobile-web project - #99

Open
zpyoung wants to merge 1 commit into
mainfrom
sync-lessons/v1.4.215
Open

zpyoung wants to merge 1 commit into
mainfrom
sync-lessons/v1.4.215

Conversation

@zpyoung

@zpyoung zpyoung commented Sep 28, 2026 •

Copy link
Copy Markdown
Owner
Files Added Deleted Net
Test 0 0 0 0
Prod 1 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​20 $\color{#cf222e}{\Huge{\mathbf{−}}}$​5 $\color{#1a7f37}{\Huge{\mathbf{+}}}$​15

Two findings from the v1.4.215 sync run (#98). Both are reproducible against that tag.

1. Step 8's fourth typecheck project no longer exists

v1.4.215 retired config/tsconfig.mobile-web.json in stablyai#22193 (git cat-file -e v1.4.215:config/tsconfig.mobile-web.json fails), and dropped it from TYPECHECK_PROJECTS in run-typecheck-projects-in-parallel.mjs. The gate's fourth command now fails with a missing-file error that says nothing about types.

Edit: Step 8 now runs node, web and cli, and tells the run to read the project list from the tag's runner script instead of trusting the skill's copy. references/file-ownership.md no longer says "four".

2. --verify-residuals misses -X ours damage when the line counts balance

On #98, re-merging every seam file with git merge-file --diff3 (base v1.4.207, ours 9710c6b44b, theirs v1.4.215) found 18 conflicted files. --verify-residuals had flagged only 16 of them. The other two kept their budgets:

  • config/scripts/pr-e2e-gate-contract.test.mjs: still names root_directory_guard, a job upstream removed.
  • src/renderer/src/components/native-chat/NativeChatToolLine.tsx: lost upstream's group-hover/tool-line rename, so the fork's hover styling stopped firing.

The ours.txt three-way merge has a related blind spot. It pulled upstream's new assertions about track-community-prs.yaml and package_windows into two exception-owned contract tests, even though the fork deletes both. Nothing flagged it until PR CI.

Edit: Step 6 now requires a clean re-merge of every seam file, and a grep of merged exception tests for deleted paths and jobs missing from the fork's pr.yml.

Scope is .claude/skills/sync-upstream/** only. Safety rules and the fix policy's never-list are untouched.

@greptile-apps

greptile-apps Bot commented Sep 28, 2026 •

Copy link
Copy Markdown

RetriggerConfidence Score: 4/5

[Low risk] Updates documentation for a merge-conflict handling skill.

The PR appears safe to merge, though clarifying the seam command and reconciling the typecheck instructions would make future syncs more reliable.

Findings

  1. P2 Seam command lacks file inputs ▶
  2. P2 Typecheck instructions disagree ▶

Summary

The PR adds a manual seam re-merge and exception-test audit to the upstream sync procedure, and removes the retired mobile-web typecheck command. The new re-merge procedure needs concrete file operands, and the typecheck instructions remain inconsistent with their reference.

Reviews (1) · Last reviewed commit: "docs(sync-skill): re-merge seams without..."

no shell command: those paths took a real three-way merge and must be read by hand against the
manifest's declared lines.

`-X ours` resolved every conflicting hunk in those files toward the fork, so re-merge each seam file

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Seam command lacks file inputs The new check names three commits, but git merge-file needs three file paths for each seam. It also prints the result rather than updating the seam file. Without instructions to extract those files and apply the result, an operator cannot reliably complete this required check.

Comment on lines 665 to 666

```sh

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Typecheck instructions disagree This step says to use the tag runner's TYPECHECK_PROJECTS, but shows a fixed set of three commands; the ownership reference still calls them four commands. The current fork runner uses a waves list, not TYPECHECK_PROJECTS. If a tag lists a different set of projects, following the displayed commands can leave one unchecked. Please make the gate and its reference agree on how to follow the tag's list.

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