feat(fixture): mirror the goal domain — /goal command, six verbs, projection unit
The keyless fixture now carries the goal chain end to end, mirroring the host: /goal enters the command catalog and its execute path brackets a goal/change create with the command lifecycle pair; the six mutation verbs CAS-check the projected current goal and append whole-value changes (the shared append path broadcasts the session event and the goal projection frame); the tail-page projections block and the mux-open baseline always carry the goal key (null before create / after clear). Connection specs follow: the lifecycle round-trip replaces the not-implemented stubs, and the mux baseline expects the third unit frame. Also: GoalBar inline errors use ASCII parens around the code (review feedback on #842).
This commit is contained in:
@@ -52,7 +52,7 @@ export function GoalBar({ goal, onEdit, onResume, onClear }: GoalBarProps) {
|
||||
if (result.ok) {
|
||||
setEditing(false)
|
||||
} else {
|
||||
setActionError(`${result.error.message}(${result.error.code})`)
|
||||
setActionError(`${result.error.message} (${result.error.code})`)
|
||||
}
|
||||
}, [draft, onEdit])
|
||||
|
||||
@@ -61,7 +61,7 @@ export function GoalBar({ goal, onEdit, onResume, onClear }: GoalBarProps) {
|
||||
setActionError(null)
|
||||
const result = await action()
|
||||
setPending(false)
|
||||
if (!result.ok) setActionError(`${result.error.message}(${result.error.code})`)
|
||||
if (!result.ok) setActionError(`${result.error.message} (${result.error.code})`)
|
||||
}, [])
|
||||
|
||||
// Loading, absent, and complete goals have no strip at all.
|
||||
|
||||
Reference in New Issue
Block a user