Hi Li. The reason that assets can be attached directly to a repository is so that they can be materialized independently without being bound to a job. In addition, assets usually store outputs in persistent storage, so a dependent asset can be executed independently by reading from the upstream assets’ persistent storage. In contrast, ops accept inputs and outputs from one another and may not necessarily output to persistent storage so are usually executed together in a job.