fix(work): keep narration truthful across steer - #25
Conversation
91d9953 to
e8dc5b2
Compare
|
Maintainer self-review complete: no blocking findings. The change removes mechanical run intake from spoken semantic progress, preserves Provider-authored direction and Host-observed facts with explicit evidence strength, and fences pre-steer milestones/directions using the Ledger steering state and observedAt boundary. Queued/applied steer retires stale nonterminal narration; rejected steer deliberately preserves prior evidence; terminal truth is not consumed. Dynamic tool output remains non-authoritative, and explicit success=false cannot be overridden by status=completed. Local validation on the rebased head: Ruff passed and 125 focused narration, observer, activity snapshot, status, adapter, recovery, and language tests passed. Required build and cpu-model-less checks are green on head e8dc5b2. Admin merge bypass is used only for the unavailable external approval requirement. |
中文摘要
关联问题:#24。
What and why
Work narration could keep a pre-amend design as the latest status evidence, discard its verification strength, and present future intent to the Narrator as verified progress. The same run could spend its first spoken update repeating the Host-dispatched task, while queued pre-steer narration remained eligible after the instruction changed.
This PR repairs the complete current-evidence boundary:
Fixes #24
Product semantics
This is a bounded Work presentation and evidence-authority repair.
The Host continues to own Work identity, steering state, activity facts, verification, cadence, and delivery. Provider prose and native tool titles remain reported evidence, never completion or Host verification. Existing durable milestones remain in history; only their use as current status evidence is fenced after steer.
The implementation reuses activity steering revision/observedAt, milestone observedAt/verified/source, and the existing narration supersession path. It does not add a schema, model pass, tool-output parser, compatibility fallback, or js-specific exception.
Change class
Owning layers: Codex canonical event adapter, Host Work activity/status projection, and Work Observer cadence/delivery.
User-visible effect: after an amendment, Kurisu no longer reports the superseded design as current verified progress; intake does not consume the first substantive spoken update; structured current direction can still be narrated without being upgraded to a result.
Compatibility or migration impact: none. No database, persisted-state, public configuration, Provider capability, protocol, or API migration.
Evidence
Focused public-baseline checks:
Full public Python baseline:
Static checks:
No Electron files, dependencies, settings, schema, or UI layout changed. No paid live-model or new real TTS journey was used; deterministic event-chain and full-suite evidence cover this PR, while a post-merge live narration journey remains useful acceptance evidence.
Final check