v0.1.4
Fixes a real production bug
Pre-commit hook rejections during a unit's initial work() turn were silently lost on retry. work() never distinguished a hook rejection from any other git error, so a rejected commit just parked the Run paused with a human-only message — a subsequent /syntropy retry (or resume) re-invoked the runner from scratch with zero memory of what was rejected. Since go build/go test both still pass (the hook isn't part of either), the runner saw nothing wrong and produced the identical fix, which got rejected identically. Confirmed live, twice, on separate production Runs — one burned ~37M tokens across 4 attempts before being abandoned.
Fix: work() now has its own bounded in-turn hook-retry loop (mirroring the existing invokeForEvent mechanism) that feeds the hook's actual rejection output back to the runner via Request.HookFailure and retries within the same turn. If that's exhausted, the last rejection is stashed into PromptInjection so a subsequent manual /syntropy retry still carries it forward automatically.
Also in this release
- A two-layer spec-tool preference (global default + per-repo override) so an agent knows whether to defer to a user's own spec-authoring tool or fall back to syntropy's own review flow.
syntropy startnow checks (deterministically, no LLM involved, cached 24h) whether a newer GitHub release exists and prints a notice if so.- The planner now sees the actual reason a unit was blacklisted (e.g. an explicit
/syntropy skipreason), not just a bare count — stops it from silently re-proposing work a human just rejected.
Changelog
- ab70328 Merge origin/main into docs/skill-config-check-before-spec, resolve conflict
- fec1ecb Merge pull request #137 from andrewwormald/docs/skill-spec-directory-convention
- 75cfbc4 Merge pull request #138 from andrewwormald/syntropy/620ce215/increment-2
- df4e8f9 Merge pull request #139 from andrewwormald/docs/skill-config-check-before-spec
- f4840c2 Merge pull request #140 from andrewwormald/syntropy/f59bbe94/increment-1
- 7ce66bf Merge pull request #141 from andrewwormald/syntropy/15f04df6/increment-1
- 2623cdf Merge pull request #142 from andrewwormald/syntropy/f59bbe94/increment-2
- d16965d Merge pull request #143 from andrewwormald/syntropy/15f04df6/increment-2
- d8ab49c Merge pull request #144 from andrewwormald/syntropy/f59bbe94/increment-3
- 0d11347 Merge pull request #145 from andrewwormald/syntropy/2f9b9232/increment-1
- f0d39a8 Merge pull request #146 from andrewwormald/syntropy/15f04df6/increment-3
- 863124d Merge pull request #147 from andrewwormald/syntropy/f59bbe94/increment-4
- c3a24d4 Merge pull request #148 from andrewwormald/syntropy/2f9b9232/increment-2
- 0588bb2 Merge pull request #149 from andrewwormald/syntropy/2f9b9232/increment-3
- 4c2c299 docs(decisions): add ADR-0100 for work() hook-retry loop and PromptInjection carry-forward
- 07fac32 docs(skill): run config check before writing the spec, not after
- 8c04f1e docs(skill): suggest a spec-authoring directory, explicit it's not syntropy's
- 456c22b feat(refactorsweep): retry hook-rejected commits in-turn during work()
- dcca56c feat(setup): add spec_tool default config and --spec-tool flag
- cea890b fix(refactorsweep): instruct planner not to re-propose blacklisted units
- 5564a7a merge: resolve ADR numbering conflict with main, renumber to 0101
- 5f8dcc6 syntropy 15f04df6: increment-2
- 60c6eca syntropy 2f9b9232: increment-1
- dcbeaa2 syntropy 2f9b9232: increment-2
- 3f01344 syntropy 2f9b9232: increment-3
- 3a92b04 syntropy f59bbe94: increment-2
- 5f297f6 syntropy f59bbe94: increment-3
- b665703 syntropy f59bbe94: increment-4