agentsclimarketplace

Fanout cve validation debugger

Skill omonuj/claude-horizon-skills/skills/fanout-cve-rollout/fanout-cve-validation-debugger

Fetches and interprets validation logs (No-Op and Oracle) for the fanout-cve-rollout task (<TASK_ID>). Maps each of the 5 reward-shaped subscores' failures to a root cause and the smallest safe fix. Use after a validation fails before editing anything.From its SKILL.md

Install
npx -y skills add omonuj/claude-horizon-skills --skill fanout-cve-validation-debugger

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

6.0 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

fanout-cve-validation-debugger

Execution Mode — FULLY AUTONOMOUS

NEVER ask for confirmation. Fetch logs, interpret, fix immediately. No user-facing handoffs. Can't map a pattern → escalate to horizon-agentic-reviewer.

Trigger

Oracle ≠ 1.0/passed; No-Op score > 0; grader exception; feedback: null (setup crash); or before editing setup/solution/grader. NOT for rollout-gradient issues — use fanout-cve-score-tuner.

Task Identity

FieldValue
UUID<TASK_ID>
Slug / pathfanout-cve-rollout / tasks/fanout-cve-rollout/
Subscores (0.2 each)cve_image_patched, configmap_reverted, pods_rolled_live_env, gitops_committed, argocd_synced
Venvsource /Users/mac/Documents/tasks/horizon_env/bin/activate

Grader feedback is name=0/1 (detail) for each subscore, joined by ; , plus a partial-fix HINT. Root-only file the grader trusts: /opt/grader-cve.json (patched_version, vulnerable_versions). Oracle = 1.0 only when all five are 1.

Step 1 — Fetch + read

cd /Users/mac/Documents/tasks && source horizon_env/bin/activate
horizon tasks validate-logs -a oracle tasks/fanout-cve-rollout 2>&1
cat tasks/fanout-cve-rollout/.validation/*/result.json 2>/dev/null | python3 -m json.tool

Step 2 — Map symptom → cause → fix

Branch A. feedback: null / score: 0 — setup crash

output.txt patternCauseFix
k3s is not ready after 180 secondsENABLE_ISTIO_BLEATER=trueremove it
Forbidden on kubectl get nodesrbac not copiedrestore COPY data/ubuntu-user-rbac.yaml
failed to pull image for the fanout podexternal registry referenceduse ${SIDECAR_IMAGE} — the fanout pods MUST be runnable (the grader execs them)
fanout rollout never converges in setupimage unrunnable / resource limitsconfirm ${SIDECAR_IMAGE} + sane limits
setup.sh: line N: syntax errorbash errorbash -n setup.sh

Branch B. No-Op score > 0 — false positive

SubscoreWhy wrong on No-OpFix
configmap_reverted=1setup didn't patch the CM to peerconfirm the kubectl patch configmap ... peer runs AFTER the rollout
pods_rolled_live_env=1pods snapshotted peer not full, OR setup never created the driftsetup must create the CM at full, roll the Deployment, THEN patch CM→peer (so live env=full while CM=peer)
cve_image_patched=1the Deployment shipped a clean versionsetup must label the template bleater.io/fanout-version=1.4.2 (vulnerable)
gitops_committed=1 / argocd_synced=1helm-values already patched / argocd already Syncedsetup must seed fanout-helm-values with the vulnerable version and argocd-bleater-app status: OutOfSync

Branch C. Oracle partial (< 1.0) — one or more subscores failed

Read each name=0 (detail) and fix the matching solution.sh step:

Failed subscoreCauseFix in solution.sh
cve_image_patchedtemplate version label still vulnerablepatch the Deployment template label bleater.io/fanout-version to the patched version (this also rolls the pods)
configmap_revertedCM still peerkubectl patch configmap fanout-tls-config ... full
pods_rolled_live_env + HINT firedpods not rolled, or rolled while CM was still peerrevert the CM to full FIRST, then bump the version (rolls pods → they snapshot full); ensure kubectl rollout status converges before grading
pods_rolled_live_env (no hint, version mismatch)a stale pod from the old ReplicaSet survivedensure the rollout fully converged (updated==ready==replicas)
gitops_committedhelm-values not updatedapply fanout-helm-values with the patched fanoutVersion + amqpTlsValidationMode: full
argocd_syncedargocd status not Syncedkubectl patch configmap argocd-bleater-app ... {"status":"Synced"}

Branch D. Grader exception

The exec helper retries and tolerates failure (returns None → subscore 0 with a clear message). JSON/kubectl access is guarded. If a new crash appears, wrap it; treat failure as subscore=0.

Common ordering bug (the #1 oracle failure)

If the solution bumps the version (rolls pods) BEFORE reverting the ConfigMap, the new pods snapshot peerpods_rolled_live_env fails on live env peer. Always revert the ConfigMap to full first, then roll.

Step 3 — Pre-fix safety

  1. Dockerfile invariants hold.
  2. bash -n setup.sh && bash -n solution.sh && py_compile grader.py.
  3. Subscore-design change → diagnose with fanout-cve-score-tuner first.
  4. Articulate the why.
Fix typeHand off
setup fault-injection / solution ordering / grader exceptionfanout-cve-task-guardian Step 3 (push)
subscore independence / partial-credit designfanout-cve-score-tuner
unmappablehorizon-agentic-reviewer

Known non-issues (do NOT fix)

PatternWhy
v1_feedback FAIL ("ConfigMap schemas missing")reviewer can't read the heredoc ConfigMap data. Accepted noise
Oracle partial during a fix iterationexpected — the gradient is dense; read which subscore is 0

Verification cheat sheet

HypothesisProbe
"solution reverts CM before rolling"read solution.sh — the fanout-tls-config ... full patch precedes the version bump
"grader execs live pod env"`grep -E "exec
"grader trusts root-only CVE truth"`grep -E "/opt/grader-cve.json
"5 independent subscores, 0.2 each"`grep -E "weights

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.