Drill: No decoration: a landing page using ONLY typography, spacing, and alignment. No gradients, no illustrations, no decorative SVG, no glassmorphism. Target: looks designed, not empty.
Interpretation: Building a marketing landing for a fictional observability startup ('Tideline'). Testing whether the mono-as-decoration move (from the 2026-07-09 invoicing drill) generalizes to a marketing context, and whether the featured-card inversion pattern still reads as designed rather than templated.
Tideline instruments every request end to end — across services, queues, and databases — and keeps the slow ones. p99 latency, dropped spans, and the one retry that timed out: all in one trace, no head sampling.
Most tracing systems decide what to keep at the edge of your network. The first service in a request rolls a dice — keep one in a hundred, drop the rest. The dropped spans are gone forever, including the ones where the bug lives.
This is fine when everything is healthy. It is catastrophic when it isn't. The requests you actually want — the slow ones, the failing ones, the ones that triggered a pager at 3am — are statistically the rarest traces in your traffic. 1% head sampling keeps the 99th percentile bug roughly 1% of the time.
Tideline inverts the decision. Every span is buffered through the collector. The trace is evaluated whole, then kept or dropped based on what actually happened — latency, error, a specific attribute, or a query you write at investigation time. You see the trace you came looking for, not the one the sampler happened to let through.
Each stage is independently scalable and stateless except the buffer, which is tunable to your retention budget.
OTel-native SDKs wrap your HTTP handlers, DB drivers, and queue consumers. Auto-instrumentation for 40+ frameworks. No manual span code to ship a first trace.
The collector holds spans in a sliding window keyed by trace ID. A trace isn't evaluated until its root span closes or the window expires — so the decision sees the full picture.
Rules decide retention: keep errors, keep p99, keep traces touching a flagged deployment. Everything else drops. Storage cost stays flat; signal density goes up.
Policies are evaluated in order. First match wins. Ship them with your service, version them in git, roll back in seconds.
# tideline.yaml — keep what your on-call needs policies: - name: always-keep-errors keep: 100% when: status = error - name: keep-slow-tails keep: 100% when: duration > p99(service) - name: flagged-deploys keep: 100% when: deployment.tid = "d_8f3a" - name: baseline-traffic keep: 1% when: true # everything else
You keep fewer spans because the policy is smart. Your bill reflects that.
buffer.window. Most teams run the collector at 1–2GB resident.Stop gambling on head sampling. Ship the SDK, write a policy, and see the request that broke production — the whole thing, every span, the first time you look.