Part of #8230, item 8. resumeInterrupted in src/crew/conversation.ts resumes a turn cut by a restart from its session. A write that finished on the forge, but whose answer the session never recorded, can be done again.
Record each write a via token sends before it runs (the tool, its arguments' hash, the conversation), and when the resumed turn sends the same write again, answer with what was already done instead of doing it twice. Or hold every write in a resumed turn as a confirm. Either way, add a test that fails on the repeat: a write recorded, the turn resumed, the same call sent, done once.
Part of #8230, item 8.
resumeInterruptedinsrc/crew/conversation.tsresumes a turn cut by a restart from its session. A write that finished on the forge, but whose answer the session never recorded, can be done again.Record each write a via token sends before it runs (the tool, its arguments' hash, the conversation), and when the resumed turn sends the same write again, answer with what was already done instead of doing it twice. Or hold every write in a resumed turn as a confirm. Either way, add a test that fails on the repeat: a write recorded, the turn resumed, the same call sent, done once.