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".
The English summary is being prepared. Showing the original description.
See how to installFiles included (3)
- SKILL.md3.8 KB
- analyze-ansi.py21.9 KB
- shared.md9.7 KB
SKILL.md (original)
Review the instructions the agent will receive before you install.
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
allmode in single JVM (~28 min) when full coverage is needed - After rebase / branch switch, run
./dev/builddep-veloxbe-inc.shfirst to refreshlibvelox.so/libgluten.so
Step 3 — Analyze JSON results
Two options:
3a. Local AI orchestration (this skill, recommended for interactive review)
- Read
.github/skills/ansi-analysis/shared.md(Step 0) - List
target/ansi-offload/*.json - Read each JSON; extract: suite name, total/passed/failed/ignored counts, per-test
failCause - Apply the analysis template from shared.md verbatim (sections, tables, constraints)
- For each failure: extract Velox file:line from
failCause, read those C++ files, verify root cause - Always grep
isAnsiSupportedinep/build-velox/build/velox_ep/velox/functions/sparksql/specialforms/SparkCastExpr.cppwhen the failure involves Cast — most NO_EXCEPTION/Cast failures stem from the small whitelist there - 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:
- Locate its JSON entry under
target/ansi-offload/ - Apply the self-investigation steps from shared.md (extract Velox file:line, check
isAnsiSupported, cross-checkwithAnsiEvalModein ExpressionUtils) - 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=trueSPARK_TESTING=trueSPARK_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
Reviews
No reviews yet. Tell others what you thought.
Comments
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.