fix: serialize decision ledger writes
This commit is contained in:
@@ -130,7 +130,8 @@ const joinOnly = opts.length > 0 && opts.every((o) => o.decision.type === "join_
|
||||
```
|
||||
|
||||
Emit `join-review` with `detail` and `rationale`; accept only a response carrying the exact complete
|
||||
id set. After Continue persist all original decisions through atomic `decision add-join-set`.
|
||||
id set. After Continue persist all original decisions through atomic `decision add-join-set`, with
|
||||
a per-session cross-process lock covering ledger read, sequence assignment, and replacement.
|
||||
On free text, return feedback without persistence. Keep all other decisions on `multiselect`.
|
||||
|
||||
- [x] **Step 4: Write failing frontend widget tests**
|
||||
|
||||
@@ -36,8 +36,8 @@ the configured model activity.
|
||||
F4 calls to `reviewer_decide` whose merit decisions are all `join_modified` become a read-only
|
||||
`join-review` widget. Each proposed join is rendered as an informational card with its name,
|
||||
join expression, and rationale. `Continue` returns every join id; the gate accepts only that exact
|
||||
complete response and persists all decisions through one atomic ledger replacement. Malformed or
|
||||
partial responses re-present the widget. `Other — specify` returns textual feedback without
|
||||
complete response and persists all decisions through one atomic ledger replacement serialized by
|
||||
a per-session cross-process lock. Malformed or partial responses re-present the widget. `Other — specify` returns textual feedback without
|
||||
persisting the current proposal, so the model must revise and present the complete join set again.
|
||||
Mixed join/non-join calls remain regular
|
||||
multiselects, and the skill instructs the model to keep joins in a separate call.
|
||||
|
||||
Reference in New Issue
Block a user