본문으로 건너뛰기
cccskills
무료GitHub에 공개

ansi-analysis

Analyze Gluten ANSI-mode test results (run dev/verify-ansi-expressions.sh, parse JSON tracker output, produce root-cause analysis and fix recommendations). Trigger on user requests like "analyze ANSI tests", "run ANSI matrix", "why is this ANSI test failing".

한국어 요약은 준비 중입니다. 원문 설명을 표시하고 있습니다.

설치 방법 보기

포함된 파일(3)

  • SKILL.md3.8 KB
  • analyze-ansi.py21.9 KB
  • shared.md9.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

ANSI Test Analysis Skill

Step 0 — MUST READ FIRST: shared analysis prompt

Before doing anything else, read the shared prompt that defines the analysis output format and reference source locations:

.github/skills/ansi-analysis/shared.md

This file is the single source of truth — the same content is consumed by the CI Python pipeline (.github/skills/ansi-analysis/analyze-ansi.py --ai-analysis). Your output structure, reference source locations, and self-investigation steps MUST follow it. If the file is missing, STOP and tell the user the repo is in a broken state.

Step 1 — Decide entry point

Ask the user (or infer from request):

  • Run new tests? → Step 2
  • Re-analyze existing JSON in target/ansi-offload/? → Step 3
  • Diagnose a single test failure? → Step 4

Step 2 — Run the verification script

./dev/verify-ansi-expressions.sh <category> <spark41|spark40|all> [--clean]

Categories: cast | arithmetic | collection | datetime | math | decimal | string | aggregate | errors | all

Logs: /tmp/ansi-matrix/latest/ (bash logs). JSON: target/ansi-offload/*.json (written by GlutenExpressionOffloadTracker.scala, this is the structured input for analysis).

Notes from prior runs:

  • Use all mode in single JVM (~28 min) when full coverage is needed
  • After rebase / branch switch, run ./dev/builddep-veloxbe-inc.sh first to refresh libvelox.so / libgluten.so

Step 3 — Analyze JSON results

Two options:

3a. Local AI orchestration (this skill, recommended for interactive review)

  1. Read .github/skills/ansi-analysis/shared.md (Step 0)
  2. List target/ansi-offload/*.json
  3. Read each JSON; extract: suite name, total/passed/failed/ignored counts, per-test failCause
  4. Apply the analysis template from shared.md verbatim (sections, tables, constraints)
  5. For each failure: extract Velox file:line from failCause, read those C++ files, verify root cause
  6. Always grep isAnsiSupported in ep/build-velox/build/velox_ep/velox/functions/sparksql/specialforms/SparkCastExpr.cpp when the failure involves Cast — most NO_EXCEPTION/Cast failures stem from the small whitelist there
  7. Output the markdown report

3b. Python script (CI / batch)

python3 .github/skills/ansi-analysis/analyze-ansi.py \
  --json-dir target/ansi-offload/ \
  --ai-analysis \
  --output ansi-report.md

The script loads the same shared prompt and calls the GitHub Models API.

Step 4 — Single-failure diagnosis

When the user pastes one failing test:

  1. Locate its JSON entry under target/ansi-offload/
  2. Apply the self-investigation steps from shared.md (extract Velox file:line, check isAnsiSupported, cross-check withAnsiEvalMode in ExpressionUtils)
  3. Output: Symptom / Root Cause / Fix Point / Representative Tests / Estimated Impact

Step 5 — Optional PR comment

If the user wants the report posted to a PR:

gh pr comment <pr-number> --body-file ansi-report.md

(or use the GitHub MCP server tool when available)

Environment requirements

For Step 2 (running tests):

  • SPARK_ANSI_SQL_MODE=true
  • SPARK_TESTING=true
  • SPARK_SCALA_VERSION=2.13
  • JVM: -Dspark.gluten.sql.ansiFallback.enabled=false
  • Maven profile: include -Pdelta

What NOT to do

  • Do NOT invent reference paths or line numbers — always grep / verify
  • Do NOT skip Step 0 — drift between shared.md and your output is the failure mode this skill is designed to prevent
  • Do NOT bypass the shared prompt by writing your own analysis structure

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

이 스킬의 문제 신고