Commit graph

510 commits

Author SHA1 Message Date
openhands
1d797c0303 fix: address review — guard before CI counter, cover all spawn points
- Move tmux session guard BEFORE handle_ci_exhaustion in both CI-fix
  paths so poll cycles with an active session don't waste fix attempts
- Add tmux guards to recovery spawn (orphan, no PR) and both
  agent-merge fallback paths (orphan + stuck-PR)
- Use continue instead of exit 0 when guard fires in stuck-PR loop
  so remaining PRs are still checked

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 11:45:19 +00:00
openhands
4feb1fba97 fix: dev-poll spawns duplicate agents — no tmux session guard (#371)
Add tmux has-session check before spawning dev-agent.sh at all four
spawn points (orphan REQUEST_CHANGES, orphan CI fix, stuck-PR
REQUEST_CHANGES, stuck-PR CI fix). If a tmux session already exists
for the issue, log and skip instead of spawning a duplicate agent.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 11:45:19 +00:00
johba
86070ceef7 fix: feat: gardener formula — steps and recipes (#363) (#366)
Fixes #363

## Changes
Created formulas/run-gardener.toml with 7 steps: preflight (pull latest), agents-update (AGENTS.md watermark check), stale-pr-cleanup (ping/close inactive PRs), dust-bundling (group trivial issues into bundles of 3+), ci-health (detect systemic CI failures), blocked-review (triage blocked issues per #352), and commit-and-pr (single commit with all file changes). No memory, no journal. All git writes collected in the final commit-and-pr step; API calls happen during the run. Steps follow the established formula TOML format with needs dependencies.

Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/disinto/pulls/366
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
2026-03-20 12:11:58 +01:00
johba
06f8e3fcba Merge pull request 'fix: too_large branch still uses string label '"underspecified"' (#213)' (#362) from fix/issue-213 into main
Reviewed-on: https://codeberg.org/johba/disinto/pulls/362
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
2026-03-20 11:19:46 +01:00
openhands
a58aef90d3 fix: too_large branch still uses string label '"underspecified"' (#213)
Look up UNDERSPECIFIED_LABEL_ID via the Gitea labels API (with fallback)
and use the numeric ID in both phase-handler.sh (PHASE:failed/too_large)
and dev-poll.sh (preflight too_large), matching the pattern already used
for BACKLOG_LABEL_ID.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:50:20 +00:00
johba
ff32124508 Merge pull request 'fix: feat: planner triages prediction/unreviewed issues alongside gap analysis (#142)' (#358) from fix/issue-142 into main 2026-03-20 10:44:02 +01:00
openhands
dd61f6438e fix: address review — disambiguate label placeholders, relabel before close
- Rename <backlog_label_id> in WATCH path to <prediction_backlog_label_id>
  to avoid collision with the plain backlog label in strategic-planning
- Add prediction/actioned relabeling before close for PROMOTE and DISMISS
  paths so closed predictions are distinguishable from unprocessed ones
- Make step 4 comment format consistent with step 5: "Actioned as #NNN —
  <reasoning>" everywhere
- Add step 3b for explicit label ID resolution with create-if-missing for
  the new prediction/actioned label
- Document prediction/* and action labels in AGENTS.md label table

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:36:37 +00:00
openhands
6f75ab0a04 fix: feat: planner triages prediction/unreviewed issues alongside gap analysis (#142)
Expand the triage-predictions step in run-planner.toml with four explicit
triage actions (PROMOTE_ACTION, PROMOTE_BACKLOG, WATCH, DISMISS), each
with API execution details and mandatory reasoning comments. Promoted
predictions now close the original with "Actioned as #NNN" and compete
with vision gaps for the per-cycle 5-issue limit in strategic-planning.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:28:24 +00:00
johba
c76487c811 Merge pull request 'fix: feat: planner as cron-driven formula (no issue tracking) (#232)' (#356) from fix/issue-232 into main 2026-03-20 10:19:02 +01:00
openhands
898f958196 fix: add model=opus to run-planner formula and wire through action-agent
TOML declares model = "opus". planner-poll.sh includes model: opus in
the issue YAML front matter. action-agent.sh extracts it and exports
CLAUDE_MODEL. create_agent_session passes --model to claude if set.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:08:17 +00:00
openhands
20dc185a28 chore: retrigger CI (smoke test passed locally)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:02:37 +00:00
openhands
6c7557e87b fix: feat: planner as cron-driven formula (no issue tracking) (#232)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 09:00:56 +00:00
johba
b4dce50f2c Merge pull request 'fix: fix: guard blocks merge injection — Claude closes issue without merging (#344)' (#351) from fix/issue-344 into main
Reviewed-on: https://codeberg.org/johba/disinto/pulls/351
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
2026-03-20 08:53:19 +01:00
openhands
6f30614dda fix: fix: guard blocks merge injection — Claude closes issue without merging (#344)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 07:37:32 +00:00
johba
b78b22d830 fix: fix: dev-poll backlog selection is LIFO — should be FIFO (#349) (#350)
Fixes #349

## Changes
Add &sort=oldest to the backlog API call in dev/dev-poll.sh (line 401) so issues are picked FIFO instead of the Gitea default LIFO order.

Co-authored-by: openhands <openhands@all-hands.dev>
Reviewed-on: https://codeberg.org/johba/disinto/pulls/350
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
2026-03-20 08:33:03 +01:00
johba
acd65e3bed Merge pull request 'fix: ci_required_for_pr should paginate /pulls/{pr}/files (#273)' (#346) from fix/issue-273 into main 2026-03-20 08:09:42 +01:00
openhands
2a3e5eef90 fix: ci_required_for_pr should paginate /pulls/{pr}/files (#273)
Replace single-page curl fetch with codeberg_api_all() which paginates
through all pages of PR files. This ensures large PRs with 50+ files
correctly detect code files on all pages, preventing CI from being
incorrectly bypassed.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 06:55:00 +00:00
johba
e0a1c67224 Merge pull request 'fix: feat: StopFailure hook writes phase file on API error / rate limit (#275)' (#340) from fix/issue-275 into main 2026-03-20 07:30:10 +01:00
openhands
f66fcd666c fix: address review — terminal phase guard, explicit marker var, test coverage
- Guard against overwriting terminal phases (PHASE:done, PHASE:merged)
  in on-stop-failure.sh to prevent false failures from same-turn race
- Declare sf_phase_marker explicitly in StopFailure block instead of
  relying on phase_marker from PostToolUse block
- Add authentication_failed test (10c) and terminal phase guard tests
  (10g, 10h)
- Fix fragile nested command substitution in test 10f fail() message

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 01:52:46 +00:00
openhands
eaf2841494 fix: feat: StopFailure hook writes phase file on API error / rate limit (#275)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 01:43:00 +00:00
johba
109758e86b Merge pull request 'fix: feat: SessionEnd hook for guaranteed cleanup on session exit (#276)' (#337) from fix/issue-276 into main 2026-03-20 02:34:45 +01:00
openhands
0a095c4656 fix: feat: SessionEnd hook for guaranteed cleanup on session exit (#276)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 01:11:26 +00:00
johba
7d03f2c9ee Merge pull request 'fix: Dual curl calls for HAS_APPROVE / HAS_CHANGES create a race window (#321)' (#335) from fix/issue-321 into main 2026-03-20 02:04:35 +01:00
openhands
70aea63521 fix: Dual curl calls for HAS_APPROVE / HAS_CHANGES create a race window (#321)
Each of the three review-check sites (orphan, stuck-PR, backlog) now
fetches reviews with a single curl call, storing the JSON response and
jq-filtering both HAS_APPROVE and HAS_CHANGES from the cached result.
This eliminates the race window where a review submitted between the
two calls could cause a transient mismatch.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 00:59:51 +00:00
johba
305302c20a Merge pull request 'fix: Idle Stop hook marker unused by action-agent monitor loop (#327)' (#333) from fix/issue-327 into main 2026-03-20 01:55:39 +01:00
openhands
55b5a674c2 fix: Idle Stop hook marker unused by action-agent monitor loop (#327)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 00:50:52 +00:00
johba
f1b328d431 Merge pull request 'fix: fix: bundled dust cleanup — AGENTS.md (#328)' (#331) from fix/issue-328 into main 2026-03-20 01:43:42 +01:00
openhands
ecedbe40a7 ci: retry — agent-smoke failure is transient (pre-existing, not caused by AGENTS.md change)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 00:40:36 +00:00
openhands
6ad4161f76 fix: bundled dust cleanup — AGENTS.md (#328)
- Add phase-handler.sh to dev/ directory listing (#216)
- Update agent count from six to eight, add action+predictor (#324)
- Add action-agent.sh to lib/agent-session.sh Sourced by column (#326)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 00:35:05 +00:00
johba
e3b4c733b9 Merge pull request 'fix: feat: PreToolUse hook guards destructive operations in dev-agent sessions (#277)' (#329) from fix/issue-277 into main 2026-03-20 01:25:19 +01:00
openhands
c8b09d1c72 fix: address review — whitelist /tmp, block bare force-push, improve checkout guard
- Guard 2: add /tmp/* to allowlist so normal temp file cleanup is not blocked
- Guard 1: block bare `git push --force` (no branch arg) since upstream may
  point to primary branch
- Guard 4: allow flags between verb and branch (`git switch --detach main`),
  escape branch name for regex safety, exclude -b/-B/-c/-C (branch creation)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 00:16:57 +00:00
openhands
de8dcef81e fix: feat: PreToolUse hook guards destructive operations in dev-agent sessions (#277)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 00:10:27 +00:00
johba
003f0486d1 Merge pull request 'fix: feat: stream action-agent Claude output to Matrix thread (#293)' (#325) from fix/issue-293 into main 2026-03-20 00:50:38 +01:00
openhands
424a53c9f7 fix: feat: stream action-agent Claude output to Matrix thread (#293)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 23:43:29 +00:00
johba
362ba489dc Merge pull request 'fix: prediction-agent / predictor not documented in AGENTS.md agent list (#307)' (#323) from fix/issue-307 into main 2026-03-20 00:32:55 +01:00
openhands
ad62402982 fix: update Planner future-direction note to reflect live Predictor
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 23:30:30 +00:00
openhands
6045cfa7d2 fix: prediction-agent / predictor not documented in AGENTS.md agent list (#307)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 23:15:34 +00:00
johba
5951cfb060 Merge pull request 'fix: Add WebP variant for factory-fixes-itself.jpg (#309)' (#322) from fix/issue-309 into main 2026-03-20 00:07:48 +01:00
openhands
b1b49e7261 fix: Add WebP variant for factory-fixes-itself.jpg (#309)
Add factory-fixes-itself.webp (107K vs 169K JPG, 37% smaller) and
wrap the image in a <picture><source> element matching the existing
al76 pattern. The original JPG is kept as fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:55:32 +00:00
johba
5ca52b8528 Merge pull request 'fix: fix: stale REQUEST_CHANGES reviews are invisible to dev-poll stuck-PR check (#319)' (#320) from fix/issue-319 into main 2026-03-19 23:50:33 +01:00
openhands
08d702b055 fix: fix: stale REQUEST_CHANGES reviews are invisible to dev-poll stuck-PR check (#319)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:24:48 +00:00
johba
954f9fb96b Merge pull request 'fix: fix: action-agent.sh ignores project TOML — falls back to .env defaults (#317)' (#318) from fix/issue-317 into main 2026-03-19 23:18:25 +01:00
openhands
28fd845714 fix: fix: action-agent.sh ignores project TOML — falls back to .env defaults (#317)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:16:01 +00:00
johba
eb6353eb21 Merge pull request 'fix: fix: duplicate-detection CI step fails on pre-existing duplicates unrelated to PR (#296)' (#316) from fix/issue-296 into main 2026-03-19 23:09:55 +01:00
openhands
5e4b00f9a3 fix: duplicate-detection CI step fails on pre-existing duplicates unrelated to PR (#296)
Add baseline comparison to detect-duplicates.py: when DIFF_BASE is set
(via CI_COMMIT_TARGET_BRANCH for PRs), the script compares findings
against the base branch and only fails on new duplicates introduced by
the PR. Pre-existing duplicates are reported as informational.

For push events (no DIFF_BASE), the script reports all findings but
exits 0 (informational only). Removes failure:ignore from the CI step
so new duplicates properly block PRs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 22:03:18 +00:00
johba
8d39ce79e7 Merge pull request 'fix: feat: publish formula for disinto.ai — action-agent deploys on merge (#312)' (#314) from fix/issue-312 into main 2026-03-19 22:44:04 +01:00
openhands
d47aadbe25 fix: address review — cross-step var persistence, atomic symlink, verify guards
- Persist DEPLOY_SHA and TARGET to temp files for cross-step reads
- Use ln -s + mv -T for truly atomic symlink swap
- Guard against empty title extraction in verify step
- Add repo_root var instead of hardcoded path
- Append deploy history before pruning old deploys
- Add prune-old-deploys to verify step needs for unambiguous ordering
- Explicit no-op early exit via NOOP sentinel
- Follow redirects with curl -L in verify step

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 21:41:46 +00:00
openhands
b4fbd9d69e fix: feat: publish formula for disinto.ai — action-agent deploys on merge (#312)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 21:30:59 +00:00
johba
4c301f6c2f Merge pull request 'fix: Deduplicate hook entries in settings.json on repeated create_agent_session calls (#299)' (#313) from fix/issue-299 into main 2026-03-19 22:24:58 +01:00
openhands
63d4179f38 fix: Deduplicate hook entries in settings.json on repeated create_agent_session calls (#299)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-19 21:19:58 +00:00