update skill

This commit is contained in:
2026-02-15 18:38:28 +00:00
parent 3f38bab2cd
commit 4a49412cf9
2 changed files with 33 additions and 20 deletions

View File

@@ -14,12 +14,21 @@ then verify and commit.
**You do NOT**: analyze test output in detail, compare Zig/C code, or
edit `astgen.c`. The worker handles all of that.
**CRITICAL RULES:**
1. **NEVER stop early.** Do not pause to ask the user if you should continue.
Do not summarize remaining work and wait. Keep looping until every test is
enabled and passing.
2. **ALWAYS run `zig build all-zig0 -Dvalgrind |& grep -v Warning | head -20`
yourself before committing.** Never trust the worker's claim that tests pass
— verify it. If the test run fails (non-zero exit) or it emits any output,
do NOT commit and let the worker fix it.
## Phase 0: Check for leftovers
Before enabling anything new, run the existing tests:
```sh
zig build test-zig0 2>&1 | head -20
zig build test-zig0 -Dzig0-cc=tcc 2>&1 | head -20
```
If tests **FAIL**: dispatch a worker (Step 4 below) with context
@@ -66,7 +75,7 @@ line to enable the test.
Run:
```sh
zig build test-zig0 2>&1 | head -10
zig build test-zig0 -Dzig0-cc=tcc 2>&1 | head -10
```
Capture only the first ~10 lines. This tells you pass/fail at a glance
without bloating your context. The worker will run the full test itself.
@@ -95,20 +104,17 @@ The worker returns a structured result. Extract:
**If STATUS is `pass` or `progress`:**
Launch a sub-agent to run:
**You MUST verify before committing.** Run:
```sh
zig build fmt-zig0 && zig build all-zig0 -Dvalgrind |& grep -v Warning
zig build all-zig0 -Dvalgrind |& grep -v Warning | head -10 ; echo "EXIT: $?"
```
This must exit 0 with no unexpected output. The agent must investigate:
1. Any valgrind errors.
2. Any debug output (should comment out printf statements).
3. Any formatting or staticcheck issues.
4. Any failing tests — should not happen as the worker verifies before
returning, but if it does, the sub-agent should fix them.
Check two things only: (1) EXIT is 0, (2) the ~10 lines of output
contain no unexpected errors. If either check fails, do NOT commit —
dispatch another worker to fix.
Then commit:
Only if clean, commit:
```sh
git add stage0/astgen.c stage0/astgen_test.zig

View File

@@ -26,7 +26,7 @@ return a result.
### Step 1: Run the full test
```sh
zig build test-zig0 2>&1
zig build test-zig0 -Dzig0-cc=tcc 2>&1
```
Record the full output. If tests pass, skip to Step 5.
@@ -60,8 +60,16 @@ Do NOT guess. Read both implementations completely and compare mechanically.
### Step 4: Port the fix
Apply the minimal mechanical change to `astgen.c` to match the upstream. Run
`zig build test-zig0 -Dcc=tcc` after each change to check for progress.
Apply the minimal mechanical change to `astgen.c` to match the upstream.
Make ONE change at a time. After each change, run:
```sh
zig build test-zig0 -Dzig0-cc=tcc 2>&1 | head -20
```
Check that no previously-passing tests broke. If your change causes
regressions (new FAILs or crashes that weren't there before), revert it
immediately.
**Progress** means any of:
- `inst_len` diff decreased
@@ -73,9 +81,6 @@ You should mark progress marker (whatever it is from the above) *in/near
the disabled test entry* (as a TODO comment on the SkipZigTest line or
above the commented corpus entry).
Once there is *any* progress, you MUST clean up and commit per sections below.
Do not try to fix everything at once -- clean up & commit early & often.
### Step 5: Clean up
1. Remove ALL `fprintf`/`printf` debug statements from `astgen.c`.
@@ -85,9 +90,9 @@ Do not try to fix everything at once -- clean up & commit early & often.
line with a TODO comment describing the remaining diff.
- **For a corpus entry:** re-comment the line in `corpus_files` (add `//`
prefix back) and add a TODO comment above it describing the remaining diff.
4. Test if other compilers or valgrind did not regress, fix if it did:
4. Final verification — this must exit 0 with no output:
zig build fmt-zig0 && zig build all-zig0 -Dvalgrind |& grep -v Warning
zig build all-zig0 -Dvalgrind |& grep -v Warning | head -100
### Step 6: Return result
@@ -111,7 +116,9 @@ COMMIT_MSG: <one-line descriptive message about what was ported/fixed>
X, do X in C.
- **Never remove zig-cache.**
- **NEVER print to stdout/stderr in committed code.** Debug prints are
temporary only.
temporary only. Before returning, grep for `fprintf\|printf` in
`astgen.c` and remove any you find.
- **Do NOT commit.** The orchestrator handles all commits.
- **Functions must appear in the same order as in the upstream Zig file.**
- **Prefer finding systematic differences for catching bugs** instead of
debugging and hunting for them. Zig code is bug-free for the purposes of