Create a write branch on the table: ALTER TABLE my_catalog.db.events CREATE BRANCH audit_branch.
Write data to the branch only: INSERT INTO my_catalog.db.events.branch_audit_branch SELECT * FROM staged_data.
Run validation queries against the branch (row counts, null checks, schema assertions) by querying SELECT * FROM my_catalog.db.events.branch_audit_branch.
On validation success, fast-forward the main branch to the audit branch: CALL my_catalog.system.fast_forward('db.events', 'main', 'audit_branch').
Create an immutable tag on the published snapshot for auditability: ALTER TABLE my_catalog.db.events CREATE TAG release_2024_03_15 AS OF VERSION <snapshot_id> RETAIN 365 DAYS.
Known gotchas
The fast_forward procedure only succeeds if the main branch has not advanced past the common ancestor; if concurrent writes occurred to main, a manual snapshot cherrypick or re-merge is required.
Branch and tag retention must be explicitly set; without a retention period, branches and tags are subject to the same expiry rules as snapshots and may be garbage-collected.
Writing to a named branch requires specifying the branch in the write path (e.g., using DataFrameWriter options or the branch_audit_branch table reference); forgetting to target the branch writes to main instead.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp