Commit graph

740 commits

Author SHA1 Message Date
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
openhands
694936e663 fix: dev/phase-handler.sh still has divergent infra heuristics (#427)
Replace inline case git*/128/137 heuristics in phase-handler.sh with a
call to the shared is_infra_step() helper from lib/ci-helpers.sh.
This eliminates the divergence between phase-handler.sh and
classify_pipeline_failure(), ensuring a single source of truth for
CI infra failure classification.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:50:15 +00:00
johba
3e952eae8b Merge pull request 'fix: dev-agent.sh uses hardcoded bot usernames instead of dynamic resolution (#425)' (#507) from fix/issue-425 into main 2026-03-21 17:44:02 +01:00
openhands
1cd1b09041 fix: dev-agent.sh uses hardcoded bot usernames instead of dynamic resolution (#425)
Replace hardcoded Disinto_bot/disinto-factory filter with dynamic /user
API resolution + CODEBERG_BOT_USERNAMES env var fallback, matching the
pattern established in action-agent.sh by PR #424.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:35:00 +00:00
johba
db8074b126 Merge pull request 'fix: Status file is not per-project in multi-project setups (#423)' (#506) from fix/issue-423 into main 2026-03-21 17:29:02 +01:00
johba
a549454821 Merge pull request 'chore: seed RESOURCES.md — factory capability inventory' (#505) from chore/seed-resources into main
Reviewed-on: https://codeberg.org/johba/disinto/pulls/505
2026-03-21 17:22:08 +01:00
openhands
9b765e2a56 chore: seed RESOURCES.md — factory capability inventory
Remove gitignore entry for RESOURCES.md. The file contains no secrets —
only capability descriptions for the planner to read.

Part of #504 (vault + RESOURCES.md).
2026-03-21 16:20:10 +00:00
openhands
ac13bf110c fix: Status file is not per-project in multi-project setups (#423)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:20:07 +00:00
johba
d760c951b5 Merge pull request 'fix: fix: bundled dust cleanup — AGENTS.md (#420)' (#503) from fix/issue-420 into main 2026-03-21 17:14:02 +01:00
openhands
a9b8144401 fix: bundled dust cleanup — AGENTS.md (#420)
- Add phase-handler.sh to dev Key files (#332)
- Document ci_required_for_pr() in ci-helpers.sh (#347)
- Update planner trigger: weekly → daily, note optional project arg (#416)
- Add dev-agent.sh, action-agent.sh to formula-session.sh sourced-by (#418)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 16:02:29 +00:00
johba
80b5d51dc0 Merge pull request 'fix: Remove legacy predictor (prediction-poll.sh + prediction-agent.sh + cron entry) (#419)' (#501) from fix/issue-419 into main 2026-03-21 16:54:01 +01:00
openhands
5d70badc48 ci: retrigger pipeline (transient busybox awk failure) 2026-03-21 15:44:59 +00:00
openhands
446e6ef0a8 fix: Remove legacy predictor (prediction-poll.sh + prediction-agent.sh + cron entry) (#419)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:40:07 +00:00
johba
4f5ad1cc2a Merge pull request 'fix: phase-handler.sh FAILURE_REASON fallback does not handle missing phase file (#410)' (#500) from fix/issue-410 into main 2026-03-21 16:34:02 +01:00
openhands
8b293331b6 fix: phase-handler.sh FAILURE_REASON fallback does not handle missing phase file (#410)
The sed pipeline `sed -n 2p "$PHASE_FILE" 2>/dev/null | sed "s/^Reason: //"` exits 0
even when $PHASE_FILE does not exist because the second sed reads empty stdin and
succeeds, leaving FAILURE_REASON as "" instead of "unspecified".

Replace with an explicit file-existence check and use ${FAILURE_REASON:-unspecified}
as the default assignment.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 15:00:01 +00:00
johba
ea794fc7c3 Merge pull request 'fix: feat: quickstart guide and architecture docs on disinto.ai (#394)' (#499) from fix/issue-394 into main 2026-03-21 15:54:02 +01:00
openhands
234785144d fix: feat: quickstart guide and architecture docs on disinto.ai (#394)
Add two documentation pages to the site:
- site/docs/quickstart.html — prerequisites, disinto init walkthrough,
  first issue lifecycle demo
- site/docs/architecture.html — agent loop diagram, phase protocol,
  vault/quality gate, planner+predictor feedback cycle

Both pages are linked from the landing page navigation and footer.
Sitemap updated with new URLs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 14:43:19 +00:00
johba
631563e58a Merge pull request 'chore: gardener housekeeping 2026-03-21' (#498) from chore/gardener-20260321-1433 into main 2026-03-21 15:41:26 +01:00
johba
10de653659 Merge pull request 'fix: Stale ${PROJECT_NAME:-harb} fallbacks in agent scripts (#400)' (#497) from fix/issue-400 into main 2026-03-21 15:34:02 +01:00
openhands
24cf01028a chore: gardener housekeeping 2026-03-21
- Update AGENTS.md watermarks (all 10 files) to HEAD 038581e5
- Content already current from recent gardener migration and setup PRs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 14:33:26 +00:00
openhands
962f26b24d fix: Stale ${PROJECT_NAME:-harb} fallbacks in agent scripts (#400)
Replace all harb-specific fallbacks with generic 'default' sentinel
in dev-agent.sh, dev-poll.sh, action-agent.sh, and action-poll.sh.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 14:25:13 +00:00
johba
038581e555 Merge pull request 'fix: feat: live factory metrics dashboard on disinto.ai (#395)' (#496) from fix/issue-395 into main 2026-03-21 15:23:51 +01:00
openhands
874095b689 fix: review feedback — drop inflated X-Total-Count for PRs, remove redundant curl, use textContent
- Remove X-Total-Count header override for prs_merged_total: header counts
  all closed PRs (including unmerged/rejected), inflating the dashboard metric.
  Keep the jq-filtered count from the 50-item page instead.
- Remove redundant first curl in backlog_count that discards its response.
- Use textContent/createElement instead of innerHTML for project names.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 14:15:00 +00:00
openhands
115063f4ce fix: feat: live factory metrics dashboard on disinto.ai (#395)
Add metrics collector (site/collect-metrics.sh) and dashboard page
(site/dashboard.html) showing PRs merged, issues closed, CI pass rate,
vault decisions, and agent activity across all managed projects.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 14:08:22 +00:00
johba
12f8623a04 Merge pull request 'fix: feat: disinto init — one-command project bootstrap (#393)' (#495) from fix/issue-393 into main 2026-03-21 14:59:02 +01:00
openhands
6dfd2946ef fix: feat: disinto init — one-command project bootstrap (#393)
Add bin/disinto CLI entry point with two subcommands:

- `disinto init <repo-url>`: bootstraps a new project by cloning the
  repo, generating a projects/*.toml config, creating Codeberg labels
  (backlog, in-progress, blocked, tech-debt, underspecified, vision,
  action), generating a VISION.md template, and installing cron jobs
  for dev-poll, review-poll, and gardener.

- `disinto status`: shows active sessions, backlog depth, and open PR
  count for all configured projects.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 13:49:04 +00:00
johba
9478859ad3 Merge pull request 'fix: VISION.md Foundation milestone should note multi-project is complete (Scale bump) (#391)' (#494) from fix/issue-391 into main 2026-03-21 14:39:03 +01:00
openhands
685759197b fix: VISION.md Foundation milestone should note multi-project is complete (Scale bump) (#391)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 13:29:43 +00:00
johba
473319e420 Merge pull request 'fix: fix: gardener migration — run-gardener.toml via direct cron, remove legacy scripts (#490)' (#491) from fix/issue-490 into main 2026-03-21 14:19:03 +01:00
openhands
b630c6fcc1 fix: gardener migration — run-gardener.toml via direct cron, remove legacy scripts (#490)
Rewrite gardener-run.sh as direct cron runner (matching supervisor/planner/
predictor pattern): lock guard, memory check, worktree, tmux session with
Claude sonnet + formulas/run-gardener.toml, phase monitoring, cleanup.

- Delete gardener-poll.sh and gardener-agent.sh (superseded)
- Extract consume_escalation_reply() to lib/formula-session.sh (shared
  by gardener and supervisor, eliminates duplicate blocks)
- Update AGENTS.md, gardener/AGENTS.md, lib/AGENTS.md, CI smoke test,
  and cross-references

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 13:09:17 +00:00
johba
685ca1034a Merge pull request 'fix: action: run-gardener — periodic housekeeping (#489)' (#492) from action/issue-489 into main
Reviewed-on: https://codeberg.org/johba/disinto/pulls/492
Reviewed-by: Disinto_bot <disinto_bot@noreply.codeberg.org>
2026-03-21 13:51:20 +01:00
openhands
f480cbe5d0 chore: gardener housekeeping 2026-03-21
Progressive disclosure split of AGENTS.md (487→152 lines):
- Extracted per-directory AGENTS.md files for all 8 agents + lib/
- Root AGENTS.md now serves as a table of contents with summary table
- All watermarks updated to 16e430e

Grooming results:
- Promoted #469 (WATCH flow missing curl) and #436 (idle_pane_count bug) to backlog
- 12 dust items classified, no groups ripe for bundling yet
- No blocked issues, no AD violations
2026-03-21 12:44:23 +00:00
johba
16e430ebce Merge pull request 'fix: fix: gardener enforces AGENTS.md size limit + progressive disclosure split (#480)' (#488) from fix/issue-480 into main 2026-03-21 13:29:54 +01:00
openhands
1743438968 fix: fix: gardener enforces AGENTS.md size limit + progressive disclosure split (#480)
Update the agents-update step in run-gardener.toml to enforce the ~200-line
size limit on root AGENTS.md. When exceeded, the gardener now splits
per-directory sections into {dir}/AGENTS.md files with watermarks,
replacing verbose sections in root with a summary table of pointers.
Root keeps: overview, directory map, architecture decisions, key conventions.
Per-directory files get: role, trigger, key files, env vars, lifecycle.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 12:25:55 +00:00
johba
9eee90032f Merge pull request 'fix: file-action-issue.sh dedup check: paginate or raise limit beyond 50 (#383)' (#482) from fix/issue-383 into main 2026-03-21 13:19:03 +01:00
johba
197122f31e Merge pull request 'fix: feat: architecture decisions section in AGENTS.md + gardener alignment checks (#479)' (#484) from fix/issue-479 into main 2026-03-21 13:16:53 +01:00
openhands
3c6723bd8f fix: feat: architecture decisions section in AGENTS.md + gardener alignment checks (#479)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:55:15 +00:00
openhands
382228e31a chore: add issue templates (bug, feature, refactor) 2026-03-21 11:50:03 +00:00
openhands
aebda221f0 fix: file-action-issue.sh dedup check: paginate or raise limit beyond 50 (#383)
Replace codeberg_api GET with codeberg_api_all for the dedup fetch,
which paginates through all open action issues instead of capping at 50.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:45:03 +00:00
johba
bb8b3e92fb Merge pull request 'fix: CI fix counter can be wasted by guard hits — consider check_only mode (#377)' (#481) from fix/issue-377 into main 2026-03-21 12:39:05 +01:00
openhands
85fffd9fb7 fix: CI fix counter can be wasted by guard hits — consider check_only mode (#377)
Orphan and stuck-PR CI-failure paths in dev-poll.sh called
handle_ci_exhaustion without check_only, incrementing the fix counter on
every poll cycle even when guards (session checks, is_blocked) prevented
an actual agent launch. This could exhaust the 3-attempt budget without
any real fix attempts.

Now both paths use the same two-phase pattern as the backlog scan:
1. check_only during the scan (no counter increment)
2. Increment atomically at actual launch time

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-21 11:22:07 +00:00
johba
00c16d6251 Merge pull request 'fix: phase-handler.sh DELETE backlog label uses string 'backlog' not numeric ID (#375)' (#477) from fix/issue-375 into main 2026-03-21 12:14:02 +01:00