Skip to main content

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".

来源信息

仓库
apache/gluten
最近来源活动
2026年9月8日 09:10
检测到的 SKILL.md 语言
英语
星标
1,611
Forks
665

安装方式

默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。

检查来源文件

决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。

文件资源管理器
3 个文件

正在显示 SKILL.md

SKILL.md
来源说明 · 只读预览
name
ansi-analysis
description
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".
# 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 ```bash ./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) ```bash 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: ```bash 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
在 GitHub 查看