Skip to content

fix(skill): traffic template, open-is-a-status, k8s terms, event scope - #35

Merged
safwentrabelsi merged 3 commits into
mainfrom
fix/traffic-template-pagerduty-window-k8s-terms
Sep 18, 2026
Merged

safwentrabelsi merged 3 commits into
mainfrom
fix/traffic-template-pagerduty-window-k8s-terms

Conversation

@safwentrabelsi

Copy link
Copy Markdown
Contributor

From Roxane's v0.3.5 rerun (40 attempts; plugin arm 102/120 coverage vs 95/120 native, 1 critical vs 2). Every remaining flag was interpretation, not data — the data bug she found is backend #1380.

  1. Traffic claims still collapsed eligibility, observed activity and current success (Q2 r1/r2). Three rounds of prohibitions have not landed, so this gives the required shape rather than another rule: Endpoint-eligible; recent APM activity (last observed T); current successful traffic unverified — her own stated pass condition, with each clause defined and the negative case covered.
  2. A date-bounded PagerDuty query hid an older open incident (Q5 r1, graded critical). Open is a status, never a time window: an incident opened three weeks ago can still be triggered, and a 24-hour filter reads as "no open incident" for the service currently paging someone.
  3. A PR review described a memory limit as a scheduling reservation (Q8). Requests are what the scheduler reserves; limits are the ceiling an OOM kill is measured against. Added with the other two term pairs the graph exposes and that get conflated: ready vs phase, replicas vs live pods.
  4. An OOM event was cited without its namespace (Q9 r1). The same event type fires in every namespace of every cluster, so the reporting discipline now requires namespace + cluster on any event cited.

Not addressed here, deliberately: the plugin called Kubernetes in 13/20 runs but in none of the six incident/inventory runs. That is the third attempt at the same instruction and wording is no longer the lever — see the PR discussion.

🤖 Generated with Claude Code

From the v0.3.5 40-attempt rerun, where every remaining flag was interpretation
rather than data:

- Traffic claims were still collapsing eligibility, observed activity and current
  success. Three rounds of prohibitions have not landed, so the skill now gives
  the required shape instead: endpoint-eligible; recent APM activity (last
  observed T); current successful traffic unverified.
- A date-bounded PagerDuty query hid an older open incident. Open is a status,
  never a time window; a 24-hour filter reads as "no open incident" for the
  service currently paging someone.
- A PR review described a memory limit as a scheduling reservation. Requests are
  what the scheduler reserves, limits are the ceiling an OOM kill is measured
  against; the graph carries both, so the answer names which it read.
- An OOM event was cited without its namespace. The same event type fires in
  every namespace of every cluster, so events are cited with their scope.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@safwentrabelsi

Copy link
Copy Markdown
Contributor Author

@codex review

lerenn
lerenn previously approved these changes Sep 18, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0c2dcfde3c

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +47 to +50
- Cite `hashedID`s and event timestamps for every load-bearing claim. For EVENTS also cite
the namespace and cluster: the same event type (`pod_oom_killed`, `deployment_degraded`)
fires in every namespace of every cluster, so an event quoted without its scope is how a
real event ends up attached to the wrong workload.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Limit cluster scope requirement to Kubernetes events

Requiring namespace and cluster for every EVENT is impossible for project-wide events that do not have those fields. For example, the repository's deploy-impact recipe includes the provider event update_function_code, while cluster-scoped Kubernetes events such as node_preempted also have no namespace. In those cases this instruction forces the agent either to invent scope or suppress valid evidence; require these fields only when present and use the event's target identifier/source for other event kinds.

Useful? React with 👍 / 👎.

Comment thread skills/agent-plugin/SKILL.md Outdated
Comment on lines +125 to +127
- **Succeeding now**: requests returning success at this moment. NOT in the graph — only a
live APM query or the native source. If you did not run one, the third clause stays
"unverified", whatever the first two say.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Restrict success verification to request-level evidence

When the mounted native source is only the Kubernetes MCP described above, this wording permits endpoint or pod state to verify that requests are currently succeeding, even though those APIs expose readiness rather than successful responses. That collapses the eligibility and success facts the new section is intended to separate; current success should require request-level telemetry carrying outcomes or an active request probe, not merely any native source.

Useful? React with 👍 / 👎.

… is not success (codex)

- Requiring namespace and cluster on every event forces invention or suppression
  for cluster-scoped events (node_preempted) and provider events
  (update_function_code) that carry neither. Cite the scope the event actually
  has, and the target identifier plus source otherwise.
- The success clause allowed any mounted native source to verify it, so a
  Kubernetes read showing readiness could stand in for requests succeeding,
  collapsing the two facts the section separates. Current success now requires
  request-level evidence carrying outcomes, or a probe.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@safwentrabelsi

Copy link
Copy Markdown
Contributor Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: cd6ee6ccae

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread skills/agent-plugin/SKILL.md Outdated

> Endpoint-eligible; recent APM activity (last observed T); current successful traffic unverified.

- **Eligible**: a Service selects a ready endpoint. Structural, from the graph.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Time-stamp graph-derived endpoint eligibility

When the cluster agent has stopped reporting or the latest EndpointSlice observation is stale, this graph-only rule makes the template report Endpoint-eligible as a current fact even though the graph proves only that the endpoint was ready at the last shipped snapshot. This contradicts the same file's requirement to time-stamp graph state and its statement that EXPOSES {ready} reflects the last observed EndpointSlice; require native Kubernetes verification for current eligibility or phrase it as readiness at the last snapshot.

Useful? React with 👍 / 👎.

…me (codex)

The template asserted Endpoint-eligible as a bare present fact while the same
file requires graph state to be time-stamped and says EXPOSES {ready} is the
readiness at the last EndpointSlice observed. A cluster whose agent stopped
reporting freezes that value, so the clause now carries its time.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@safwentrabelsi

Copy link
Copy Markdown
Contributor Author

@lerenn one more skill-text PR, three Codex rounds addressed, checks green. Blocking a v0.3.6 release for the benchmark rerun.

@safwentrabelsi
safwentrabelsi merged commit 54d9f03 into main Sep 18, 2026
4 checks passed
@safwentrabelsi
safwentrabelsi deleted the fix/traffic-template-pagerduty-window-k8s-terms branch September 18, 2026 18:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants