Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Runs every offline test suite (test_*.py) on push to main and on PRs.
# The suites need no API key and make no paid calls — that's by design;
# they gate everything that does spend (see README "How to re-run").
name: CI

on:
push:
branches: [main]
pull_request:

jobs:
offline-suites:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v7
- uses: astral-sh/setup-uv@v8.3.0 # no floating v8 major tag exists
with:
enable-cache: true
- name: Run all offline test suites
run: |
rc=0
for f in test_*.py; do
echo "::group::$f"
if ! uv run "$f"; then
echo "FAILED: $f"
rc=1
fi
echo "::endgroup::"
done
exit $rc
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
# ghost-patch

[![CI](https://github.com/ksdisch/ghost-patch/actions/workflows/ci.yml/badge.svg)](https://github.com/ksdisch/ghost-patch/actions/workflows/ci.yml)

Hobby-scale, pre-committed reproduction of **"Obey, Diverge, Collapse"** (arXiv 2607.04537): the claim that code LLMs recognize a wrong-location repair instruction as incorrect, follow it anyway, compound ghost errors across iterative repair passes, and land in a corrupted state that self-guided repair cannot recover — not even back to the original buggy baseline. Fourth in a lineage of reproduce-and-measure projects (forge-gap → decay-pin → lossy-wall); the target paper is days old, unreplicated, and its promised code appendix is absent from v1, so every prompt, filter, and gate here is independently built and disclosed.

**Status: v1 COMPLETE — the chain is closed end-to-end (M4 closed 2026-07-11).** Measured on two cheap models — deepseek-chat-v3.1 and qwen3-coder-30b-a3b-instruct — over a frozen 186-problem RunBugRun bank, with every verdict rendered by a script written and dry-run **before** the paid data existed. Lifetime spend: **$1.4244** against a $5.00 guard.
Expand Down