---
name: update-apply-confident-message
description: "update-apply UX fix (operator ruling 2026-06-15): public `spt update apply` SUCCESS surface must confidently say 'Updated', not internal 'trial' terminology; branch fix/update-apply-confident-message @03630ee awaiting doyle gate→merge, ships next release"
metadata: 
  node_type: memory
  type: project
  originSessionId: d64ebece-9471-415c-9618-a0ca95bcc4f9
---

**Operator ruling 2026-06-15** (separate from ADR-0020 PR #12): public v0.7.0 `spt update apply` SUCCESS surface printed internal trial/promotion mechanics ("trial started", "on trial; watch for a rollback notif") and never resolved a successful install to a success message (notif only fires on failure). A CI-passed signed release = trusted rollout, not a provisional trial → end-user surface must confidently state the update applied; genuine failures still surface loudly via the auto-rollback notif.

**FIX (surgical, spt crate) @ `03630ee` on branch `fix/update-apply-confident-message` (off main e08cea0):**
- cli.rs `render_pending_message` → `render_applied_message`: "Updated spt-core to v{product_version}." (or "(release {version})" fallback) + "Changelog: {RELEASES_URL}". Dropped trial/on-trial/auto-rollback/Watch-for-notif/daemon-status wording + the doc-comment rationale.
- RELEASES_URL: `www.github.com` → canonical `github.com`.
- Unit test inverted: asserts "Updated", never "trial"/"rollback", + non-www host guard.
- UNTOUCHED (doyle scope): readiness gate + auto-rollback machinery (spt-daemon brainproc/applyhost — the internal "trial" mechanism stays; only the user message changes); Quarantined/Refused/Rejected error surfaces stay honest. [impl->REQ-UPD-3] rides cmd_update_apply not the string → nothing re-anchored.
- Realigns the drifted impl to the REQ-UPD-8 registry description (which ALREADY read "Updated spt-core to vX.Y.Z.").

Self-verify GREEN (isolated worktree off e08cea0): nextest --workspace 1051 + clippy -D + traceable EXIT 0 + xtask OK. **Handed to doyle to gate→merge; ships next release.** doyle=gater. See [[agent-roles]].
