seat: fetch a role clone that is on another branch or dirty (#1611)
Row 117. At a launch, update() kept a clone that was on another branch
or dirty and ran no git in it, so its refs/remotes/origin/* stayed as
old as the last clean launch. Now those two reasons get the clean
path's fetch, with the same arguments and environment, and no merge.
The result is a new outcome, fetched, with the reason, the clone's
branch and HEAD, and origin { branch, commit } after the fetch. Every
earlier check still keeps the clone with no fetch. The launcher writes
a checkout-fetched launch-log line, and the bundle prompt names a
fetched clone's branch, commit and origin. Nothing in unsafe(),
allowed(), gitEnv() or SAFE changed.
Candidate manifest 9fa839edfb2bd04771bbac1913b142cb16aef227a1265120e0d318fb64d6a502
from Darkwing's round 1 packet (17d801f48), on BASE 559ef2287. Dewey
approved in 28443. Sage reran the full gate at the landing target with
the candidate applied.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
This commit is contained in:
@@ -26,11 +26,12 @@
|
||||
// action.refused event; step 9's refusals the broker records itself. Then
|
||||
// the host makes sure the workspace has a clone of each project
|
||||
// (packages/seat/src/checkout.mjs): one it can't make refuses
|
||||
// checkout-failed, and one it leaves alone is a checkout-kept record in the
|
||||
// launch log. Then it builds the bundle, spawns the runner in its sandbox
|
||||
// (packages/seat/src/sandbox.mjs) with the paths it may see, binds the run's
|
||||
// process identity (the outer bwrap pid) and writes the new capability on
|
||||
// the runner's stdin. When the runner exits, the host ends the launch.
|
||||
// checkout-failed, one it fetches but doesn't fast-forward is a
|
||||
// checkout-fetched record in the launch log, and one it leaves alone is a
|
||||
// checkout-kept record. Then it builds the bundle, spawns the runner in its
|
||||
// sandbox (packages/seat/src/sandbox.mjs) with the paths it may see, binds
|
||||
// the run's process identity (the outer bwrap pid) and writes the new
|
||||
// capability on the runner's stdin. When the runner exits, the host ends the launch.
|
||||
//
|
||||
// `bus start <business> --pm` launches launch.by the same way with
|
||||
// launchedBy = the business's human and no caller capability.
|
||||
@@ -196,7 +197,10 @@ export function createLauncher({
|
||||
if (e instanceof CheckoutError) throw new Refusal("checkout-failed", `${e.project}: ${e.message}`);
|
||||
throw e;
|
||||
}
|
||||
for (const c of checkouts) if (c.outcome === "kept") record({ event: "checkout-kept", instance, project: c.project, reason: c.reason });
|
||||
for (const c of checkouts) {
|
||||
if (c.outcome === "kept") record({ event: "checkout-kept", instance, project: c.project, reason: c.reason });
|
||||
else if (c.outcome === "fetched") record({ event: "checkout-fetched", instance, project: c.project, reason: c.reason });
|
||||
}
|
||||
const { run, runDir } = newRun(dataRoot, b.id);
|
||||
const sessionDir = join(runDir, "session");
|
||||
mkdirSync(sessionDir, { mode: 0o700 });
|
||||
|
||||
Reference in New Issue
Block a user