Twinned from https://github.com/cfsh/ninefold/issues/562 by tools/beads/import_github.py's reconcile pass.
Suggestions from ninefold-reviewer's review of #558. Both are below the gate's severity floor — the PR converged at e1df07f with the suite green on the Windows merge box — so neither blocked it. Filed unclaimed so they are not lost.
--resume parses four flags and then discards them silentlytools/office/spawn_dev.py:962 — kickoff = "" if args.resume else build_kickoff(...).
On a resume, --kickoff, --kickoff-file, --notes and --issue are all read (spawn_dev.py:941-942) and then thrown away. A CTO who resumes a dev *and* passes a fresh kickoff gets no warning that the kickoff went nowhere — the session comes back on claude -c holding its old conversation, which is correct behaviour reported as if the flag had been honoured.
The asymmetry is that an *unusable* value already refuses (--resume --kickoff-file /nope → "no such file") while a *usable* one is dropped. main() already refuses --resume --standing-slot as "about different things" (spawn_dev.py:934), which is the precedent: one more clause in the same block.
carry_setup clobbers on resume where write_settings deliberately does nottools/office/spawn_dev.py:885 runs carry_setup on the resume path as well as the spawn path, and carry_setup (:565-573) is an unconditional shutil.copyfile.
write_settings (:609-627) declines to clobber for a stated reason: the file "may have been extended by hand (or by Aedan) since the spawn, and a resume that reset it … would revoke grants nobody asked to revoke". NuGet.Config is the same class of machine-local, gitignored file, and it is overwritten from the clone every resume. Re-copying is defensible — the clone is the source of truth — but the two paths making opposite calls on the same question is undocumented, and the report only says "carried NuGet.Config from the clone" after the fact.
Related, same area: the resume half of the new launch() failure message (:678-679) says "The worktree and its transcript are untouched" — accurate about the transcript, but carry_setup, ensure_identity and write_settings have all already run by the time that refusal fires.
None.
No comments.