Web UI: Test coverage and CI checks (#436) #457
Labels
Clear labels
allocator
anti-stomp
architecture
bug
chore
codex
concurrency
contamination
control-plane
dashboard
database
design
documentation
enhancement
gitea
glitchtip
important
incident
incident-bridge
integration
jenkins
labels
leases
mcp
mcp-health
mcp-menu
multi-project
mutating
nice-to-have
observability
portability
preflight
protected-branch
queue
read-only
reconnect
recovery
refactor
release
reliability
resumable-review
reviewer
roadmap
safety
security
self-hosted
sentry
stale-runtime
status:blocked
status:in-progress
status:pr-open
status:ready
terminal-lock
testing
tracker
type:bug
type:feature
type:feature
type:guardrail
visibility
workflow
workflow-hardening
workflow-hardening
Controller-owned work allocator
Prevent concurrent LLM session stomping
Architecture / structural design
OpenAI Codex client / workflow session surface
Concurrent session safety
Workflow or session contamination incident
MCP control-plane coordination and allocation authority
MCP operational dashboard/queue view
Internal coordination storage (SQLite/Postgres)
Design / investigation, no implementation
Docs / runbooks
New feature or improvement
Gitea MCP workflow
GlitchTip integration
Operational or process incident requiring durable audit trail
Sentry-to-Gitea incident bridging
Integration testing
Jenkins integration
Label taxonomy management
Lease adopt/release/expire lifecycle
MCP server / tooling
MCP namespace and runtime health
MCP menu surface
Work spanning multiple monitoring projects or Gitea repos
Mutating action; requires gating
Observability, metrics, traces, error reporting
Cross-platform / portability
Shared preflight gates before mutation
Protected branch / stable-branch policy concern
Work queue visibility and allocation
Read-only, no mutation
MCP client reconnect/reload recovery path
Recovery paths for stale/foreign leases
Code refactor / restructure
Release / versioning
Reliability / failure handling
Persist and resume prepared review verdicts across sessions
Reviewer workflow tooling
Roadmap / umbrella issue
Safety rails and fail-closed mutation guards
Security / trust boundary
Self-hosted infrastructure integration
Sentry error monitoring integration
Stale backend daemon / runtime-vs-master parity failures
Issue is blocked
Issue is being worked on
Issue has an open pull request
Issue is ready for work
Terminal review lock (#332) path
Tests / test coverage
Issue tracker hygiene / meta
Bug or defect
Feature or enhancement
Feature or enhancement
Safety gate or guardrail
Workflow state visibility for LLMs/operators
Cross-tool workflow
LLM workflow coordination hardening
LLM workflow coordination hardening
No labels
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: Scaled-Tech-Consulting/Gitea-Tools#457
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Adds consolidated web UI test coverage and a path-filtered CI gate for PRs touching operator-console surfaces (#436).
Changes
scripts/test-webui— runs alltest_webui_*.pymodules (hermetic unittest)scripts/ci-webui-check— runs suite only when diff toucheswebui/,tests/test_webui_*, or web UI docs/scriptswebui/ci_paths.py— shared path-matching helper for CI gatingtests/test_webui_mvp_suite.py— server startup, all MVP route rendering, read-only guards, optional child-module tests (skip until merged)tests/test_webui_ci_gate.py— path filter + runner smoke testswebui-local-dev.mdanddeveloper-testing-guidelines.mdVerification
Acceptance criteria
ci-webui-check)Closes #436
pr: #457
branch: feat/issue-436-ci-coverage
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-436-ci-coverage
profile: prgs-author
session_id: unknown
phase: claimed
head_before:
b279e4c62aexpires_at: 2026-07-09T04:43:20Z
reviewer_active: no
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 46820-dd78cdc4aacc
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-436-ci-coverage
phase: claimed
candidate_head:
ef287eaf58target_branch: master
target_branch_sha: none
last_activity: 2026-07-09T13:14:48Z
expires_at: 2026-07-09T15:14:48Z
blocker: none
REQUEST_CHANGES PR #457 (Closes #436)
Head:
ef287eaf5841d9e542a4e888ce0ae7d679dbd685Reviewer: sysadmin / prgs-reviewer
Author: jcwalker3
What looks good
webui/ci_paths.py) and gate script structure are cleartests/test_webui_ci_gate.py+tests/test_webui_mvp_suite.pypass after replaying current master (11 passed, 3 skipped)Blocking findings
Branch tip is ~67 commits behind and broken to import webui package
webui/lease_loader.pystill doesfrom merged_cleanup_reconcile import ISSUE_LOCK_FILEissue_lock_provenance.ISSUE_LOCK_FILE(#569)Documented CI entrypoint is not hermetic after current master
scripts/test-webuirunspython -m unittest discover -p 'test_webui_*.py'mcp_daemon_guard),get_auth_headeris blocked outside pytest/daemon/runtimeand/leasessurfaces; MVP route tests hit auth and fail under unittest:bash scripts/test-webui/bash scripts/ci-webui-checkfail post-merge even when pytest suite is greenRequired fix (author)
prgs/masterso lease_loader import is fixed.scripts/test-webuihermetic under the post-#558 world, e.g.:pytest tests/test_webui_*.py(preferred; daemon guard allows pytest), orget_auth_headerunder unittestNon-blocking
webui/,tests/test_webui_*, docs/scriptsCanonical PR State
STATE: request_changes; author must re-sync master and fix CI hermeticity
WHO_IS_NEXT: author
NEXT_ACTION: merge/rebase prgs/master; fix scripts/test-webui so the web UI suite passes under post-#558 daemon guard (prefer pytest runner); re-request review
NEXT_PROMPT:
WHAT_HAPPENED: Review validation found broken import on tip and failing unittest CI entrypoint after master merge
WHY: Landed CI gate would fail on current master surfaces
ISSUE: #436
HEAD_SHA:
ef287eaf58REVIEW_STATUS: REQUEST_CHANGES
MERGE_READY: no
BLOCKERS: branch behind master (lease_loader import); scripts/test-webui not hermetic with #558 + runtime/leases routes
VALIDATION: pytest test_webui_ci_gate+mvp after local master merge: 11 passed/3 skipped; bash scripts/test-webui: FAILED UnsanctionedRuntimeError
LAST_UPDATED_BY: sysadmin / prgs-reviewer
Canonical Issue State
STATE: BLOCKED — conflict-fix resolved locally; author push blocked by active reviewer lease
WHO_IS_NEXT: reviewer
NEXT_ACTION: Release the claimed reviewer lease on PR #457 (session 46820-dd78cdc4aacc) or wait until expires_at 2026-07-09T15:14:48Z so author can push restack tip 67c58671ca39ddc77ab6b3ad2ae679eaf97c5d91
NEXT_PROMPT:
WHAT_HAPPENED:
Selected single unit PR #457 (lowest risk: one docs conflict). Live classification conflict_fix_needed at head
ef287eaf58. Isolated worktree under branches/; merged prgs/master; resolved docs/webui-local-dev.md (kept master feature sections + #436 Tests/CI); adapted scripts/test-webui to pytest for #558. Local tip 67c58671ca39ddc77ab6b3ad2ae679eaf97c5d91 is FF from live head, merge-tree clean vs master. Push blocked by gitea_assess_conflict_fix_push: active reviewer lease phase=claimed. No remote push. Root checkout clean.WHY:
#399 author push gate fail-closed while reviewer holds claimed lease; all four open conflicted PRs (#455/#456/#457/#516) currently have claimed reviewer leases (queue-wide author deadlock). Non-FF rebase push also policy-rejected; local restack uses merge for FF.
RELATED_PRS: #457 (this unit); skipped #456 (docs-only, deferred), #516 (gitea_mcp_server.py conflict), #455 (3-file conflict surface). Closes path: issue #436.
BLOCKERS:
VALIDATION:
LAST_UPDATED_BY: prgs-author / jcwalker3 (Grok author session)
BLOCKED + DIAGNOSE detail
Required step
Push restacked PR #457 head after conflict resolution.
Observed failure
Local ready tip (not on remote)
67c58671ca39ddc77ab6b3ad2ae679eaf97c5d91ef287eaf5841d9e542a4e888ce0ae7d679dbd685/Users/jasonwalker/Development/Gitea-Tools/branches/fix-pr457-restack-20260709093552Durable fix recommendation
Reviewer releases claimed lease on conflicted PRs (or sets blocker=conflict) so author conflict-fix can push; do not claim review leases that block restack of unmergeable heads.
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 46820-dd78cdc4aacc
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-436-ci-coverage
phase: claimed
candidate_head:
ef287eaf58target_branch: master
target_branch_sha:
cc4b95839dlast_activity: 2026-07-09T13:56:58Z
expires_at: 2026-07-09T15:56:58Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 46820-dd78cdc4aacc
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-436-ci-coverage
phase: released
candidate_head:
ef287eaf58target_branch: master
target_branch_sha:
cc4b95839dlast_activity: 2026-07-09T13:57:28Z
expires_at: 2026-07-09T15:57:28Z
blocker: manual-release
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 46820-dd78cdc4aacc
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-436-ci-coverage
phase: claimed
candidate_head:
58f0f50de9target_branch: master
target_branch_sha:
cc4b95839dlast_activity: 2026-07-09T15:05:05Z
expires_at: 2026-07-09T17:05:05Z
blocker: none
Canonical PR State
STATE: review-approved
WHO_IS_NEXT: merger
NEXT_ACTION: merge PR #457 after explicit operator authorization
NEXT_PROMPT:
WHAT_HAPPENED: Reviewed PR #457 (Web UI CI/coverage); approved head
58f0f50de9.WHY: Path-filtered CI gate and consolidated web UI test suite for MVP routes.
ISSUE: #436
HEAD_SHA:
58f0f50de9REVIEW_STATUS: APPROVED
MERGE_READY: yes (awaiting explicit merge authorization)
BLOCKERS: none
VALIDATION: pytest tests/test_webui_*.py -> 79 passed, 2 skipped
LAST_UPDATED_BY: sysadmin (prgs-reviewer)
Review notes
326f84987dtofe29379ad2repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 46820-dd78cdc4aacc
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-436-ci-coverage
phase: claimed
candidate_head:
fe29379ad2target_branch: master
target_branch_sha:
8d1098f916last_activity: 2026-07-09T15:57:12Z
expires_at: 2026-07-09T17:57:12Z
blocker: none
Canonical PR State
STATE: review-approved
WHO_IS_NEXT: merger
NEXT_ACTION: merge PR #457 after explicit operator authorization
NEXT_PROMPT:
WHAT_HAPPENED: Re-approved PR #457 after conflict-fix rebase onto master; head
fe29379ad2.WHY: Conflict resolution only (docs/webui-local-dev.md and related); tests pass at new head.
ISSUE: #436
HEAD_SHA:
fe29379ad2REVIEW_STATUS: APPROVED
MERGE_READY: yes
BLOCKERS: none
VALIDATION: rebased onto master; targeted webui pytest green
LAST_UPDATED_BY: sysadmin (prgs-reviewer)
fe29379ad2to64b83cd1fbrepo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 46820-dd78cdc4aacc
worktree: /Users/jasonwalker/Development/Gitea-Tools/branches/issue-436-ci-coverage
phase: claimed
candidate_head:
64b83cd1fbtarget_branch: master
target_branch_sha:
351ef3899blast_activity: 2026-07-09T16:00:13Z
expires_at: 2026-07-09T18:00:13Z
blocker: none
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-reviewer
session_id: 46820-dd78cdc4aacc
worktree: branches/issue-436-ci-coverage
phase: claimed
candidate_head:
64b83cd1fbtarget_branch: master
target_branch_sha:
351ef3899blast_activity: 2026-07-09T16:02:49Z
expires_at: 2026-07-09T18:02:49Z
blocker: none
Canonical PR State
STATE: review-approved
WHO_IS_NEXT: merger
NEXT_ACTION: merge PR #457 at expected_head_sha
64b83cd1fbNEXT_PROMPT:
WHAT_HAPPENED: Re-approved PR #457 after restack onto post-#456 master; head
64b83cd1fb.WHY: Stale approval at fe29379; current head includes hermetic WEBUI_TEST_OFFLINE CI fix on current master.
ISSUE: #436
HEAD_SHA:
64b83cd1fbREVIEW_STATUS: APPROVED
MERGE_READY: yes
BLOCKERS: none
VALIDATION: bash scripts/test-webui + scripts/ci-webui-check -> 105 OK; pytest test_webui_ci_gate+mvp_suite 17 passed
LAST_UPDATED_BY: sysadmin (prgs-reviewer)
Review notes
64b83cd.adopted_at: 2026-07-09T16:06:10Z
adopted_by_identity: sysadmin
adopted_by_profile: prgs-merger
adopted_from_session_id: 46820-dd78cdc4aacc
adopted_from_profile: prgs-reviewer
adopted_from_reviewer_identity: sysadmin
adopted_from_comment_id: 8260
adoption_reason: merger-handoff-approved-head
repo: Scaled-Tech-Consulting/Gitea-Tools
pr: #457
issue: #436
reviewer_identity: sysadmin
profile: prgs-merger
session_id: merger-queue-457-20260709
worktree: branches/merger-queue
phase: adopted
candidate_head:
64b83cd1fbtarget_branch: master
target_branch_sha:
351ef3899blast_activity: 2026-07-09T16:06:10Z
expires_at: 2026-07-09T18:06:10Z
blocker: none