# SaC Data Assets

Migration source may import sidecar-local CSV and TSV files when external data makes the workbook intent easier to review.

## CSV And TSV Assets

Keep data assets next to the migration that uses them:

```text
.Budget.univer.sac/migrations/
  20260523090000-add-revenue-model/
    pack.ts
    revenue.unit.ts
    revenue.tsv
```

The TypeScript bundler treats referenced CSV and TSV assets as source inputs. They participate in the same source hash as `pack.ts`, migration source files, and sidecar-local helper files.

## Import Boundary

SaC source must stay inside the resolved hidden sidecar realpath boundary. These inputs are allowed:

- relative TypeScript imports that resolve inside the hidden sidecar
- relative CSV or TSV imports that resolve inside the hidden sidecar
- the CLI-provided helper specifier `univer:sac/facade-migration-pack`
- type-only imports for module declarations exposed by hidden sidecar `types/*.d.ts`, such as `import type { FRange } from "@univerjs/sheets/facade"`

These inputs are rejected before any workbook mutation runs:

- parent-path or symlink escapes outside the sidecar boundary
- runtime package imports; SaC does not install or bundle sidecar dependencies
- runtime Node builtin imports such as `import { readFile } from "node:fs/promises"`
- non-literal dynamic imports

The SaC sidecar is not a package project and does not support external dependencies. Use `import type` only when source needs named Facade or SDK types from local hidden sidecar `types/*.d.ts`; do not add runtime package imports to migration source.
