Commit Graph
100 Commits
Author SHA1 Message Date
sysadminandClaude Opus 4.8 5debfcf178 feat: block vague-reference issue creation with content preflight (Closes #582)
Add a pre-create content gate to gitea_create_issue that fails closed with
BLOCKED + DIAGNOSE when the title/body is a vague reference to out-of-band
draft content ("the drafted issue", "the prepared issue", "the issue we
discussed", "the previous draft") and no durable source pointer (existing
issue/PR/comment, checked-in file, URL, or scratchpad path) is present.

- issue_content_gate.py: assess_issue_content / pre_create_issue_content_gate
  with vague-phrase detection, durable-source-pointer escape hatch, and a
  domination check so long specific bodies are not falsely blocked.
- gitea_create_issue: runs the gate after preflight purity, before duplicate
  search; new allow_incomplete_content override (off by default). Title-only
  creation stays allowed (no empty-body requirement) to preserve behavior.
- tests/test_issue_content_gate.py: unit + MCP integration coverage.
- create-issue.md: documents the enforced preflight with valid/invalid
  prompt examples.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-09 13:07:53 -04:00
sysadmin c738e5b10d Merge pull request 'fix: resolve reviewer lease identity via host not remote alias (Closes #578)' (#581) from fix/issue-578-reviewer-lease-identity into master 2026-07-09 11:21:29 -05:00
sysadmin fe9faec741 test: cover reviewer lease identity host resolution 2026-07-09 12:09:40 -04:00
sysadmin 7f2a5a3d3c fix: resolve reviewer lease identity via host not remote alias
_authenticated_username expects a host for auth/API calls. Lease
acquire/adopt/gate/release paths passed the remote alias (prgs), so
identity resolved empty and same-identity release fail-closed across
sessions — blocking author conflict-fix pushes after REQUEST_CHANGES.

Pass resolved host h from _resolve into _authenticated_username.
2026-07-09 12:09:40 -04:00
sysadmin 946d6c2f81 Merge pull request 'Web UI: Test coverage and CI checks (#436)' (#457) from feat/issue-436-ci-coverage into master 2026-07-09 11:06:55 -05:00
sysadmin 64b83cd1fb test: keep webui CI hermetic offline 2026-07-09 11:59:23 -04:00
sysadmin 23535e30bc feat(webui): test coverage and CI gate (#436)
Add consolidated MVP route/read-only tests, path-filter helpers, and
scripts/test-webui plus scripts/ci-webui-check for Jenkins path-filtered
runs on PRs touching web UI surfaces.

Closes #436
2026-07-09 11:59:23 -04:00
sysadmin 351ef3899b Merge pull request 'Web UI: Auth and deployment boundary (#435)' (#456) from feat/issue-435-auth-deployment into master 2026-07-09 10:58:52 -05:00
sysadmin 1334b0b320 fix: restore ISSUE_LOCK_FILE import and fail-closed public bind
Conflict resolution left webui/lease_loader.py importing ISSUE_LOCK_FILE
from merged_cleanup_reconcile (not exported); import from
issue_lock_provenance instead. Validate WEBUI_HOST before loading the
full app stack so 0.0.0.0 refuse exits immediately.

Addresses reviewer findings on PR #456 / issue #435.
2026-07-09 11:52:24 -04:00
sysadmin 975674d7f5 feat(webui): auth and deployment boundary (#435)
Add bind-host assessment that refuses 0.0.0.0/:: without override,
warns on non-loopback binds, and documents internal-only MVP serving.
Health endpoint exposes deployment metadata; docs cover Access/VPN/WARP
and runtime env assumptions without embedding secrets in the client.

Closes #435
2026-07-09 11:50:40 -04:00
sysadmin 8d1098f916 Merge pull request 'feat: guard merged branch cleanup path' (#516) from feat/issue-514-branch-delete-guard into master 2026-07-09 10:45:05 -05:00
sysadmin 49aa3b2812 Merge pull request 'Web UI: Gated action framework (#434)' (#455) from feat/issue-434-gated-actions into master 2026-07-09 10:39:28 -05:00
sysadmin 94004f05ac Merge pull request 'fix: newest reviewer lease marker wins so release ends prior claims (Closes #577)' (#579) from fix/issue-577-reviewer-lease-newest-wins into master 2026-07-09 10:38:22 -05:00
sysadmin 8d6d3cb014 fix: refine terminal preflight check to avoid false-positive PATH blocks on server 2026-07-09 11:31:48 -04:00
sysadmin f558b80cc8 test: cover explicit git -C terminal probe 2026-07-09 10:43:42 -04:00
sysadmin 223cde1b94 feat: terminal launcher diagnostics and mutation preflight (Closes #556)
Add categorize-and-probe helpers for shell spawn failures, expose
gitea_diagnose_terminal, and fail closed on mutation capability resolve
when the terminal launcher is unhealthy (BLOCKED + DIAGNOSE). Document
the operator path in the workflow runbooks.
2026-07-09 10:29:03 -04:00
sysadmin 9b96085d8d fix: newest lease marker wins so release ends prior claims
find_active_reviewer_lease walked past terminal markers and re-armed
older claimed leases after gitea_release_reviewer_pr_lease. Treat the
newest marker as authoritative (append-only ledger).

Closes #577
2026-07-09 10:09:38 -04:00
sysadmin ddb1dd941b Merge remote-tracking branch 'prgs/master' into feat/issue-434-gated-actions
# Conflicts:
#	docs/webui-local-dev.md
#	tests/test_webui_skeleton.py
#	webui/app.py
2026-07-09 09:38:20 -04:00
sysadmin d7c29afde5 Merge remote-tracking branch 'prgs/master' into feat/issue-514-branch-delete-guard
# Conflicts:
#	gitea_mcp_server.py
2026-07-09 09:35:55 -04:00
sysadmin cc4b95839d Merge pull request 'feat: add BLOCKED + DIAGNOSE default rule + blocker report template (closes #552)' (#554) from issue-552-blocked-diagnose into master 2026-07-09 08:30:35 -05:00
sysadmin 325e0bb44c Merge pull request 'feat: require Controller Handoff plus Thread State Ledger (Closes #507)' (#511) from feat/issue-507-controller-thread-ledger into master 2026-07-09 08:27:44 -05:00
sysadmin cf130ed0fc fix: resolve test suite regressions and conn helper discovery error 2026-07-09 09:25:08 -04:00
sysadmin cd83b7588f Merge pull request 'feat: add worktree hygiene dashboard to web UI (Closes #432)' (#453) from feat/issue-432-worktree-hygiene into master 2026-07-09 08:24:34 -05:00
sysadmin b3bc459423 fix: drop obsolete worktrees stub assertion after #432 implement 2026-07-09 09:23:19 -04:00
sysadmin e2ef8fbda0 fix: resolve docs conflict for PR #453 after #452
Merge both audit (#431) and worktree hygiene (#432) route/docs lines.
2026-07-09 09:22:53 -04:00
sysadmin 5cf44d78e6 Merge pull request 'feat: add final-report audit paste tool to web UI (Closes #431)' (#452) from feat/issue-431-audit-paste into master 2026-07-09 08:22:13 -05:00
sysadmin 254ccf5821 Merge pull request 'feat: mount canonical gitea-workflow skill for Codex and MCP inventory (Closes #551)' (#565) from feat/issue-551-codex-gitea-workflow into master 2026-07-09 08:14:31 -05:00
sysadmin a8177c2e73 Merge remote-tracking branch 'prgs/master' into feat/issue-507-controller-thread-ledger
# Conflicts:
#	docs/llm-workflow-runbooks.md
#	final_report_validator.py
2026-07-09 09:13:51 -04:00
sysadmin e8f93e93d7 Merge remote-tracking branch 'prgs/master' into feat/issue-551-codex-gitea-workflow
# Conflicts:
#	docs/llm-workflow-runbooks.md
2026-07-09 09:12:44 -04:00
sysadmin 7acd55d2d2 Merge remote-tracking branch 'prgs/master' into feat/issue-514-branch-delete-guard
# Conflicts:
#	final_report_validator.py
2026-07-09 09:12:33 -04:00
sysadmin b52fa2060f Merge pull request 'Clarify and enforce reviewer-vs-merger role boundaries (#483)' (#486) from feat/issue-483-role-boundaries into master 2026-07-09 08:09:47 -05:00
sysadmin 932b280a27 Merge pull request 'feat: block direct MCP imports and unsanctioned keychain access (Closes #558)' (#566) from feat/issue-558-block-direct-imports into master 2026-07-09 08:08:43 -05:00
sysadmin c35f713291 Merge master into issue-552-blocked-diagnose to resolve conflicts 2026-07-09 09:06:59 -04:00
sysadmin 9340dc7009 Merge pull request 'feat: discover merged cleanup worktree aliases (Closes #532)' (#571) from feat/issue-532-merged-cleanup-worktree-aliases into master 2026-07-09 08:05:33 -05:00
sysadmin 8e7a69800a Merge pull request 'feat: require canonical next-action state comments (Closes #495)' (#499) from feat/issue-495-canonical-next-action-comments into master 2026-07-09 08:02:14 -05:00
sysadmin b14b1a9663 Merge pull request 'feat(#496): enforce canonical state comment validation before posting' (#497) from feat/issue-496-canonical-comment-validator into master 2026-07-09 07:57:47 -05:00
sysadmin eac2b0f6f2 Merge pull request 'feat: reject contradictory reviewer handoff ledgers (Closes #501)' (#506) from feat/issue-501-reviewer-handoff-consistency into master 2026-07-09 07:52:43 -05:00
sysadmin 7274b76e81 Merge pull request 'feat: add Canonical Thread Handoff protocol (Closes #505)' (#509) from feat/issue-505-canonical-thread-handoff into master 2026-07-09 07:49:13 -05:00
sysadmin 5ada9e6cc0 Merge pull request 'feat: require issue type and workflow status labels (Closes #513)' (#518) from codex/issue-513-workflow-labels into master 2026-07-09 07:44:54 -05:00
sysadmin 9c599bf054 Merge remote-tracking branch 'prgs/master' into feat/issue-551-codex-gitea-workflow
# Conflicts:
#	gitea_mcp_server.py
2026-07-09 08:44:51 -04:00
sysadmin 6cce87031b Merge remote-tracking branch 'prgs/master' into feat/issue-431-audit-paste
# Conflicts:
#	docs/webui-local-dev.md
#	tests/test_webui_skeleton.py
#	webui/app.py
2026-07-09 08:41:40 -04:00
sysadmin 71e28aa5b4 Merge remote-tracking branch 'prgs/master' into feat/issue-432-worktree-hygiene
# Conflicts:
#	docs/webui-local-dev.md
#	webui/app.py
2026-07-09 08:41:37 -04:00
sysadmin 0631e2e155 Merge pull request 'feat: require live PR head re-pin before conflict-fix classification (Closes #522)' (#563) from feat/issue-522-conflict-fix-classification into master 2026-07-09 07:41:33 -05:00
sysadmin 46709537c1 Merge remote-tracking branch 'prgs/master' into feat/issue-434-gated-actions
# Conflicts:
#	docs/webui-local-dev.md
2026-07-09 08:41:08 -04:00
sysadmin 62ab4b4d95 Merge remote-tracking branch 'prgs/master' into feat/issue-514-branch-delete-guard
# Conflicts:
#	gitea_mcp_server.py
2026-07-09 08:28:50 -04:00
sysadmin ce0fb42bef Merge remote-tracking branch 'prgs/master' into feat/issue-483-role-boundaries 2026-07-09 08:27:36 -04:00
sysadmin 92fc913cad Merge remote-tracking branch 'prgs/master' into issue-552-blocked-diagnose
# Conflicts:
#	skills/llm-project-workflow/SKILL.md
2026-07-09 08:27:10 -04:00
sysadmin 412f0e0081 Merge remote-tracking branch 'prgs/master' into feat/issue-558-block-direct-imports
# Conflicts:
#	docs/llm-workflow-runbooks.md
2026-07-09 08:26:49 -04:00
sysadmin 7cb024d4a5 Merge remote-tracking branch 'prgs/master' into feat/issue-495-canonical-next-action-comments
# Conflicts:
#	skills/llm-project-workflow/SKILL.md
2026-07-09 08:26:46 -04:00
sysadmin 1ed1539acf Merge remote-tracking branch 'prgs/master' into feat/issue-551-codex-gitea-workflow
# Conflicts:
#	docs/llm-workflow-runbooks.md
2026-07-09 08:26:46 -04:00
sysadmin 81ff3608ae Merge remote-tracking branch 'prgs/master' into feat/issue-507-controller-thread-ledger
# Conflicts:
#	gitea_mcp_server.py
2026-07-09 08:26:22 -04:00
sysadmin e2e51290c4 Merge pull request 'feat: add MCP runtime health dashboard to web UI (Closes #430)' (#448) from feat/issue-430-runtime-health into master 2026-07-09 07:25:45 -05:00
sysadmin a2e8bf17ec Merge remote-tracking branch 'prgs/master' into feat/issue-532-merged-cleanup-worktree-aliases
# Conflicts:
#	gitea_mcp_server.py
#	merged_cleanup_reconcile.py
2026-07-09 08:20:21 -04:00
sysadmin e8947438c9 Merge pull request 'feat: allow reconciler profile to run merged cleanup directly (Closes #523)' (#567) from feat/issue-523-reconciler-cleanup into master 2026-07-09 07:19:45 -05:00
sysadmin bc16f6652b fix: resolve master conflicts for PR #486 role boundaries
Keep reviewer-vs-merger role boundary wording and master's #533
pre-merge baseline proof section in review-pr template.
2026-07-09 08:13:00 -04:00
sysadmin e7811cb5bb Merge branch 'master' into feat/issue-523-reconciler-cleanup 2026-07-08 23:13:24 -05:00
sysadmin e5bf8c9647 fix: strengthen reconciler merged cleanup tests and runbook (#523)
Make the preflight bypass test actually exercise purity (not test short-circuit),
cover unmerged/open-head fail-closed cleanup, and document post-merge cleanup
ownership for prgs-reconciler so authors are not required for that path.
2026-07-09 00:09:47 -04:00
sysadmin b68805e88a Merge pull request 'feat: add skip-stale-REQUEST_CHANGES reviewer menu prompt (Closes #482)' (#491) from feat/issue-482-skip-stale-request-changes-pr into master 2026-07-08 23:06:57 -05:00
sysadmin ffa1ff95cc fix: import ISSUE_LOCK_FILE from issue_lock_provenance
The conflict-resolution rebase incorrectly kept ISSUE_LOCK_FILE in the
merged_cleanup_reconcile import, but that symbol was moved to
issue_lock_provenance on master. This broke webui import collection.

Fixes the reviewer-reported regression on PR #448.
2026-07-09 00:04:34 -04:00
sysadminandClaude Opus 4.8 95f77bb648 feat: add MCP runtime health dashboard to web UI (Closes #430)
Adds read-only /runtime and /api/runtime routes showing active profile,
identity, config model, git sync vs remote master, shell health,
workflow/schema hashes, and stale-runtime warnings with #420 guidance.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-09 00:04:11 -04:00
sysadmin 08957aeb2a Merge pull request 'feat: validate Selected PR: none in cleanup mode when queue is empty' (#576) from feat/issue-572-empty-queue-fallback into master 2026-07-08 23:01:11 -05:00
sysadmin 4d865666c7 Merge pull request 'feat: add server code parity gate for mutations (Closes #420)' (#444) from feat/issue-420-server-code-parity into master 2026-07-08 22:49:34 -05:00
sysadmin d9cf26ddbf Merge branch 'master' into feat/issue-514-branch-delete-guard 2026-07-08 22:45:19 -05:00
sysadmin 95ec891bd2 Merge branch 'master' into feat/issue-522-conflict-fix-classification 2026-07-08 22:45:04 -05:00
sysadmin 72ae320400 Merge branch 'master' into feat/issue-523-reconciler-cleanup 2026-07-08 22:44:45 -05:00
sysadmin f04f61058f Merge branch 'master' into feat/issue-420-server-code-parity 2026-07-08 22:44:27 -05:00
sysadmin b71dfe9696 Merge branch 'master' into feat/issue-434-gated-actions 2026-07-08 22:40:02 -05:00
sysadmin a82d35f8bd feat: validate Selected PR: none in cleanup mode when queue is empty 2026-07-08 23:33:51 -04:00
sysadmin 066eec8477 Merge pull request 'feat: require true pre-merge baseline proof for non-zero validation exits (Closes #533)' (#574) from feat/issue-533-premerge-baseline-proof into master 2026-07-08 22:21:30 -05:00
sysadmin f29df56a99 Merge pull request 'feat: authorized cleanup for reviewer scratch worktrees (Closes #534)' (#575) from feat/issue-534-reviewer-scratch-cleanup into master 2026-07-08 22:20:50 -05:00
sysadmin 8e9e4670c6 Merge pull request 'feat: look at approvals or issues next if the PR queue is empty (Closes #572)' (#573) from feat/issue-572-empty-queue-fallback into master 2026-07-08 22:18:14 -05:00
sysadmin e4f1a52a87 feat: authorized cleanup for reviewer scratch worktrees (Closes #534)
Discover branches/review-pr<N>[-submit] worktrees separately from author
cleanup, fail closed on dirty trees / open PRs / active reviewer leases,
and remove only assessed-safe scratch paths via reconcile.
2026-07-08 23:12:57 -04:00
sysadmin a2b7327447 feat: check approvals or issues next if the PR queue is empty (Closes #572) 2026-07-08 23:08:55 -04:00
sysadmin 0a202970fd feat: discover merged cleanup worktree aliases 2026-07-08 23:08:38 -04:00
sysadmin 631620d264 Merge pull request 'feat: add canonical state handoff ledger (Closes #494)' (#498) from feat/issue-494-state-handoff-ledger into master 2026-07-08 22:07:47 -05:00
sysadminandClaude Opus 4.8 7fb813446f feat: require true pre-merge baseline proof for non-zero validation exits (Closes #533)
Add premerge_baseline_proof.py distinguishing four validation outcomes
(clean pass / current-master failure reproduced / pre-merge baseline-proven
failure / unresolved regression risk). A non-zero exit may only be labeled
"baseline"/"pre-existing" with pre-merge proof: the failure reproduced on the
PR's pre-merge base commit, or a documented known-failure record predating the
PR. Current-master (post-merge) reproduction is explicitly rejected as
sufficient baseline proof.

- premerge_baseline_proof.py: assess_premerge_baseline_proof + labels
- final_report_validator.py: reviewer.premerge_baseline_proof rule on
  review_pr and reconcile_already_landed tasks
- skills/llm-project-workflow/templates/review-pr.md: baseline proof section
  requiring base commit, tested commit, command, exit status, failure signature
- tests/test_premerge_baseline_proof.py: reject current-master-only proof,
  accept pre-merge base proof and documented known-failure records

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-08 23:04:44 -04:00
sysadmin f6b2adac4d Merge pull request 'feat: discover non-canonical worktrees by branch matching (Closes #528)' (#568) from feat/issue-528-reconcile-worktree-naming into master 2026-07-08 22:03:44 -05:00
sysadmin 719de6fb7a Merge pull request 'fix: resolve broken ISSUE_LOCK_FILE import in webui/lease_loader.py (Closes #569)' (#570) from feat/issue-569-fix-webui-import into master 2026-07-08 21:59:03 -05:00
sysadmin 0ee89fe347 fix: resolve broken ISSUE_LOCK_FILE import in webui/lease_loader.py (Closes #569) 2026-07-08 22:56:55 -04:00
sysadmin 7a0de4a8e9 feat: discover non-canonical worktrees by branch matching (Closes #528) 2026-07-08 22:53:34 -04:00
sysadmin 4e019f1a59 Merge branch 'master' into feat/issue-522-conflict-fix-classification 2026-07-08 21:52:46 -05:00
sysadmin 4bcdd350f6 Merge pull request 'docs: define bootstrap review path for self-hosted MCP fixes (Closes #557)' (#564) from docs/issue-557-bootstrap-review-path into master 2026-07-08 21:52:43 -05:00
sysadmin e0c583db75 Merge branch 'master' into feat/issue-494-state-handoff-ledger 2026-07-08 21:52:36 -05:00
sysadmin 32f1f3486f Merge branch 'master' into feat/issue-483-role-boundaries 2026-07-08 21:51:38 -05:00
sysadmin 32fc1719aa feat: allow reconciler profile to run merged cleanup directly (Closes #523) 2026-07-08 22:49:19 -04:00
sysadmin 8ff1924047 feat: block direct MCP imports and unsanctioned keychain access (Closes #558)
Require a sanctioned MCP daemon (or pytest) before get_auth_header and
keychain credential fill so raw shell imports cannot bypass preflight gates.
2026-07-08 22:49:03 -04:00
sysadmin 84d921a52f feat(#496): fail-closed canonical comment validation before Gitea posts
Add canonical_comment_validator and wire it into issue comments, PR review
bodies, reconcile post_comment, and structured comment helpers. Workflow-changing
comments without complete next-action state are rejected before any API call.
Includes unit/MCP integration tests, runbook docs, and a final-report rule
blocking false "comment posted" claims when validation failed.
2026-07-08 22:46:22 -04:00
sysadmin 44cf2a4ce8 feat: mount canonical gitea-workflow skill for Codex and MCP inventory (Closes #551)
Expose gitea-workflow / llm-project-workflow / git-pr-workflows as one
workflow router in mcp_list_project_skills, add preflight + Codex install
script, and document multi-runtime skill name parity.
2026-07-08 22:43:46 -04:00
sysadmin 22d4735170 fix: resolve conflicts for PR #455
Merge prgs/master into PR branch.
2026-07-08 22:39:43 -04:00
sysadmin 87d6532cb3 fix: resolve conflicts for PR #453
Merge prgs/master into PR branch.
2026-07-08 22:39:42 -04:00
sysadmin d663114976 fix: resolve conflicts for PR #452
Merge prgs/master into PR branch.
2026-07-08 22:39:17 -04:00
sysadmin 565363d5f4 docs: define bootstrap review path for self-hosted MCP fixes (Closes #557)
Document the narrow controller-authorized path for landing MCP workflow
fixes when live daemons cannot canonically review themselves, with
required audits, allowed/forbidden actions, and post-land restart steps.
2026-07-08 22:36:10 -04:00
sysadmin 7ba469f292 fix: re-resolve conflicts for PR #506 after master advance 2026-07-08 22:33:21 -04:00
sysadmin d57ca94ec5 fix: re-resolve conflicts for PR #516 after master advance 2026-07-08 22:33:21 -04:00
sysadmin 9a2e585a9e Merge pull request 'feat: enforce reconciler PR-close proof fields in final reports (Closes #306)' (#423) from feat/issue-306-reconciler-close-proof into master 2026-07-08 21:32:32 -05:00
sysadmin add87b5708 feat: require live PR head re-pin before conflict-fix classification (Closes #522)
Treat inventory mergeable/head as advisory. Add classification helper and
MCP tool so author sessions re-pin the live PR head before creating a
conflict-fix worktree, skip stale inventory false-negatives, and prove
classification in final reports.
2026-07-08 22:30:21 -04:00
sysadmin 81822da04d Merge pull request 'feat: add controller issue-acceptance gate (Closes #500)' (#504) from feat/issue-500-controller-issue-acceptance-gate into master 2026-07-08 21:29:05 -05:00
sysadminandClaude Opus 4.8 05ea99cd32 fix: resolve conflicts for PR #509
Merge prgs/master into PR branch to restore mergeability.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-08 22:28:13 -04:00
sysadminandClaude Opus 4.8 7c3699ce2d fix: resolve conflicts for PR #554
Merge prgs/master into PR branch to restore mergeability.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-08 22:28:13 -04:00
sysadminandClaude Opus 4.8 c3452ce866 fix: resolve conflicts for PR #499
Merge prgs/master into PR branch to restore mergeability.

Co-Authored-By: Claude Opus 4.8 (1M context) <[email protected]>
2026-07-08 22:28:13 -04:00