[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1459":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":15,"contributorsCount":16,"subscribersCount":16,"size":16,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":16,"forks30d":16,"starsTrendScore":16,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":20,"archived":21,"fork":21,"defaultBranch":22,"hasWiki":23,"hasPages":23,"topics":24,"createdAt":10,"pushedAt":10,"updatedAt":37,"readmeContent":38,"aiSummary":39,"trendingCount":16,"starSnapshotCount":16,"syncStatus":17,"lastSyncTime":40,"discoverSource":41},1459,"rocky","rocky-data\u002Frocky","rocky-data","The typed graph between your code and whichever warehouse, table format, or query engine you've chosen — typed compiler, branches, replay, column-level lineage, compile-time contracts, per-model cost. Adapters: Databricks, Snowflake, BigQuery, DuckDB. Single static Rust binary. Apache 2.0.","https:\u002F\u002Frocky-data.github.io\u002Frocky\u002F",null,"Rust",265,12,214,6,0,2,19,3.34,"Apache License 2.0",false,"main",true,[25,26,27,28,29,30,31,32,33,34,35,36],"column-lineage","dagster","data-contracts","data-engineering","data-lineage","data-pipeline","data-platform","data-quality","dbt-alternative","rust","schema-drift","sql","2026-06-12 02:00:28","\u003Cp align=\"center\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"docs\u002Frocky-readme-dark.svg\" \u002F>\n    \u003Cimg src=\"docs\u002Frocky-readme-light.svg\" alt=\"Rocky\" \u002F>\n  \u003C\u002Fpicture>\n\u003C\u002Fp>\n\n[![Engine CI](https:\u002F\u002Fgithub.com\u002Frocky-data\u002Frocky\u002Factions\u002Fworkflows\u002Fengine-ci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Frocky-data\u002Frocky\u002Factions\u002Fworkflows\u002Fengine-ci.yml)\n[![Dagster CI](https:\u002F\u002Fgithub.com\u002Frocky-data\u002Frocky\u002Factions\u002Fworkflows\u002Fdagster-ci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Frocky-data\u002Frocky\u002Factions\u002Fworkflows\u002Fdagster-ci.yml)\n[![VS Code CI](https:\u002F\u002Fgithub.com\u002Frocky-data\u002Frocky\u002Factions\u002Fworkflows\u002Fvscode-ci.yml\u002Fbadge.svg)](https:\u002F\u002Fgithub.com\u002Frocky-data\u002Frocky\u002Factions\u002Fworkflows\u002Fvscode-ci.yml)\n[![License: Apache 2.0](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-Apache_2.0-blue.svg)](LICENSE)\n\n**Rocky** is a Rust-based control plane for warehouse SQL pipelines: branches, replay, column-level lineage, compile-time type safety, per-model cost attribution. Storage and compute stay with your warehouse — Databricks, Snowflake, BigQuery, or DuckDB. Apache 2.0.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-quickstart.gif\" alt=\"Rocky quickstart — create a project, compile, and run 3 models in under 15s\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n## Try it in 60 seconds\n\n```bash\n# macOS \u002F Linux\ncurl -fsSL https:\u002F\u002Fraw.githubusercontent.com\u002Frocky-data\u002Frocky\u002Fmain\u002Fengine\u002Finstall.sh | bash\n\n# Windows (PowerShell)\nirm https:\u002F\u002Fraw.githubusercontent.com\u002Frocky-data\u002Frocky\u002Fmain\u002Fengine\u002Finstall.ps1 | iex\n```\n\n```bash\nrocky playground my-first-project\ncd my-first-project\nrocky compile && rocky test && rocky run\n```\n\nNo credentials needed — the playground runs end-to-end on local DuckDB.\n\n## See it in action\n\nEach demo below is a self-contained POC in [`examples\u002Fplayground\u002Fpocs\u002F`](examples\u002Fplayground\u002F) — `cd` in, run `.\u002Frun.sh`, reproduce locally.\n\n### Detects schema drift the moment it happens\n\nA source column type changes upstream. On the next run, Rocky diffs source vs. target, drops the target, and recreates it. No silent data corruption, no dbt-style quiet divergence.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-drift-recover.gif\" alt=\"rocky run detects source type change and recreates the target\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `02-performance\u002F06-schema-drift-recover`](examples\u002Fplayground\u002Fpocs\u002F02-performance\u002F06-schema-drift-recover\u002F)\n\n### Enforces data contracts at compile time\n\nMissing required columns, protected columns being removed, or unsafe type changes surface as diagnostic codes (`E010`, `E013`) before a single row is written.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-data-contracts.gif\" alt=\"rocky compile flags E010 and E013 contract violations on broken_metrics\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `01-quality\u002F01-data-contracts-strict`](examples\u002Fplayground\u002Fpocs\u002F01-quality\u002F01-data-contracts-strict\u002F)\n\n### Named branches for risk-free experiments\n\nCreate a branch, run against it in an isolated schema, inspect, then drop or promote. Column-level lineage shows the downstream blast radius before you ship.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-branches-replay.gif\" alt=\"rocky branch create, run on branch, and trace column lineage downstream\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `00-foundations\u002F06-branches-replay-lineage`](examples\u002Fplayground\u002Fpocs\u002F00-foundations\u002F06-branches-replay-lineage\u002F)\n\n### Column-level lineage, not table-level\n\nTrace a single column from a downstream fact back through its aggregations, all the way to the seed. Blast-radius analysis without reading every model.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-column-lineage.gif\" alt=\"rocky lineage --column traces fct_revenue.total back to seeds.orders.amount\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `06-developer-experience\u002F01-lineage-column-level`](examples\u002Fplayground\u002Fpocs\u002F06-developer-experience\u002F01-lineage-column-level\u002F)\n\n### AI model generation with a compile-validate loop\n\nDescribe what you want in plain English. Rocky generates a Rocky DSL model, compiles it, and retries on parse failure — the `Attempts: 2` line shows the loop catching a first-pass error invisibly.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-ai-model-generation.gif\" alt=\"rocky ai generates a .rocky model from natural language intent, Attempts: 2\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `03-ai\u002F01-model-generation`](examples\u002Fplayground\u002Fpocs\u002F03-ai\u002F01-model-generation\u002F)\n\n### PR-time blast-radius with `rocky lineage-diff`\n\nCompare two git refs and get a per-changed-column readout of downstream consumers — pre-rendered Markdown drops straight into a GitHub PR comment. CODEOWNERS-style review tooling can't reach this granularity without a compiled engine.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-lineage-diff.gif\" alt=\"rocky lineage-diff main lists added and removed columns across two models with downstream consumers per change\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `06-developer-experience\u002F11-lineage-diff`](examples\u002Fplayground\u002Fpocs\u002F06-developer-experience\u002F11-lineage-diff\u002F)\n\n### Classify columns, mask by environment, gate CI\n\nTag PII columns in the model sidecar; bind tags to mask strategies in `[mask]` \u002F `[mask.\u003Cenv>]`. `rocky compliance --env prod --fail-on exception` exits 1 the moment a classified column has no resolved strategy — a one-line CI gate against accidentally-unmasked data.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-classification-masking.gif\" alt=\"rocky compliance rolls up classification tags to mask strategies; --fail-on exception exits 1, gating CI on unmasked PII\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `04-governance\u002F05-classification-masking-compliance`](examples\u002Fplayground\u002Fpocs\u002F04-governance\u002F05-classification-masking-compliance\u002F)\n\n### Incremental loads with persistent watermark state\n\n`strategy = \"incremental\"` plus a `timestamp_column` is all it takes. Rocky writes the high-water mark to the embedded state store; subsequent runs only `INSERT … WHERE timestamp > watermark`. Append 25 rows after a 500-row load — run 2 still finishes in 0.2s.\n\n\u003Cp align=\"center\">\n  \u003Cimg src=\"docs\u002Fpublic\u002Fdemo-incremental-watermark.gif\" alt=\"rocky run with incremental strategy: run 1 copies 500 rows; appended 25 rows; run 2 only copies the delta in 0.2s\" width=\"900\" \u002F>\n\u003C\u002Fp>\n\n[POC — `02-performance\u002F01-incremental-watermark`](examples\u002Fplayground\u002Fpocs\u002F02-performance\u002F01-incremental-watermark\u002F)\n\n## Subprojects\n\n| Path | Artifact | Language | Description |\n|---|---|---|---|\n| [`engine\u002F`](engine\u002F) | `rocky` CLI binary | Rust | Core SQL transformation engine — 21-crate Cargo workspace |\n| [`integrations\u002Fdagster\u002F`](integrations\u002Fdagster\u002F) | `dagster-rocky` PyPI wheel | Python | Dagster resource and component wrapping the Rocky CLI |\n| [`editors\u002Fvscode\u002F`](editors\u002Fvscode\u002F) | Rocky VSIX | TypeScript | VS Code extension — LSP client + commands for AI features |\n| [`examples\u002Fplayground\u002F`](examples\u002Fplayground\u002F) | (config only) | TOML \u002F SQL | Self-contained DuckDB sample pipeline used for smoke tests and benchmarks |\n\nEach subproject has its own README with detailed usage. The [`engine\u002FREADME.md`](engine\u002FREADME.md) is the canonical product reference for the Rocky CLI.\n\n## Adapters\n\n| Role | Adapter | Status | Notes |\n|------|---------|--------|-------|\n| Warehouse | Databricks | Production | SQL Statement API · Unity Catalog · `SHALLOW CLONE` for branches |\n| Warehouse | Snowflake | Beta | REST connector · zero-copy `CLONE` for branches · masking policies |\n| Warehouse | BigQuery | Beta | REST connector · `CREATE TABLE … COPY` for branches |\n| Warehouse | DuckDB | Local \u002F Testing | Embedded · powers `rocky playground` (no credentials needed) |\n| Source | Fivetran | Production | REST connector + table discovery |\n| Source | Airbyte | Beta | Catalog discovery |\n| Source | Iceberg | Beta | REST catalog discovery of namespaces and tables |\n| Source | Manual | Production | Schema\u002Ftable lists inline in `rocky.toml` |\n\nBuilding a warehouse Rocky doesn't ship in-tree (ClickHouse, Trino, Redshift, …)? See the [Adapter SDK guide](https:\u002F\u002Frocky-data.dev\u002Fguides\u002Fadapter-sdk\u002F) and the [Rust-native skeleton POC](examples\u002Fplayground\u002Fpocs\u002F07-adapters\u002F06-rust-native-adapter-skeleton\u002F).\n\n## Building from source\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002Frocky-data\u002Frocky.git\ncd rocky\njust build       # builds engine + dagster wheel + vscode extension\njust test        # runs all test suites\njust lint        # cargo clippy\u002Ffmt + ruff + eslint\n```\n\n`just` is optional — you can also build each subproject directly. See [`CONTRIBUTING.md`](CONTRIBUTING.md) for per-subproject build commands.\n\n## Releases\n\nEach artifact is released independently using a tag-namespaced scheme:\n\n- `engine-v*` → Rocky CLI binary (cross-compiled, on GitHub Releases)\n- `dagster-v*` → `dagster-rocky` wheel\n- `vscode-v*` → Rocky VSIX\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md#releases) for the full release flow.\n\n## Documentation\n\nFull documentation: **[rocky-data.dev](https:\u002F\u002Frocky-data.dev)** — concepts, guides, CLI reference, Dagster integration, adapter SDK.\n\n## Contributing\n\nSee [`CONTRIBUTING.md`](CONTRIBUTING.md). Before opening a PR, please read the cross-project change guidance — schema and DSL changes must update consumers atomically.\n\n## Sponsoring\n\nRocky is free and open source. If it saves your team time, consider [sponsoring the project](https:\u002F\u002Fgithub.com\u002Fsponsors\u002Fhugocorreia90) so development can continue.\n\n## License\n\n[Apache 2.0](LICENSE)\n","Rocky 是一个基于 Rust 的 SQL 转换引擎，支持分支、重放、列级血缘追踪、编译时类型安全和每个模型的成本归因。其核心功能包括在数据仓库中进行高效的 SQL 管道管理，同时确保数据一致性和安全性。Rocky 提供了对 Databricks、Snowflake、BigQuery 和 DuckDB 的适配器，使得存储和计算可以在这些平台上无缝运行。它特别适用于需要高度可靠性和性能的数据工程场景，如数据管道构建、数据质量保证以及数据血缘追踪等。此外，Rocky 还能在编译时强制执行数据契约，从而有效防止潜在的数据错误。","2026-06-11 02:43:53","CREATED_QUERY"]