원클릭으로
bisect-regression
Quickly find which commit introduced a test262 regression using git bisect with automated test.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Quickly find which commit introduced a test262 regression using git bisect with automated test.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
Compare two test262 result files to find exactly which tests changed status. Use after a test262 run shows unexpected pass count changes.
Compile a source file to WAT and analyze the output for codegen inefficiencies. Use after a codegen change to verify the output is clean, when investigating performance issues, or when creating optimization issues from real compiler output.
Write an implementation spec for a hard issue. Read compiler source, identify exact functions/lines, design the fix, document edge cases.
Atomically claim an issue for a developer (human or agent) via the cross-developer lock ref, so two devs never pick up the same task. Syncs with origin first, refuses if already claimed or already done on main, and pushes the claim immediately without touching main or triggering CI.
Create a new issue file from a test262 failure pattern. Includes smoke test, sample extraction, and proper frontmatter.
Merge self-check for a green PR. Reads the PR's required-check status from the checks API (the committed ci-status feed is RETIRED), outputs MERGE (mark task completed, stand down — server-side auto-enqueue enqueues,
SOC 직업 분류 기준
| name | bisect-regression |
| description | Quickly find which commit introduced a test262 regression using git bisect with automated test. |
Find which commit introduced a regression using git bisect with an automated test script.
# Compare current vs archived results
python3 -c "
import json, os
current = {}
with open('benchmarks/results/test262-results.jsonl') as f:
for line in f:
r = json.loads(line)
current[r['file']] = r['status']
# Find archived files
archives = sorted([f for f in os.listdir('benchmarks/results')
if f.startswith('test262-results-') and f.endswith('.jsonl')])
print('Available archives:', archives)
# Compare with most recent archive
if archives:
prev = {}
with open(f'benchmarks/results/{archives[-1]}') as f:
for line in f:
r = json.loads(line)
prev[r['file']] = r['status']
regressions = [t for t in prev if prev[t] == 'pass' and current.get(t) != 'pass']
fixes = [t for t in current if current[t] == 'pass' and prev.get(t) != 'pass']
print(f'Regressions: {len(regressions)}, Fixes: {len(fixes)}')
# Pick a sample regression test for bisecting
if regressions:
print(f'Sample test for bisect: {regressions[0]}')
"
GOOD="<commit-hash-where-test-passed>" # e.g., the baseline commit
BAD="HEAD"
git bisect start
git bisect bad $BAD
git bisect good $GOOD
# vitest exits 0 on pass, 1 on fail — perfect for bisect
git bisect run npx vitest run tests/test262-vitest.test.ts -t "<test-name-pattern>"
Example with a specific test file:
git bisect run npx vitest run tests/test262-vitest.test.ts -t "S7.9.2_A1_T6"
This binary-searches through commits (~7 steps for 90 commits) and reports the first bad commit.
# git bisect will print: "<hash> is the first bad commit"
git show <hash> --stat
git show <hash>
git bisect reset
If different tests regressed from different commits, bisect each pattern separately:
# Pattern 1: SyntaxError regressions
git bisect start && git bisect bad HEAD && git bisect good $GOOD
git bisect run npx vitest run tests/test262-vitest.test.ts -t "S7.9.2_A1_T6"
git bisect reset
# Pattern 2: null deref regressions
git bisect start && git bisect bad HEAD && git bisect good $GOOD
git bisect run npx vitest run tests/test262-vitest.test.ts -t "RegExp-decimal-escape"
git bisect reset
git bisect skip if a commit doesn't compile at allgit show and check which files changed