@spexcode/spec-cli 0.7.0-next.7 → 0.7.0-next.8

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spexcode/spec-cli",
3
- "version": "0.7.0-next.7",
3
+ "version": "0.7.0-next.8",
4
4
  "type": "module",
5
5
  "description": "SpexCode CLI + server. The root spexcode package delegates to this compiled package; dashboard assets live in @spexcode/spec-dashboard.",
6
6
  "bin": {
@@ -35,12 +35,12 @@
35
35
  "test": "tsx --import ../scripts/test-home.mjs --test src/*.test.ts"
36
36
  },
37
37
  "dependencies": {
38
- "@spexcode/session-application": "0.7.0-next.7",
39
- "@spexcode/session-selflaunch": "0.7.0-next.7",
40
- "@spexcode/spec-core": "0.7.0-next.7",
41
- "@spexcode/spec-eval": "0.7.0-next.7",
42
- "@spexcode/spec-forge": "0.7.0-next.7",
43
- "@spexcode/transcript": "0.7.0-next.7",
38
+ "@spexcode/session-application": "0.7.0-next.8",
39
+ "@spexcode/session-selflaunch": "0.7.0-next.8",
40
+ "@spexcode/spec-core": "0.7.0-next.8",
41
+ "@spexcode/spec-eval": "0.7.0-next.8",
42
+ "@spexcode/spec-forge": "0.7.0-next.8",
43
+ "@spexcode/transcript": "0.7.0-next.8",
44
44
  "smol-toml": "^1.8.0"
45
45
  },
46
46
  "devDependencies": {
@@ -19,9 +19,15 @@ Land the current SpexCode session's branch; do not dispatch another merge reques
19
19
  3. Immediately before landing, verify
20
20
  `git merge-base --is-ancestor <source-head> <session-head>`. If it fails, sync again. A clean textual merge
21
21
  is not product proof.
22
- 4. In the source-of-truth checkout, make one `--no-ff` merge of the already-synced session tip. Do not resolve
23
- conflicts there. If unrelated dirty work prevents the merge, preserve it byte-for-byte and report the exact
24
- overlap rather than forcing, resetting, or committing it.
22
+ 4. Land with one `--no-ff` merge of the already-synced session tip, without touching the source checkout's
23
+ dirty work. Git refuses a merge over a dirty index, so do NOT clear it: add a temporary detached worktree of
24
+ the source head (`git worktree add --detach <tmp> <source-branch>`), make the `--no-ff` merge there, then
25
+ fast-forward the source checkout to that commit (`git merge --ff-only <tmp-head>`) and remove the temporary
26
+ worktree. A fast-forward never rewrites a path the merge did not change, so user-owned dirty files keep
27
+ their bytes and their staged/unstaged state. Never `git restore`, `reset`, `checkout`, `stash`, or overwrite
28
+ a user-owned path — an unstaged edit has no blob anywhere, so "save and put back" loses it, and a copy of the
29
+ same path from another worktree is a different version, not a restoration. Do not resolve conflicts in the
30
+ source checkout; if the merge genuinely overlaps a user-owned path, stop and report the exact overlap.
25
31
  5. Verify the source checkout has no `MERGE_HEAD`, the session tip is its ancestor, unrelated dirty
26
32
  fingerprints are unchanged, and the post-merge gates pass. Push the source-of-truth branch only after
27
33
  those checks.