Conversation
Add comprehensive guide for setting up Change Data Capture from SAP HANA to ClickHouse using Moose workflows. Includes trigger-based CDC architecture, auto-generated Pydantic models, initial load and incremental sync workflows, multi-client support, and CLI operations reference. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Summary by CodeRabbit
WalkthroughAdds a new SAP HANA → ClickHouse CDC guide and navigation entry, and sets NEXT_PUBLIC_NAV_VARIANT="draft" in vercel.json build env. No code or public API changes. Changes
Sequence Diagram(s)sequenceDiagram
participant SAP_HANA as SAP HANA
participant Triggers as Triggers
participant CDC_Table as CDC_CHANGES
participant Reader as CDC Reader
participant ClickHouse as ClickHouse
SAP_HANA->>Triggers: DML (INSERT/UPDATE/DELETE)
Triggers->>CDC_Table: write change event (CHANGE_ID, TABLE_NAME, OLD/NEW)
Reader->>CDC_Table: poll/read new change events
Reader->>ClickHouse: apply changes (initial load / incremental)
Reader->>CDC_Table: update CDC_CLIENT_STATUS (ack/progress)
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Possibly related PRs
Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Fix all issues with AI agents
In `@apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx`:
- Around line 358-377: The Python code block for setup_table_triggers is missing
the documentation validation directive; update the code fence to include the
`@test` directive so the snippet is validated (change the opening triple backticks
from ```python to ```python `@test`) for the block containing the
setup_table_triggers method that calls _filter_tables_only, _setup_table_cdc,
and _update_table_status and iterates over desired_tables.
- Around line 318-340: The snippet references prune_task_instance but never
defines it and lacks a syntax-validation annotation; create a Task instance
named prune_task_instance that wraps the existing prune_database_task (using
Task and TaskConfig with run=prune_database_task) and ensure the code block is
annotated with `@test` to validate Python syntax; keep the Workflow construction
using Workflow and WorkflowConfig unchanged so starting_task=prune_task_instance
resolves correctly.
- Around line 256-316: Define the sync_changes_task_instance before it's
referenced in initial_load_task_instance and add a `@test` validation to the file;
specifically, create a Task named "sync_changes" using Task and TaskConfig
(referencing run=sync_changes_task) prior to constructing
initial_load_task_instance, then set
initial_load_task_instance.config.on_complete to include that
sync_changes_task_instance (ensure trailing commas and correct TaskConfig
structure) and add the `@test` directive to the file header for validation.
- Around line 523-538: Add the missing `@test` directive to both Python code
fences for the troubleshooting snippets: update the block containing
connector.get_all_table_rows(...) and the block containing
connector.refresh_connection() so their opening fences are ```python `@test`
(i.e., add "@test" to the existing python code fence for the get_all_table_rows
example and the refresh_connection example) to comply with the Python snippet
guideline.
📜 Review details
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdxapps/framework-docs-v2/src/config/navigation.ts
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Run linting checks before submitting PRs for TypeScript/JavaScript code
**/*.{ts,tsx,js,jsx}: Group imports by external dependencies, internal modules, and types; use named exports from barrel files (index.ts)
Use camelCase for variables and functions, PascalCase for types/classes/components, UPPER_SNAKE_CASE for constants in TypeScript/JavaScript
Prefix unused variables with underscore (e.g.,_unusedParam) to bypass linting errors in TypeScript/JavaScript
Format TypeScript/JavaScript code with Prettier usingexperimentalTernaries: true; auto-formats on commit via Husky + lint-staged
Files:
apps/framework-docs-v2/src/config/navigation.ts
apps/framework-docs-v2/src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
Component library must use shadcn/ui components located in
src/components/ui/
Files:
apps/framework-docs-v2/src/config/navigation.ts
**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Prefer interfaces for objects, types for unions/intersections in TypeScript; explicit return types on public APIs
Files:
apps/framework-docs-v2/src/config/navigation.ts
apps/framework-docs-v2/content/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
apps/framework-docs-v2/content/**/*.mdx: Use{{ include "shared/path.mdx" }}directives to reuse content fragments, which are processed viaprocessIncludes()during build
Validate code snippets in documentation with the@testdirective for TypeScript and Python code blocks
TypeScript code snippets in documentation should be validated for syntax with brace matching; Python snippets should be validated for indentation
Files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
apps/framework-docs-v2/content/guides/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
Guide MDX files in
content/guides/must include frontmatter with title and description fields
Files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
🧠 Learnings (4)
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Add new guides to `guidesNavigationConfig` in `src/config/navigation.ts` with required fields: type, slug, title, icon, languages, and status (start as 'draft')
Applied to files:
apps/framework-docs-v2/src/config/navigation.ts
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Guide promotion workflow: start guides with `status: "draft"` in navigation config, then progress to `status: "beta"`, finally remove status field for public release
Applied to files:
apps/framework-docs-v2/src/config/navigation.ts
📚 Learning: 2026-01-28T14:50:00.978Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1402-1406
Timestamp: 2026-01-28T14:50:00.978Z
Learning: When reviewing WebApp implementations that run in a Node.js backend, prefer Node.js-specific types (e.g., Buffer) and avoid browser-focused cross-platform compatibility considerations. This guideline applies to MDX documentation and code examples across the repository where backend/runtime code is discussed; ensure reviewers distinguish server-side context from frontend/browser constraints and validate type usage accordingly.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-28T14:55:13.411Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1585-1616
Timestamp: 2026-01-28T14:55:13.411Z
Learning: In documentation and tutorial files under apps/framework-docs-v2/content/guides/, prefer explicit, self-contained code examples that may duplicate small snippets for clarity over abstracting with DRY helpers. Ensure examples are easy to understand in isolation, even if it means a bit of repetition, to aid learning and reduce cognitive load for readers.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
🔇 Additional comments (8)
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx (7)
1-8: Frontmatter looks complete.
9-185: No issues noted in this section.
187-253: No issues noted in this section.
342-357: No issues noted in this section.
379-468: No issues noted in this section.
469-522: No issues noted in this section.
544-594: No issues noted in this section.apps/framework-docs-v2/src/config/navigation.ts (1)
1323-1332: Navigation entry looks good.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
Outdated
Show resolved
Hide resolved
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
Outdated
Show resolved
Hide resolved
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
Outdated
Show resolved
Hide resolved
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
Outdated
Show resolved
Hide resolved
Add step 1 to Quick Start section showing how to install the SAP HANA CDC pipeline code from the registry. Includes both manual copy and CLI install methods, with clear list of installed files. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx`:
- Line 360: The timeout value is inconsistent: one example uses timeout=300
(integer) while this snippet uses timeout="10m" (string); change the
timeout="10m" entry to the same integer format (timeout=300) so the 'timeout'
key is consistent across examples, ensuring all docs use the integer-seconds
style.
📜 Review details
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
🧰 Additional context used
📓 Path-based instructions (2)
apps/framework-docs-v2/content/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
apps/framework-docs-v2/content/**/*.mdx: Use{{ include "shared/path.mdx" }}directives to reuse content fragments, which are processed viaprocessIncludes()during build
Validate code snippets in documentation with the@testdirective for TypeScript and Python code blocks
TypeScript code snippets in documentation should be validated for syntax with brace matching; Python snippets should be validated for indentation
Files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
apps/framework-docs-v2/content/guides/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
Guide MDX files in
content/guides/must include frontmatter with title and description fields
Files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
🧠 Learnings (6)
📚 Learning: 2026-01-26T00:56:27.011Z
Learnt from: DatGuyJonathan
Repo: 514-labs/moosestack PR: 3400
File: apps/framework-cli/src/framework/core/infrastructure_map.rs:1238-1298
Timestamp: 2026-01-26T00:56:27.011Z
Learning: Repo 514-labs/moosestack — Workflows: The CLI’s workflow diff is intended to detect only Temporal schedule–affecting changes. In apps/framework-cli/src/framework/core/infrastructure_map.rs, workflows_config_equal should compare schedule, retries, and timeout only; it must not include tasks. Task code/config changes are picked up automatically when the orchestration worker restarts and should not trigger a WorkflowChange.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Applies to apps/framework-docs-v2/content/**/*.mdx : Validate code snippets in documentation with the `test` directive for TypeScript and Python code blocks
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Applies to apps/framework-docs-v2/content/**/*.mdx : TypeScript code snippets in documentation should be validated for syntax with brace matching; Python snippets should be validated for indentation
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-02-01T23:07:12.348Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: AGENTS.md:0-0
Timestamp: 2026-02-01T23:07:12.348Z
Learning: Add E2E tests to `python-tests` and `typescript-tests` templates when changing user-facing features
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-28T14:50:00.978Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1402-1406
Timestamp: 2026-01-28T14:50:00.978Z
Learning: When reviewing WebApp implementations that run in a Node.js backend, prefer Node.js-specific types (e.g., Buffer) and avoid browser-focused cross-platform compatibility considerations. This guideline applies to MDX documentation and code examples across the repository where backend/runtime code is discussed; ensure reviewers distinguish server-side context from frontend/browser constraints and validate type usage accordingly.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-28T14:55:13.411Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1585-1616
Timestamp: 2026-01-28T14:55:13.411Z
Learning: In documentation and tutorial files under apps/framework-docs-v2/content/guides/, prefer explicit, self-contained code examples that may duplicate small snippets for clarity over abstracting with DRY helpers. Ensure examples are easy to understand in isolation, even if it means a bit of repetition, to aid learning and reduce cognitive load for readers.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
🔇 Additional comments (2)
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx (2)
1-5: LGTM!Frontmatter includes required
titleanddescriptionfields.
614-618: All internal links are valid. Verified that/guides/data-warehouses,/moosestack/workflows, and/moosestack/configuration/clickhouseresolve to existing documentation files.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
Outdated
Show resolved
Hide resolved
Replace incorrect `moose install pipeline` command and manual cp commands with the proper registry installer script. Add explicit dependency installation step and renumber subsequent Quick Start steps. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Dependencies are now covered in the Quick Start installation step. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Remove Python workflow implementation examples - Remove SQL trigger/table schema definitions - Remove SQL monitoring queries - Keep explanatory text and user-facing configuration - Reduced from 612 to 435 lines (29% smaller) Focus guide on what CDC does and how to use it, rather than internal implementation details. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Fix all issues with AI agents
In
`@apps/framework-docs-v2/content/guides/data-management/sap-hana-cdc-to-clickhouse.mdx`:
- Around line 120-127: Update the "2. Install Dependencies" section under the
sap_hana_cdc_to_clickhouse guide to explicitly list the key Python packages
users will install from requirements.txt: mention hdbcli (SAP HANA client),
moose-lib, clickhouse-connect, and tenacity before the pip install command so
readers know what will be installed and can pre-troubleshoot; keep the existing
pip install instruction and add a short note referencing requirements.txt for
exact versions.
- Around line 219-229: Update the schedule wording to use Cron-style
expressions: replace the phrase "every 60 seconds" for the main CDC workflow
with a cron expression such as "*/1 * * * *" (every minute) and state explicitly
that the pipeline expects cron strings; for the Prune Workflow replace the vague
"once per day" with a cron expression like "0 0 * * *" (daily at midnight). Keep
the documented retry default (3 attempts) and retention default (7 days) as-is,
and include one brief example cron (e.g., "0 * * * *" for hourly) to show format
expectations in the descriptions mentioning "main CDC workflow" and "Prune
Workflow".
📜 Review details
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
apps/framework-docs-v2/content/guides/data-management/sap-hana-cdc-to-clickhouse.mdxapps/framework-docs-v2/src/config/navigation.ts
🧰 Additional context used
📓 Path-based instructions (5)
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Run linting checks before submitting PRs for TypeScript/JavaScript code
**/*.{ts,tsx,js,jsx}: Group imports by external dependencies, internal modules, and types; use named exports from barrel files (index.ts)
Use camelCase for variables and functions, PascalCase for types/classes/components, UPPER_SNAKE_CASE for constants in TypeScript/JavaScript
Prefix unused variables with underscore (e.g.,_unusedParam) to bypass linting errors in TypeScript/JavaScript
Format TypeScript/JavaScript code with Prettier usingexperimentalTernaries: true; auto-formats on commit via Husky + lint-staged
Files:
apps/framework-docs-v2/src/config/navigation.ts
apps/framework-docs-v2/src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
Component library must use shadcn/ui components located in
src/components/ui/
Files:
apps/framework-docs-v2/src/config/navigation.ts
**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Prefer interfaces for objects, types for unions/intersections in TypeScript; explicit return types on public APIs
Files:
apps/framework-docs-v2/src/config/navigation.ts
apps/framework-docs-v2/content/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
apps/framework-docs-v2/content/**/*.mdx: Use{{ include "shared/path.mdx" }}directives to reuse content fragments, which are processed viaprocessIncludes()during build
Validate code snippets in documentation with the@testdirective for TypeScript and Python code blocks
TypeScript code snippets in documentation should be validated for syntax with brace matching; Python snippets should be validated for indentation
Files:
apps/framework-docs-v2/content/guides/data-management/sap-hana-cdc-to-clickhouse.mdx
apps/framework-docs-v2/content/guides/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
Guide MDX files in
content/guides/must include frontmatter with title and description fields
Files:
apps/framework-docs-v2/content/guides/data-management/sap-hana-cdc-to-clickhouse.mdx
🧠 Learnings (4)
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Add new guides to `guidesNavigationConfig` in `src/config/navigation.ts` with required fields: type, slug, title, icon, languages, and status (start as 'draft')
Applied to files:
apps/framework-docs-v2/src/config/navigation.ts
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Guide promotion workflow: start guides with `status: "draft"` in navigation config, then progress to `status: "beta"`, finally remove status field for public release
Applied to files:
apps/framework-docs-v2/src/config/navigation.ts
📚 Learning: 2026-01-28T14:50:00.978Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1402-1406
Timestamp: 2026-01-28T14:50:00.978Z
Learning: When reviewing WebApp implementations that run in a Node.js backend, prefer Node.js-specific types (e.g., Buffer) and avoid browser-focused cross-platform compatibility considerations. This guideline applies to MDX documentation and code examples across the repository where backend/runtime code is discussed; ensure reviewers distinguish server-side context from frontend/browser constraints and validate type usage accordingly.
Applied to files:
apps/framework-docs-v2/content/guides/data-management/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-28T14:55:13.411Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1585-1616
Timestamp: 2026-01-28T14:55:13.411Z
Learning: In documentation and tutorial files under apps/framework-docs-v2/content/guides/, prefer explicit, self-contained code examples that may duplicate small snippets for clarity over abstracting with DRY helpers. Ensure examples are easy to understand in isolation, even if it means a bit of repetition, to aid learning and reduce cognitive load for readers.
Applied to files:
apps/framework-docs-v2/content/guides/data-management/sap-hana-cdc-to-clickhouse.mdx
🔇 Additional comments (1)
apps/framework-docs-v2/src/config/navigation.ts (1)
1323-1332: LGTM — navigation entry is consistent with the new guide.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
Move file back from data-management/ subdirectory to maintain correct directory hierarchy. Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
| "env": { | ||
| "NEXT_PUBLIC_NAV_VARIANT": "draft" | ||
| } | ||
| } |
There was a problem hiding this comment.
Draft content exposed in production via vercel.json config
High Severity
Setting NEXT_PUBLIC_NAV_VARIANT: "draft" in vercel.json build configuration will expose draft content (intended for internal team only) on the production deployment. According to nav-variant.ts, production should default to "base" (public content only), but this explicit setting overrides that behavior. This appears to be testing configuration added for preview deployments that shouldn't be merged to production.
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@apps/framework-docs-v2/vercel.json`:
- Around line 3-6: Hardcoded NEXT_PUBLIC_NAV_VARIANT = "draft" in vercel.json
exposes draft navigation globally; remove this repo-level env var and instead
implement environment-scoped or flag-controlled visibility. Remove or unset
NEXT_PUBLIC_NAV_VARIANT from the "build.env" block in vercel.json and wire the
app to read Vercel Toolbar feature flags (e.g., show-draft-guides) or
per-environment Vercel settings at runtime to toggle draft nav; ensure any
references to NEXT_PUBLIC_NAV_VARIANT in code (nav rendering logic) fallback to
the runtime feature-flag check so production builds no longer default to
"draft".
📜 Review details
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
apps/framework-docs-v2/vercel.json
🧰 Additional context used
🧠 Learnings (4)
📓 Common learnings
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Add new guides to `guidesNavigationConfig` in `src/config/navigation.ts` with required fields: type, slug, title, icon, languages, and status (start as 'draft')
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Use Vercel Toolbar feature flags for visibility control: `show-draft-guides`, `show-beta-guides`, `show-hosting-section`, `show-ai-section`, `show-copy-as-markdown`, `show-linear-integration`
Applied to files:
apps/framework-docs-v2/vercel.json
📚 Learning: 2025-12-16T23:08:31.521Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: .github/copilot-instructions.md:0-0
Timestamp: 2025-12-16T23:08:31.521Z
Learning: Build TypeScript/JavaScript packages using `pnpm build` before integration
Applied to files:
apps/framework-docs-v2/vercel.json
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Always install dependencies from the monorepo root using `pnpm install`, never run `pnpm install` directly from `apps/framework-docs-v2/`
Applied to files:
apps/framework-docs-v2/vercel.json
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
| "build": { | ||
| "env": { | ||
| "NEXT_PUBLIC_NAV_VARIANT": "draft" | ||
| } |
There was a problem hiding this comment.
Hardcoding draft nav exposes draft content in all deploys.
NEXT_PUBLIC_NAV_VARIANT: "draft" at build scope forces draft navigation for every environment (including production). Please scope this to preview via Vercel Toolbar flags (e.g., show-draft-guides) or per-environment settings instead of repo-level config.
💡 Suggested change (remove hardcoded draft variant)
- "build": {
- "env": {
- "NEXT_PUBLIC_NAV_VARIANT": "draft"
- }
- }Based on learnings: Use Vercel Toolbar feature flags for visibility control: show-draft-guides, show-beta-guides, show-hosting-section, show-ai-section, show-copy-as-markdown, show-linear-integration.
🤖 Prompt for AI Agents
In `@apps/framework-docs-v2/vercel.json` around lines 3 - 6, Hardcoded
NEXT_PUBLIC_NAV_VARIANT = "draft" in vercel.json exposes draft navigation
globally; remove this repo-level env var and instead implement
environment-scoped or flag-controlled visibility. Remove or unset
NEXT_PUBLIC_NAV_VARIANT from the "build.env" block in vercel.json and wire the
app to read Vercel Toolbar feature flags (e.g., show-draft-guides) or
per-environment Vercel settings at runtime to toggle draft nav; ensure any
references to NEXT_PUBLIC_NAV_VARIANT in code (nav rendering logic) fallback to
the runtime feature-flag check so production builds no longer default to
"draft".
- Add migrations preview variant for visual diagram - Add CDC, Workflows, and ClickHouse topic tags Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Rename from "SAP HANA CDC to ClickHouse" to "SAP HANA CDC" - Move from Data Management section to top-level (after Chat guide) - Change icon from IconDatabaseImport to IconBolt - Remove old "Change Data Capture" entry from Data Management Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Fix all issues with AI agents
In `@apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx`:
- Around line 236-246: The table entry for SAP_HANA_HOST is inconsistent (it
lists a Default of `localhost` but Required=Yes); pick one fix: either change
the Required column for `SAP_HANA_HOST` to `No` to reflect the provided default,
or remove the Default value `localhost` and keep Required=Yes; update the row
for `SAP_HANA_HOST` in the variables table accordingly so the Required and
Default columns are consistent.
📜 Review details
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (2)
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdxapps/framework-docs-v2/src/config/navigation.ts
🧰 Additional context used
📓 Path-based instructions (5)
apps/framework-docs-v2/content/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
apps/framework-docs-v2/content/**/*.mdx: Use{{ include "shared/path.mdx" }}directives to reuse content fragments, which are processed viaprocessIncludes()during build
Validate code snippets in documentation with the@testdirective for TypeScript and Python code blocks
TypeScript code snippets in documentation should be validated for syntax with brace matching; Python snippets should be validated for indentation
Files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
apps/framework-docs-v2/content/guides/**/*.mdx
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
Guide MDX files in
content/guides/must include frontmatter with title and description fields
Files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
**/*.{ts,tsx,js,jsx}
📄 CodeRabbit inference engine (.github/copilot-instructions.md)
Run linting checks before submitting PRs for TypeScript/JavaScript code
**/*.{ts,tsx,js,jsx}: Group imports by external dependencies, internal modules, and types; use named exports from barrel files (index.ts)
Use camelCase for variables and functions, PascalCase for types/classes/components, UPPER_SNAKE_CASE for constants in TypeScript/JavaScript
Prefix unused variables with underscore (e.g.,_unusedParam) to bypass linting errors in TypeScript/JavaScript
Format TypeScript/JavaScript code with Prettier usingexperimentalTernaries: true; auto-formats on commit via Husky + lint-staged
Files:
apps/framework-docs-v2/src/config/navigation.ts
apps/framework-docs-v2/src/**/*.{ts,tsx}
📄 CodeRabbit inference engine (apps/framework-docs-v2/CLAUDE.md)
Component library must use shadcn/ui components located in
src/components/ui/
Files:
apps/framework-docs-v2/src/config/navigation.ts
**/*.{ts,tsx}
📄 CodeRabbit inference engine (AGENTS.md)
Prefer interfaces for objects, types for unions/intersections in TypeScript; explicit return types on public APIs
Files:
apps/framework-docs-v2/src/config/navigation.ts
🧠 Learnings (14)
📓 Common learnings
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Add new guides to `guidesNavigationConfig` in `src/config/navigation.ts` with required fields: type, slug, title, icon, languages, and status (start as 'draft')
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Guide promotion workflow: start guides with `status: "draft"` in navigation config, then progress to `status: "beta"`, finally remove status field for public release
📚 Learning: 2026-01-26T00:56:27.011Z
Learnt from: DatGuyJonathan
Repo: 514-labs/moosestack PR: 3400
File: apps/framework-cli/src/framework/core/infrastructure_map.rs:1238-1298
Timestamp: 2026-01-26T00:56:27.011Z
Learning: Repo 514-labs/moosestack — Workflows: The CLI’s workflow diff is intended to detect only Temporal schedule–affecting changes. In apps/framework-cli/src/framework/core/infrastructure_map.rs, workflows_config_equal should compare schedule, retries, and timeout only; it must not include tasks. Task code/config changes are picked up automatically when the orchestration worker restarts and should not trigger a WorkflowChange.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Applies to apps/framework-docs-v2/content/**/*.mdx : Validate code snippets in documentation with the `test` directive for TypeScript and Python code blocks
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Applies to apps/framework-docs-v2/content/**/*.mdx : TypeScript code snippets in documentation should be validated for syntax with brace matching; Python snippets should be validated for indentation
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-19T22:37:05.393Z
Learnt from: DatGuyJonathan
Repo: 514-labs/moosestack PR: 3282
File: apps/framework-cli-e2e/test/utils/llm-agent-utils.ts:613-742
Timestamp: 2026-01-19T22:37:05.393Z
Learning: In the LLM Documentation Automation test (`apps/framework-cli-e2e/test/llm-docs-automation.test.ts` and `apps/framework-cli-e2e/test/utils/llm-agent-utils.ts`), token limit failures are intentional. The test should fail if the agent exceeds Claude's context window, as this signals that documentation or task complexity needs improvement and represents what a real user would experience.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-15T19:41:53.563Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: examples/cdp-analytics/CLAUDE.md:0-0
Timestamp: 2026-01-15T19:41:53.563Z
Learning: Applies to examples/cdp-analytics/app/workflows/*-sync.ts : Scheduled sync workflows should use Cron schedule expressions (e.g., '0 * * * *' for hourly, '*/5 * * * *' for every 5 minutes), fetch from external APIs using Bearer token authorization, and return a SyncResult object with synced count and errors
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-26T21:29:55.084Z
Learnt from: DatGuyJonathan
Repo: 514-labs/moosestack PR: 3400
File: packages/protobuf/infrastructure_map.proto:507-518
Timestamp: 2026-01-26T21:29:55.084Z
Learning: In packages/protobuf/infrastructure_map.proto, the Workflow message fields (name, schedule, retries, timeout, language) intentionally use non-optional scalars because default values have semantic meaning: retries: 0 means no retries (1 attempt only), empty schedule means manual trigger only, and empty timeout means use default. The runtime applies these defaults appropriately, so the unset vs empty distinction is unnecessary.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-26T01:14:58.758Z
Learnt from: DatGuyJonathan
Repo: 514-labs/moosestack PR: 3400
File: apps/framework-cli/src/framework/core/execute.rs:141-146
Timestamp: 2026-01-26T01:14:58.758Z
Learning: In apps/framework-cli/src/infrastructure/orchestration/workflows.rs, workflow scheduling failures should be non-fatal. The workflows::execute_changes function should return () and log errors rather than returning Result and propagating failures. Failing to schedule a workflow is not a reason to fail the deploy.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2025-12-16T23:09:10.917Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-cli/AGENTS.md:0-0
Timestamp: 2025-12-16T23:09:10.917Z
Learning: Applies to apps/framework-cli/**/*.rs : Test error conditions and edge cases
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-28T14:50:00.978Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1402-1406
Timestamp: 2026-01-28T14:50:00.978Z
Learning: When reviewing WebApp implementations that run in a Node.js backend, prefer Node.js-specific types (e.g., Buffer) and avoid browser-focused cross-platform compatibility considerations. This guideline applies to MDX documentation and code examples across the repository where backend/runtime code is discussed; ensure reviewers distinguish server-side context from frontend/browser constraints and validate type usage accordingly.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-28T14:55:13.411Z
Learnt from: cjus
Repo: 514-labs/moosestack PR: 3407
File: apps/framework-docs-v2/content/guides/static-report-generation.mdx:1585-1616
Timestamp: 2026-01-28T14:55:13.411Z
Learning: In documentation and tutorial files under apps/framework-docs-v2/content/guides/, prefer explicit, self-contained code examples that may duplicate small snippets for clarity over abstracting with DRY helpers. Ensure examples are easy to understand in isolation, even if it means a bit of repetition, to aid learning and reduce cognitive load for readers.
Applied to files:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Add new guides to `guidesNavigationConfig` in `src/config/navigation.ts` with required fields: type, slug, title, icon, languages, and status (start as 'draft')
Applied to files:
apps/framework-docs-v2/src/config/navigation.ts
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Guide promotion workflow: start guides with `status: "draft"` in navigation config, then progress to `status: "beta"`, finally remove status field for public release
Applied to files:
apps/framework-docs-v2/src/config/navigation.ts
📚 Learning: 2026-01-22T19:02:52.316Z
Learnt from: CR
Repo: 514-labs/moosestack PR: 0
File: apps/framework-docs-v2/CLAUDE.md:0-0
Timestamp: 2026-01-22T19:02:52.316Z
Learning: Navigation configuration must be manually maintained in `src/config/navigation.ts` and not auto-generated from file structure
Applied to files:
apps/framework-docs-v2/src/config/navigation.ts
🔇 Additional comments (5)
apps/framework-docs-v2/src/config/navigation.ts (1)
1229-1238: LGTM!New guide entry has all required fields and correctly starts with
status: "draft". Based on learnings: guides should include type, slug, title, icon, languages, and status (starting as 'draft').apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx (4)
1-7: LGTM!Frontmatter includes required
titleanddescriptionfields. Tags and language metadata are appropriate for this Python-only CDC guide.
37-65: LGTM!Mermaid diagram clearly illustrates the CDC architecture with proper subgraph organization and data flow connections.
152-154: LGTM!Security callout appropriately warns against committing secrets to version control.
347-405: LGTM!Comprehensive troubleshooting guide with clear error messages and actionable solutions. Good use of
ToggleBlockfor collapsibility.
✏️ Tip: You can disable this entire section by setting review_details to false in your review settings.
| | Variable | Required | Default | Description | | ||
| |----------|----------|---------|-------------| | ||
| | `SAP_HANA_HOST` | Yes | `localhost` | SAP HANA server hostname | | ||
| | `SAP_HANA_PORT` | No | `30015` | SAP HANA server port | | ||
| | `SAP_HANA_USERNAME` | Yes | `SYSTEM` | Database username | | ||
| | `SAP_HANA_PASSWORD` | Yes | - | Database password | | ||
| | `SAP_HANA_CLIENT_ID` | No | `default_client` | Unique identifier for this CDC consumer | | ||
| | `SAP_HANA_TABLES` | Yes | - | Comma-separated list of tables to track | | ||
| | `SAP_HANA_SOURCE_SCHEMA` | No | `SAPHANADB` | Schema containing source tables | | ||
| | `SAP_HANA_CDC_SCHEMA` | No | `SAPHANADB` | Schema for CDC infrastructure tables | | ||
| | `SAP_HANA_CDC_RETENTION_DAYS` | No | `7` | Days to retain CDC entries before pruning | |
There was a problem hiding this comment.
Inconsistent Required/Default values.
SAP_HANA_HOST is marked Required=Yes but has Default=localhost. If it has a default, it's not truly required. Clarify:
- Mark as
No(optional with default), or - Remove the default value
🤖 Prompt for AI Agents
In `@apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx` around
lines 236 - 246, The table entry for SAP_HANA_HOST is inconsistent (it lists a
Default of `localhost` but Required=Yes); pick one fix: either change the
Required column for `SAP_HANA_HOST` to `No` to reflect the provided default, or
remove the Default value `localhost` and keep Required=Yes; update the row for
`SAP_HANA_HOST` in the variables table accordingly so the Required and Default
columns are consistent.


Summary
Adds comprehensive documentation guide for setting up Change Data Capture (CDC) from SAP HANA to ClickHouse using Moose workflows.
Closes ENG-2100
Changes
Created:
apps/framework-docs-v2/content/guides/sap-hana-cdc-to-clickhouse.mdx(594 lines)Modified:
apps/framework-docs-v2/src/config/navigation.tsIconDatabaseImporticonstatus: "draft"andlanguages: ["python"]Implementation Details
Based on reference implementations:
registry/pipeline-registry/sap_hana_cdc_to_clickhouseregistry/connector-registry/sap_hana_cdcGuide covers:
Test Plan
pnpm buildfrom monorepo root)pnpm dev)🤖 Generated with Claude Code
Note
Low Risk
Docs-only changes plus navigation/config tweaks; main risk is unintended visibility changes to draft guides via the new Vercel build env flag.
Overview
Adds a new draft guide,
guides/sap-hana-cdc-to-clickhouse, documenting an end-to-end SAP HANA→ClickHouse CDC pipeline (trigger-based capture, initial load + incremental sync workflows, multi-client progress tracking, retention/pruning, CLI ops, and troubleshooting).Updates docs navigation to surface the new draft guide and removes the older draft
guides/data-management/change-data-captureentry, and setsNEXT_PUBLIC_NAV_VARIANT=draftinapps/framework-docs-v2/vercel.jsonfor builds.Written by Cursor Bugbot for commit 72735db. This will update automatically on new commits. Configure here.