fix(story-mode): git lookups right after a save read "Claude checks what it saved"

From both round-11 readers: `git --git-dir=origin.git log -1 master;
git status -sb | head -1` after a push read "Claude looks around the
project", so a reader could not tell the save was verified. A look made
only of git lookups (log, status, show, ls-remote, …, piped to head or
tail) after a save in the same turn now reads "Claude checks what it
saved."

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Codeman maintainer committed 2026-10-18 18:00:13 +02:00
1 parent 84c4be2d77
commit 1a66dbabfb
4 files changed
+31 -4

No files matched your search

@@ -205,7 +205,7 @@
{
"kind": "investigate",
"ok": null,
"story": "Claude looks around the project.",
"story": "Claude checks what it saved.",
"unaskedSave": false,
"director": "Bash · git --git-dir=origin.git log --oneline master; git status -…",
"balloon": null,
@@ -298,7 +298,7 @@
{
"kind": "investigate",
"ok": null,
"story": "Claude looks around the project.",
"story": "Claude checks what it saved.",
"unaskedSave": false,
"director": "Bash · git --git-dir=origin.git log --oneline -1 master; git statu…",
"balloon": null,
@@ -313,7 +313,7 @@
{
"kind": "investigate",
"ok": null,
"story": "Claude looks around the project.",
"story": "Claude checks what it saved.",
"unaskedSave": false,
"director": "Bash · git log --oneline",
"balloon": "Step 16:",
+19
View File
@@ -1084,6 +1084,25 @@ describe('buildStoryPage', () => {
expect(page.panels.map((p) => p.caption.story)).toContain('Claude changes run.sh; the tests pass.');
});
it('git lookups after a save are Claude checking its save, and stay fast on a crafted command', () => {
const look = (saveFirst: boolean, command: string) =>
pageOf([
prompt('go'),
...(saveFirst ? bash('b0', 'git commit -qm "add a"', 'Commit', '') : []),
...bash('b1', command, 'Look', 'ok'),
end(1000),
]).panels.find((p) => p.kind === 'investigate')?.caption.story;
expect(look(true, 'git --git-dir=origin.git log --oneline -1 master; git status -sb | head -1')).toBe(
'Claude checks what it saved.'
);
expect(look(false, 'git log --oneline; git status -sb | head -1')).toBe('Claude looks around the project.');
// The wording reads the event's display label (clipped), so a long command costs nothing; the
// panel's kind still comes from the whole command.
const start = performance.now();
expect(look(true, `git log ${'a '.repeat(100_000)}&& cat x`)).toBeTypeOf('string');
expect(performance.now() - start).toBeLessThan(1500);
});
it('a short ending keeps the sentence that leaves something open', () => {
const page = pageOf([
prompt('run them'),