Commit graph

581 commits

Author SHA1 Message Date
johba
251d160e21 Merge pull request 'fix: fix: planner should dispatch idle formulas independently of constraint budget (#546)' (#549) from fix/issue-546 into main 2026-03-22 12:29:03 +01:00
openhands
99958a5988 fix: planner should dispatch idle formulas independently of constraint budget (#546)
Add a new `dispatch-idle-formulas` step between `file-at-constraints` and
`journal-and-memory`. This step scans available formulas, checks for stale
or missing data, and files action issues to dispatch idle formulas.

Key changes:
- New step runs after constraint filing, independent of the 3-issue budget
- Excludes nervous-system formulas (AD-001: cron, not action issues)
- Checks open action issues, recently closed issues, and evidence timestamps
  to determine staleness (7-day window)
- Journal format updated to log dispatched idle formulas

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 11:26:00 +00:00
johba
1b25232e02 Merge pull request 'fix: fix: planner formula reads only factory formulas — misses project-specific formulas and can't dispatch actions (#544)' (#545) from fix/issue-544 into main 2026-03-22 11:59:02 +01:00
openhands
212363d4fb fix: planner formula reads only factory formulas — misses project-specific formulas and can't dispatch actions (#544)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:55:40 +00:00
johba
e7094faede Merge pull request 'fix: fix: planner formula uses $FACTORY_ROOT for per-project artifacts — causes cross-repo contamination (#541)' (#542) from fix/issue-541 into main 2026-03-22 11:09:02 +01:00
openhands
db69a79b2e fix: planner formula uses $FACTORY_ROOT for per-project artifacts — causes cross-repo contamination (#541)
Replace $FACTORY_ROOT/planner/ and $FACTORY_ROOT/vault/ references with
$PROJECT_REPO_ROOT/planner/ and $PROJECT_REPO_ROOT/vault/ in the planner
formula and planner-run.sh. Planner artifacts (journal, memory, prerequisite
tree) and vault state are per-project, not factory-owned. The old paths
caused cross-repo contamination when the planner ran for non-disinto projects.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 10:00:36 +00:00
johba
02fa38fdfd Merge pull request 'chore: gardener housekeeping' (#530) from chore/gardener-20260322-0608 into main 2026-03-22 10:44:02 +01:00
openhands
ea4c55dbbf chore: gardener housekeeping 2026-03-22 2026-03-22 10:43:58 +01:00
johba
e1f3aafede Merge pull request 'fix: fix: dev-poll pre-lock should merge chore/gardener PRs without issue numbers (#539)' (#540) from fix/issue-539 into main 2026-03-22 10:18:50 +01:00
openhands
7f2c5efd9d fix: fix: dev-poll pre-lock should merge chore/gardener PRs without issue numbers (#539)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 09:12:04 +00:00
johba
e48d180393 Merge pull request 'chore: planner run — prerequisite tree update' (#536) from chore/planner-20260322-0707 into main 2026-03-22 09:01:32 +01:00
johba
f559986336 Merge pull request 'fix: fix: planner-created issues lose backlog labels on creation (#535)' (#538) from fix/issue-535 into main 2026-03-22 08:44:03 +01:00
openhands
3cecba3f4a fix: fix: planner-created issues lose backlog labels on creation (#535)
Root cause: the gardener quality gate strips the `backlog` label from
issues missing "## Acceptance criteria" checkboxes and "## Affected
files" sections. The planner formula never instructed including these
sections, so every planner-created issue lost its label on the next
gardener run.

Three changes to formulas/run-planner.toml:
1. Require issue bodies to include acceptance criteria and affected
   files sections (matching the issue template format the gardener
   quality gate enforces).
2. Add post-creation label verification via separate API call as a
   belt-and-suspenders defense against Codeberg silently dropping
   labels during issue creation.
3. Make label ID resolution unconditional in prediction-triage (was
   skippable when no predictions existed, starving file-at-constraints
   of the backlog label ID).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 07:37:26 +00:00
johba
483226680c Merge pull request 'fix: feat: landing page communicates value proposition clearly (#534)' (#537) from fix/issue-534 into main 2026-03-22 08:29:02 +01:00
openhands
f9bdaa8f29 fix: feat: landing page communicates value proposition clearly (#534)
Update the landing page to clearly communicate Disinto's value proposition:

- Reframe pitch as "autonomous code factory for solo founders"
- Add full lifecycle section with all six stages (build, review, ship,
  operate, plan, groom) and descriptions of what each agent does
- Add vault differentiator section contrasting Disinto with generic CI/CD,
  explaining the vision + vault quality gate model
- Update meta descriptions for SEO consistency
- Update footer to list all eight agents

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 07:22:31 +00:00
johba
c09b56ae3a Merge pull request 'fix: fix: dev-poll should attempt direct merges before checking agent lock (#531)' (#532) from fix/issue-531 into main 2026-03-22 08:09:02 +01:00
openhands
a35318284a chore: planner run 2026-03-22 2026-03-22 07:07:20 +00:00
openhands
00b20b5a67 fix: break duplicate-detection false positive in pre-lock section
Add log statement between pre-lock merge exit and lock check to break
a coincidental 5-line sliding-window match with dev-agent.sh.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 06:52:39 +00:00
openhands
236e19eae1 fix: dev-poll should attempt direct merges before checking agent lock (#531)
Move the direct-merge scan (approved + CI green → try_direct_merge())
above the lock check. Merging an approved PR is a single API call that
doesn't need the dev-agent lock or a Claude session. This ensures
approved PRs get merged even while a dev-agent is running on an
unrelated issue.

The lock still guards dev-agent spawning (AD-002 preserved). Direct
merge failures fall through to the post-lock code for dev-agent
fallback.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 06:46:26 +00:00
johba
a2370b80b8 Merge pull request 'fix: Notes for BOOTSTRAP.md (#526)' (#527) from fix/issue-526 into main 2026-03-22 01:19:03 +01:00
openhands
7544f00cd2 fix: Notes for BOOTSTRAP.md (#526)
Add Claude Code global settings section (permissions +
skipDangerousModePermissionPrompt only, no hooks, seed ~/.claude.json),
file ownership requirements (debian:debian), and cross-box debugging
rule (diff configs first) to BOOTSTRAP.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-22 00:10:35 +00:00
johba
ac51497489 Merge pull request 'revert: remove skipDangerousModePermissionPrompt injection from agent-session.sh (#522)' (#525) from revert/522 into main
Reviewed-on: https://codeberg.org/johba/disinto/pulls/525
2026-03-21 21:50:49 +01:00
openhands
575ab427d2 Revert "Merge pull request 'fix: inject skipDangerousModePermissionPrompt into worktree settings (#514)' (#522) from fix/agent-session-skip-permissions into main"
This reverts commit 0631b71aa5, reversing
changes made to 93d8249d3a.
2026-03-21 20:48:41 +00:00
johba
21750d3339 Merge pull request 'fix: fix: bundled dust cleanup — set-euo-pipefail (#516)' (#523) from fix/issue-516 into main 2026-03-21 21:08:26 +01:00
openhands
507a96eb7e chore: retrigger CI 2026-03-21 20:01:50 +00:00
openhands
c642ebf81d fix: bundled dust cleanup — set-euo-pipefail (#516)
Add missing `set -euo pipefail` to three scripts per AGENTS.md conventions:
- lib/ci-helpers.sh
- lib/parse-deps.sh
- supervisor/supervisor-poll.sh

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 19:59:55 +00:00
johba
0631b71aa5 Merge pull request 'fix: inject skipDangerousModePermissionPrompt into worktree settings (#514)' (#522) from fix/agent-session-skip-permissions into main 2026-03-21 20:54:02 +01:00
johba
93d8249d3a Merge pull request 'fix: feat: unified escalation — single PHASE:escalate path for all agents (#510)' (#521) from fix/issue-510 into main 2026-03-21 20:51:26 +01:00
openhands
bc6fe1beee fix: inject skipDangerousModePermissionPrompt into worktree settings
Project-level .claude/settings.json overrides global ~/.claude/settings.json.
When agent-session.sh creates settings with hooks but without the skip flag,
Claude shows an interactive bypass-permissions confirmation dialog that blocks
all non-interactive tmux agent sessions.

Fixes #514.
2026-03-21 19:50:49 +00:00
openhands
5822dc89d9 fix: feat: unified escalation — single PHASE:escalate path for all agents (#510)
Replace PHASE:needs_human with PHASE:escalate across all agent types.
Consolidates 6 overlapping escalation mechanisms into one unified path:
detect → notify via Matrix → session stays alive → human reply injected → resume.

Key changes:
- PHASE:escalate replaces PHASE:needs_human everywhere (16 files)
- CI exhausted now escalates instead of immediately marking blocked
- Matrix listener routes free-text replies to vault tmux sessions
- Vault agent writes PHASE:escalate files for procurement requests
- Supervisor monitors PHASE:escalate sessions in health checks
- 24h timeout on escalation → blocked label + session killed
- All 38 phase protocol tests updated and passing

Supersedes #462, #458, #465.
2026-03-21 19:39:04 +00:00
johba
725c4d7334 Merge pull request 'fix: feat: vault as procurement gate + RESOURCES.md capability inventory (#504)' (#520) from fix/issue-504 into main 2026-03-21 20:28:24 +01:00
openhands
ae3a8e1803 fix: use awk instead of sed for RESOURCES.md entry extraction
The sed range pattern terminated on ## <resource-id> which is the first
line of the entry content, yielding an empty result for all valid
procurement files. awk reads from the header to EOF without ambiguity.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 19:22:02 +00:00
openhands
05f787eb03 fix: feat: vault as procurement gate + RESOURCES.md capability inventory (#504)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:49:31 +00:00
johba
2674eebbd6 Merge pull request 'fix: feat: planner v2 — prerequisite tree + resource-aware executive (#502)' (#519) from fix/issue-502 into main 2026-03-21 19:39:02 +01:00
openhands
07551fab48 fix: feat: planner v2 — prerequisite tree + resource-aware executive (#502)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:28:38 +00:00
johba
5d2c5abb0b Merge pull request 'chore: gardener housekeeping' (#517) from chore/gardener-20260321-1807 into main 2026-03-21 19:22:26 +01:00
johba
411817139a Merge pull request 'fix: fix: PreToolUse guard — allow formula agents to access FACTORY_ROOT from worktrees (#487)' (#518) from fix/issue-487 into main 2026-03-21 19:16:54 +01:00
openhands
f6dd91389f fix: PreToolUse guard — allow formula agents to access FACTORY_ROOT from worktrees (#487)
- Add session name as third arg to guard hook (passed from agent-session.sh)
- Detect formula sessions (supervisor-*, gardener-*, planner-*, predictor-*)
- Guard 6: block filesystem access to factory root from worktrees, exempt formulas
- Guard 7: restrict system commands (kill, docker, tmux) to supervisor only
- Guard 2: allow formula agents rm -rf within factory root

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 18:09:28 +00:00
openhands
b4f1666a80 chore: gardener housekeeping 2026-03-21 2026-03-21 18:07:37 +00:00
johba
e050f79153 Merge pull request 'fix: fix: supervisor formula — narrow PR stale check to >20min inactive only (#486)' (#515) from fix/issue-486 into main 2026-03-21 19:01:17 +01:00
openhands
ad2085a45f fix: supervisor formula — narrow PR stale check to >20min inactive only (#486)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 17:55:21 +00:00
johba
80a64cd3e4 Merge pull request 'fix: feat: gardener quality gate — strip backlog label from poorly structured issues (#483)' (#513) from fix/issue-483 into main 2026-03-21 18:48:39 +01:00
openhands
70bf18912a fix: feat: gardener quality gate — strip backlog label from poorly structured issues (#483)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 17:45:36 +00:00
johba
b05cb7824d Merge pull request 'fix: fix: WATCH flow comment step missing explicit curl command in run-planner.toml (#469)' (#512) from fix/issue-469 into main 2026-03-21 18:39:02 +01:00
openhands
761eed5d42 fix: WATCH flow comment step missing explicit curl command in run-planner.toml (#469)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 17:29:39 +00:00
johba
df627c1b88 Merge pull request 'fix: idle_pane_count not reset in phase-changed branch of monitor_phase_loop (#436)' (#511) from fix/issue-436 into main 2026-03-21 18:22:13 +01:00
openhands
1604d1e062 fix: idle_pane_count not reset in phase-changed branch of monitor_phase_loop (#436)
When a phase change is detected (mtime changes), idle_elapsed was reset
but idle_pane_count was not. This meant idle counts accumulated before a
phase write carried into subsequent polls, so N consecutive idle polls
could be reached with fewer than N actual consecutive idle polls.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 17:14:54 +00:00
johba
01a50aaa3d Merge pull request 'fix: Action session name missing PROJECT_NAME prefix (#432)' (#509) from fix/issue-432 into main 2026-03-21 18:09:16 +01:00
openhands
4a9f610c73 fix: Action session name missing PROJECT_NAME prefix (#432)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 17:05:09 +00:00
johba
89a9a822de Merge pull request 'fix: dev/phase-handler.sh still has divergent infra heuristics (#427)' (#508) from fix/issue-427 into main 2026-03-21 17:59:02 +01:00