Keep the immutable run objective when plan calls have been elided, while admitting mutable task fields only when plan parity still matches the transcript.
Make plan parsing match update_plan rejection semantics, coalesce and cap task-state trace events, rename parity to its plan-only scope, use explicit nilable dependencies, and remove confirmable objective fingerprints from traces.
Tested: make fmt-check
Tested: go vet ./...
Tested: go test ./...
Tested: go test -race ./internal/agent ./internal/trace
Tested: go run ./cmd/zero-release build
Tested: go run ./cmd/zero-release smoke
Tested: govulncheck ./... (no vulnerabilities found)
Advisory: pinned golangci-lint reports only unrelated pre-existing findings
Tested: git diff HEAD --check