lantern-observability-qa

Exercises every Lantern CLI and SDK surface against a Docker Compose stack while capturing Prometheus metrics and logs.

2|Updated May 3, 2023
One-click install
npx skills add https://github.com/anaregdesign/lantern --skill lantern-observability-qa-anaregdesign
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: lantern-observability-qa
Source: https://github.com/anaregdesign/lantern/tree/main/testbed
Command: npx skills add https://github.com/anaregdesign/lantern --skill lantern-observability-qa-anaregdesign

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes scripts (resource) components.

What problem does it solve? Validating a Lantern release requires proving that every public CLI command and Go SDK method works against a live server, and that observability signals (Prometheus metrics, JSON logs, build info) are wired correctly. Doing this manually is slow and error-prone, so this harness automates the full sweep and produces evidence artifacts for issue reports. ## Core Features & Use Cases - Exhaustive CLI sweep: Runs 39 CLI scenarios via scripts/exercise-cli.sh, writing one log per scenario under out/cli/ with per-step return codes; only three deliberate NotFound checks may exit non-zero. - Exhaustive SDK sweep: Runs 42 Go SDK scenarios via scripts/exercise-sdk.go covering Put/Get/Delete, batch operations, edges, Illuminate families, and TTL expiry, writing out/sdk/report.txt. - Metrics and log capture: Snapshots Prometheus series (vertices, edges, TTL expirations, GC, build_info) via scripts/query-metrics.sh and captures JSON server logs for triage. - Auth overlay and Lucene baseline: An optional docker-compose.auth.yml arms bearer-token auth, and lucene-baseline/ regenerates pinned Lucene relevance rankings offline. - Use Case: Before tagging a Lantern release, stand up the compose stack, run both sweeps, snapshot metrics, and confirm lantern_build_info reports the real release tag rather than version="(devel)". ## Quick Start From the repo root, build the lantern:local image, then run docker compose up -d in the testbed directory, execute bash scripts/exercise-cli.sh and go run ./testbed/scripts/exercise-sdk.go, and finish with bash scripts/query-metrics.sh to collect the evidence under out/.

Frequently Asked Questions about lantern-observability-qa

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run the Lantern observability QA harness?

Build the local image with docker build -t lantern:local . from the repo root, then run docker compose up -d inside testbed/. Execute bash scripts/exercise-cli.sh, then go run ./testbed/scripts/exercise-sdk.go from the repo root, and finally bash scripts/query-metrics.sh.

What does a passing Lantern CLI and SDK sweep look like?

The CLI sweep writes 39 logs under out/cli/ where exactly three deliberate NotFound checks may exit non-zero. The SDK sweep prints ok for all 42 steps and ends by writing out/sdk/report.txt.

How do I test Lantern with bearer-token auth enabled?

Use the auth overlay: docker compose -f docker-compose.yml -f docker-compose.auth.yml up -d. Clients then pass --token testbed-secret or set LANTERN_TOKEN; the healthcheck needs no token because /readyz is unauthenticated by design.

Why does lantern_build_info show version="(devel)"?

A (devel) value means you are running a build from before the version-metadata fix in PR #99. Rebuild the image with --build-arg VERSION=$(git describe --tags --always) and --build-arg COMMIT=$(git rev-parse --short HEAD) to embed the real release tag.

How do I check which gRPC methods the Lantern sweep covered?

Query curl -s http://localhost:9090/metrics and grep for grpc_server_handled_total, then aggregate by the grpc_method label. These metric names are retained by the in-house Connect interceptor for dashboard compatibility.

When should I regenerate the Lucene relevance baseline?

Regenerate whenever a corpus fixture or the production search projection, analyzer, or scorer version changes, and commit the refreshed lucene_runs.json in the same PR. A missing or stale artifact fails CI, and the engine config must stay at stock BM25 defaults.