cli, seat, harness: a project clone in each role workspace (#1585)
Row 91, round 3. Darkwing built it, Dewey approved it (comment 28150) on manifest ca570607 (8 paths, base2b2a9e14). At each launch the host makes or updates a git clone of the project in the role's workspace, and the session prompt names each clone. Round 3 closes Filbert's round 2 escape: a clone with a submodule is kept as it is, and no host git recurses into one (decision 130 thread). Live at the next bus restart; the prompt lines appear only when the launcher passes checkouts. Sage gate onfc6d5822plus the patch, 14:18:25Z to 14:22:27Z: bus 115, business 60, cli 131, control-board 124, conversation 182, discord 178, harness 67, ledger 78, mosaic 69, queue 150, runs 43, seat 89, tasks 89, webui 104, all fail 0. Every scripts/test-*.sh exited 0; test-release ran 14 cases. Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -103,6 +103,23 @@ test("the prompt's built-in tools line is the harness's own names, as the manife
|
||||
}
|
||||
});
|
||||
|
||||
// Row 91 (#1585): the prompt names each project clone, and why a kept one wasn't updated.
|
||||
test("the prompt names the project clones in the workspace, and none when there are none", (t) => {
|
||||
const line = (b) => readFileSync(b.files.prompt, "utf8").split("\n").filter((l) => l.startsWith("- Project clones: "));
|
||||
const plain = build(t, resolvedFor(t, "pm"));
|
||||
assert.deepEqual(line(plain), []);
|
||||
const dir = scratch(t);
|
||||
const session = (checkouts) => ({ run: "run-1", launchedBy: "pm", workspace: join(dir, "ws"), toolSocket: join(dir, "tools.sock"), turnMarker: join(dir, "turn.done"), checkouts });
|
||||
const two = build(t, resolvedFor(t, "pm"), { session: session([
|
||||
{ project: "stack", path: join(dir, "ws", "stack"), outcome: "updated", branch: "main" },
|
||||
{ project: "site", path: join(dir, "ws", "site"), outcome: "kept", reason: "dirty" },
|
||||
]) });
|
||||
assert.deepEqual(line(two), [`- Project clones: stack at ${join(dir, "ws", "stack")}, on branch main; site at ${join(dir, "ws", "site")}, not updated at this launch (dirty). Each is a git clone of the project. The host fetches from its origin at each launch; the origin is outside this sandbox.`]);
|
||||
const prompt = readFileSync(two.files.prompt, "utf8");
|
||||
assert.ok(prompt.indexOf("- Workspace: ") < prompt.indexOf("- Project clones: "));
|
||||
assert.deepEqual(line(build(t, resolvedFor(t, "pm"), { session: session([]) })), []);
|
||||
});
|
||||
|
||||
test("a bundle is written once: an existing file refuses", (t) => {
|
||||
const dir = scratch(t);
|
||||
mkdirSync(join(dir, "bundle"));
|
||||
|
||||
Reference in New Issue
Block a user