원클릭으로
scan-gaps
Discover undocumented gaps by comparing AxiomDB against MySQL/PostgreSQL — build inventory, run tests, classify, hand off to hunt-gap
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Discover undocumented gaps by comparing AxiomDB against MySQL/PostgreSQL — build inventory, run tests, classify, hand off to hunt-gap
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Verify and fix documented gaps one at a time — reproduce, root cause, minimal fix, wire-test regression, close
Run Criterion micro-benchmarks and 3-Docker comparison benchmarks, verify no regression against MySQL/PostgreSQL
Explore approaches before proposing — read context, ask questions, present 2+ options with trade-offs, write sprint with dependencies
Save session context to a checkpoint file so the next session can resume without losing state
Systematic debug protocol — reproduce with minimal test, 2+ hypotheses, fix root cause, add regression test
Full phase close protocol — tests, clippy, fmt, benchmarks, docs, memory update, commit, push
| name | scan-gaps |
| description | Discover undocumented gaps by comparing AxiomDB against MySQL/PostgreSQL — build inventory, run tests, classify, hand off to hunt-gap |
Proactively find gaps, bugs, and missing features that are NOT yet documented
in docs/progreso.md. Compares AxiomDB against MySQL, PostgreSQL, MariaDB,
and SQL standards to find what's missing or broken.
/scan-gaps fase 3 — scan phase 3 features against reference DBs
/scan-gaps fase 1-11 — scan phases 1 through 11
/scan-gaps area parser — scan parser for SQL syntax gaps
/scan-gaps area wire — scan MySQL wire protocol for compat gaps
/scan-gaps area executor — scan executor for correctness gaps
/scan-gaps area storage — scan storage/WAL for robustness gaps
/scan-gaps area types — scan type system for missing types/casts
/scan-gaps full — comprehensive scan of everything
For the target phase(s) or area:
docs/progreso.md — list all [x] ✅ items (completed features)docs/fase-N.md — understand what was builtspecs/fase-N/ — understand what was specifiedFor each completed feature, create a checklist of what MySQL/PostgreSQL expects for that feature. Sources:
research/postgresql/ — PostgreSQL source coderesearch/mariadb/ — MariaDB source coderesearch/sqlite/ — SQLite source coderesearch/duckdb/ — DuckDB source codeExample for "Phase 4 - SQL Parser":
Feature: SELECT statement
MySQL expects:
[?] SELECT ... UNION [ALL] SELECT ...
[?] SELECT ... INTERSECT SELECT ...
[?] SELECT ... EXCEPT SELECT ...
[?] SELECT INTO @var
[?] SELECT ... FOR UPDATE SKIP LOCKED
[?] SELECT ... WINDOW w AS (...)
[?] Parenthesized SELECT: (SELECT 1) UNION (SELECT 2)
Mark each checklist item as:
Focus on [test] items — these are the ones that MIGHT be broken.
For each [test] item, create tools/tmp_gap_test.py using the same
template as /hunt-gap Phase 2B.
Parser gaps — try SQL syntax that MySQL accepts:
# Does AxiomDB parse this without error?
try:
cur.execute("THE SQL SYNTAX TO TEST")
ok("syntax accepted", True)
except Exception as e:
if "syntax" in str(e).lower() or "1064" in str(e):
ok("syntax accepted", False, got=str(e)) # parser gap
else:
ok("syntax accepted but execution failed", False, got=str(e)) # executor gap
Wire protocol gaps — test MySQL client expectations:
# Does the wire protocol behave like MySQL?
import struct
# Check column types, character sets, status flags, etc.
Type system gaps — test implicit casts and coercions:
# Does AxiomDB handle type X correctly?
cur.execute("CREATE TABLE t (col SOMETYPE)")
cur.execute("INSERT INTO t VALUES (literal)")
cur.execute("SELECT col FROM t WHERE col = literal")
Executor correctness gaps — test edge cases:
# Does this query return the correct result?
cur.execute("COMPLEX QUERY WITH EDGE CASE")
rows = cur.fetchall()
ok("correct result", rows == expected, got=rows)
Storage robustness gaps — test crash recovery, corruption handling:
# More complex — may need to kill/restart the server mid-operation
export PATH="$HOME/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/bin:$PATH"
cargo build -p axiomdb-server
python3 tools/tmp_gap_test.py
After running the tests, classify each finding:
| Category | Meaning | Action |
|---|---|---|
| NEW GAP | Feature should work but doesn't | Document + fix via /hunt-gap |
| KNOWN GAP | Already in progreso.md as ⏳ | Skip — already tracked |
| DEFERRED | Explicitly planned for later phase | Skip — note phase |
| WORKS | Feature works correctly | Remove from checklist |
| EDGE CASE | Works for basic case, fails on edge | Document as new gap |
SCAN RESULTS: [area/phase]
Date: YYYY-MM-DD
Features tested: X
Working correctly: Y
Known gaps (already tracked): Z
NEW gaps discovered: W
NEW GAPS:
1. [severity] [area] — [description]
Test: [SQL that fails]
Expected: [what MySQL/PG does]
Got: [what AxiomDB does]
2. [severity] [area] — [description]
...
EDGE CASES:
1. [description] — [basic case works, edge case fails]
...
For each NEW GAP, add an entry under the appropriate section:
- [ ] GAP-X.N ⏳ [description] — discovered by /scan-gaps [date]
Sort new gaps by:
For each new gap, in priority order:
/hunt-gap [gap-id] to verify and fix itrm tools/tmp_gap_test.py
For SQL semantics questions, compare behavior directly:
# Find how PostgreSQL implements feature X
grep -r "keyword" research/postgresql/src/backend/parser/
grep -r "keyword" research/postgresql/src/backend/executor/
grep -r "keyword" research/mariadb/sql/
grep -r "keyword" research/sqlite/src/
grep -r "keyword" research/duckdb/src/
| Question | Where to look |
|---|---|
| Does MySQL support this syntax? | MariaDB sql/sql_yacc.yy |
| How does PG handle this edge case? | PostgreSQL src/backend/executor/ |
| What's the correct NULL behavior? | SQL standard + PG src/backend/utils/adt/ |
| How does wire protocol encode this? | MariaDB sql/net_serv.cc, sql/protocol.cc |
| What type coercions are expected? | PG src/backend/parser/parse_coerce.c |
tools/tmp_gap_test.py with all the tests for the current scan./hunt-gap fixes.