# Assess Observability

> Use when production or staging telemetry may be insufficient — "is tracing complete", upgrade tracing, OpenObserve or OTLP enough, head vs tail sampling, span status, golden signals, log-trace join — and the deliverable is a readiness finding set, not an incident pack. Not for a live 500/trace hunt (debug-remote). Not for a local failing test (root-cause).

- Skill: `jayden-dang/assess-observability` (Agent Skill, multi-file: 4 files)
- Install (CLI): `npx skillmds@latest add jayden-dang/assess-observability`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jayden-dang/assess-observability/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: jayden-dang (https://skillmd.com/u/jayden-dang)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jayden-dang/assess-observability

---


# Assess Observability

A readiness verdict for deployed telemetry. It does not investigate an
incident (`debug-remote`) and it does not write Hybrid 1A canonical
docs (`/define-system-doc`).

## The Iron Law

```
NO COMPLETENESS STAMP WITHOUT A GREEN FINDING SET
NO CANONICAL OPS OR STANDARDS FILE FROM THIS SKILL
```

"We export OTLP to OpenObserve" is not complete. `Status: Approved` or
"production observability is complete" on a Hybrid 1A path is a stamp.
This skill never writes `docs/ops/observability.md` or
`docs/standards/observability.md`.

<HARD-GATE>
Do not PR a one-liner (4xx → span Error, blanket `RecordException`,
raise head sample "for the board") as the completeness close. Each
failed row is a tracked change via `frame-change` or `amend-feature`.
Promotion: `readiness-bar.md` § Disposition (one home).
</HARD-GATE>

## Finding set — REQUIRED shape

Write every row. Unknowns stay `unresolved`. Verdict is `not-complete`
unless **every Must row is `pass`**. `pass` requires a proving **read**
(query, resource dump, probe) — not "we installed the backend."

```markdown
# Observability readiness — <date>

## Verdict
<complete | not-complete>

## Must
| Row | Result | Evidence | Tracked change |
|---|---|---|---|
| Identity `service.name` not `unknown_service*` | pass/fail/unresolved | <read> | <none \| frame-change/amend-feature> |
| `service.version` deploy-correlatable | | | |
| `deployment.environment.name` set | | | |
| W3C `traceparent` across hops | | | |
| HTTP/RPC/DB spans use current semconv | | | |
| SERVER 4xx status left unset | | | |
| Logs carry TraceId/SpanId | | | |
| Golden signals (latency, traffic, errors, saturation) | | | |
| Sampling policy written; rare errors kept (tail or 100%) | | | |
| Backend can search trace_id / service / error | | | |
| PII: no credentials in urls; headers opt-in | | | |
| Black-box probe of the user path | | | |

## Should (do not block complete)
| Row | Result | Evidence |
|---|---|---|
| `service.instance.id` | | |
| Collector in front (redact / tail) | | |
| Deploy markers on dashboards | | |
| RUM if the failure can start in the browser | | |

## Not-must / Access
- See `readiness-bar.md` (Profiles are not-must).
- `docs/agents/project.md` Remote environments: <present | missing>
- If missing: named `/configure-repo` once
```

WHEN scoring a Must row, load `readiness-bar.md` — pass/fail rules and
backend examples live only there.

## After the set

- `not-complete`: do not stamp. Each `fail` row is one change
  (`frame-change` / `amend-feature`). Do not batch them into a live
  prod patch.
- `complete`: still do not write the Hybrid 1A file. Suggest
  `/define-system-doc ops/observability` so the map can be Approved
  there.
- A live symptom appearing during the assess: REQUIRED SUB-SKILL: use
  `debug-remote` — this skill stops.

## Rationalizations

| Thought | Reality |
|---|---|
| "OpenObserve is on — stamp Approved / complete" | A backend is a row, not the verdict |
| "Legal / VP / standup — write the complete doc" | A false stamp is worse in the room than a short not-complete set |
| "I'll write Draft to docs/ops/observability.md" | Canonical path is `/define-system-doc`; this skill writes the set only |
| "404s don't show — set SERVER Error on all 4xx" | SERVER 4xx MUST stay unset; that is a fail row, not a close |
| "5% head sample is traces on" | Rare errors are dropped; tail or 100% is the Must |
| "One-liner now, assess later" | The one-liner becomes the stamp |
| "This is an incident — debug-remote" | No live 500; readiness first |

## Red Flags — stop

- About to write `Status: Approved` or "observability is complete"
- About to create or clobber `docs/ops/observability.md`
- About to PR 4xx → Error or blanket exceptions "for the board"
- About to call head-only sampling complete on a high-QPS path

