Skip to content

Commit ce1509a

Browse files
authored
Merge pull request #321 from flyingrobots/feat/isolated-warp-upgrade-fixture
[codex] Add isolated git-warp v17 upgrade harness
2 parents 5ed15dc + 23e5b7b commit ce1509a

17 files changed

Lines changed: 1241 additions & 300 deletions

bin/git-mind.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,3 +499,21 @@ switch (command) {
499499
process.exitCode = command ? 1 : 0;
500500
break;
501501
}
502+
503+
async function flushStream(stream) {
504+
if (!stream.writable || stream.destroyed) return;
505+
506+
await new Promise((resolve, reject) => {
507+
stream.write('', err => {
508+
if (!err || err.code === 'EPIPE' || err.code === 'ERR_STREAM_DESTROYED') {
509+
resolve();
510+
return;
511+
}
512+
reject(err);
513+
});
514+
});
515+
}
516+
517+
await flushStream(process.stdout);
518+
await flushStream(process.stderr);
519+
process.exit(process.exitCode ?? 0);

docs/design/git-warp-upgrade-audit.md

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
# git-warp Upgrade Audit
22

3-
Status: active execution on `feat/git-warp-upgrade-audit`
3+
Status: active execution. The original 14.x audit ran on
4+
`feat/git-warp-upgrade-audit`; the v17 continuation is running on
5+
`feat/isolated-warp-upgrade-fixture`.
46

57
Related:
68

@@ -47,6 +49,39 @@ That means this cycle upgrades Git Mind across three major versions of the subst
4749
This does not automatically mean "upgrade immediately no matter what."
4850
It does mean Git Mind should not keep expanding Hill 1 behavior without auditing the real upgrade surface first.
4951

52+
## 2026-05-31 v17 Continuation
53+
54+
The original audit cycle moved Git Mind to the 14.x substrate. A follow-on
55+
modernization is now needed because the live npm registry reports:
56+
57+
- latest published `@git-stunts/git-warp` version: `17.0.0`
58+
- latest published `@git-stunts/plumbing` version: `3.0.3`
59+
60+
`@git-stunts/git-warp@17.0.0` depends on `@git-stunts/plumbing@^3.0.3`, so
61+
the next substrate upgrade should move those packages together.
62+
63+
This pass keeps the upgrade sequence explicit:
64+
65+
1. freeze a sanitized Git-native fixture from the current v5 / git-warp 14 state
66+
2. include only `HEAD` and the relevant `refs/warp/gitmind/*` graph refs
67+
3. test that fixture in Docker without mounting this checkout into the container
68+
4. pack the current Git Mind package and copy it into the Docker context
69+
5. run graph/status/export assertions with a scrubbed home and Git config
70+
6. upgrade to git-warp 17 / plumbing 3 and prove the migrated fixture still reads
71+
72+
This fixture is intentionally a Git bundle rather than a raw working-directory
73+
archive. It preserves the exact Git object and WARP ref state under test while
74+
excluding `node_modules`, local Git config, remotes, hooks, reflogs, stash state,
75+
and host-specific paths.
76+
77+
Related issue: [#320](https://github.com/flyingrobots/git-mind/issues/320)
78+
79+
The local playback command for this safety rail is:
80+
81+
```bash
82+
npm run test:upgrade-fixture
83+
```
84+
5085
## Why This Cycle Exists
5186

5287
The goal is explicitly **not** to build a lot of new behavior on top of git-warp right now.

0 commit comments

Comments
 (0)