arcane-cli 1.10.1 → 1.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Spell — Sync Pull Request
|
|
3
|
-
description: Safely sync an open PR's branch with its target when it has fallen behind — recoverable pre-rebase ref, mechanical
|
|
3
|
+
description: Safely sync an open PR's branch with its target when it has fallen behind — recoverable pre-rebase ref, mechanical / regenerable / ambiguous conflict handling, force-with-lease push, provider-verified landing. Use when a PR needs rebasing onto a moved target, or was routed here from spell-create-pull-request/spell-ship's own conflict-stop points.
|
|
4
4
|
claude_description: Use PROACTIVELY whenever an open PR has fallen behind its target branch and needs a safe rebase/sync, or when spell-create-pull-request/spell-ship stop on a conflict they route here.
|
|
5
5
|
argument-hint: '[PR number or branch name]'
|
|
6
6
|
agent: agent
|
|
7
|
-
last_updated: 2026-
|
|
7
|
+
last_updated: 2026-10-01
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
## Executive Summary
|
|
@@ -13,7 +13,9 @@ last_updated: 2026-08-31
|
|
|
13
13
|
- It is the recovery path `spell-create-pull-request` and `spell-ship` route to when they detect a
|
|
14
14
|
conflict they deliberately don't try to resolve themselves.
|
|
15
15
|
- It draws a hard line between conflicts safe to resolve mechanically (identical changes on both sides)
|
|
16
|
-
and conflicts that need a human — it never guesses on the ambiguous side of that line.
|
|
16
|
+
and conflicts that need a human — it never guesses on the ambiguous side of that line. A third class,
|
|
17
|
+
a script-regenerable artifact, is neither merged nor handed off: it is regenerated against the rebased
|
|
18
|
+
tree and verified by its own check.
|
|
17
19
|
- Every history-rewriting step is preceded by a recoverable ref, and every push uses
|
|
18
20
|
`--force-with-lease`, never bare `--force`.
|
|
19
21
|
|
|
@@ -72,7 +74,7 @@ Resolve the repository's actual merge-strategy ladder from `git-conventions.md`
|
|
|
72
74
|
- **Never** produce a squash or semi-linear result as part of this sync — those are never sanctioned,
|
|
73
75
|
regardless of which of the two above applies.
|
|
74
76
|
|
|
75
|
-
## Step 3 — Classify any conflict: mechanical
|
|
77
|
+
## Step 3 — Classify any conflict: mechanical, regenerable, or ambiguous
|
|
76
78
|
|
|
77
79
|
If Step 2 completes with no conflicts, skip straight to Step 4 — **this is the common case and it must
|
|
78
80
|
not be treated as a special case of conflict handling.**
|
|
@@ -84,6 +86,25 @@ then classify **each conflicted hunk independently** — a single file can conta
|
|
|
84
86
|
same import added the same way), or one side's change is a strict superset of the other's with no
|
|
85
87
|
semantic divergence. Resolve by keeping the superset/identical content, verify no line from either
|
|
86
88
|
side's *unique* content was dropped, stage the file, and continue the rebase/merge.
|
|
89
|
+
- **Regenerable** — the file is a committed artifact that a script owns: a known command regenerates it
|
|
90
|
+
from other files in the tree and overwrites it unconditionally, ignoring any conflict markers already
|
|
91
|
+
in it. Neither side's content is the right answer, because both were computed from trees that no
|
|
92
|
+
longer exist; the correct content is a fresh regeneration against the post-rebase tree. **Do not
|
|
93
|
+
hand-merge the diff and do not pick a side.** Leave the conflicted file as it is, run its regeneration
|
|
94
|
+
command, verify with the file's own `--check` command, then stage the file and continue the
|
|
95
|
+
rebase/merge. Known artifacts and their commands:
|
|
96
|
+
- `docs/plans/*/show-report.{json,html}` — `npm run fix:report` in Arcane's own repository (`spell
|
|
97
|
+
report` in a consumer), verified by `npm run check:report`. On a program's own `completed:` day the
|
|
98
|
+
regeneration must go in a **trailer-free, report-only commit** that touches nothing else, because
|
|
99
|
+
the close-commit logic counts any other commit made that day (recorded in
|
|
100
|
+
`docs/plans/upstream-intake-2026-09/PLAN.md`, "What this program taught").
|
|
101
|
+
- Self-hosted parity copies and client shims under `.arcane/`, `.github/`, `.claude/` and `.agents/`
|
|
102
|
+
in Arcane's own repository — `npm run fix:self-host-parity`, verified by
|
|
103
|
+
`npm run check:self-host-parity`. A compiled asset with its own `fix:*`/`check:*` pair in
|
|
104
|
+
`package.json` follows the same rule.
|
|
105
|
+
- `package-lock.json` — `npm install` against the rebased `package.json`, verified by `npm ci`.
|
|
106
|
+
A file you cannot name a regeneration command for is not regenerable: classify its hunks as mechanical
|
|
107
|
+
or ambiguous like any other, and never promote a hand-edited file to this class to avoid a STOP.
|
|
87
108
|
- **Ambiguous** — the same lines changed with different intent, or you cannot establish with confidence
|
|
88
109
|
that one side's content is a strict superset of the other's. **STOP.** Do not guess, do not pick a
|
|
89
110
|
side, do not attempt a "reasonable-looking" merge of the two. Abort the in-progress rebase/merge
|
|
@@ -177,6 +198,8 @@ report the discrepancy rather than declaring the sync done.
|
|
|
177
198
|
```
|
|
178
199
|
|
|
179
200
|
- If Step 3 resolved any mechanical conflicts, list exactly which files and what was kept from each side.
|
|
201
|
+
- If Step 3 regenerated any artifact, name the file, the regeneration command that was run and the
|
|
202
|
+
`--check` command that verified the result.
|
|
180
203
|
- If Step 3 aborted on an ambiguous conflict, this report never runs — Step 3's own STOP report is final.
|
|
181
204
|
- Never delete the Step 1 recoverable ref as part of this report — that is the human's call.
|
|
182
205
|
|
|
@@ -185,6 +208,9 @@ report the discrepancy rather than declaring the sync done.
|
|
|
185
208
|
- Never push with bare `--force` — only `--force-with-lease`, and never retry a rejected lease blindly.
|
|
186
209
|
- Never guess on an ambiguous conflict — abort and hand off, every time, with no exception for
|
|
187
210
|
"obviously trivial-looking" content on either side that this spell cannot independently verify.
|
|
211
|
+
- Never hand-merge a script-regenerable artifact — regenerate it against the rebased tree and verify it
|
|
212
|
+
with its own check; and never classify a file as regenerable without naming the command that
|
|
213
|
+
regenerates it.
|
|
188
214
|
- Never skip the recoverable ref (Step 1), even for a sync expected to be clean — the ref costs nothing
|
|
189
215
|
and the alternative is an unrecoverable mistake on the case that turns out not to be clean.
|
|
190
216
|
- Never report a sync as complete on a push success alone — provider verification (Step 5) is mandatory.
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: Spell — Sync Pull Request
|
|
3
|
-
description: Safely sync an open PR's branch with its target when it has fallen behind — recoverable pre-rebase ref, mechanical
|
|
3
|
+
description: Safely sync an open PR's branch with its target when it has fallen behind — recoverable pre-rebase ref, mechanical / regenerable / ambiguous conflict handling, force-with-lease push, provider-verified landing. Use when a PR needs rebasing onto a moved target, or was routed here from spell-create-pull-request/spell-ship's own conflict-stop points.
|
|
4
4
|
claude_description: Use PROACTIVELY whenever an open PR has fallen behind its target branch and needs a safe rebase/sync, or when spell-create-pull-request/spell-ship stop on a conflict they route here.
|
|
5
5
|
argument-hint: '[PR number or branch name]'
|
|
6
6
|
agent: agent
|
|
7
|
-
last_updated: 2026-
|
|
7
|
+
last_updated: 2026-10-01
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
This prompt is the Arcane `spell-sync-pull-request` spell. Read [`.arcane/spells/spell-sync-pull-request.md`](../../.arcane/spells/spell-sync-pull-request.md) and follow it as the complete workflow.
|