STUD
← Plays

Build · Create · Engineering

Logs, metrics, and traces instrumentation plan

A concrete plan covering all three observability pillars per service, plus an SLI for every golden signal, so you can actually see what your app is doing.

You receive: A structured instrumentation plan (JSON) that passes the three-pillars, metric-shape, log-level, and golden-signal SLI-coverage checks.

Part of Keep App Running

Example

A sample of what this play produces. Your result is generated for your inputs.

Plan

Observability instrumentation plan for STUD.com's soft-launch production surface. STUD runs three services that matter to a buyer's experience: the Next.js storefront on Vercel (platform-web), the process-isolated acceptance-check worker (judge-worker), and the deploy-time schema and catalog sync step (deploy-migrate). The plan instruments all three pillars per service and defines an SLI with a numeric target for latency and errors, the two golden signals a pre-revenue soft launch must watch: buyers browsing 265 plays across 14 playbooks feel latency directly, and a failed acceptance check or a failed catalog sync is a silent revenue blocker. Targets are launch-stage estimates, set from Vercel function baselines, and are labeled illustrative until 30 days of production data recalibrates them.

Services

platform-web

Description
Next.js app on Vercel serving stud.com: play catalog, play detail pages, intake, waitlist.
Logs
LevelEventFields
infohttp_request_completedroute, status, duration_ms, region
warnhiring_gated_action_attemptedroute, play_id (paid fulfillment gated at soft launch, must render 'opens soon', never 500)
errorserver_render_failedroute, error_class, digest
debugcatalog_query_executedlens, result_count, duration_ms
Metrics
NameTypeUnitLabels
http_requests_totalcounterrequestsroute, status_class
http_request_duration_mshistogrammsroute
http_5xx_totalcounterrequestsroute
sample_deliverable_renders_totalcounterrendersplay_slug
vercel_function_concurrencygaugeinvocationsregion
Traces
SpanNotes
GET /plays/[id]root span per page request; child spans for the Neon query and the sample-deliverable render
POST /waitlistroot span with a Neon insert child span; the soft-launch conversion path
Slis
SignalMetric NameTargetUnitDefinition
latencyhttp_request_duration_ms800msp95 server response time on play detail pages; illustrative launch target
errorshttp_5xx_total0.5percent5xx rate as a percent of http_requests_total over 1h; the no-op-schema 500 is the incident class this catches

judge-worker

Description
Process-isolated acceptance-check harness (stud_judge) that grades every deliverable before it lands.
Logs
LevelEventFields
infoverdict_settledtask_id, accepted, hidden_pass, visible_pass, duration_ms
warngrading_timeout_near_limittask_id, duration_ms, timeout_s
errorgrading_process_crashedtask_id, exit_code, stderr_tail
debugcheck_case_evaluatedtask_id, check_name, passed
Metrics
NameTypeUnitLabels
judge_runs_totalcounterrunstask_id, verdict
judge_run_duration_mshistogrammstask_id
judge_crashes_totalcountercrashestask_id
judge_queue_depthgaugerunstier
Traces
SpanNotes
judge.gradeone span per graded submission; child spans per check case, linked to the platform-web run span by run_id
Slis
SignalMetric NameTargetUnitDefinition
latencyjudge_run_duration_ms10000msp95 grading time; machine-tier tasks carry a 10s per-task timeout, so p95 must sit under it
errorsjudge_crashes_total0crashes_per_dayharness process crashes per day; a crash is never a verdict, it is an incident

deploy-migrate

Description
The production build step: drizzle-kit migrate, seed-catalog, then sync-catalog --apply against Neon on every production deploy.
Logs
LevelEventFields
infomigrate_step_completedstep (migrate|seed|sync), duration_ms, rows_applied
warncatalog_diff_larger_than_expectedadded, removed, changed
errordeploy_migrate_failedstep, error_class (fails the build closed so prod code never serves ahead of schema)
debugenv_gate_evaluatedvercel_env, database_url_present
Metrics
NameTypeUnitLabels
deploy_migrate_runs_totalcounterdeploysoutcome
deploy_migrate_duration_mshistogrammsstep
catalog_rows_syncedgaugerowstable
migrate_failures_totalcounterfailuresstep
Traces
SpanNotes
deploy.migrateone trace per production deploy: migrate, seed, and sync child spans, tagged with the git SHA
Slis
SignalMetric NameTargetUnitDefinition
latencydeploy_migrate_duration_ms120000msp95 total build-step time; beyond 2 minutes it risks the build budget
errorsmigrate_failures_total0failures_per_weekfailed production migrate steps per week; any failure blocks the deploy by design and pages the founder

Opens soon

Cost50 credits
ProtectionSpent when the run starts · returned only if STUD is at fault

STUD opens runs for everyone soon, on every play at once.

Scope of the check

What's verified: STUD verifies the submitted plan (JSON) covers your minimum number of services, each with all three pillars (logs, metrics, traces), the minimum metrics, well-formed metric and log entries, and an SLI with a numeric target for every required golden signal. STUD does NOT connect to your services or confirm the instrumentation actually emits these signals; it checks the plan's coverage and structure.

Get early access to STUD the day it goes live.