Files
DeepSeek-Reasonix/docs/SESSION_EXPERIENCE.md
T
SivanCola e36ef93a2f Simplify execution and completion semantics / 精简执行与完成语义 (#10198)
* Simplify execution and completion semantics

Problem:
Host-derived quality contracts, readiness gates, ordinary todo continuation,
and a separate Goal evaluator could prolong or block turns after the model had
finished, while mixing model claims with observed execution facts.

Root cause:
Execution safety, model completion judgment, and result presentation shared a
single quality-policy pipeline. Legacy delivery mode also propagated through
session, CLI, ACP, worktree, and recovery paths.

Fix:
Retire delivery mode and host quality obligations, keep Plan preapproval and
execution safety boundaries, drive Goal continuation from structured model
reports without an evaluator, and render facts separately from declarations.
Preserve legacy reads, explicit check recovery, historical evidence, and old
remote state without reactivating retired policy.

Verification:
- root and desktop Go suites
- focused root and desktop race suites
- frontend test:all and production build
- lint, generated contracts, cache guard, browser and native Electron checks

Cache impact:
One-time provider prefix change from retired tool discovery and updated tool
descriptions. Serialization and ordering remain stable within the version.

* Fix transcript history formatting

Problem:
The pull request's Linux and macOS test jobs stopped at the repository-wide
gofmt gate for internal/transcript/history.go.

Root cause:
A composite literal added during historical-check projection was not aligned
by gofmt before the initial push.

Fix:
Apply gofmt to the affected transcript history source.

Verification:
- gofmt -l . returns no files
- go test ./internal/transcript passes
- git diff --check passes

* Normalize subagent receipt paths for display

Problem:
The Windows isolated agent job rendered changed paths with backslashes while
the stable host-receipt contract and tests require slash-separated paths.

Root cause:
The simplified subagent completion path now exposes native receipt paths
directly, so Windows filepath normalization leaked into provider-visible
attestation text.

Fix:
Normalize only the rendered receipt and claim-violation path copies to forward
slashes. Keep native paths intact for write-scope enforcement and audit state.

Verification:
- focused host receipt and subagent completion tests pass
- deterministic backslash input test covers the platform-independent output
- repository gofmt and git diff checks pass

* Refresh desktop migration inventory

Problem:
The upstream CI refactor added one classified desktop CI job while this branch removes retired delivery surfaces, leaving the merged inventory count stale.

Fix:
Regenerate the desktop migration inventory with the current generator after merging main-v2.

Verification:
- go test -p 2 ./... -timeout 300s
- go test -p 2 ./... -timeout 300s (desktop)
- pnpm test:all && pnpm build
- make lint

* Wait for dock fixture hydration

Problem:
The dock browser benchmark could close Overview before the delayed bench session hydration completed. The authoritative hydrate then replaced the empty-state picker while Playwright was clicking Files.

Root cause:
The benchmark waited for the composer but not for the selected session snapshot, even though the fixture intentionally expands asynchronously.

Fix:
Wait for the fixture completion marker before mutating dock state.

Verification:
- node bench/dock-view-state.mjs (three consecutive runs)
- pnpm test:app-browser
- REASONIX_SETTINGS_BROWSERS=chromium pnpm test:settings-browser
2026-09-12 22:53:36 +08:00

2.6 KiB

Session experience

The desktop Settings page uses one Session experience preference to control how work in progress is presented in a transcript.

Modes

Mode While a turn is running After the turn completes
Standard Work in progress is visible. Completed work is collapsed by default; expand it from the message when needed.
Deep The complete work process is shown in real time. Completed work remains expanded; individual sections can still be collapsed manually.

This preference applies to reasoning, tool calls, sub-task progress, work-process cards, approvals, validation, and the active turn. It changes presentation only. It does not change the selected model, reasoning strength, provider request, cost, context window, or saved transcript data.

Manual expand/collapse is a message-level reading action and is retained for the message row. It does not create another global setting. Overrides are keyed by session and stable process-segment identity in a bounded in-memory cache. They survive React re-renders and transcript window recycling, but intentionally do not persist across application restarts.

Warnings, approvals, readiness states, extension cards, and other items that require user action remain outside the completed work-process fold, so standard execution never makes an action unreachable.

Configuration and compatibility

The canonical desktop configuration is:

[desktop]
session_experience = "standard"

The only valid values are standard and deep; missing or invalid values use standard. The Go Settings and startup snapshots are authoritative. The TypeScript field remains optional for one release so older backends and historical fixtures fall back to Standard; local storage is never allowed to override a backend snapshot.

Older setters and fields remain compatibility mirrors for one complete release cycle:

Legacy write Canonical result
SetDisplayMode(*) Standard
SetReasoningDisplayMode("expanded") Deep
any other reasoning value Standard
SetExpandThinking(*) Standard
process fold expanded / auto Deep / Standard

Every canonical write mirrors display=standard and reasoning=auto|expanded for rollback compatibility. These fields, setters, events, and local-storage mirrors may be removed only after the next complete release has shipped and downgrade support is no longer required.

Older binaries can discard unknown fields when rewriting configuration. Compatibility mirrors support old readers; concurrent old/new writers do not guarantee preservation of the new preference.