From 19d0b7b143017bc58b9e7b1c9f7f129ecba2bca6 Mon Sep 17 00:00:00 2001 From: Arthur Verrez Date: Tue, 23 Jun 2026 11:38:06 +0200 Subject: [PATCH 1/2] docs(tsuga): empty metric series is not a measured zero (incident-investigation) --- plugins/tsuga/skills/incident-investigation/SKILL.md | 1 + 1 file changed, 1 insertion(+) diff --git a/plugins/tsuga/skills/incident-investigation/SKILL.md b/plugins/tsuga/skills/incident-investigation/SKILL.md index 0f45262..aa76029 100644 --- a/plugins/tsuga/skills/incident-investigation/SKILL.md +++ b/plugins/tsuga/skills/incident-investigation/SKILL.md @@ -56,6 +56,7 @@ Check these during synthesis: 9. **Blame a PR without tracing the signal to its emitting code.** A PR that merged in the right window and touches "the right area" is a candidate, not a confirmation. Pin each verbatim signal (error string, metric name, log pattern) to the `file:line` that emits it _first_, then check whether the PR's diff modifies that exact path. 10. **Skip the monitor's own query.** If the case came from a monitor firing, that monitor's filter + threshold IS the first `Saw` of your diagnostic path. Pull it with `tsuga monitors get ` before running broader log searches. 11. **Read the error string literally.** Before building a narrative, re-read the raw verbatim error. If the text says `"invalid type: map, expected a sequence"`, the payload being an array is the first thing to check — don't stack indirections on top. If literal reading contradicts your hypothesis, restart from the literal reading. +12. **Empty metric series is not a measured zero.** A query that returns no points can mean the metric is not emitted for that scope, a wrong name, or a scrape gap, not a healthy value. Before a hypothesis dies on "the metric shows nothing", confirm the metric actually emits for that scope (does another cluster or scope return it?) or switch to a signal that answers the same question. ## Workflow From b66fc7b250453b5aaee01fa101b45f70f0ad3bc7 Mon Sep 17 00:00:00 2001 From: Arthur Verrez Date: Tue, 23 Jun 2026 11:41:53 +0200 Subject: [PATCH 2/2] docs(tsuga): bump plugin + marketplace to 0.8.1 --- .claude-plugin/marketplace.json | 2 +- plugins/tsuga/.claude-plugin/plugin.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 65cc3c3..6488440 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -6,7 +6,7 @@ }, "metadata": { "description": "Tsuga toolkit for AI coding agents: one plugin with the tsuga CLI driver, live-platform investigation, dashboards, incident workflows, OpenTelemetry instrumentation, Collector, signal-choice, telemetry debug, and audit skills.", - "version": "0.8.0" + "version": "0.8.1" }, "plugins": [ { diff --git a/plugins/tsuga/.claude-plugin/plugin.json b/plugins/tsuga/.claude-plugin/plugin.json index e4d82fa..f22768b 100644 --- a/plugins/tsuga/.claude-plugin/plugin.json +++ b/plugins/tsuga/.claude-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "tsuga", "description": "Tsuga observability plugin: the `tsuga` CLI driver (commands, TQL syntax, aggregation bodies, counter math, deep links, cloud/k8s translators); live-platform investigation for service health, errors, latency, and monitor coverage; dashboard building; incident orchestration; OpenTelemetry SDK, Collector, OTTL, signal-choice, telemetry debug, and audit skills; and meta-skills for building and validating skill bundles.", - "version": "0.8.0", + "version": "0.8.1", "author": { "name": "Tsuga Engineering", "email": "engineering@tsuga.com"