Skip to main content
Difficulty
Advanced
Reward
600 XP ยท ๐ŸŒŠ Streaming Engineer
Prerequisites
PySpark ยท Structured Streaming ยท Delta Lake
Primary Stack
Databricks ยท PySpark ยท Streaming
Target
Snowflake ยท Delta Lake
Development Task
DEV-006

Real-Time Sales Streaming Pipeline

Build a low-latency Structured Streaming pipeline that continuously ingests real-time sales transactions, manages event-time watermarking, isolates malformed payloads, computes tumbling and sliding window metrics, and maintains fault-tolerant checkpoint recovery.

01

Project Brief

Understand the real-time operational requirements and streaming architecture objectives.

Business Scenario

A global omnichannel retail enterprise processes hundreds of thousands of retail transactions every minute across e-commerce portals, mobile apps, and physical point-of-sale terminals. Operations, fraud detection, and executive leadership need real-time operational visibility into sales velocity, high-value orders, payment failures, and store-level transaction spikes.

The existing batch architecture only refreshes dashboards every few hours, leaving store managers and marketing teams blind to midday flash sales anomalies and checkout gateway outages. The engineering team must implement a robust, continuous streaming pipeline that ingests raw sales events, cleanses and deduplicates records in micro-batches, calculates low-latency operational KPIs, and publishes updates to Snowflake and live monitoring dashboards.

Development Objective

Design and develop a production-ready Structured Streaming pipeline in PySpark and Delta Lake. The pipeline must continuously ingest event streams, handle schema evolution and corrupt records, apply watermarking for late-arriving data, deduplicate transactions within streaming windows, compute windowed revenue aggregates, and synchronize curated datasets to Snowflake with fault-tolerant checkpointing.

Expected Outcome

Continuous Ingestion
Stream events from message queues or cloud storage without process starvation or data loss.
Event-Time Watermarking
Handle late-arriving events deterministically using event-time watermarking thresholds.
Zero Silent Loss
Quarantine malformed or schema-violating JSON payloads into a bad-records streaming sink.
Windowed Aggregations
Calculate 5-minute tumbling and 1-hour sliding operational revenue and volume metrics.
Fault-Tolerant State
Ensure exact state recovery upon driver restarts using persistent streaming checkpoints.
Snowflake Live Sync
Publish validated Silver transactions and Gold KPI tables to Snowflake via foreachBatch.
Developer Focus

Unlike batch pipelines, streaming systems require explicit state management, watermarks, trigger intervals, and memory safeguards. Your implementation must demonstrate that backpressure, burst traffic, and stream restarts do not corrupt analytical results.

02

Source System

Inspect streaming payload contracts, event formats, timestamp semantics, and ingestion parameters.

Source Stream Overview

The source system is an active event stream (e.g., Kafka topic, Event Hub, or simulated streaming JSON directory) emitting point-of-sale and online checkout transactions continuously.

Source Type
Streaming Event Stream (JSON)
Ingestion Mechanism
PySpark Structured Streaming
Trigger Cadence
Micro-batch (AvailableNow / ProcessingTime)
Time Semantics
Event-Time (event_timestamp)
Volume
10,000+ events/sec burst capacity
Primary Key
transaction_id

Example Streaming JSON Event

{
  "event_id": "EVT-STREAM-98210",
  "transaction_id": "TX-990124",
  "store_id": "STR-402",
  "customer_id": "C-10492",
  "event_timestamp": "2026-08-30T10:14:32.450Z",
  "channel": "POS_TERMINAL",
  "currency": "USD",
  "items": [
    {
      "item_id": "SKU-102",
      "quantity": 2,
      "unit_price": 45.00,
      "discount": 5.00
    }
  ],
  "gross_amount": 90.00,
  "discount_amount": 10.00,
  "net_amount": 80.00,
  "payment_method": "CREDIT_CARD",
  "payment_status": "SUCCESS"
}

Event Schema Fields

event_id*
STRING
Unique message event identifier generated by streaming producer.
transaction_id*
STRING
Primary business identifier of the retail sales transaction.
store_id*
STRING
Physical store identifier or online checkout channel code.
event_timestamp*
TIMESTAMP
ISO 8601 timestamp when transaction occurred on POS terminal.
items*
ARRAY<STRUCT>
Array of item objects containing item_id, quantity, unit_price, discount.
net_amount*
DECIMAL(12,2)
Final monetary amount charged to customer after discounts and taxes.
payment_status*
STRING
Transaction outcome ('SUCCESS', 'DECLINED', 'TIMEOUT', 'FAILED').

Known Streaming Source Constraints

Burst Traffic Spikes
Transaction volume may spike 10x during promotional events without warning.
Late-Arriving Transactions
POS terminal disconnections can cause events to arrive up to 30 minutes late.
Duplicate Message Delivery
At-least-once streaming delivery can produce duplicate event_ids across network retries.
Malformed JSON Strings
Corrupted payload fragments or truncated messages must not crash streaming queries.
Streaming Principle

Your pipeline must never crash due to dirty input data. Corrupted events must be isolated to bad-records storage while valid transactions continue streaming uninterrupted.

03

Expected Architecture

Structured Streaming lakehouse architecture: Bronze changelog, Silver validation, and Gold streaming aggregations.

Streaming Flow Architecture

The architecture implements a real-time medallion pipeline utilizing PySpark Structured Streaming and Delta Lake.

01
Streaming Event Source
Kafka / Cloud Storage / Event Hub
Continuous ingestion point delivering high-throughput sales event messages.
โ†“
02
Bronze โ€” Raw Events
Delta Lake (Append-Only)
Append-only landing table preserving raw JSON strings, ingestion timestamps, and stream offsets.
โ†“
03
Silver โ€” Validated Transactions
PySpark / Delta Lake (MERGE)
Apply explicit schemas, unnest item arrays, filter duplicates, and enforce event-time watermarking.
โ†“
04
Gold โ€” Streaming Aggregations
PySpark Windowing / Delta Lake
Compute 5-min tumbling and 1-hr sliding window operational metrics (revenue, velocity, failure rate).
โ†“
05
Analytics & Dashboard Target
Snowflake / BI Dashboards
Serve real-time operational views and synchronized fact tables for enterprise decision makers.

Layer Responsibilities

Bronze Eventsยท High-Speed Capture
Ingests streaming JSON payloads directly without transformation, ensuring zero backpressure on producers.
Silver Transactionsยท Standardized Grain
Explodes nested items, standardizes payment codes, applies watermarking, and enforces idempotency via MERGE.
Gold Aggregationsยท Operational KPIs
Calculates store velocity, rolling revenue by region, and gateway failure rates for real-time monitoring.

Architectural Expectations

Explicit Watermarking Thresholds
Set watermarking (e.g., withWatermark('event_timestamp', '15 minutes')) to bound state store size.
Checkpointing Integrity
Every streaming query must use a dedicated, non-shared cloud storage checkpoint directory.
Idempotent foreachBatch Sinks
Writing micro-batches to Silver Delta and Snowflake must be atomic and safe against replay retries.
State Store Memory Bounding
Streaming state must not accumulate unbounded historical records in executor memory.
Architecture Rule

Never use uncontrolled streaming aggregations without watermarking. Unbounded state stores will inevitably exhaust JVM heap memory and crash the Spark cluster under production workloads.

04

Development Requirements

Implement the functional components required for streaming ingestion, watermarking, curation, and publishing.

Developer Responsibilities

The implementation must address the following 15 engineering requirements across streaming ingestion, data quality, windowing, and target publishing.

01

Structured Streaming Ingestion

Configure resilient streaming read streams.

Required Checklist
โœ“Implement spark.readStream with appropriate source format (kafka, cloudFiles, or json stream).
โœ“Configure micro-batch trigger options (e.g., processingTime='10 seconds' or availableNow=True).
โœ“Enforce maxFilesPerTrigger or maxOffsetsPerTrigger to prevent memory exhaustion during traffic spikes.
Expected Outcome
Controlled, stable streaming ingestion flow.
02

Explicit Schema Definition & Parsing

Parse streaming payloads against strict schemas.

Required Checklist
โœ“Define explicit PySpark StructType schemas for incoming sales transactions and item arrays.
โœ“Use from_json() with PERMISSIVE or FAILFAST mode configurations.
โœ“Capture unparseable rows in a dedicated corrupted_record column.
Expected Outcome
Strongly-typed streaming DataFrames.
03

Malformed Event Quarantine

Isolate corrupted JSON payloads without breaking stream execution.

Required Checklist
โœ“Filter rows with unparseable JSON or null critical identifiers (transaction_id, store_id).
โœ“Route invalid records to a bad_records Delta table with ingestion timestamps and raw text.
โœ“Ensure valid records in the same micro-batch proceed normally.
Expected Outcome
Zero silent data loss with complete error observability.
04

Event-Time Watermarking

Handle late-arriving events deterministically.

Required Checklist
โœ“Apply withWatermark('event_timestamp', '15 minutes') or equivalent domain-appropriate threshold.
โœ“Drop or redirect events arriving older than watermark threshold.
โœ“Log dropped late-event counts in streaming metrics.
Expected Outcome
Bounded streaming state store preventing out-of-memory errors.
05

Streaming Micro-Batch Deduplication

Eliminate duplicate transactions within streaming windows.

Required Checklist
โœ“Apply dropDuplicates(['transaction_id', 'event_timestamp']) across active streaming watermark windows.
โœ“Ensure deduplication works reliably across overlapping micro-batches.
Expected Outcome
Exactly-once transaction representation in Silver.
06

Silver Transaction Processing

Standardize and explode transactions into query-ready Silver Delta tables.

Required Checklist
โœ“Explode item arrays into line-item rows while preserving transaction-level metadata.
โœ“Standardize payment method codes and geographic store mappings.
โœ“Write to Silver Delta using foreachBatch with idempotent MERGE statements.
Expected Outcome
Clean, query-optimized Silver transaction table.
07

Tumbling Window Aggregations (5-Min)

Calculate 5-minute operational KPIs for live store monitoring.

Required Checklist
โœ“Group by window('event_timestamp', '5 minutes'), store_id.
โœ“Compute transaction_count, total_revenue, avg_order_value, and failed_payment_count.
โœ“Write output to Gold GOLD_STREAM_5MIN_STORE_METRICS.
Expected Outcome
Real-time 5-minute operational intelligence.
08

Sliding Window Aggregations (1-Hour)

Compute 1-hour rolling trends with 10-minute slide intervals.

Required Checklist
โœ“Group by window('event_timestamp', '1 hour', '10 minutes'), channel.
โœ“Calculate rolling sales velocity and percentage growth against previous windows.
โœ“Write output to Gold GOLD_STREAM_1HR_CHANNEL_TRENDS.
Expected Outcome
Live multi-channel trend analysis for marketing teams.
09

Fault-Tolerant Checkpointing

Guarantee stateful recovery across driver restarts.

Required Checklist
โœ“Configure unique checkpointLocation cloud storage directories for each streaming query.
โœ“Verify that re-launching a stream picks up from the exact offset without data duplication.
Expected Outcome
Zero data loss upon infrastructure reboots or cluster preemptions.
10

Snowflake Target Synchronization

Publish streaming transactions and metrics to Snowflake.

Required Checklist
โœ“Use foreachBatch to stage and merge Silver transactions into Snowflake FACT_SALES_STREAM.
โœ“Synchronize 5-minute and 1-hour Gold aggregates to Snowflake operational tables.
โœ“Ensure atomic transaction commits on target warehouse.
Expected Outcome
Synchronized Snowflake warehouse accessible by BI dashboards.
11

Streaming Operational Telemetry

Provide full observability into streaming latency and throughput.

Required Checklist
โœ“Implement StreamingQueryListener to capture onQueryProgress events.
โœ“Log inputRowsPerSecond, processedRowsPerSecond, triggerExecution, and watermark metrics.
โœ“Emit structured alerts when latency lag exceeds operational SLA (e.g., > 60 seconds).
Expected Outcome
Production observability for DevOps and on-call engineers.
12

Backpressure & Rate-Limiting Configuration

Protect Spark clusters from unexpected traffic surges.

Required Checklist
โœ“Configure maxOffsetsPerTrigger or maxFilesPerTrigger appropriately.
โœ“Enable Spark dynamic allocation or streaming auto-scaling parameters.
Expected Outcome
Stable cluster resource utilization under burst loads.
13

High-Value Transaction Flagging

Identify large or anomalous transactions in real time.

Required Checklist
โœ“Flag transactions where net_amount exceeds threshold (e.g., > $1,000) for fraud audit.
โœ“Publish high-value events to a dedicated real-time alert stream.
Expected Outcome
Immediate operational visibility into VIP orders and high-risk actions.
14

Configuration Externalization

Externalize all streaming parameters across environments.

Required Checklist
โœ“Maintain YAML configs for dev, staging, and prod environments.
โœ“Externalize watermark delays, trigger intervals, checkpoint URIs, and Snowflake credentials.
Expected Outcome
Configuration-driven deployments without code alterations.
15

Disaster Recovery & Stream Reset Runbook

Document operational recovery procedures.

Required Checklist
โœ“Provide runbook instructions for offset rewinds, schema drift handling, and checkpoint resets.
Expected Outcome
Comprehensive operational guide for production incidents.
Implementation Guidance

You may choose between append and update output modes for streaming aggregations. Justify your selection based on downstream consumer requirements and watermark behavior.

05

Testing Requirements

Validate stream resilience against burst traffic, corrupt events, duplicates, restarts, and downstream failures.

Required Test Scenarios

Validate the streaming pipeline against the following 12 test scenarios:

01
Normal Steady-State Ingestion
Scenario
Stream 5,000 valid sales transactions over a 2-minute period.
Expected Result
All 5,000 records land in Silver Delta and Gold aggregates with latency < 15 seconds.
02
Burst Traffic Surge Simulation
Scenario
Inject 50,000 events in a single 10-second burst.
Expected Result
Streaming query processes backlog across multiple micro-batches via rate-limits without cluster crash.
03
Malformed JSON Ingestion
Scenario
Inject corrupted JSON strings and non-JSON bytes into the stream.
Expected Result
Corrupt records are diverted to bad_records table; valid transactions continue processing unaffected.
04
Duplicate Transaction Filtering
Scenario
Send 1,000 transactions containing duplicate transaction_ids within the watermark window.
Expected Result
Silver table contains exactly 1 unique record per transaction_id without metric inflation.
05
Late-Arriving Data Within Watermark
Scenario
Deliver an event with event_timestamp 10 minutes older than current processing time.
Expected Result
Event falls within 15-minute watermark and is incorporated into the appropriate historical window aggregate.
06
Late-Arriving Data Beyond Watermark
Scenario
Deliver an event with event_timestamp 45 minutes older than current processing time.
Expected Result
Event exceeds 15-minute watermark threshold and is dropped or routed to late-data audit log.
07
Streaming Driver Restart & Recovery
Scenario
Kill the streaming query mid-execution and restart from checkpoint location.
Expected Result
Stream resumes from the exact uncommitted offset without missing or duplicating records.
08
Downstream Snowflake Transient Failure
Scenario
Simulate a momentary Snowflake connection failure during foreachBatch execution.
Expected Result
Micro-batch retries automatically, succeeds upon reconnect, and maintains state consistency.
09
5-Minute Tumbling Aggregation Reconciliation
Scenario
Sum net_amount in GOLD_STREAM_5MIN_STORE_METRICS across all windows for a given hour.
Expected Result
Sum matches the sum of net_amount from Silver line items exactly.
10
High-Value Order Detection
Scenario
Stream orders with net_amount > $1,000.
Expected Result
Orders are flagged with is_high_value = true and appear in real-time VIP alert views.
11
State Store Memory Stability Test
Scenario
Run continuous streaming ingestion for 2 hours with active watermarking.
Expected Result
State store memory usage remains bounded and flat rather than growing monotonically.
12
End-to-End Latency Validation
Scenario
Measure duration from message publish timestamp to Snowflake query availability.
Expected Result
End-to-end operational latency remains consistently under the target SLA (< 30 seconds).
Testing Principle

Demonstrating state stability and recovery after unexpected cluster termination is the defining test of a production-grade streaming engineer.

06

Acceptance Criteria

Verify that the streaming pipeline meets all production Definition of Done criteria.

Definition of Done

The implementation is complete when all 10 criteria are met:

01
Continuous Stream Ingestion Operational
Structured Streaming query processes events continuously with stable micro-batch triggers.
02
Schema Validation & Quarantine Active
Corrupt JSON and invalid payloads are safely quarantined without crashing streaming queries.
03
Watermarking Enforced
Event-time watermarking bounds state store growth and handles delayed transactions predictably.
04
Duplicates Eliminated
Duplicate streaming messages do not corrupt Silver records or inflate aggregate metrics.
05
Windowed Aggregations Reconcile
5-minute and 1-hour Gold window metrics match Silver ground-truth transactions 100%.
06
Fault-Tolerant Checkpoint Recovery
Stream recovers seamlessly from unexpected terminations without data loss or duplicate state.
07
Snowflake Target Synchronized
Silver line items and Gold aggregates are published to Snowflake via idempotent foreachBatch.
08
Rate-Limiting & Backpressure Active
Max offsets per trigger prevent cluster crashes during burst traffic spikes.
09
All 12 Test Scenarios Pass
Complete test suite passes with documented latency telemetry and recovery evidence.
10
Documentation & Runbook Published
Architecture decisions, checkpoint locations, and disaster recovery playbooks are fully documented.
Acceptance Rule

Sign-off requires test logs proving that a mid-stream crash resumes cleanly from checkpoint without missing a single transaction.

07

Developer Deliverables

Submit all streaming modules, checkpoint configurations, test harnesses, and telemetry evidence.

Required Deliverables

The submission must include the following 11 artifacts:

01
Streaming Ingestion Module
PySpark Structured Streaming reader with rate-limiting, schema parsing, and trigger configs.
02
Bronze & Bad-Records Sink
Append-only writer for raw events and dead-letter quarantine handler for malformed payloads.
03
Silver Curation & Deduplication Pipeline
Module exploding items, validating payment codes, applying watermarks, and merging into Silver.
04
Gold Window Aggregation Pipeline
Streaming aggregation queries computing 5-min tumbling and 1-hr sliding metrics.
05
Snowflake foreachBatch Connector
Idempotent micro-batch loader publishing Silver and Gold tables to Snowflake.
06
Mock Stream Event Generator
Python test harness generating steady-state, burst, malformed, duplicate, and late events.
07
Streaming Query Listener / Metrics Logger
Telemetry listener logging throughput, latency lag, and trigger durations.
08
Automated Test Suite
Automated tests covering all 12 required streaming verification scenarios.
09
Checkpoint & Recovery Evidence
Logs demonstrating streaming recovery from saved checkpoints after abrupt process kill.
10
Configuration Files
YAML configuration files for dev, staging, and production streaming environments.
11
Streaming Architecture Guide & Runbook
README covering state store sizing, watermark calculations, and disaster recovery steps.
Submission Principle

Ensure your mock event generator can be executed locally by another engineer to replay all 12 test scenarios.

08

Engineering Constraints

Adhere to operational and technical boundaries for enterprise streaming systems.

Required Boundaries

The solution must strictly comply with the following 10 constraints:

01
No Driver-Side State Accumulation
Do not accumulate streaming event objects in driver memory; distribute transformations across Spark executors.
02
Mandatory Watermarking
All stateful streaming aggregations and join operations must specify explicit event-time watermarks.
03
Checkpoint Directory Isolation
Every streaming query must have its own isolated, persistent checkpoint directory in cloud storage.
04
Idempotent Target Updates
Retrying a micro-batch must never produce duplicate records or distorted financial metrics in Snowflake.
05
Zero Silent Loss on Bad Records
Malformed JSON or unparseable messages must be routed to bad-records storage with diagnostic text.
06
Controlled Micro-Batch Sizes
Always set maxOffsetsPerTrigger or maxFilesPerTrigger to prevent memory exhaustion during traffic spikes.
07
No Hard-Coded Credentials
Kafka tokens, cloud storage keys, and Snowflake credentials must be injected via secret scopes.
08
Observable Telemetry
Streaming queries must emit operational throughput, latency, and failure metrics continuously.
09
Bounded State Retention
Do not set unreasonably large watermark durations (e.g., > 24 hours) without documented business justification.
10
Production Code Quality
Code must be modular, typed, documented, and free of debug prints or temporary test files.
Constraint Notice

Deploying streaming queries without watermarks or using shared checkpoint directories will result in immediate code review failure.

09

Suggested Project Structure

Recommended repository layout for production streaming pipelines.

Recommended Project Layout

Structure your repository to separate stream ingestion, watermarking, window aggregations, sinks, and tests:

DEV-006-real-time-streaming-pipeline/
โ”‚
โ”œโ”€โ”€ README.md
โ”‚
โ”œโ”€โ”€ config/
โ”‚   โ”œโ”€โ”€ dev.yaml
โ”‚   โ”œโ”€โ”€ staging.yaml
โ”‚   โ””โ”€โ”€ prod.yaml
โ”‚
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ streaming/
โ”‚   โ”‚   โ”œโ”€โ”€ stream_reader.py      # Structured Streaming reader & rate-limits
โ”‚   โ”‚   โ”œโ”€โ”€ schema.py             # Explicit PySpark StructType definitions
โ”‚   โ”‚   โ””โ”€โ”€ listener.py           # StreamingQueryListener for latency/telemetry
โ”‚   โ”œโ”€โ”€ processing/
โ”‚   โ”‚   โ”œโ”€โ”€ bronze_raw.py         # Append-only raw event logger
โ”‚   โ”‚   โ”œโ”€โ”€ quarantine.py         # Malformed payload dead-letter handler
โ”‚   โ”‚   โ”œโ”€โ”€ silver_curation.py    # Unnesting, watermarking & deduplication
โ”‚   โ”‚   โ””โ”€โ”€ gold_aggregations.py  # 5-min tumbling & 1-hr sliding aggregations
โ”‚   โ””โ”€โ”€ sinks/
โ”‚       โ”œโ”€โ”€ delta_sink.py         # foreachBatch Delta Lake writer
โ”‚       โ””โ”€โ”€ snowflake_sink.py     # foreachBatch Snowflake staging & merge loader
โ”‚
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ mock_event_generator.py   # Burst, malformed, duplicate event generator
โ”‚   โ”œโ”€โ”€ test_stream_ingestion.py
โ”‚   โ”œโ”€โ”€ test_watermarking.py
โ”‚   โ”œโ”€โ”€ test_deduplication.py
โ”‚   โ”œโ”€โ”€ test_window_aggregates.py
โ”‚   โ””โ”€โ”€ test_checkpoint_recovery.py
โ”‚
โ””โ”€โ”€ docs/
    โ”œโ”€โ”€ streaming_architecture.md # Architecture & watermark sizing guide
    โ””โ”€โ”€ recovery_runbook.md       # Stream restart & offset rewind playbook

Module Responsibilities

src/streaming/
Manages streaming readers, explicit schemas, rate-limiting, and query progress telemetry.
src/processing/
Contains Bronze persistence, dead-letter quarantine, Silver watermarking, and Gold window metrics.
src/sinks/
Implements idempotent foreachBatch writers for Delta Lake and Snowflake targets.
tests/
Mock streaming event generators and test suite covering burst traffic, late data, and recovery.
config/
Environment-specific trigger intervals, watermark thresholds, checkpoint URIs, and credentials.
docs/
Streaming architecture diagrams, state store sizing guidelines, and incident recovery playbooks.
Design Rationale

Separating streaming ingestion from sink writers allows unit testing window aggregation logic using batch DataFrames before deploying long-running streaming clusters.

10

Submission Checklist

Final engineering quality checklist before submitting DEV-006.

Final Review Checklist

Verify every checklist item before submitting your streaming pipeline:

โœ“
Structured Streaming Ingestion Operational
Stream processes events continuously with appropriate micro-batch trigger options.
โœ“
Explicit Schema & Typing Defined
All incoming JSON event attributes and nested item arrays are strongly typed.
โœ“
Dead-Letter Quarantine Active
Corrupt JSON strings and invalid events are diverted without halting streaming queries.
โœ“
Event-Time Watermarking Configured
Watermarking threshold is defined, tested, and protects state store memory.
โœ“
Streaming Deduplication Enforced
Duplicate event messages within watermark windows do not inflate Silver or Gold records.
โœ“
Windowed Aggregations Validated
5-minute tumbling and 1-hour sliding operational metrics reconcile mathematically with Silver.
โœ“
Checkpoint Recovery Demonstrated
Stream recovers state seamlessly from persistent checkpoints following an abrupt termination.
โœ“
Snowflake foreachBatch Loader Verified
Silver and Gold tables are synchronized to Snowflake without row duplication.
โœ“
Operational Telemetry & Metrics Logged
Streaming listener logs throughput, latency lag, and trigger execution metrics.
โœ“
All 12 Test Scenarios Pass
Complete test suite passes with documented latency telemetry and recovery evidence.
โœ“
Configuration Externalized
Watermark durations, checkpoint URIs, and database credentials are fully externalized.
โœ“
Documentation & Runbook Published
README contains architecture diagrams, watermark calculations, and disaster recovery playbooks.
Ready for Review

Submit DEV-006 only after the streaming ingestion, watermarking, Gold window aggregations, Snowflake foreachBatch sync, checkpoint recovery, and test suites have been verified.