practice: the between-problems pause — conclude ends the turn, the learner's go-ahead paces the stream (round 16)
Owner ruling (2026-10-06): every concluded problem opens a pause. The
agent may speak its closing words about the learner's last thinking
after the conclude result, then ENDS ITS TURN — a system-prompt law
deliberately, per owner correction, NOT tool-level terminate. The next
problem is never posed until the learner explicitly moves on; the pause
is the session's teaching space (repairs, clarifications, follow-ups —
still surgical, never re-teaching).
The move-on signal is a first-class input: { type: "next" } appends a
practice-next marker (content = single-sourced NEXT_PROBLEM_TEXT — the
model's unambiguous go-ahead: pose per the selection rules or wrap if
the arc is complete). Honest 400s: practice sessions only, nothing
active (mid-problem input rides the dock), riding after any pending
dismissal synthesis exactly like text.
The fast path (owner approved: composer-band chip + Enter-on-empty):
- Composer.enterAction gains "next" — Enter on an EMPTY composer in
the pause fires the signal; typing anything makes Enter a send again;
busy (steer/stop) outranks the pause.
- The Next chip hovers at the composer band's top-right (pick-pill
chrome register) whenever the pause is live and a problem has ever
been posed; the placeholder becomes the hint ("Ask about this
problem — or press Enter for the next one…", exact);
- the transcript renders the signal as a compact centered NEXT PROBLEM
line (mono-caps chrome); session-core appends it optimistically.
CONCLUDE_ACK_TEXT rewritten to carry the law; doctrine §VIII gains the
pause law (owner-sanctioned edit #3); 00-base's conclude/dismissal
bullets rewritten + the between-problems section added.
This commit is contained in:
@@ -193,9 +193,20 @@ export const THINKING_LABEL = "Your thinking";
|
||||
|
||||
/** The conclude tool's ack — shared by the executed call (agent layer) and
|
||||
* the dismissal-synthesized pair (input-events), so a concluded problem
|
||||
* reads identically to the model however it concluded. */
|
||||
* reads identically to the model however it concluded. Owner round 16:
|
||||
* the turn ENDS after concluding (a system-prompt law, no tool-level
|
||||
* terminate — the model may speak its closing words first, then must
|
||||
* stop calling tools); the next problem waits for the learner's
|
||||
* explicit go-ahead. */
|
||||
export const CONCLUDE_ACK_TEXT =
|
||||
"Problem concluded — the composer is free; pose the next problem or wrap up.";
|
||||
"Problem concluded. Say your closing words about the learner's work if useful, then END YOUR TURN — no further tool calls. The next problem is NEVER posed here: it waits for the learner's explicit go-ahead (a *Next problem* message, or their own words asking for the next one). Between problems, answer their questions about the concluded one.";
|
||||
|
||||
/** The learner's explicit move-on signal (owner round 16, 2026-10-06):
|
||||
* the model-facing text of the practice-next marker — single-sourced
|
||||
* like THINKING_LABEL. The button/Enter-on-empty path appends the
|
||||
* marker; the model reads this and poses (or wraps) per the doctrine. */
|
||||
export const NEXT_PROBLEM_TEXT =
|
||||
"[NEXT PROBLEM] — the learner's explicit go-ahead: pose the next problem now per the selection rules, or wrap the session in text if the arc is complete.";
|
||||
|
||||
/** The compaction marker's model-facing header (owner round 14,
|
||||
* 2026-10-05). The marker's content is this header + the summary — the
|
||||
|
||||
Reference in New Issue
Block a user