v1.2.0 — Prompt Quality + Catchup Lifecycle + Folder Split
Highlights
Smarter LLM prompts — All four generator prompts (Checkpoint, Catchup, Master Context, PR Summary) rewritten with anti-hallucination guards. The LLM now distinguishes confirmed changes from inferred impact, avoids inventing file names or line numbers, and uses consistent direct technical voice throughout.
Catchup lifecycle — Catchup files now live in their own catchups/ directory (previously mixed into checkpoints/). When a developer commits, their catchup file is automatically deleted — they're caught up. The CI workflow handles both additions and deletions via git add -A catchups/.
Richer context for onboarding — --onboard now reads README.md and the first-found dependency manifest (pyproject.toml, package.json, requirements.txt) and passes them to the LLM. Individual checkpoint truncation raised from 2000 to 4000 chars.
Changes
- agents.py —
CheckpointGeneratoraccepts commit message/author/date params and scales word count (100–200 trivial, 400–800 substantial).CatchupGeneratorremoves "What's In Progress" section, caps Critical Changes at 5, uses 2nd person voice, handles superseded changes with inline update notes.MasterContextGeneratoradds per-section anti-hallucination rules and acceptsreadme_content/dependency_manifest.PRSummaryGeneratorgets matching guards. - storage.py — New
CATCHUP_DIR = "catchups"constant,Catchup_file prefix,get_existing_catchup(),delete_catchup()functions. - graph.py — Passes commit metadata (message, author, date) to
CheckpointGenerator. - config.py — Added
catchup_dirfield toRepositoryConfig. - git_utils.py —
catchups/added to system file exclusion patterns. - main.py — Commit path clears stale catchups. Onboard path reads README + dep manifest.
--initcreatescatchups/directory. - templates/checkpoint.yml — All CI commit steps now include
git add -A catchups/.
Migration
Existing catchup files in checkpoints/ (named Checkpoint_*.md) will be ignored by the new code. They can be safely deleted — fresh catchups will be generated in catchups/ on the next --catchup-all run.