# Collections, variants and selection Create ART with question, constraints and comparison criteria. Then create each SRT with the same workspaceId and parentId=returned ART UUID. The writer adds the collection relationship and allocates the stable sub-reference. Include source/preview path, run instructions, screenshot/evidence links, scope and known simulation in its body/data. | Variant | Decision explored | Observed strengths | Tradeoffs | Run/preview evidence | | --- | --- | --- | --- | --- | | Returned SRT ref A | Dense list | More items visible | Harder scanning | Actual path/command | | Returned SRT ref B | Grouped sections | Clearer hierarchy | Longer scroll | Actual path/command | | Returned SRT ref C | Search-first | Fast known-item lookup | Poor discovery | Actual path/command | Selection payload for zen_record_write: ```json {"operation":"artifact.select","idempotencyKey":"select-variant-b-01","payload":{"id":"","variantId":"","expectedRevision":2}} ``` Read back the actual selectedRef and resolve it again before implementation. Do not use the sample revision unless it matches the current ART. With standalone storage use its select command with the same three payload fields plus an operation key. Before selecting a runnable file variant, call standalone snapshot with `{id,expectedRevision,files:["prototypes/2.html"],idempotencyKey}`. Paths are relative to the recorded repository/worktree source root. Include all required CSS/JS/assets explicitly; never copy an entire repository or an environment file. Selection records the returned SRT revision. Then verify the sub-reference: unchanged snapshot and matching working files are expected. If the working source changes, report drift and resolve the preserved snapshot rather than claiming the changed path is still the exact chosen content. For managed records, use authorized host file-copy/hash tools and MCP record.update to capture the equivalent manifest before artifact.select. In managed mode keep file snapshots under the registered repository's ignored `.zen/artifacts///` directory (or the configured global workspace artifact directory). The companion backup includes these roots. Store `data.snapshot` with directory, sourceRoot, createdAt and files[{path,sha256,size}], merging other data fields. Record `data.kind: "runnable"` and a repository-relative sourcePath for file-backed runnable variants. Selection requires manifest metadata for these variants, but that structural check is not proof the files render or hashes match: verify them through authorized host IO. For small self-contained HTML use `data.kind: "inline-html"` and put the complete source in data.html. Omit mutable source/preview path fields for this representation. Render it in the sandboxed preview, then select the returned SRT revision. Resolve exact content with record history at selectedVariantRevision; file-only verify is for file snapshots. Inline checklists similarly use the selected immutable record revision. This path is useful when task-scoped permissions do not allow copying files outside the worktree: use the existing bounded record writer instead of bypassing scope. Large/multi-file variants still need an authorized snapshot path or an explicit Needs attention result. Do not place credentials or never-copy content in either representation.