refactor: drop 12 runtimes, keep Claude, Codex, OpenCode, Cursor, ZCode, Antigravity

Removes kilo, kimi, kimi-code, copilot, windsurf, augment, trae, qwen, hermes,
cline, codebuddy and pi end to end: capability descriptors, installer branches
and converters (bin/install.js 14.9k -> 11.2k lines), TypeScript converters,
hook surfaces and runtime homes, review lanes qwen/kimi-code, the two pi
migrations, Kimi payload normalization in the hook guards, dead hostBehaviors
vocabulary, launcher home probes, fixtures, runtime-specific tests and the
prose that presented them as supported.

Installer output for the six kept runtimes is byte-identical to before the
prune. The Kimi tool-vocabulary tests in workflow-guard, read-guard and
read-injection-scanner are left in place pending a decision.
This commit is contained in:
Jakub Zych
2026-10-06 20:02:40 +02:00
parent 12ee75a509
commit 6cfa0c55d2
509 changed files with 1869 additions and 47737 deletions

View File

@@ -37,7 +37,7 @@
* - Runtime selection for rows 6/7 (orchestrator-worktree / none) uses the
* real capability-registry.cjs shipped alongside the hook, selected via
* MSD_RUNTIME (the same precedence resolveIsolationState implements):
* codex → orchestrator-worktree, windsurf → none. No fixture/mock
* codex → orchestrator-worktree, zcode → none. No fixture/mock
* registry is substituted — this is the real hook reading its real
* sibling data file, per the "drive the real hook entry point" mandate.
*/
@@ -137,7 +137,7 @@ function writeConfig(dir, content) {
describe('msd-agent-isolation-guard.js: applicability matrix (#3045)', () => {
let harnessProject; // MSD project resolving to harness-worktree (claude)
let orchestratorProject; // resolves to orchestrator-worktree (codex)
let noneProject; // resolves to none (windsurf)
let noneProject; // resolves to none (zcode)
let noMsdProject; // not a MSD project at all
let unreadableConfigProject; // config.json is a directory (EISDIR)
let corruptConfigProject; // config.json is invalid JSON
@@ -217,7 +217,7 @@ describe('msd-agent-isolation-guard.js: applicability matrix (#3045)', () => {
});
test('row 7: resolved mode none -> allow', () => {
const r = runHook(agentPayload(), noneProject, { MSD_RUNTIME: 'windsurf' });
const r = runHook(agentPayload(), noneProject, { MSD_RUNTIME: 'zcode' });
assert.equal(r.status, 0, `stdout: ${r.stdout}`);
assert.equal(r.stdout, '');
});
@@ -517,7 +517,7 @@ describe('msd-agent-isolation-guard.js: #3045 BLOCKER 2 — default-install fail
fs.mkdirSync(path.join(home, '.msd'), { recursive: true });
// defaults.json says a runtime with NO harness-worktree capability;
// config.json's own `runtime: claude` must take precedence.
fs.writeFileSync(path.join(home, '.msd', 'defaults.json'), JSON.stringify({ runtime: 'windsurf' }));
fs.writeFileSync(path.join(home, '.msd', 'defaults.json'), JSON.stringify({ runtime: 'zcode' }));
const r = runHook(agentPayload(), harnessProject, { HOME: home });
assert.equal(r.status, 2, `stdout: ${r.stdout} stderr: ${r.stderr}`);
@@ -729,7 +729,7 @@ describe('msd-agent-isolation-guard.js: #3566 — per-install .msd-runtime marke
const { resolveRuntimeNameFromCandidates } = require('../msd-core/bin/lib/runtime-name-policy.cjs');
// Distinct canonical runtimes so the precedence oracle is unambiguous.
const IDENTITY_POOL = ['claude', 'codex', 'windsurf', 'opencode'];
const IDENTITY_POOL = ['claude', 'codex', 'zcode', 'opencode'];
let savedHome;
let savedUserProfile;
@@ -816,8 +816,8 @@ describe('msd-agent-isolation-guard.js: #3566 — per-install .msd-runtime marke
});
test('#3566: MSD_RUNTIME env still outranks the install marker', (t) => {
setWorld(t, { marker: 'claude', envRuntime: 'windsurf' });
assert.deepEqual(identity(), { runtimeId: 'windsurf', confident: true });
setWorld(t, { marker: 'claude', envRuntime: 'zcode' });
assert.deepEqual(identity(), { runtimeId: 'zcode', confident: true });
});
test('#3566: empty marker is no signal — falls through to the defaults rung', (t) => {
@@ -1278,22 +1278,23 @@ describe('#3045 MAJOR — --harness-flag can now accept a bare CLI-flag value (C
});
test('record-dispatch-isolation --harness-flag=<bare-flag> persists ANY bare-CLI-flag-shaped value verbatim (parser is not Cursor-specific)', (t) => {
// A prior draft of this test asserted `runtimes.windsurf.runtime.harnessIsolationFlag
// === '--worktree'`, assuming Windsurf's registry entry mirrors Cursor's.
// It does not: Windsurf's `hostIntegration.dispatch.isolation` is 'none'
// and it declares NO `harnessIsolationFlag` at all — per ADR-1239
// (docs/adr/1239-msd-embeddable-orchestration-engine.md:247,250),
// `pi`/`zcode`/`windsurf` "genuinely cannot benefit and correctly stay
// none" because they lack named/concurrent subagent dispatch, so there is
// no per-dispatch isolation flag for Windsurf to record. That was a wrong
// test expectation (a fabricated registry precondition), not a production
// defect — corrected here to prove the `--harness-flag=<value>` parser
// generalizes to any bare-CLI-flag-shaped value, not merely Cursor's
// specific '--worktree' string (which the sub-test above already pins).
// A prior draft of this test asserted a non-Cursor runtime's
// `harnessIsolationFlag === '--worktree'`, assuming its registry entry
// mirrors Cursor's. It does not: zcode's `hostIntegration.dispatch.isolation`
// is 'none' and it declares NO `harnessIsolationFlag` at all — per ADR-1239
// (docs/adr/1239-msd-embeddable-orchestration-engine.md:247,250), such
// runtimes "genuinely cannot benefit and correctly stay none" because they
// lack concurrent subagent dispatch isolation, so there is no per-dispatch
// isolation flag for them to record. That was a wrong test expectation (a
// fabricated registry precondition), not a production defect — corrected
// here to prove the `--harness-flag=<value>` parser generalizes to any
// bare-CLI-flag-shaped value, not merely Cursor's specific '--worktree'
// string (which the sub-test above already pins). (Originally pinned on
// windsurf, retired in prune-runtimes.)
assert.equal(
runtimes.windsurf.runtime.harnessIsolationFlag,
runtimes.zcode.runtime.harnessIsolationFlag,
undefined,
'precondition: windsurf declares no harnessIsolationFlag (isolation: "none", ADR-1239)',
'precondition: zcode declares no harnessIsolationFlag (isolation: "none", ADR-1239)',
);
const dir = createTempProject('msd-3045-resolver-');